带有错误条的条形图ggplot2

时间:2016-07-15 15:23:31

标签: r ggplot2

我正在尝试绘制带有误差条和有效星的条形图。一切都很顺利,除非重要性明星正在下降到看起来很奇怪的错误栏。是否可以单独调整重要星。感谢。

R代码

dat <- read.delim("read_count1", header=T)
dat2 <- dat
dat2$condition <- factor(dat2$condition)
dat2$star <- ""
dat2$star[dat$p == .001]  <- "*"
dat2$star[dat$p == 0.0001]  <- "**"

ggplot(dat2, aes(x=group, y=value, fill=condition)) + 
geom_bar(colour="black", stat="identity", position=position_dodge(),
         size=.3,width=.5) +                         # Thinner lines
xlab("Condition") + ylab("Viral transcript count") + # Set axis labels
theme_bw()  +
theme(legend.position=c(0.85, .9), legend.direction = "vertical", 
      legend.key.size = unit(4, 'lines'), legend.title=element_blank()) +
theme(axis.text = element_text(size=8), axis.title = element_text(size=8,face="bold")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
geom_errorbar(aes(ymin=value-sd, ymax=value+sd),
              width = 0.2,                           # Width of the error bars
              position = position_dodge(-.5)) + 
geom_text(aes(label=star), colour="red", vjust=0, size=5, position=position_dodge(.5)) +
scale_y_continuous(expand=c(0,0), limits = c(0, 13536400))+
scale_x_discrete("Viral gene")

我的数据

condition   value   sd  group   p
1h  968738.666666667    131475.799527264    Capsid protein  
1h  340500.666666667    48855.1227235521    Nucleic acid binding    protein 
1h  604250.666666667    100141.322860912    Triple gene block p1    
1h  293140.333333333    48797.8510831505    Triple gene block p2    
1h  91655.3333333333    20761.7967992497    Triple gene block p3    
1h  3615029.33333333    635586.634090376    Replication polyprotein 
4h  2787724 245341.698797819    Capsid protein  0.001
4h  971762.666666667    99832.8035483995    Nucleic acid binding    protein 0.001
4h  2017158.33333333    107557.964732201    Triple gene block p1    0.0001
4h  949650  50649.2672306323    Triple gene block p2    0.0001
4h  286073.666666667    8140.5804051882 Triple gene block p3    0.0001
4h  11525318.6666667    1425912.09504525    Replication polyprotein 0.001

enter image description here

1 个答案:

答案 0 :(得分:4)

通过将value + sd内的y位置映射为geom_text,将文本图层放在误差线的顶部而不是条形的顶部。

geom_text(aes(y = value + sd, label = star),...)