2013-10-05 21 views
1

所以我繪製我的一些數據,這是在這種格式如何顯示顯著p - 值在R圖

Time SD Average Situation n se 

而且我用這個代碼

ggplot(data, aes(x=Time, y=Average, colour=Situation)) + 
    geom_errorbar(aes(ymin=Average-se, ymax=Average+se), width=.1) + 
    geom_line() + 
    geom_point() 

我想要做一件T .test在Exp和Control之間,我想在星圖中用星號'*顯示重要性....我很難找到這樣做的代碼....我知道如何做一個正常的T.測試,但我真的希望那些有星號的圖顯示重要性

+0

我不能回答ggplot,因爲我不使用它......但在基礎R你可以使用'文字「功能。 – nico

+0

那麼如何使用文本函數編輯我的圖? –

+0

我不確定'text'是否適用於'ggplot' ......但基本上你只需要'text(x,y,「我的文本」)'。請參閱'?text'獲取完整的幫助。否則,將繪圖保存爲pdf,在您最喜歡的矢量圖形程序(我的Inkscape)中打開並在那裏調整圖形。更有效,可以讓您更輕鬆地組成更大的數字。 – nico

回答

0

編輯我在您的意見重寫光這給這對我的作品的例子:

比方說,你想從t檢驗添加的p值到圖形...

set.seed(1) 
### data following OPs format 
data <- data.frame(Time=seq(10), 
        Average=abs(rnorm(10)), 
        Situation=rep(letters[1:2], 5) 
        ) 
### get p value 
pval <- t.test(data$Average[data$Situation=="a"], 
       data$Average[data$Situation=="b"])$p.value 
### strip to 3 significant digits 
pval <- signif(pval, 3) 
### add asterisk if <0.05 
pval <- ifelse(pval<0.05, paste0(pval, " *"), pval) 
pval <- paste0("t-test \n p=", pval) 

### plot as per OP 
ggplot(data, aes(x=Time, y=Average, colour=Situation)) + 
    geom_line() + 
    geom_point()+ 
### annotate it near lower left corner 
    annotate("text", 
      x=0.25*max(data$Time), 
      y=0.25*max(data$Average), 
      label=pval) 

enter image description here 查看更多選項見?annotate。如果你想要一個p值的符號範圍,那麼你可以通過調用switch而不是ifelse來修改它。

一個更大的問題可能是一個t-test是否適合與時間相關的結果...

+1

我似乎得到這個錯誤:錯誤在if(nrow(layer_data)== 0)return():參數的長度爲零 –

+0

是的,我的錯。錯誤是由於沒有爲註釋的位置提供'x'&'y'值 - 我錯誤地認爲這些是默認值。已經在上面編輯過來反映這一點現在應該可以。 – dardisco

+2

乾杯夥計..但我得到了另一個錯誤錯誤:設置美學不兼容的長度:標籤 –