ggplot2画簇状柱形图

样本格式如下:

  Sample Value      Date MeanError
1    Th1  8.60      术前      2.69
2    Th1 13.77   术后3天      3.60
3    Th1  8.85   术后7天      2.64
4    Th1  8.36 术后3个月      2.50
5   Th17  1.89      术前      0.38
6   Th17  3.24   术后3天      0.42
7   Th17  2.82   术后7天      0.36
8   Th17  2.11 术后3个月      0.30

现在需要以Sample为横轴,分两组,每组分别显示术前术后的柱形图,代码如下

qplot(Sample, Value, data=data1, geom="histogram", stat='identity',fill=Date, position="dodge")

注意使用histogram,并且stat='identity'指定了y轴,为Value,如果不加这句,则默认统计个数,fill=Date表示分组采用Date栏。

这样我们可以得到如下图像:

QQ截图20150630210651

当我们想加上误差条的时候,可以加上如下代码

+geom_errorbar(aes(ymax=Value+MeanError/2, ymin=Value-MeanError/2, width=0.2),position=position_dodge(width=0.9))

其中aes里面的信息是基本信息,position=position_dodge(width=0.9)表示误差条的位置,可以改变这个width来看看不同效果

最终的效果图为:

QQ截图20150630210923

如果希望柱状图之前存在空隙,可以如下设置

qplot(Sample, Value, data=data1, width=0.85, geom="bar", stat="identity", fill=Date, position = position_dodge(width = 0.9))

如果希望bar的顺序按照指定的,可以采用如下方法:

x <- c("Baseline", "3days", "7days", "3months")
ggplot(data=data1, map=aes(x=Sample, y=Value, width=0.85,fill=factor(Date,x)))+geom_bar(stat="identity", colour="black",position = position_dodge(width = 0.9))

QQ截图20150702130404

最后如果加上 theme(legend.title=element_blank()) 可以去掉factor信息

完成!

 

发表评论

邮箱地址不会被公开。 必填项已用*标注