2016-07-15 35 views
1

我正在嘗試繪製帶有錯誤欄和有意義明星的條形圖。一切都很好,除了意義明星在錯誤欄上下降,看起來很奇怪。是否有可能單獨調整顯着性星號。謝謝。在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

您可以輸入()您的數據以便於閱讀嗎? – BarkleyBG

+0

我的第一個想法是,如果您增加了y軸上限,那麼星號可以根據需要將它自己放在錯誤欄上方。 (您可能還想將圖例從右上角移到左上角) – BarkleyBG

+3

您正在將文本的y位置映射到'value'上。如果你將它映射到'value + sd',而不是從錯誤條的上限而不是條的頂部開始。 – aosmith

回答

4

將通過映射y位置在誤差線,而不是杆的頂部的頂部的文本層作爲value + sdgeom_text之內。

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