Еквивалент на „диапазон“ в boxplot за ggplot2

Опитвам се да накарам мустаците на geom_boxplot на ggplot2 да покрият извънредните стойности. Извънредните стойности де факто няма да бъдат показани като точки, тъй като са обхванати от графиката.

Ако използвах стандартния „boxplot“, щях да използвам:

boxplot(x, range=n)

където n ще бъде голямо число, така че вместо да показват извънредните стойности, мустаците на квадратните графики се разширяват, за да покрият извънредните стойности.

Как може да стане това с ggplot2? Опитах:

ggplot(myDF, aes(x=x, y=y)) +
geom_boxplot(range = 5)

Забележка: Не искам да отхвърлям извънредните стойности, използвайки нещо като:

geom_boxplot(outlier.shape = NA) 

person Ant    schedule 03.09.2013    source източник


Отговори (2)


Единственият начин, който знам, е да изчислите сами стойностите на кутията по следния начин:

library(plyr)
xx <- ddply(mtcars,.(cyl),
            transform,
            ymin = min(mpg),
            ymax = max(mpg),
            middle = median(mpg),
            lower = quantile(mpg,0.25),
            upper = quantile(mpg,0.75))

ggplot(data = xx,aes(x = factor(cyl))) + 
    geom_boxplot(aes(ymin = ymin,ymax = ymax,middle = middle,upper = upper,lower= lower),
                 stat = 'identity')

Има някои предупреждения при повикването ddply, но трябва да можете да ги игнорирате безопасно.

person joran    schedule 03.09.2013
comment
Това работи перфектно, благодаря. Междувременно мисля, че може да съм намерил друг подход към проблема, но не съм го тествал: (stackoverflow.com/questions/4765482/) - person Ant; 03.09.2013
comment
Вижте също раздела # Използване на предварително изчислена статистика в ?geom_boxplot - person Henrik; 03.09.2013
comment
@Ant Да, това вероятно също ще свърши работа. По принцип се стига до едно и също нещо: ръчно изчисляване на обобщените статистики. - person joran; 03.09.2013

Предполагам, че този въпрос все още е актуален, тъй като тази страница в топ 3 на Google търсене за този проблем с извънредни стойности. Така:

По-лесният начин за справяне с отклоненията е (поне в последния ggplot от 04 април 2016 г.) е да използвате "coef":

... + geom_boxplot(coef = 5)

От ръководството (?geom_boxplot изход копиране-поставяне по-долу):

coef дължината на мустаците като кратно на IQR. По подразбиране е 1.5

Подробности

Горният мустак се простира от шарнира до най-високата стойност, която е в рамките на 1,5 * IQR от шарнира, където IQR е междуквартилният диапазон или разстоянието между първия и третия квартил. Долният мустак се простира от пантата до най-ниската стойност в рамките на 1,5 * IQR от пантата. Данните отвъд края на мустаците са отклонения и са изобразени като точки (както е посочено от Tukey).

В диаграма с кутийка с назъбване прорезите се простират на 1,58 * IQR / sqrt(n). Това дава приблизително 95 Вижте McGill et al. (1978) за повече подробности.

person Dmitriy    schedule 04.04.2016