【发布时间】:2021-05-24 01:51:31
【问题描述】:
我有一个很大的热图。我想通过仅显示 spearman 相关性大于 0.5 且低于 -0.5 的变量来更清楚地绘制它。这会产生一个带有空格的相关矩阵,以获得更大的相关性。因此热图也有空格。我想要一个以所描述的方式显示相关性的热图(当 p.value 低于 0.05 时使用 *),但空格不是白色而是适当的颜色。
此代码生成带有空格的热图,如何将正确的相关性放回矩阵中,以提供热图? 如何避免热图中的空白?
library(tidyverse)
library(ggplot2)
library(gplots)
#data.frame
df <- data.frame(var.1 = c('gucci','prada','lacoste','pseudo','gucci','prada','lacoste','pseudo'),var.2 = c('carat.1','carat.1','carat.1','carat.1','carat.2','carat.2','carat.2','carat.2'),spearman = c(-0.5,0.5,-1,0.02,-0.5,0.5,-1,0.02),p.value = c(0.05,0.5,1,0.03,0.05,0.5,1,0.03))
#only spearman greater 0.5 and lower -0.5
df.spe <- df[df$spearman >= 0.5 | df$spearman <= -0.5,]
#heatmap matrix
sub <- df.spe %>% dplyr::select(.,everything(),-starts_with('p.adj.log')) %>% pivot_wider(.,names_from = 'var.1',values_from = 'estimate') %>%
column_to_rownames(.,'var.2') %>% data.matrix(.)
sub2 <- df.spe %>% dplyr::select(.,everything(),-starts_with('estimate')) %>% pivot_wider(.,names_from = 'var.1',values_from = 'p.adj.log') %>%
column_to_rownames(.,'var.2') %>% data.matrix(.)
sub2 <- ifelse(sub2 >= -log10(0.05),'*','')
#heatmap
heatmap.2(sub,cexRow = .35,cexCol = .35,trace = 'none',key.title = 'Spearman correlation',col = my_palette,keysize = .5,key.par = list(cex=.4) ,notecol = 'black',srtCol = 30,cellnote = sub2)
谢谢 ;)
【问题讨论】:
-
我的问题有什么不清楚的地方吗?我很难措辞,但我会认为这个例子说明了我的意思?