2013-08-06 44 views
1

我正在創建一個圖表,其中一條白線突破了欄前的欄(抱歉無法發佈圖像)。我已經得到了代碼做一次,但我還沒有很好的循環。創建一個循環來在ggplot中寫註釋

library(ggplot2) 

count <- c(61.8,18.8) 
name <- c("A","B") 
yes <- data.frame(count,name) 

j <- ggplot(yes, aes(x=name, y=count)) + 
geom_bar(stat="identity", position="dodge") 

要添加只有一行我創造了這個功能...

b <- function (yx){ 
j + annotate("segment", x=-Inf, xend=Inf, y=yx, yend=yx,size=1, colour="white") 
} 

b(8) 

這是我堅持,我想提出的是可以通過像載體運行一個循環。 ..

yx <- c(8,10,20) 

,並創建在圖8,10和20的一個棘手的點的線是所有比端子一個其他的數據(最後一個)需要有一個「+」在末端。有沒有人試過這個?

感謝

回答

3

你的功能已經被矢量化,所以你不需要改變任何事情,

add_lines <- function(yx){ 
    annotate("segment", x=-Inf, xend=Inf, y=yx, yend=yx,size=1, colour="white") 
} 

j + add_lines(c(8,10,20)) 

概念,但是,如果你想添加行一個接一個,你可以簡單地使用一個列表:

add_oneline <- function(yx){ 
    annotate("segment", x=-Inf, xend=Inf, y=yx, yend=yx,size=1, colour="white") 
} 

lines <- lapply(c(8,10,20), add_oneline) 
j + lines 

但這是效率較低,比第一個選項更復雜。

+0

真棒,這是一個非常酷的方式來看待它。謝謝!這正是我想要的,因爲我直接將它放到ggplot中,我不認爲這是可能的。 –