论文是
Radial growth of Qinghai spruce (Picea crassifolia Kom.) and its leading influencing climate factor varied along a moisture gradient
期刊 Forest Ecology and Management
农林科学二区top 影响因子3.55
论文里的figure4,展示相关性分析的结果,圆形点的大小用来展示相关系数的大小,颜色用来表示相关系数的正负,再单独添加一个正方形的色块用来表示相关性检验的p值。今天的推文我们来试着模仿一下这个图
首先是相关性分析
这里用到的数据集是来自于B站up主 嘿-老晴-
的视频两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析2
中的数据集,这个Up主更新了很多R语言相关的视频,大家可以关注一下
数据集的下载链接是 https://github.com/linhesun/bilibiliRlearning/tree/master/20210715
首先是读取数据集
library(readr)
df1<-read_tsv("20210715/index.txt")
head(df1)
df2<-read_tsv("20210715/meta.txt")
head(df2)
相关性分析
library(psych)
cor.result<-corr.test(df1,df2,method = "pearson")
首先是提取其中的p值作图
首先把宽格式转换成长格式,并且把pvalue根据大小分成4中情况
library(tidyverse)
cor.result$p %>%
as.data.frame() %>%
rownames_to_column() %>%
pivot_longer(!rowname) %>%
mutate(p_value=case_when(
value > 0.05 ~ "A",
value >0.01 & value <= 0.05 ~ "B",
value > 0.001 & value <= 0.01 ~ "D",
value <= 0.001 ~ "E"
)) -> new_df1
作图代码
ggplot()+
geom_tile(data=new_df1,
aes(x=rowname,y=name,fill=p_value))+
scale_fill_manual(values = c("white","#c0c0c0",
"#808080","#3f3f3f"))+
theme(legend.key = element_rect(colour="black"),
axis.text.x = element_text(angle = 90,hjust=1,vjust=0.5))+
coord_equal()
在这个基础上继续叠加相关系数
cor.result$r %>%
as.data.frame() %>%
rownames_to_column() %>%
pivot_longer(!rowname) %>%
mutate(abs_cor=abs(value)) -> new_df2
library(paletteer)
ggplot()+
geom_tile(data=new_df1,
aes(x=rowname,y=name,fill=p_value))+
scale_fill_manual(values = c("white","#c0c0c0",
"#808080","#3f3f3f"))+
theme(legend.key = element_rect(colour="black"),
axis.text.x = element_text(angle = 90,hjust=1,vjust=0.5))+
coord_equal()+
geom_point(data=new_df2,
aes(x=rowname,y=name,
size=abs_cor,
color=value))+
scale_color_paletteer_c(palette = "ggthemes::Classic Red-Blue")
最后是在这个基础上添加背后的网格线
ggplot()+
geom_tile(data=new_df1,
aes(x=rowname,y=name,fill=p_value,alpha=p_value))+
scale_fill_manual(values = c("white","#c0c0c0",
"#808080","#3f3f3f"),
label=c(">0.05",
"0.01~0.05",
"0.001~0.01",
"<0.01"))+
scale_alpha_manual(values = c(0,1,1,1))+
guides(alpha=F)+
theme_bw()+
theme(legend.key = element_rect(colour="black"),
axis.text.x = element_text(angle = 90,
hjust=1,
vjust=0.5),)+
coord_equal()+
geom_point(data=new_df2,
aes(x=rowname,y=name,
size=abs_cor,
color=value))+
scale_color_paletteer_c(palette = "ggthemes::Classic Red-Blue")
示例数据和代码的获取方式可以在公众号查看
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!