Как мне игнорировать выбросы в диаграмме ggplot2? Я не хочу, чтобы они просто исчезли (т.е. outlier.size = 0), но я хочу, чтобы они игнорировались, чтобы ось y масштабировалась для отображения 1-го / 3-го процентиля. Мои выбросы заставляют «коробку» сжиматься настолько мало, что это практически линия. Есть ли какие-то способы справиться с этим?
Изменить Вот пример:
y = c(.01, .02, .03, .04, .05, .06, .07, .08, .09, .5, -.6)
qplot(1, y, geom="boxplot")
fivenum()
с данными, чтобы извлечь то, что, IIRC, используется для верхних и нижних петель на коробчатых диаграммах, и используйте этот вывод вscale_y_continuous()
вызове, который показал @Ritchie. Это можно очень легко автоматизировать с помощью инструментов, предоставляемых R и ggplot. Если вам нужно включить усы, подумайте об использовании,boxplot.stats()
чтобы получить верхний и нижний пределы для усов, и используйте их вscale_y_continuous()
.Ответы:
Вот решение с использованием boxplot.stats
источник
ylim <- c(-0.1, 1000) * 1.05
дает[1] 0.105 1050
. Чтобы получить равные пределы вокруг среднего, вы можете использоватьylim + c(-0.05, 0.05) * diff(ylim) / 2
. На мой взгляд красивее.facet_grid()
. Тогда у вас будет несколько коробчатых диаграмм вместо одного. Таким образом, вы не получаете правильных ограничений.использование
geom_boxplot(outlier.shape = NA)
чтобы не отображать выбросы иscale_y_continuous(limits = c(lower, upper))
изменить пределы оси.Пример.
На самом деле, как показал Рамнат в своем ответе (и Андри тоже в комментариях), имеет смысл обрезать шкалы после расчета статистики с помощью
coord_cartesian
.(Вероятно, вам все равно нужно
scale_y_continuous
будет исправить поломки оси.)источник
coord_cartesian()
не очень хорошо сочетается сcoord_flip()
, по моему опыту, поэтому я предпочитаюscale_y_continuous()
.У меня была та же проблема, и я предварительно вычислил значения для Q1, Q2, median, ymin, ymax, используя
boxplot.stats
:В результате получается коробчатая диаграмма без выбросов.
источник
Одна из идей заключалась бы в том, чтобы выиграть данные в двухпроходной процедуре:
запустите первый проход, узнайте, каковы границы, например, отсечение по заданному процентилю, или стандартное отклонение N выше среднего, или ...
во втором проходе установите значения за заданной границей на значение этой границы
Я должен подчеркнуть, что это старомодный метод, в котором должны преобладать более современные надежные методы, но вы все равно часто с ним сталкиваетесь.
источник
Параметр "coef" функции geom_boxplot позволяет изменять отсечение выбросов в терминах межквартильных диапазонов. Эта опция задокументирована для функции stat_boxplot. Чтобы деактивировать выбросы (другими словами, они обрабатываются как обычные данные), можно вместо использования значения по умолчанию 1,5 указать очень высокое значение отсечки:
источник
Если вы хотите заставить усы увеличиваться до максимального и минимального значений, вы можете настроить
coef
аргумент. Значение по умолчаниюcoef
- 1,5 (т.е. длина усов по умолчанию в 1,5 раза превышает IQR).источник
Ipaper :: geom_boxplot2 - это именно то, что вам нужно.
источник