我有一个ggplot2 facet_grid,当样本量较小时,它会在y轴上重复标签。在第一个绘图中,我希望比例尺在底部和顶部仅显示一次0和1。理想情况下,解决方案将根据某些论点以动态方式解决此问题。如果我需要对中断进行硬编码,我可以这样做,但是我还没有找到针对各个图进行硬编码中断的方法。感谢您的帮助!
g6 <- ggplot(g6_data, aes(x=HOURS, fill=VARIABLE))
g6 <- g6 + facet_grid(VARIABLE ~ ., scales="free_y")
g6 <- g6 + geom_histogram(binwidth=1, color="black", boundary=1)
g6 <- g6 + scale_x_continuous(limits=c(-48, 72), label=comma, breaks=seq(-48, 72, by=12))
g6 <- g6 + scale_y_continuous(label=comma)
g6 <- g6 + theme(legend.title=element_blank(), legend.position="none")
g6 <- g6 + geom_vline(xintercept=0, size=1)
通过添加scale_y_continuous breaks尝试硬编码会导致在大样本量上出现拖尾现象:
g6 <- ggplot(g6_data, aes(x=HOURS, fill=VARIABLE))
g6 <- g6 + facet_grid(VARIABLE ~ ., scales="free_y")
g6 <- g6 + geom_histogram(binwidth=1, color="black", boundary=1)
g6 <- g6 + scale_x_continuous(limits=c(-48, 72), label=comma, breaks=seq(-48, 72, by=12))
g6 <- g6 + scale_y_continuous(label=comma, breaks=seq(0, 400, by=1)
g6 <- g6 + theme(legend.title=element_blank(), legend.position="none")
g6 <- g6 + geom_vline(xintercept=0, size=1)
答案 0 :(得分:0)
让我建议,您要绘制的东西不是要绘制的实际东西,而不是试图解决问题。
在我看来,您似乎正在尝试比较样本/变量之间的分布。为此,您可以让y轴在变量之间自由移动。如您所示,这将导致一堆混乱的y轴标签,这些标签既不吸引人,也不容易正确解释。
我的建议是,您可能希望比较特定容器中变量内的观测分数,而不是绝对计数。为此,您可以将直方图的y值设置为stat(density)
,这是重新缩放后的直方图,使得积分为1(即,每个bin代表一个分数)。这样做时,我们可以完全不用担心y轴。
请参见以下示例,了解不同数量观察值的直方图。
df <- data.frame(x = rnorm(200),
panel = rep(c(1, 2), c(180, 20)))
ggplot(df, aes(x)) +
geom_histogram(aes(y = stat(density))) +
facet_grid(panel ~ .)