r-在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处创建一条线。一个棘手的问题是,除了终端数据(最后一个)之外,所有数据的末尾都需要有一个"+"。有人试过这个吗?

感谢

您的函数已经向量化了,所以您不需要更改任何东西,

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

但这比第一种选择效率更低,也更复杂。

最新更新