2013-08-27 18 views
5

Czy istnieje prosty sposób, aby usunąć wąsy boksu z boksera w ggplot2 w R? Chciałbym zatrzymać tylko same pudełka.Usunąć wąsy w polu-wąsek-działka

MWE:

library("ggplot2") 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 
p + geom_boxplot(outlier.size = 0) 

Odpowiedz

7

Musimy tylko dodać argument coef = 0:

library(ggplot2) 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 
p + geom_boxplot(outlier.size = 0, coef = 0) 

enter image description here

+0

to świetnie! Skąd to wiesz? Nie mogłem znaleźć żadnej dokumentacji omawiającej to * 'coef' **. Rozumiem, co robi, ale wygląda na to, że jest tak potężny, że podejrzewam, że istnieje ** 'coef' **, który mogę dostosować na innych poletkach, które mogą być całkiem pomocne. Dzięki! –

+1

@MikeWilliamson Dziękuję. Szczerze mówiąc, nie pamiętam. W dokumentacji 'geom_boxplot' mówi, że ten argument określa" długość wąsów jako wielokrotność IQR. Domyślnie do 1,5 ", więc prawdopodobnie próbowałem 0. Dla pudełek przy użyciu bazy R jest trudniej znaleźć potrzebne argumenty (' ? bxp') whisky i staplelty: 'boxplot (mpg ~ cyl, data = mtcars, whisklty = 0, staplelty = 0)' – mpalanco

7

Jednym ze sposobów jest użycie stat_summary_df() obliczyć meadian, 25 percentyli i 75, a następnie wykreślić te dane z geom="crossbar". Automatycznie można to zrobić za pomocą "median_hilow" wewnątrz stat_summary_df(). W tym celu przed rozpoczęciem drukowania należy dodać bibliotekę Hmisc, a także zdefiniować funkcję stat_summary_df(). Domyślne wartości dla "median_hilow" to 2,5 i 97,5 percentyla, więc musisz dodać argument conf.int=0.5.

stat_sum_df <- function(fun, geom="crossbar", ...) { 
    stat_summary(fun.data=fun, colour="red", geom=geom, width=0.2, ...) 
} 

library(Hmisc) 
ggplot(mtcars, aes(factor(cyl), mpg)) + 
    stat_sum_df("median_hilow",conf.int=0.5,fill="white") 

enter image description here

Powiązane problemy