这图怎么画| 相关性热图+柱状图

简介: 这图怎么画| 相关性热图+柱状图

heatmap_barplot

写在前面

【这图怎么画】系列的图都来自VIP群里同学的提问。推文只是对图片的复现,不代表作者对图片展现形式的认同。欢迎同学们在群里分析有意思的图片。

本期图片

Title:Nitrogen stabilizers mitigate nitrous oxide emissions across maize  production areas of China: A multi-agroecosystems evaluation

期刊:European Journal of Agronomy

Doi:https://doi.org/10.1016/j.eja.2022.126692

读图

fig

热图展示的是相关分析随机森林回归模型的结果。圆圈大小代表变量重要性( variable importance),颜色代表 Pearson’s correlation coefficients。图难度较小,只需注意一些小细节即可。

复现结果

result


绘图

# data pre
df_cor <- matrix(runif(60,-1,1),
                 nrow=10, 
                 ncol=6,
                 dimnames=list( paste0('indictator',1:10),
                                paste0('sample',1:6)))
df_cor <- data.frame(df_cor)
head(df_cor)
df_cor$indicator <- row.names(df_cor)
library(tidyr)
df_cor_long <- gather(df_cor, sample, value,-indicator)
head(df_cor_long)
df_imp <- matrix(runif(60,0,15),
                 nrow=10, 
                 ncol=6,
                 dimnames=list( paste0('indictator',1:10),
                                paste0('sample',1:6)))
df_imp <- data.frame(df_imp)
head(df_imp)
df_imp$indicator <- row.names(df_imp)
library(tidyr)
df_imp_long <- gather(df_imp, sample, value,-indicator)
head(df_imp_long)
df_var <- data.frame(sample = paste0('sample',1:6),
                     var =round( runif(6,0,100),0) )
head(df_var)
# plot heatmap
library(ggplot2)
p1 <- ggplot()+
  geom_tile(data = df_cor_long,
            mapping = aes(sample,indicator,fill = value))+
  scale_fill_gradient2(name = 'Correlation',
                       limit = c(-1.001,1.001),
                       breaks = c(-1.0,-0.5,0.0,0.5,1.0),
                       low = '#2ab49b',
                       mid = 'white',
                       high = '#ea7f58')+
  geom_point(data = df_imp_long,
             mapping = aes(sample,indicator,size = value),
             shape = 1,
             stroke = 0.6,
             color = 'black')+
  scale_size_continuous(name = 'Importance(%)',
                        limit = c(-0.001,15.1),
                        breaks = c(0,5,10,15))+
  scale_y_discrete(expand = c(0,0))+ 
  scale_x_discrete(expand = c(0,0))+ 
  theme_bw()+
  xlab(NULL) + 
  ylab(NULL)+
  theme(panel.border = element_rect(fill=NA,color="black", size=0.5, linetype="solid"))
p1
# plot barplot
p2 <- ggplot(df_var,aes(sample,var))+
  geom_bar(stat = 'identity',
           fill = '#2d89bf')+
  xlab(NULL) + 
  ylab('Exp var(%)')+
  theme_bw()+
  theme(panel.grid.major=element_blank(),
        panel.grid.minor=element_blank(),
        axis.text.x = element_blank())
p2
# patch
library(patchwork)
p2/p1+plot_layout(ncol = 1,
                  heights = c(0.8, 2))
ggsave('heatmap.pdf',width = 6,height = 6)

result

相关文章
|
机器学习/深度学习 算法 固态存储
【图像配准】基于SSD、SAD、NCC算法实现三维图像立体配准和融合附matlab代码
【图像配准】基于SSD、SAD、NCC算法实现三维图像立体配准和融合附matlab代码
|
数据采集 PyTorch 数据处理
Pytorch学习笔记(3):图像的预处理(transforms)
Pytorch学习笔记(3):图像的预处理(transforms)
2405 1
Pytorch学习笔记(3):图像的预处理(transforms)
|
存储 安全 算法
3.【Elasticsearch】Elasticsearch从入门到放弃-权重及打分
【Elasticsearch】Elasticsearch从入门到放弃-权重及打分
3.【Elasticsearch】Elasticsearch从入门到放弃-权重及打分
|
Python
Python:计算两个蛋白或小分子之间的RMSD
Python:计算两个蛋白或小分子之间的RMSD
1151 0
Python:计算两个蛋白或小分子之间的RMSD
|
数据可视化 API 数据库
R包:disgenet2r|DisGeNET的懒癌福利,一行代码多种可视化
DisGeNET是一个综合性的数据库,包含大量关于人类基因和疾病关联的信息,常用于生物信息学和基因组学研究。disgenet2r是R语言工具,方便用户访问和分析DisGeNET数据。用户需注册DisGeNET账号并安装R包,通过disgenet2r包可查询、检索基因-疾病关联和变异-疾病关联数据。目前DisGeNET包含超过110万个基因-疾病关联和30万个变异-疾病关联。使用示例包括查询特定疾病相关基因和多疾病联合分析。
1197 0
|
运维 资源调度 定位技术
【技术大图】手把手教你搭建生信分析高性能计算平台
生物医药行业产生PB级海量数据,需专业生信分析平台支持。本技术地图涵盖平台搭建全流程:从架构设计、关键技术解析,到标准化分析流程介绍及部署优化策略,助力IT团队高效构建生信算力平台。立即下载完整版!
685 1
|
开发工具 Android开发 git
用Fay搭建了数字人
用Fay搭建了数字人
|
前端开发 JavaScript 容器
心得经验总结:热力图之heatmap
心得经验总结:热力图之heatmap
750 0
|
缓存 监控 Java
Spring Boot中的缓存配置与优化
Spring Boot中的缓存配置与优化
|
SQL 监控 关系型数据库
MySQL Binlog深度解析:进阶应用与实战技巧【进阶应用】
MySQL Binlog深度解析:进阶应用与实战技巧【进阶应用】
1033 0