我将从一个MWE开始:
library(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg, fill = factor(am)))
p + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

我想修改胡须的颜色,例如,将其设置为红色.我认为不可能直接做到这两点geom_boxplot,所以这是我的解决方法:
library(Hmisc)
stat_sum_df <- function(fun, geom = "crossbar", ...) {
stat_summary(fun.data = fun, geom = geom, width = 0.4, ...)
}
p + stat_boxplot(geom = 'linerange', colour = "red", position = "dodge) +
stat_sum_df("median_hilow", conf.int = 0.5, position = "dodge")
Run Code Online (Sandbox Code Playgroud)

线范围堆叠在一起.接下来尝试:
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))
Run Code Online (Sandbox Code Playgroud)

看起来更好,但现在盒子之间有一个固定的空间(比较第一和第三个图上的cyl = 8).由于我将使用这个代码用于不同级别的am(当然在我的实际数据中,它不是am),我事先并不知道盒子本身有多宽,所以我不能设置一个固定的width对于linerange没有指定固定width的框.
有没有办法选择性地修改a的胡须boxplot或linerange根据框之间的空间调整元素之间的空间?
如何将两个箱图绘制在一起.一个有红色线条,另一个有红色线条,根本没有任何信号.
p + geom_boxplot(color="red") + geom_boxplot(aes(ymin=..lower.., ymax=..upper..))
Run Code Online (Sandbox Code Playgroud)
另一种选择是绘制误差条,并在其上面绘制没有胡须的箱形图:
library(ggplot2)
p + stat_boxplot(geom = "errorbar", colour = "red") +
geom_boxplot(coef = 0, outlier.size = 0)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
6374 次 |
| 最近记录: |