如何使用ggplot绘制带有误差图的分组Crossbar图?

时间:2020-06-22 22:41:33

标签: r ggplot2

我的桌子看起来像这样:

                   name              mean           median   confi_low       confi high
1               factor1        865.04343        132.1322    1.2720944         18.163728      1
2               factor2        21.643254        98.07801    3.5228677         987.27607      1
3               factor3        5.14328320      -98.56740    2.8130112         95.79901      1
4              factor 4        112.744184       9.2642842   2.4775374         953.5526      2
5              factor 5        -6.493834        5.01283721  3.3698789         10.10956      2

我想创建一个带有误差图的交叉图,其中confi_low为下边界,confi_high为上边界,并标记了均值。此外,我想根据使用年限对地块进行分组,并将两组彼此分开,但是所有地块都应在一张图中。此外,在每个组中,地块应按升序排序。这是我的方法:

ggplot(graphdata, aes(x = fct_reorder(name, mean), y = mean, group = factor)) +
  geom_hline(yintercept=0, color = "black") +
  geom_col(width = 0.5, color = "grey", alpha = 0.2) +
  geom_point(size=2.5) +
  geom_errorbar(aes(ymin = confid_low, ymax = confi_high), width = 0.2) +
  theme_classic() 

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试类似的方法。我创建了factor2,以显示如何创建多个图:

graphdata %>% mutate(factor2=rep(c(1,2),5)) -> graphdata

ggplot(graphdata, aes(x = reorder(name,serialcorrelation), y = serialcorrelation, group = factor)) +
  geom_hline(yintercept=0, color = "black") +
  geom_col(width = 0.5, color = "grey", alpha = 0.2) +
  geom_point(size=2.5) +
  geom_errorbar(aes(ymin = confidenceint_low, ymax = confidenceint_high), width = 0.2) +facet_wrap(~factor2)+theme(axis.text.x = element_text(angle=90))

enter image description here