2015-07-13 40 views
0

我寫了這個代碼:如何使用geom_path在GGPLOT2添加一行條形圖

df = data.frame(a=c('A','A','B','B'),b=c('X','Y','X','Y'),c=c(1,2,3,2)) 

q = ggplot(df, aes(a, y=c,fill=b))+ 
    geom_bar(position=position_dodge(), stat="identity") 

path = data.frame(x=c(1,2),y=c(2,2)) 
q = q + geom_path(data=path,aes(x=x, y=y)) 

我希望得到一個情節有一個水平線開始的前兩米欄的交界處,結束於最後兩根高度的連接處(Y軸位置)2。

然而,我的代碼給我一個錯誤:

"Error in eval(expr, envir, enclos) : object 'b' not found"

更新: 感謝Chris,移動 「補」 到geom_bar解決了一部開拓創新的問題。但是現在,一個新的問題發生了。我改變了我的代碼:

library(ggplot2) 
df=data.frame(a=c('A','A','B','B'),b=c('X','Y','X','Y'),c=c(1,2,3,2),err=c(.1,.2,.1,.2)) 
q = ggplot(df, aes(a, y=c))+ 
    geom_bar(aes(fill=b),position=position_dodge(), stat="identity")+ 
    geom_errorbar(aes(ymin=c-err,ymax=c+err), width=0.3, lwd = 1, position=position_dodge(0.9)) 

path = data.frame(x=c(1,2),y=c(2,2)) 
q = q + geom_path(data=path,aes(x=x, y=y)) 

print(q) 

因爲「補」是不是在原來的ggplot()函數,誤差棒的位置搞砸。

回答

0

你應該在你的第一個ggplot呼叫轉移的aes

q <- ggplot(df, aes(a, y=c)) + 
    geom_bar(aes(fill=b), position=position_dodge(), stat='identity') 

path <- data.frame(x=c(1,2),y=c(2,2)) 
q <- q + geom_path(data=path,aes(x=x, y=y)) 

編輯:添加代碼的完整性

+0

我也說不清,是什麼改變了有關的情節? –

+0

@ small_data88它繪製了一條路徑... – 2015-07-13 04:59:13

+0

哦,我現在看到它繪製了從第二個酒吧到第三個酒吧的路徑。涼。 –