2016-12-02 2 views
1

В недавних TIMSS report, с которыми мне довелось встретиться, есть сюжет (показано ниже), который, на мой взгляд, очень коммуникативный. Я читал, что такие сюжеты называются графическими объектами в Кливленде, хотя это также добавляет доверительные интервалы. Мне было интересно, можно ли воспроизвести его в ggplot2 или matplotlib. Все намеки приветствуются. plot http://timss2015.org/wp-content/uploads/filebase/science/1.-student-achievement/science-distribution-of-science-achievement-grade-4-table.jpgКливлендский участок в ggplot2

+0

Можете ли вы включить данные, которые предоставят нам [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –

+0

Я считаю, что данные для сюжета [здесь] (http://timss2015.org/wp-content/uploads/filebase/science/1.-student-achievement/1_1_science-distribution-of-science-achievement-grade-4. XLS) –

ответ

2

Используя набор данных iris:

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

Это должно дать вам суть того, как использовать ggplot2 для достижения этой цели. Данные, которые вы предоставили, могут быть легко использованы без суммирования dplyr.

Смежные вопросы