Начну с MWE:Как изменить усы ящика в ggplot2?
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))
выглядит лучше, но теперь существует фиксированное пространство между коробками (сравните цил = 8 на первом и третьем участке). Поскольку я собираюсь использовать этот код для разного количества уровней am
(конечно, в моих реальных данных это не am
), я не знаю заранее, насколько широки будут сами ящики, поэтому я не могу установить фиксированный width
для linerange
без указания фиксированного width
для ящиков.
Есть ли способ выборочно модифицировать бакенбарды boxplot
или отрегулировать пространство между linerange
элементами в соответствии с пробелом между ящиками?
не совсем простой, но один из способов может быть, чтобы создать два присущи рефлективный, вербальный сверху друг друга. в одном из них вы удаляете бакенбарды и выбросы (чтобы отображались только ящики) и накладывали над ним на второй квадрат (который включает в себя бакенбарды), для которого вы меняете цвет на красный. – beetroot