我希望根据Jeromy的回答here改进我在R中实现的输出(谢谢!)。我的是31x31矩阵,具有正值和负值,并使用基本相同的ggplot2代码:
library(ggplot2)
library(reshape)
z<-cor(insheet3,use="complete.obs",method="kendall")
zm<-melt(z)
ggplot(zm, aes(X1,X2, fill=value)) + geom_tile() +
scale_fill_gradient2(low = "blue", high = "dark violet")
我需要改变三件事:
现在,行以反向字母顺序显示,这意味着没有可见的数据趋势。 如何影响行和列的顺序,例如:
一个。 (首选:)列是按相关值排序(从负到正,反之亦然),因为它们位于同一页面上的椭圆包输出中;或
B中。列是手动排序,以便我可以对类似的变量进行分组?
沿着底部的X轴,我的变量名称显着重叠并且不可读。它们需要保持很长时间(即OrthoPhos,Ammonia,Residential ......),所以如何将标签旋转90度?
有没有办法沿每个轴删除“X1”和“X2”标签?
谢谢!
答案 0 :(得分:1)
按照我所谓的广泛/宗教R之旅进入相关矩阵的可能性,我想分享我最终要使用的东西。此外,感谢以前的回答者;我发现有很多“正确”的答案。
由于我的评论家坚持要求我包含数字而不仅仅是颜色,并且我远离更多“混乱”和“忙”输出(如相关图),我终于找到了“图像”并将我的最终输出基于this example 。谢谢@Marcinthebox。
还要安抚StackOverflow,here is a link to the image,而不是图像本身。
因为其中一些规范需要一段时间来弄清楚并且对最终输出至关重要,所以这是我的代码,尽可能缩短。
#Subsetting to only the vectors I want to see in the correlation, as ordered
insheet<-subset(insheet1,
select=c("Cond", "CL", "SO4", "TN", "TP", "OrthoPhos", "DO", ...., "Rural"))
#Defining "high" and "low" colors
library(colorspace)
mycolors<-diverge_hcl(8, h = c(8, 240), c = 80, l = c(50,100), power = 1)
#Correlating them into a matrix
sheet<-cor(insheet,use="complete.obs")
#Making it!
image(x=seq(dim(sheet)[2]), y=seq(dim(sheet)[2]), z=sheet, ann=FALSE,
col=mycolors, xlab="x column", ylab="y column", xaxt='n', yaxt='n')
text(expand.grid(x=seq(dim(sheet)[2]), y=seq(dim(sheet)[2])),
labels=round(c(sheet),2), cex=0.5)
axis(1, 1:dim(insheet2)[2], colnames(insheet2), las=2)
axis(2, 1:dim(insheet2)[2], colnames(insheet2), las=2)
par(mar=c(5.5, 5.5, 2, 1)) #Moves margins over to allow for axis labels
一旦错误被抑制,我还能够循环使用它来输出多个.wmf文件。太糟糕了,我无法想象出重要的p值......另一次。谢谢!
答案 1 :(得分:0)
我认为你的意思是指1点的“聚类”?
对于此类任务,我更喜欢heatmap.2()
包中的gplots
函数,该函数提供了各种聚类选项。
对于第2点和第3点:heatmap.2()
函数还将处理90º旋转和标签,因为它使用数据矩阵作为输入而不是数据表。