我将用一个MWE开始:如何在ggplot2中修改boxplot的胡须?
library(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg, fill = factor(am)))
p + geom_boxplot()
我想修改的胡须的颜色,例如,将其设置为红色。我不认为这是可以直接这样做既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")
行范围堆放在彼此的顶部。所以,下一次尝试:
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
),我事先并不知道盒子本身有多宽,所以我无法设置一个固定的width
为linerange
而没有为箱子指定固定的width
。
有一种方法或者有选择地修改一个boxplot
的晶须或根据框之间空间linerange
元件之间调整空间?
不完全是简单,但一个方式可以是建立在顶部的两个箱图彼此的。在其中一个你删除胡须和异常值(这样只有盒子可见),并绘制在第二个boxplot(包括胡须),你将其改变为红色.. – beetroot