R 如何在ggplot2中修改箱线图的胡须?
我将从MWE开始:R 如何在ggplot2中修改箱线图的胡须?,r,ggplot2,boxplot,R,Ggplot2,Boxplot,我将从MWE开始: library(ggplot2) p <- ggplot(mtcars, aes(factor(cyl), mpg, fill = factor(am))) p + geom_boxplot() 线范围相互叠加。因此,下一次尝试: p + stat_boxplot(geom = 'linerange', colour = "red", position = position_dodge(width = .5)) + stat_sum_df("median_h
library(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg, fill = factor(am)))
p + geom_boxplot()
线范围相互叠加。因此,下一次尝试:
p + stat_boxplot(geom = 'linerange', colour = "red", position = position_dodge(width = .5)) +
stat_sum_df("median_hilow",conf.int=0.5, position = position_dodge(width = .5))
看起来更好,但现在在框之间有一个固定的空间(比较第一个和第三个图上的cyl=8)。由于我将对不同级别的am
使用此代码(当然,在我的实际数据中,它不是am
),我事先不知道框本身的宽度,因此我无法为行范围设置固定的宽度,而不为框指定固定的宽度
有没有一种方法可以选择性地修改箱线图的胡须
,或者根据箱线之间的间距调整linerange
元素之间的间距?如何将两个箱线图相互重叠。一个有红线,另一个在上面,没有任何线人
p + geom_boxplot(color="red") + geom_boxplot(aes(ymin=..lower.., ymax=..upper..))
另一个选项是绘制错误条,并在错误条的顶部绘制无胡须的方框图:
library(ggplot)
p + stat_boxplot(
geom = "errorbar",
colour = "red",
width = 0,
position = position_dodge(0.75)
) +
geom_boxplot(coef = 0, outlier.shape = NA)
这并不简单,但一种方法是在彼此的顶部创建两个箱线图。在其中一个框中,您删除了胡须和异常值(这样只有框可见),并在第二个框图(包括胡须)上绘制,将颜色更改为红色。谢谢,这非常有效!只是一个问题:.lower..
和.upper..
中的点是什么意思?原始data.frame实际上没有列lower
。此变量在stat\u boxplot
调用中创建。可以使用在ggplot stats中创建的变量,只需在名称前后添加两个点。类似且常用的是geom_bin(aes(y=…density…)
。太聪明了!救我一命!
library(ggplot)
p + stat_boxplot(
geom = "errorbar",
colour = "red",
width = 0,
position = position_dodge(0.75)
) +
geom_boxplot(coef = 0, outlier.shape = NA)