我想绘制带有观测数量的箱线图。问题在于,由于信息和异常值的不同,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
然而,我不想限制自己,我想找到一种根据我的情节修改限制的方法。(因为...如果信息改变了怎么办?)。
有没有办法做到这样?使用 min
和 max
--> scale_y_continuous(limits = c(min(x), max(x)))
非常感谢您的帮助。
limits
参数接受一个函数,因此您可以使用scale_y_continuous(limits = function(x){c(min(x), max(x)})
。请注意,提供的输入作为x
是数据的自然限制,因此这个特定的函数不会改变任何东西。 - teunbrandp + scale_y_continuous(limits = ~ c(0, max(.x) + 0.4))
的东西。 - caldwellst(.x)
是什么意思?它是否像@teunbrand编写的函数的简化版本? - emr2tidyverse
用于匿名函数的 lambda 格式,而不是function(x)
,它基本上代表function(.x)
。如果使用 R >= 4.1,您还可以使用\(x)
作为function(x)
的速记。 - caldwellst