8

我正在尝试使用facet_gridfacet_wrapgeom_raster. 然而,在每个面板中,z审美的尺度都不同。例如,

##Data at end of question
ggplot(dd, aes(x,y)) +
    geom_raster(aes(fill=z)) +
    facet_grid(type ~ var)

在此处输入图像描述.

然而,由于 C 和 D 的平均值分别在 0 和 100 左右,我们损失了很多分辨率。你也可以试试:

##Change C to D to get other panel
ggplot(subset(dd, var=="C"), aes(x,y))+
    geom_raster(aes(fill=z)) + 
    facet_grid(type ~ var) + 
    theme(legend.position="bottom") 

这使

在此处输入图像描述

在此处输入图像描述

但我现在有两条 y 条。

问题

  1. 我可以更改第一个情节以提供两个fill美学传说吗?
  2. 或者,如果我做两个单独的图表,我可以删除其中一个图表上的 y 条以允许我将它们按在一起 - 搞乱主题,表明这是不可能的。

数据

重现图表的数据

dd = expand.grid(x=1:10, y=1:10)
dd = data.frame(dd, type=rep(LETTERS[1:2], each=100), 
           var =rep(c("C", "D"), each=200) )
dd$z = rnorm(400, rep(c(0, 100), each=200))
4

1 回答 1

7

那这个呢:

在此处输入图像描述

library(gridExtra)
p1 <- ggplot(subset(dd, var=="C"), aes(x,y))+
  geom_raster(aes(fill=z)) + facet_grid(type ~ var) + 
  theme(legend.position="bottom", plot.margin = unit(c(1,-1,1,0.2), "line"))
p2 <- ggplot(subset(dd, var=="D"), aes(x,y))+
  geom_raster(aes(fill=z)) + facet_grid(type ~ var) + 
  theme(legend.position="bottom", plot.margin = unit(c(1,1,1,-0.8), "line"),
        axis.text.y = element_blank(), axis.ticks.y = element_blank()) + ylab("")
grid.arrange(arrangeGrob(p1, p2, nrow = 1))

你也可能想玩弄plot.margin. 似乎可以在此处找到对您的第一个问题的否定答案。

于 2012-09-24T16:32:24.413 回答