我非常喜欢facet_grid
,并经常发现自己将其与geom_histogram
一起使用。我也喜欢margins=foo
参数,因为您可以看到与聚合组相比的所有分布。问题是,当你包含一个边距参数时,它会延伸所有组,以满足边距通常更宽的y范围,因为你现在拥有所有数据。这意味着所有聚合组y的规模要宽得多,并且很难发现组间的差异。所以我对自己说:自我你可以通过scale参数解决这个问题并允许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
免费?基本上我想要的是创建第一个数字并从第二个数字拼接边距。
答案 0 :(得分: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))
您可能已经知道如何使用scale_x_continuous('', breaks = NA)
从第一个图中删除x刻度和标签。