在最近碰巧遇到的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
答案 0 :(得分:3)
使用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()
这应该为您提供如何使用ggplot2
来完成此任务的要点。您提供的数据可以轻松使用,无需dplyr
总结。
答案 1 :(得分:1)