r - 你如何为不同的方面设置不同的规模限制?

标签 r ggplot2

一些示例数据:

dfr <- data.frame(
  x = rep.int(1:10, 2),
  y = runif(20),
  g = factor(rep(letters[1:2], each = 10))
)

具有两个方面的简单散点图:
p <- ggplot(dfr, aes(x, y)) + 
  geom_point() +
  facet_wrap(~ g, scales = "free_y")

我可以为所有面板设置轴限制
p + scale_y_continuous(limits = c(0.2, 0.8))

(或者像 ylim 这样的包装器)

但是如何为不同的方面设置不同的轴限制?

这样做的格子方式是将列表传递给这个参数,例如,
p + scale_y_continuous(limits = list(c(0.2, 0.8), c(0, 0.5)))

不幸的是,这只会在 ggplot2 情况下引发错误。

编辑:

这是一个部分黑客。如果要扩展比例范围,则可以向数据集添加列指定限制,然后使用 geom_blank 绘制它们。 .

修改后的数据集:
dfr <- data.frame(
  x = rep.int(1:10, 2),
  y = runif(20),
  g = factor(rep(letters[1:2], each = 10)),
  ymin = rep(c(-0.6, 0.3), each = 10),
  ymax = rep(c(1.8, 0.5), each = 10)
)

更新情节:
p + geom_blank(aes(y = ymin)) + geom_blank(aes(y = ymax))

现在秤是不同的,左手一个是正确的。不幸的是,右手比例不会收缩,因为它需要为点腾出空间。

如果有帮助,我们现在可以将问题重新表述为“是否可以在不重新计算比例并且不显式调用 scale_y_continuous 的情况下绘制点?”

最佳答案

我认为这在 ggplot2 中是不可能的。此 discussion从 1 月开始表明该问题正在考虑中。

关于r - 你如何为不同的方面设置不同的规模限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276218/

相关文章:

r - 关于 `get_test_label` 包中的函数 `get_pwc_label` 和 `rstatix` 的问题

r - 如何在 R 中用因子值(如 y)做 ggplot barplot?

R本福德分析

r - 从命令提示符获取 R 脚本时显示错误行号

R - 将许多 1D 格式的时间序列转换为 3D 数组,每个时间序列标记有两个标签

r - 根据 ID 选择数据行

r - 如何强制 'polynom::polynomial' 对象中的尾随零? (特别是从 ggpubr 修改 stat_lm 和 stat_regline_equation 的行为)

r - 在R中从多边形质心到最大距离边界绘制一条线

r - 如何在函数 ggplot 中添加子图?

r - 使用 filter() 和 str_detect() 按多个模式过滤