2013-02-19 49 views
16

這是最初在這裏提出的一個問題的重複:Indicating the statistically significant difference in bar graph但要求R代替python。指示條形圖中的統計顯着性差異使用R

我的問題很簡單。如果可能的話,我想在R中產生條形圖,並指示不同條形之間的顯着差異,例如,如果可能,使用ggplot2。產生這樣的東西。我搜索了一下,但是找不到另一個問題完全一樣的問題。

bar plot showing error bars and sig. diff marking beween bars

+0

那麼只有相鄰的列? A-C,B-D或A-D沒有p值? – 2013-02-19 13:02:32

+0

令人討厭的(不是你的錯),我的本地防火牆中的東西正在殺死你的圖像。你能發佈一個鏈接嗎? – 2013-02-19 13:19:34

+0

延遲道歉。圖片在這裏:http://i.stack.imgur.com/3I6El.jpg – 2013-02-19 17:28:00

回答

15

您可以使用geom_path()annotate()得到類似的結果。對於這個例子,你必須自己決定合適的位置。在geom_path()提供了四個數字來獲得連接線的小滴答。

df<-data.frame(group=c("A","B","C","D"),numb=c(12,24,36,48)) 
g<-ggplot(df,aes(group,numb))+geom_bar(stat="identity") 
g+geom_path(x=c(1,1,2,2),y=c(25,26,26,25))+ 
    geom_path(x=c(2,2,3,3),y=c(37,38,38,37))+ 
    geom_path(x=c(3,3,4,4),y=c(49,50,50,49))+ 
    annotate("text",x=1.5,y=27,label="p=0.012")+ 
    annotate("text",x=2.5,y=39,label="p<0.0001")+ 
    annotate("text",x=3.5,y=51,label="p<0.0001") 

enter image description here

+0

謝謝 - 好吧,這有點煩瑣,但這是我想要的!我想有沒有現成的,一般(自動!)的方式來做到這一點 – 2013-02-19 17:30:43

+0

OOF,任何方式來控制使用faceting時的geom_path? – 2013-02-20 14:15:00

+0

@JimBo然後你將需要一個geom_path()值的數據框,並且在這個數據框中你還必須包含與將用於分面相同名稱和級別的列。 – 2013-02-20 14:30:15

3

我從上面使用所提出的方法,但我發現用於製備比geom_path函數行註釋功能更容易。只需使用「段」而不是「文本」。你必須按細分市場細分,併爲每條線段定義開始和結束的x和y值。

例如製作3行段:

annotate("segment", x=c(1,1,2),xend=c(1,2,2), y= c(125,130,130), yend=c(130,130,125)) 
11

我知道這是一個老問題,並通過Didzis Elferts答案已經爲這個問題的解決方案。但我最近建立了一個ggplot擴展,簡化了添加的意義棒的全過程:ggsignif

代替繁瑣加入geom_pathannotate你的陰謀,你只需要添加一個單層geom_signif

library(ggplot2) 
library(ggsignif) 

ggplot(iris, aes(x=Species, y=Sepal.Length)) + 
    geom_boxplot() + 
    geom_signif(comparisons = list(c("versicolor", "virginica")), 
       map_signif_level=TRUE) 

Boxplot with significance bar

該軟件包的完整文檔可在CRAN獲取。