我正在制作一个像这样的刻面情节:
这是通过以下方式完成的:
df = data.frame(val=rnorm(2005), class=c(rep(c('a','b'), 1000), rep('c', 5)))
qplot(val, ..count.., data=df, geom='density', fill=I('black')) +
opts(strip.text.y = theme_text()) +
# scale_y_continuous(breaks=seq(0, 999, by=50)) +
facet_grid(class ~ ., scale = "free", space = "free")
我故意希望小平面的大小不同(只占用尽可能多的垂直空间)但保持相同的比例。
现在,这个情节存在一些问题:
我想在每个方面施加一个最小高度,这样你至少可以看到正确的标签文字并将显示识别为空密度图 - 目前,如果我不知道我是如何生成的这个情节,我永远不会猜到底部的神器是什么。
虽然构面具有相同的比例,但y轴不共享相同的网格/刻度。我可以通过取消注释注释行来强制它们共享相同的网格,但后来我手动计算这个 - 有没有办法在任何密度图中使用最粗网格?
提前感谢您的任何答案。
答案 0 :(得分:5)
<强>被修改强>
我不认为使用ggplot
的优雅参数可以实现这一点,但很高兴被证明是错误的。
但是,这是一种具有预期效果的解决方法。我们的想法是在绘图中添加一个不可见的图层,其中一个点在y轴上足够高,以强制每个面板为最小尺寸。在这种情况下,我手动选择此值为50,但您应该能够创建基于最大计数百分比或类似值的算法:
df = data.frame(val=rnorm(2005), class=c(rep(c('a','b'), 1000), rep('c', 5)))
dg <- data.frame(class=c("a","b","c"), value=rep(50,3))
qplot(val, ..count.., data=df, geom='density', fill=I('black')) +
opts(strip.text.y = theme_text()) +
facet_grid(class ~ ., scales="free", space="free") +
geom_blank(data=dg, aes(x=0, y=value))
编辑2 感谢@Thierry提示使用geom_blank
而不是geom_point
使用不可见的点。