将 y 轴范围设置为 R 中数据的 +/-10 个百分点

set y-axis range to be +/-10 percentage points of data in R

我正在绘制多个 (~300) 个条形图,并希望将 y 轴范围固定在我数据集中数据的 +/- 10 个百分点之间。例如:如果我的数据集中的 y 轴范围是 (10,20),我想将图形范围显示为 (0,30)。知道如何在所有地块上轻松做到这一点吗?谢谢

根据您的问题,您希望将 y 轴扩展 +/- 10 %;但是,在您的问题文本中,您似乎需要扩展 +/- 10 units(无论您的 y 轴单位是什么)。您可以使用 expansion() 轻松地完成任一操作,它可以通过 expand = 参数应用于 scale_y_continuous()。这是一个示例图。

library(ggplot2)

df <- data.frame(x=LETTERS[1:4], y=c(10, 20, 30, 25))

p <- ggplot(df, aes(x,y)) + geom_col()

如您的问题所述,y 中的数据限制为 [10, 30]。如果您想在任一方向自动将它们扩展 10 个单位,则需要将 expansion(add = (...)) 应用于 scale_y_continuous() 中的 expand= 参数。在 documentation for that function 中,您会看到,如果您向 add= 提供长度为 1 的向量,它将应用于上限和下限,而您可以指定如何扩展下限和上限如果您提供长度为 2 的向量,则分别单独使用。因此,例如,要将两者向外扩展 10 个单位,您只需使用 add=10:

p + scale_y_continuous(expand = expansion(add = 10))

如果您想保持下限不变并且只添加到 y 轴(在本例中为 15),您可以指定一个包含 2 个数字的向量:

p + scale_y_continuous(expand = expansion(add = c(0,15)))

如果您想扩展 个百分比,您可以指定 mult= 而不是 add=。这会将分配给 mult= 的一个或多个数字乘以图中的最高值或最低值。因此,要在任一方向扩展 10%,您需要乘以 0.1:

p + scale_y_continuous(expand = expansion(mult = 0.1))