2017-12-07 1 views
0

Ich würde gerne einen gruppierten Boxplot mit ggplot plotten. So etwas wie das Bild unten:Boxplot in ggplot gibt unerwartete Ausgabe

enter image description here

Im Folgenden finden Sie eine Probe (10 Zeilen) aus meinen Daten:

alpha colsample_bytree best_F1 
35 0.00 0.5     0.5825656 
78 0.10 0.3     0.4716612 
68 0.00 0.3     0.4714286 
27 0.40 1.0     0.4786216 
49 0.15 0.5     0.4943968 
62 0.00 0.3     0.4938805 
70 0.00 0.3     0.4849785 
73 0.10 0.3     0.4997061 
59 0.30 0.5     0.4856369 
88 0.20 0.3     0.4552402 


    sort(unique(data$alpha)) 
    0 0.1 0.15 0.2 0.3 0.4 

    sort(unique(data$colsample_bytree)) 
    0.3 0.5 1 

Mein Code ist folgende:

library(ggplot2) 
library(ggthemes) 

ggplot(data, aes(x= colsample_bytree, y = best_F1, fill = as.factor(alpha))) + 

geom_boxplot(alpha = 0.5, position=position_dodge(1)) + theme_economist() + 
ggtitle("F1 for alpha and colsample_bytree") 

Dies erzeugt das folgende Diagramm:

enter image description here

und die folgende Warnung:

Warning message: 
"position_dodge requires non-overlapping x intervals" 

Da die Variable colsample_bytree 3 diskrete Werte annimmt und die Variable alpha dauert 6 I 3 Gruppen von Boxplots zu sehen erwarten würde --each Gruppe mit 6 Boxplots umfasst zu dem entsprechenden verschiedene Alpa-Werte und jede Gruppe, die auf einem anderen Wert von colsample_bytree positioniert ist, d 0,3, 0,5 und 1.

Ich würde erwarten, dass die Boxplots sich nicht überschneiden, wie in dem Beispiel, das ich zitiert habe.

+0

Ihr Beispiel oben verwendet eine kategorische X-Achse – Axeman

Antwort

0

Sie müssen nur data$colsample_bytree <- as.factor(data$colsample_bytree) einfügen, bevor Sie Ihre Daten mit dem ggplot Befehl plotten.

Verwandte Themen