5

facet_grid非常喜欢,并且经常发现自己将它与geom_histogram. 我也喜欢这个margins=foo论点,因为您可以看到与聚合组相比的所有分布。问题是当您包含一个边距参数时,它会扩展所有组以满足通常更广泛的边距 y 比例尺,因为您现在拥有所有数据。这意味着所有聚合组的规模要大得多,并且更难发现组之间的差异。所以我对自己说,:self 你可以用 scales 参数解决这个问题,并允许 y 变化“。这个解决方案的问题是现在很难比较聚合组,因为它们都有不同的尺度。我想要的是让边距是免费的,但其他一切都受到限制,就好像天平不是免费的一样。

我在这里展示代码和图片来说明我的意思。如果这不清楚,请询问。

#create some data
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
   var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
   var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3)

这是情节。我喜欢它,因为我可以很容易地比较所有的总分,因为它们的 y 尺度是相同的。但是,如果有边距或非聚合直方图也可以进行比较,那不是很好吗?

在此处输入图像描述

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2')

好的,所以我们将margins参数放入,现在我们可以进行比较,但是所有聚合的组直方图都被拉伸到 20,这使得比较它们变得困难(见下图)。好吧,让我们scales自由吧。 这个例子并不可怕,因为数据在我使用的采样方法中分布非常均匀,但在现实生活中,一些单元格只有几个计数,而其他单元格有很多,比较更糟糕

在此处输入图像描述

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2', scales="free_y")

所以这是没有尺度的情节。问题是它们确实对于总分也是免费的,并且比较它们是有问题的(一个是 14ish,一个是 8ish,一个是 7ish)。

在此处输入图像描述

那么有没有办法让只是margins自由?基本上我想要的是获取创建的第一个图形并从第二个图形拼接边距。

4

1 回答 1

1

在此期间,这种解决方法会起作用吗?您有重复的标题,但可以删除 x 比例和标签。

require(ggplot2)
require(gridExtra)
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
                  var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
                  var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))
dat$var4 <- "All"

windows(width=8, height=8)

p1 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(var2~var3) +


p2 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(~var3)


grid.arrange(p1, p2, nrow=2, heights=c(4,1.5))

在此处输入图像描述

您可能已经知道如何从第一个图中删除 x 比例和标签scale_x_continuous('', breaks = NA)

于 2012-07-26T01:52:34.713 回答