如何根据 R 中的绘图更改 scale_y_continuous 的限制?

How to change the limits from scale_y_continuous depending on the plot in R?

我想绘制箱线图,并在顶部显示观察数量。问题在于,根据信息和异常值,y 轴会发生变化。因此,我想自动更改 scale_y_continuous 的限制。可以这样做吗?

这是一个可重现的例子:

library(dplyr)
library(ggplot2)

myFreqs <- mtcars %>%  
  group_by(cyl, am) %>% 
  summarise(Freq = n()) 
myFreqs

p <- ggplot(mtcars, aes(factor(cyl), drat, fill=factor(am))) +
  stat_boxplot(geom = "errorbar") +
  geom_boxplot() +
  stat_summary(geom = 'text', label = paste("n = ", myFreqs$Freq), fun = max, position = position_dodge(width = 0.77), vjust=-1)

p

想法是将 y 轴值最高的图的最大值至少增加 +1(在上面解释的情况下,它将是 n=8 的第二个箱线图)

我试过用 scale_y_continuous 改变 y 轴,像这样:

p <- p + scale_y_continuous(limits = c(0, 5.3))
p

但是,我不想自己设置限制,我想根据自己的绘图找到一种修改限制的方法。 (因为...如果信息发生变化怎么办?)。 有没有办法做这样的事情?使用 minmax --> scale_y_continuous(limits = c(min(x), max(x)))

非常感谢

感谢@teunbrand 和@caldwellst,我得到了我需要的解决方案。

有两种完美的解决方案:

1-

p + scale_y_continuous(limits = function(x){
  c(min(x), (max(x)+0.1))
    })
p

2-

library(tidyverse)

p + scale_y_continuous(limits = ~ c(min(.x), max(.x) + 0.1))