2013-08-27 4 views
5

Gibt es eine einfache Möglichkeit, die Whiskers aus einem Box-Whisker-Plot in ggplot2 in R zu entfernen? Ich möchte nur die Kisten selbst behalten.Entfernen Whisker in Box-Whisker-Plot

MWE:

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

Antwort

7

Wir brauchen nur das Argument coef = 0 hinzuzufügen:

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

enter image description here

+0

Das ist großartig! Woher weißt du das? Ich konnte keine Dokumentation finden, die dieses ** coef' ** diskutiert. Ich verstehe, was es tut, aber es scheint so mächtig zu sein, dass ich vermute, dass es ein "Coef" gibt, das ich auf anderen Plots anpassen kann, die sehr hilfreich sein könnten. Vielen Dank! –

+1

@MikeWilliamson Danke. Um ehrlich zu sein, erinnere ich mich nicht. In der "geom_boxplot" -Dokumentation heißt es, dass dieses Argument die "Länge der Whiskers als Vielfaches von IQR. Defaults to 1.5" bestimmt, also habe ich wahrscheinlich 0 probiert. Für Boxplots mit der R-Base ist es schwieriger, die benötigten Argumente zu finden (' ? bxp') whisklty und stapelty: 'boxplot (mpg ~ cyl, Daten = mtcars, whisklty = 0, stapelty = 0)' – mpalanco

7

Eine Möglichkeit stat_summary_df() wäre die Verwendung meadian, 25 und 75 Perzentile zu berechnen und dann diese Daten mit geom="crossbar" plotten. Automatisch kann es mit "median_hilow" innerhalb der stat_summary_df() getan werden. Dazu müssen Sie vor dem Plotten die Bibliothek Hmisc hinzufügen und zusätzlich die Funktion stat_summary_df( definieren. Die Standardwerte für "median_hilow" sind 2,5 und 97,5 Perzentile, daher müssen Sie das Argument conf.int=0.5 hinzufügen.

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