我正在绘制多个 (~300) 条形图,并希望将 y 轴范围固定在数据集中数据的 +/- 10 个百分点之间。例如:如果我的数据集中的 y 轴范围是 (10,20),我想将图形范围显示为 (0,30)。知道如何在所有地 block 上轻松做到这一点吗?谢谢
最佳答案
根据您的问题,您希望将 y 轴扩展 +/- 10%;但是,在问题的文本中,您似乎需要扩展 +/- 10 单位(无论 y 轴的单位是什么)。您可以使用 expansion()
轻松完成任一操作,可应用于 scale_y_continuous()
通过expand =
争论。这是一个示例图。
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 = (...))
到expand=
scale_y_continuous()
中的参数。在 documentation for that function ,您会看到,如果您提供长度为 1 的向量 add=
,它将应用于上限和下限,而如果您提供长度为 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))
关于r - 将 y 轴范围设置为 R 中数据的 +/-10 个百分点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69138151/