相关疑难解决方法(0)

如何使用ggplot2不对称地扩展轴而不手动设置限制?

我希望条形图的底部轴为零,但顶部扩展了一小部分(根据某种比例).但是,我正在绘制输出,stat_summary所以我没有可用的最大值,我正在使用facet scale="free_y"所以我无法手动设置它们.否则我会使用baptiste的添加技巧geom_blank.我知道我可以读取值并手动创建一个带有上限的数据框,但是这可以设置而不必硬编码限制吗?

另一种选择是计算函数调用之外的平均值,并且只是在没有调用的情况下绘制stat_summary(这样我直接为每个方面设置了上限),但有什么方法可以解决这个问题吗?

例:

ggplot(mtcars)+
  stat_summary(aes(cyl,mpg),
               fun.y="mean",
               geom="bar")+
  scale_y_continuous(expand=c(0,0))+
  facet_grid(carb~.,"free_y")
Run Code Online (Sandbox Code Playgroud)

r ggplot2

10
推荐指数
1
解决办法
4420
查看次数

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

我有一些数据共享一个共同的 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)
)
Run Code Online (Sandbox Code Playgroud)

我正在使用分面线图来显示数据:

p = ggplot(data, aes(x, y)) +
    geom_line() +
    facet_grid(var ~ ., scales = "free_y")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我希望 y 轴包含 0。这很容易:

p + expand_limits(y = 0)
Run Code Online (Sandbox Code Playgroud)

但随后我的数据看起来过于拥挤,离我的方面的顶部太近了。所以我想填充轴的范围。通常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
# …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

5
推荐指数
1
解决办法
1791
查看次数

标签 统计

ggplot2 ×2

r ×2