【发布时间】:2019-05-27 11:00:55
【问题描述】:
假设你有以下代码:
grid.arrange(
ggplot(data[data$Year = 2018,], aes(x = Var1, y = Var2))+
geom_violin()+
geom_jitter()+
ggtitle("2018"),
ggplot(data[data$Year = 2019,], aes(x = Var1, y = Var2))+
geom_violin()+
geom_jitter()+
ggtitle("2019"), ncol = 2)
这将在两个时间点(2018 年和 2019 年)生成 Var1 和 Var 2 的并排组合小提琴和抖动散点图。但是,可能会发生 2018 年和 2019 年 y 轴范围不一样的情况,这不利于数据的直观比较。因此,我们可以添加以下行:
+scale_y_continuous(limits = c(1, 5))
到grid.arrange 函数中的两个ggplot 对象,以将两个图上的y 轴约束为相同(1 是刻度上的最小可能结果,5 是最大值)。
但是,geom_jitter() 的使用导致某些点超出 1 和 5 的 y 轴限制。是否有可能以某种方式查看 ggplot 内部生成的比例范围并手动设置比例在这两个图上限制这些值?
我找到了this answer,但我不想先将绘图保存在对象中,然后从该对象中提取信息并修改绘图。我想生成一个如上所述的干净图,没有中间保存的对象。有可能吗?
【问题讨论】:
-
你为什么不使用
facet_wrap()而不是grid.arrange()和两个情节? -
facet_* 函数在任意年份的大约三分之一的代码量中完成了这个技巧。由于错误的表达式“data$Year = 2018”,您的示例无论如何都不起作用