2011-11-15 5 views
9

Tak, wiem, że to już było, znalazłem także odpowiedź Hadley'a na grupy google, że nie ma jeszcze wycięć dla boxplotów ggplot2. Moje pytanie jest dwojakie: czy to się zmieniło (jest już natywna implementacja wycięć), a jeśli nie, to można coś z tym zrobić.Czy mogę uzyskać wycięcia boxplot w ggplot2?

Chodzi mi o to, że nie potrzebuję optyki karbu, która reprezentuje granice pewności przez jakiś zacieniony obszar, który jest odpowiednio umieszczony w innej warstwie nad planem, również będzie ładnie wyglądać.

Dodano także zrzut ekranu, bo usłyszał pytanie grafika nie jest kompletna bez graficznego enter image description here

Odpowiedz

14

Aktualizacji Oprócz opisanych poniżej opcji, wersja 0.9.0 z ggplot2 obejmuje tę funkcję w geom_boxplot. Badając ?geom_boxplot ujawnia notch i notchwidth argumentu:

+ geom_boxplot(notch = TRUE, notchwidth = 0.5) 

Nie eleganckie grafiki, ale tutaj jest przykład:

# confidence interval calculated by `boxplot.stats` 
f <- function(x) { 
    ans <- boxplot.stats(x) 
    data.frame(ymin = ans$conf[1], ymax = ans$conf[2]) 
} 

# overlay plot (upper panel below) 
p <- ggplot(iris, aes(Species, Sepal.Length)) + geom_boxplot() + 
    stat_summary(fun.data = f, geom = "linerange", colour = "skyblue", size = 5) 
p 

# base graphics (lower panel below) 
boxplot(Sepal.Length ~ Species, data = iris, notch = TRUE) 

można zmienić apparence pręta CI przez szczypanie argumenty stat_summary. Wersja

enter image description hereenter image description here

poprzeczka:

f <- function(x) { 
    ans <- boxplot.stats(x) 
    data.frame(ymin = ans$conf[1], ymax = ans$conf[2], y = ans$stats[3]) 
} 

p <- ggplot(iris, aes(Species, Sepal.Length)) + 
    geom_boxplot(width = 0.8) + 
    stat_summary(fun.data = f, geom = "crossbar", 
    colour = NA, fill = "skyblue", width = 0.8, alpha = 0.5) 
p 

enter image description here

+0

Nieźle! Przez poszerzenie prostokąta skyblue i może dodanie nieco przezroczystości do niego byłoby w zasadzie idealne. Dziękuję Ci bardzo. –

+0

hmm, zdaję sobie sprawę, że ustalony rozmiar jest problemem podczas skalowania wykresu. Czy nie możemy mieć bardziej dynamicznego rozmiaru? –

+0

Zaktualizowano. Umieściłem wersję z poprzeczką. – kohske

2

To może być ciekawe, że na ggplot2-dev mailing list post dotyczący notched box plots została wysłana.

Możesz znaleźć stronę programowania pod adresem github. Pakiet można zainstalować przez:

# install.packages("devtools") 
library(devtools) 
install_github("ggplot2")