2017-10-13 66 views
0

我想製作一個類似於Lindfield等人附帶的圖。 2016年,我熟悉的R ggplot命令格式爲:如何在R中創建具有累積標準偏差的barplot?

ggplot(dataframe, aes(x, y)) + geom_bar(stat = 'identity') 

不過,我不知道如何使堆疊barplot累計SE錯誤;只有一個採用position_dodge命令。

我知道使用帶有se錯誤的堆棧條有缺點,但對於我的數據集來說,它比使用unackacked的barplots更具有代表性。

謝謝。

enter image description here

回答

0

我不知道你是如何以適當的方式(我想這取決於如何生成你的價值觀)得到的累計標準差,但我認爲你需要做的計算它們,並將其儲存在第二DF,例如,如果你有這樣創建的初始data.frame:

DF <- data.frame(x=c("a","a","b","b"), 
        sp=c("shark","cod","shark","cod"), 
        y=c(10,5,15,7), 
        stringsAsFactors=FALSE) 

其中y是與每個x點每個物種相關聯的值,那麼你創建包含下一個第二DF和你的se的上限對於每個x值,例如

seDF <- data.frame(x=c('a','b'), 
        yl=c(12,18), 
        yu=c(17,24), 
        stringsAsFactors=FALSE) 

然後你就可以創建你的劇情搭配:

ggplot() + 
geom_bar(data=DF, mapping=aes(x=x,y=y,fill=sp), 
      position="stack", stat="identity") + 
geom_linerange(data=seDF, mapping=aes(x=x, ymin=yl, ymax=yu)) 

我用geom_linerange而不是geom_errorbar,因爲它不會產生任何一端橫樑。

Output of example code

+0

@ tim-quimpo這是否解決了問題?或者是查詢真的是如何獲得累積標準錯誤? – rec29

+0

對不起,遲到的迴應。我理解代碼的邏輯,我認爲這對我有用。但是,您是否可以再次顯示您是如何創建min y和max y值的?第2段中的代碼與第1段中的確切代碼相同。在ggplot命令中,您有一個seDF數據框,並繪製了美學圖,如y1和yu。 –

+0

對不起蒂姆。複製並粘貼錯誤。我編輯了我的答案,實際上包含了seDF的創建/結構。最小值和最大值的創建可能取決於您如何估算所呈現的值。也許有可能得到他s.e.對於你用來做分析的任何常規係數的總和,或者你可能需要使用參數之間的方差 - 協方差矩陣來估計它們。我只是爲了演示圖形目的 – rec29