2016-08-07 6 views
0

Ich habe folgende dataset.Boxplots entlang einer kontinuierlichen Achse in ggplot2

Und wollen es mit ggplot2 plotten, aber die Boxplots in einer kontinuierlichen Skala.

Allerdings konnte ich keinen Weg finden, das zu tun. Dies ist die am weitesten ich bekommen konnte:

ggplot(t, aes(x=treatment, y=loss)) + 
    scale_fill_manual(values=cbPalette)+ 
    geom_boxplot(fill="white") + 
    geom_point(col="blue")+ 
    scale_x_discrete(labels=c("35.9°C\nmedian\nPBT","40.8°C\n95perc \nPBT","42.6°C\n median\nVMT"))+ 
    ylab("weight lost(g)")+ 
    xlab("")+ 
    theme(panel.background = element_rect(fill='transparent', colour='black'), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     axis.title.x = element_text(colour="black", size=14), 
     axis.text.x = element_text(angle=0, vjust=0.5,colour="black", size=14), 
     axis.title.y = element_text(colour="black", size=14), 
     axis.text.y = element_text(angle=0, vjust=0.5,colour="black", size=14) 
     )+ 
    theme(legend.position="none")+ 
    annotate("text", size=5, x = 0.5,y= 25, label = "A") 

Antwort

0

Spalte loss wird aus dem Datensatz fehlt: Ich vermute, es ist der Unterschied zwischen vor und nach den Gewicht (die in Kg im Datensatz ausgedrückt werden). Ich nehme auch an, dass Sie mit "kontinuierlicher Skalierung" meinen, dass die Behandlung als reelle Zahl und nicht als Faktor auf der x-Achse dargestellt wird. Wenn das der Fall ist, genügt es, eine group Anweisung hinzuzufügen.

## add loss (in gr) 
t <- t %>% mutate(loss=-1e3*(post.weight-pre.weight)) 

p <- ggplot(t, aes(x=treatment, y=loss, group=treatment)) + 
    scale_fill_manual(values=cbPalette)+ 
    geom_boxplot(fill="white") + 
    geom_point(col="blue")+ 
    ylab("weight lost(g)")+ 
    xlab("")+ 
    theme(panel.background = element_rect(fill='transparent', colour='black'), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     axis.title.x = element_text(colour="black", size=14), 
     axis.text.x = element_text(angle=0, vjust=0.5,colour="black", size=14), 
     axis.title.y = element_text(colour="black", size=14), 
     axis.text.y = element_text(angle=0, vjust=0.5,colour="black", size=14) 
     )+ 
    theme(legend.position="none")