使用 R 为 corrplot 中的每一行添加颜色

Posted

技术标签:

【中文标题】使用 R 为 corrplot 中的每一行添加颜色【英文标题】:Add a color for each row in a corrplot with R 【发布时间】:2021-12-06 06:16:40 【问题描述】:

我想为 corrplot 的每个“行”添加颜色,但我还没有找到任何解决方案。

我的代码如下所示:

#install.packages("corrplot")
library("corrplot")

df <- matrix(runif(60, 20, 30), 8)

Labels <- c("var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8")
LabelColRow <- c("red", "blue", "green", "yellow", "purple", "black", "grey")

rownames(df) <- Labels
colnames(df) <- Labels

corrplot(df, 
         is.corr = FALSE,        
         method = "circle",      
         mar = c(2, 1, 3, 1),
         addgrid.col = "NA",     
         cl.pos = "n",
         tl.cex = 0.75,         
         tl.col = "black",      
         tl.srt = 360,          
         tl.offset = 0.9,       
         tl.pos = "lt"
)

所以基本上我希望 var1 的“行”是红色的,var2 的行是蓝色的,等等。

编辑:

【问题讨论】:

您的示例不起作用,您能否提供所需输出的示例?很难弄清楚你到底想要什么 我刚刚在我的编辑中添加了一个示例。该代码对我有用,即使在新会话中也是如此。它在哪里停止为您工作? 【参考方案1】:

corrplot 似乎没有提供按行着色的功能。另一种方法是在ggplot 中构建图表。当然还有更多工作要做,但它允许灵活地为行着色。

作为解决方案的开始:

df %>% 
  as.data.frame() %>% 
  rowid_to_column() %>% 
  pivot_longer(-rowid) %>% 
  
  ggplot() +
  geom_point(aes(x = name, y = rowid, size = value, colour = factor(rowid)) ) +
  geom_text(aes(x = name, y = rowid, label = round(value,0))) +
  scale_size(range = c(0, 20)) +
  scale_colour_manual(values = c("blue", "green", "red", "orange", "grey", "purple", "darkblue", "black", "green")) +
  guides(colour = "none", size = "none") +
  labs(x = NULL, y = NULL)

【讨论】:

更好!我不知道 ggplot 提供了这样的东西,但我不能说我很惊讶 :) 非常感谢。

以上是关于使用 R 为 corrplot 中的每一行添加颜色的主要内容,如果未能解决你的问题,请参考以下文章

R语言corrplot

R使用tmaptools为sf对象中的每一行创建边界框

R corrplot:如何修改p值的显示位数?

将函数应用于 data.frame 中的每一行并将结果附加到 R 中的 data.frame

R corrplot colorlegend 变化范围

R corrplot colorlegend更改范围