ggplot2:绘制没有重叠的组的误差线

时间:2014-03-12 12:28:06

标签: r ggplot2

我希望显示两种污染物对同一结果的影响,并且在没有任何群体时对情节感到满意。现在,当我想绘制全年的相同数据并按季节分层时,我要么得到误差条的重叠,要么有三个单独的面板,这些面板不是我需要的最佳选择。
可从此处访问示例数据: https://drive.google.com/file/d/0B_4NdfcEvU7LV2RrMjVyUmpoSDg/edit?usp=sharing

作为以下代码的示例,我创建了一整年的情节:

ally<-subset(df, seas=="allyear")
ggplot(ally,aes(x = set, y = pinc,ymin = lcinc, ymax =ucinc,color=pair,shape=pair)) +
geom_point(position=position_dodge(width=0.5) ,size = 2.5) + 
geom_linerange(position=position_dodge(width=0.5), size =0.5) +  theme_bw() +
geom_hline(aes(yintercept = 0))  + 
labs(colour="Pollutant", shape="Pollutant", y="Percent Increase", x="") + 
scale_x_discrete(labels=c(NO2=expression(NO[2]), 
                               NOx=expression(NO[x]), 
                               Coarse= expression(Coarse),
                               PM25=expression(PM[2.5]),
                               PM10=expression(PM[10])))  + 
theme(plot.title = element_text(size = 12,face="bold" )) + 
theme(axis.title=element_text(size="12") ,axis.text=element_text(size=12)) 

但是当我添加facet_grid(.~ seas)时,我会有三个独立的面板。如何在一个面板中显示全年的这些数据并按季节划分?

1 个答案:

答案 0 :(得分:3)

颜色或形状需要用来代表季节,而不是污染物。

然后这应该接近你想要的:

library(ggplot2)
ggplot(df, aes(x = set, y = pinc,ymin = lcinc, ymax =ucinc, 
               color=seas, shape=pair)) +
    geom_point(position=position_dodge(width=0.5), size = 2.5) + 
    geom_linerange(position=position_dodge(width=0.5), size =0.5) +  theme_bw() +
    geom_hline(aes(yintercept = 0))  + 
    labs(colour="Season", shape="Pollutant", y="Percent Increase", x="") + 
    scale_x_discrete(labels=c(NO2=expression(NO[2]), 
                              NOx=expression(NO[x]), 
                              Coarse= expression(Coarse),
                              PM25=expression(PM[2.5]),
                              PM10=expression(PM[10])))  + 
    theme(plot.title = element_text(size = 12,face="bold" )) + 
    theme(axis.title=element_text(size="12") ,axis.text=element_text(size=12)) 

enter image description here

我认为刻面可以为您提供更好的图表 -

如果您想将注意力集中在每种污染物的季节比较上,请使用此(facet_grid(~pair, labeller=label_both)):

enter image description here

如果您想将注意力集中在每个季节的污染物比较上,请使用此(facet_grid(~seas, labeller=label_both)): enter image description here