繁体   English   中英

Ggplot2 facet_grid在小范围内重复y轴折断

[英]Ggplot2 facet_grid repeats y-axis breaks on small scales

我有一个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)

与其尝试解决您的问题,不如让我建议您要绘制的东西不是要绘制的实际东西。

在我看来,您似乎正在尝试比较样本/变量之间的分布。 为此,您可以让y轴在变量之间自由移动。 如您所示,这将导致一堆混乱的y轴标签,这些标签既不吸引人,也不容易正确解释。

我的建议是,您可能想比较某个特定bin中变量中的观测分数,而不是绝对计数。 为此,您可以将直方图的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 ~ .)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM