【问题标题】:ggplot - get axis ranges of the CURRENT plotggplot - 获取当前图的轴范围
【发布时间】: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”,您的示例无论如何都不起作用

标签: r ggplot2


【解决方案1】:
ggplot(data, aes(x=Var1, y=Var2)) +
    geom_violin() +
    geom_jitter() +
    facet_grid(.~Year)

试试年~。如果地块堆积起来。我总是忘记正确的顺序。您可能必须事先将年份变成一个因素。

【讨论】:

  • 谢谢!这行得通,我通常避免使用facet_grid,因为与grid.arrange 相比,语法令人困惑,但我认为这是这里唯一的选择!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
相关资源
最近更新 更多