gpt4 book ai didi

r - 仅填充(扩展)ggplot2 中连续刻度的顶部

转载 作者:行者123 更新时间:2023-12-01 02:03:41 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to expand axis asymmetrically with ggplot2 without setting limits manually?

(1 个回答)


5年前关闭。




我有一些数据共享一个共同的 x 轴,但有两个不同的 y 变量:

set.seed(42)
data = data.frame(
x = rep(2000:2004, 2),
y = c(rnorm(5, 20, 5), rnorm(5, 150, 15)),
var = rep(c("A", "B"), each = 5)
)

我正在使用分面线图来显示数据:
p = ggplot(data, aes(x, y)) +
geom_line() +
facet_grid(var ~ ., scales = "free_y")

enter image description here

我希望 y 轴包含 0。这很容易:
p + expand_limits(y = 0)

但随后我的数据看起来过于拥挤,离我的方面的顶部太近了。所以我想填充轴的范围。通常 scale_y_continuous(expand = ...)用于填充轴,但填充对称地应用于顶部和底部,使 y 轴远低于 0。
p + expand_limits(y = 0) + 
scale_y_continuous(expand = c(0.3, 0.2))
# the order of expand_limits and scale_y_continuous
# does not change the output

enter image description here

由于具有自由 y 比例的方面,我无法明确设置限制。 将 y 尺度扩展到 0(不低于!),同时乘法填充 y 尺度的顶部的最佳方法是什么?

最佳答案

您可以为每个方面创建一个带有一个点的额外数据集,并使用 geom_blank() 不可见地绘制它。 .该点被选择为大于给定面中最大值的固定因子。在这里,我选择该系数为 1.5,以使效果清晰可见:

max_data <- aggregate(y ~ var, data = data, FUN = function(y) max(y) * 1.5)
max_data <- transform(max_data, x = 2000)

p + geom_blank(data = max_data)

这就是我得到的:

enter image description here

关于r - 仅填充(扩展)ggplot2 中连续刻度的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com