2013-04-08 137 views
6

我试图从相关矩阵中绘制出一个绘图,并使用三种颜色来表示使用库晶格的相关系数。热图或相关矩阵图

library(lattice) 

levelplot(cor) 

我得到如下情节:

Plot of correlation matrix

情节是只对我的数据的一个子集。当我使用整个数据集(400X400)时,它变得不清楚,着色没有正确显示,并显示为点。是否有可能获得相同的瓦片形式的大矩阵?

我尝试过使用pheatmap函数,但我不希望我的值被聚集在一起,只需要在瓦片表单中清晰地显示高值和低值。

+0

您是否尝试增加png分辨率?比方说,每个变量4个像素= 4×400变成1600×1600像素。 – Marek 2013-04-08 20:16:54

+0

Iam对不起,我不知道如何做到这一点,并没有尝试过 – user2258452 2013-04-08 20:23:38

+0

您可以将图片写入png,例如:'png(“cor.png”,1600,1600); print(levelplot(cor)); dev。关闭()'。 – Marek 2013-04-08 21:17:38

回答

0

@Lucas在这里提供了很好的建议,因为corrplot对于可视化相关矩阵非常有用。然而,它没有解决绘制大相关矩阵的原始问题。实际上,当试图将这个大的相关矩阵可视化时,corplot也会失败。对于简单的解决方案,您可能需要考虑减少变量的数量。也就是说,我会建议查看一些你知道对你的问题很重要的变量之间的关系。试图理解许多变量的相关结构将是一项艰巨的任务(即使你可以想象它)!

+0

请问有多少变数是'大'? – smci 2018-01-19 22:59:13

12

如果你想做一个相关的情节,使用corrplot库,因为它有很多的灵活性,以创建相关

library(corrplot) 
#create data with some correlation structure 
jnk=runif(1000) 
jnk=(jnk*100)+c(1:500, 500:1) 
jnk=matrix(jnk,nrow=100,ncol=10) 
jnk=as.data.frame(jnk) 
names(jnk)=c("var1", "var2","var3","var4","var5","var6","var7","var8","var9","var10") 

#create correlation matrix 
cor_jnk=cor(jnk, use="complete.obs") 
#plot cor matrix 
corrplot(cor_jnk, order="AOE", method="circle", tl.pos="lt", type="upper",   
tl.col="black", tl.cex=0.6, tl.srt=45, 
     addCoef.col="black", addCoefasPercent = TRUE, 
     p.mat = 1-abs(cor_jnk), sig.level=0.50, insig = "blank") 

enter image description here 上面的代码只是增加了色彩的相关性热图般的人物有> abs(0.5)相关性,但您可以轻松更改该值。最后,还有很多方法可以配置图的外观(更改颜色渐变,显示相关性,显示完整vs仅半矩阵等)。顺序参数特别有用,因为它允许您基于PCA对相关矩阵中的变量进行排序,因此它们基于相关性中的相似性排序。

对于例如广场(类似于原来的情节) - 只是改变了方法,以正方形: enter image description here

编辑:@Carson。您仍然可以将此方法用于合理的大型相关矩阵:例如下面的100个可变矩阵。除此之外,我没有看到有什么用于在没有一些子集的情况下用这么多变量来表示相关矩阵的图形表示,因为这很难解释。 enter image description here