1

I am trying to plot bar graph with error bar and significance star. Everything is going fine except on significance star is dropping on error bar that looks weird. Is it possible to adjust significance star individually. Thanks.

R code

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")

My data

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

4
  • 1
    Could you dput() your data to make it easier to read in? Commented Jul 15, 2016 at 15:30
  • My first thought is that if you increased your y-axis upper limit the asterisk may be able to fit itself above the error bars as desired. (You may also want to shift the legend to the upper left from upper right) Commented Jul 15, 2016 at 15:31
  • 3
    You are mapping the y position of your text on value. If you map it to value + sd instead you'll start with all stars at the upper limit of the error bars instead of at the top of the bar. Commented Jul 15, 2016 at 15:33
  • I don't know how to to do dput(). Increasing the y-axis will also increase the distance of other point also. I want to modify the 'polyprotein' only. Thanks Commented Jul 15, 2016 at 15:33

1 Answer 1

4

Place the text layer at the top of the error bars rather than the top of the bars by mapping the y positions as value + sd within geom_text.

geom_text(aes(y = value + sd, label = star),...)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.