问题描述
我以前使用corrplot(my plot)制作了漂亮的功能和完美的实际腐蚀图。现在,我必须以相同的外观获取基础数据。因此,我的目标是使三角形相似度矩阵的颜色与我的Corrotation图相同。想象一下,就像excel中的条件格式一样。
我的数据:my Data from excel
它作为csv加载,可以完美读取csv
我的代码:corrplot(Phylogeny,is.corr=FALSE,method="number",cl.lim=c(0,1))
引发我的错误:Error in if (any(corr < cl.lim[1]) || any(corr > cl.lim[2])) { : Missing value,where TRUE/FALSE is required
- 我确保所有列都是数字
- 我确保用NA填充丢失的位(因为以前这是个问题)
- 我确保我的所有值都在0到1之间,就像我希望极限值一样(在这之间,当我尝试某些操作时,它告诉我我的值不在极限范围内)
- 更改限额后错误不会更改
- 当我将is.corr = FALSE取出(默认值= TRUE)时,错误不会改变
- 我玩着corrplot.mixed,但仍然无法正常工作
- 一直在引用来自Corrplot Intro的信息
我已经研究过condformat function,但是我不确定是否可以像我在我的Corrotation图中所使用的那样根据整体梯度用一种颜色填充每个单元格。
我在这里想不想不想把漂亮的颜色给我的桌子回来吗?
解决方法
我遇到了同样的错误,但我能够通过将 data.frame
转换为 matrix
来修复它。我最终得到了 corrplot(as.matrix(df),is.corr = FALSE)
。
如果我的理解正确的话,您发布的数据已经是一个相关矩阵 - 尽管不是在原始数据上调用 cor
会产生的那种完全对称的矩阵。
在这种情况下,问题只是您将变量名称(物种)作为数据中的一列。将此列更改为行名称,删除变量名称,并按照 user9536160 的建议调用 corrplot
:
# read in your data
phyl <- as.data.frame(read_csv("Phylogeny.csv"))
# name rows and drop variable names in the df itself
row.names(phyl) <- phyl$Species
phyl <- phyl %>%
select(-Species)
# call corrplot
corrplot(as.matrix(phyl),is.corr = FALSE)
结果: