1

我希望根据 Jeromy 在此处的回答改进我在 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")  

我需要改变三件事:

  1. 现在,这些行按字母倒序显示,这意味着没有可见的数据趋势。如何影响 rows 和 columns 的顺序,例如:

    A.(首选:)列按相关值排序(从负到正,反之亦然),因为它们在同一页面上的椭圆包输出中;或者

    B. 这些列是手动排序的,以便我可以对类似的变量进行分组?

  2. 沿着底部 X 轴,我的变量名称显着重叠并且不可读。它们需要保持较长时间(即 OrthoPhos、Ammonia、Residential...),那么如何将它们的标签旋转 90 度

  3. 有没有办法删除每个轴上 的“X1”和“X2”标签?

谢谢!

4

2 回答 2

1

在我称之为相关矩阵可能性的广泛/宗教 R 之旅之后,我想分享我最终将要使用的东西。另外,感谢之前的回答者;我发现对此有很多“正确”的答案。

由于我的审阅者坚持我包括数字而不仅仅是颜色,并且我远离像相关图这样更“混乱”和“忙碌”的输出,所以我终于找到了“图像”,并将我的最终输出基于这个示例。谢谢@Marcinthebox。

另外为了安抚 StackOverflow,这里是一个指向图像的链接,而不是图像本身。

因为其中一些规范需要一段时间才能弄清楚并且对最终输出至关重要,所以这是我的代码,尽可能缩短。

#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 值......另一次。谢谢!

于 2013-07-16T20:35:55.863 回答
0

我假设您的意思是第 1 点的“聚类”。?对于此类任务,我更喜欢包中的heatmap.2()功能gplots,它提供了各种集群选项。

对于第 2 点和第 3 点:该heatmap.2()函数还将处理 90º 旋转和标签,因为它使用数据矩阵而不是数据表作为输入。

于 2013-06-30T04:41:34.657 回答