将 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))
我正在绘制多个 (~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))