0

我正在尝试创建颜色矩阵来说明 25 年来几个变量的标准化值的变化。我已将变量分成几个子类别,并希望在一个窗口中用一个颜色键和标题在不同的图中显示每个子类别的结果。我尝试使用以下代码使用 reshape 和 ggplot2 来做到这一点。然而,因为每个类别都有不同数量的变量,这会在图中产生大量空白空间。

library(reshape)
library(ggplot2)

v1 <- replicate(7,rnorm(25))
v2 <- replicate(15, rnorm(25))
v3 <- replicate(11, rnorm(25))
v4 <- replicate(9, rnorm(25))
v5 <- replicate(9, rnorm(25))

v <- list(v1,v2,v3, v4, v5)

ggplot(melt(v), aes(x=X1, y=X2)) + facet_wrap(~ L1, ncol=1) +
geom_tile(aes(fill=value)) + ggtitle("Title") + 
theme(plot.title = element_text(lineheight=2, face="bold"))

在没有所有不必要的空白空间的情况下,在一个窗口中生成我需要的绘图的更好方法是什么?请注意,我最初尝试使用 lattice 包中的 levelplot 函数来执行此操作。但是,我能想出的唯一方法是打印每个单独的 levelplot,它为每个情节生成一个颜色键和标题(不是我想要的)。

4

1 回答 1

0

这是你想要的??

您可以scales="free_y"在调用facet_wrap(...). 这会强制每个 facet 拥有自己的 y 轴,但不会强制在每个 facet 上显示单独的 x 轴。我还添加了一个不同的色标(如果您喜欢默认值,请将其取出)。

library(ggplot2)
library(reshape2)
library(RColorBrewer)

ggplot(melt(v), aes(x=X1, y=X2)) + 
  facet_wrap(~ L1, ncol=1,scales="free_y") +
  geom_tile(aes(fill=value)) + ggtitle("Title") + 
  scale_fill_gradientn(colours=rev(brewer.pal(9,"Spectral")))+
  theme(plot.title = element_text(lineheight=2, face="bold"))

于 2014-03-17T18:13:53.847 回答