2016-12-02 5 views
1

In der aktuellen TIMSS report, die ich zufällig zu begegnen, gibt es eine Handlung (siehe unten), die meiner Meinung nach sehr kommunikativ ist. Ich habe gelesen, dass solche Plots Cleveland Dot Plots genannt werden, obwohl auch hier Konfidenzintervalle hinzugefügt werden. Ich habe mich gefragt, ob es in ggplot2 oder matplotlib reproduziert werden kann. Alle Hinweise sind willkommen. plot http://timss2015.org/wp-content/uploads/filebase/science/1.-student-achievement/science-distribution-of-science-achievement-grade-4-table.jpgCleveland Dot-Plot in ggplot2

+0

Können Sie bitte Daten angeben, die uns ein [reproduzierbares Beispiel] liefern (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –

+0

Ich glaube, Daten für Handlung ist [hier] (http://timss2015.org/wp-content/uploads/filebase/science/1.-student-achievement/1_1_science-distribution-of-science-achievement-grade-4. xls) –

Antwort

2

Mit dem iris Datensatz:

library(dplyr) 
library(ggplot2) 

plot_data <- iris %>% 
    group_by(Species) %>% 
    summarise_each(funs(mean, sd, n(), q95=quantile(., 0.95), q75=quantile(., 3/4), q25=quantile(., 1/4), q5 = quantile(., 0.05)), Sepal.Length) %>% 
    mutate(se = sd/sqrt(n), 
     left95 = mean - 2*se, 
     right95 = mean + 2*se) 


ggplot(plot_data, aes(x = Species, y = mean)) + 
    geom_crossbar(aes(ymin = q5, ymax = q95), fill = "aquamarine1", color = "aquamarine1", width = 0.2) + 
    geom_crossbar(aes(ymin = q25, ymax = q75), fill = "aquamarine4", color = "aquamarine4", width = 0.2) + 
    geom_crossbar(aes(ymin = left95, ymax = right95), fill = "black", color = "black", width = 0.2) + 
    coord_flip() + 
    theme_minimal() 

enter image description here

Dies sollte Ihnen das Wesentliche, wie ggplot2 zu verwenden, um dies zu erreichen. Die von Ihnen bereitgestellten Daten können problemlos ohne die dplyr Zusammenfassung verwendet werden.