R 动态将geom_段添加到图表中

R 动态将geom_段添加到图表中,r,ggplot2,R,Ggplot2,我有一个这样的数据帧 library(ggplot2) df = data.frame(N = c(12, 18)) 我想得到 我知道 问题是数据可能会更改,行可以不是两行,而是三行或更多行,并且代码会变得不正确。所以我尝试使用一个循环 v = list() for (i in 1:length(df$N)) { n = geom_segment(aes(x = df$N[i], y = 0, xend = df$N[i], yend = 0.5), color="grey50",

我有一个这样的数据帧

library(ggplot2)
df = data.frame(N = c(12, 18))
我想得到

我知道

问题是数据可能会更改,行可以不是两行,而是三行或更多行,并且代码会变得不正确。所以我尝试使用一个循环

v = list()
for (i in 1:length(df$N)) {
  n = geom_segment(aes(x = df$N[i], y = 0, xend = df$N[i], yend = 0.5), color="grey50", 
                   linetype="dashed", size=1.5)
  v = append(n, v)
}
v
ggplot()+ geom_segment(aes(x = 0, y = 0.5, xend = max(df$N), yend =0.5), color="grey50", 
                       linetype="dashed", size=1.5) + v 

但图表只显示了最后一行。如何修复循环,或者我必须用另一种方法进行修复?

您不需要循环
geom_段
可以处理来自向量的多个输入

df1
v = list()
for (i in 1:length(df$N)) {
  n = geom_segment(aes(x = df$N[i], y = 0, xend = df$N[i], yend = 0.5), color="grey50", 
                   linetype="dashed", size=1.5)
  v = append(n, v)
}
v
ggplot()+ geom_segment(aes(x = 0, y = 0.5, xend = max(df$N), yend =0.5), color="grey50", 
                       linetype="dashed", size=1.5) + v