R 绘制垂直线以区分不同的数据“类别”

R 绘制垂直线以区分不同的数据“类别”,r,ggplot2,R,Ggplot2,我的数据框是这样的 Year<-c(2009, 2008.75, 2008.5, 2008.25, 2008, 2007.66, 2007.33, 2007, 2006, 2006.75, 2006.5, 2006.25, 2005, 2005.66, 2005.33, 2004) Depth<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) Data<-runif(16, -1.0, 1.0) dd<-data.frame(Year,

我的数据框是这样的

Year<-c(2009, 2008.75, 2008.5, 2008.25, 2008, 2007.66, 2007.33, 2007, 2006, 2006.75, 2006.5, 2006.25, 2005, 2005.66, 2005.33, 2004)
Depth<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
Data<-runif(16, -1.0, 1.0)
dd<-data.frame(Year, Depth, Data)
现在。。。我需要绘制数据与深度的关系,到目前为止,我正在使用ggplot2,代码如下所示

G<-ggplot(dd, aes(Depth, Data))+
    geom_line(color="blue3", size=.25)
G<-G+ggtitle("Title")+theme_bw()
G<-G+labs(x="Depth (m)",  y=expression("norm value"))
G
但我还需要添加垂直线,以区分对应于每年年初的图的不同部分,即dd数据集年份列的每个整数。我不需要它是花哨的,我只需要在每一个对应的深度为整型值的一个薄的,黑色的,垂直的线。是否可以使用ggplot2?

使用几何图形,如下所示:

G + geom_vline(xintercept = dd$Depth[dd$Year %% 1 == 0])
library(dplyr)
G + geom_vline(aes(xintercept = Depth), data = ~ filter(.x, Year %% 1 == 0))
也可以这样写:

G + geom_vline(xintercept = dd$Depth[dd$Year %% 1 == 0])
library(dplyr)
G + geom_vline(aes(xintercept = Depth), data = ~ filter(.x, Year %% 1 == 0))
使用如下几何图形:

G + geom_vline(xintercept = dd$Depth[dd$Year %% 1 == 0])
library(dplyr)
G + geom_vline(aes(xintercept = Depth), data = ~ filter(.x, Year %% 1 == 0))
也可以这样写:

G + geom_vline(xintercept = dd$Depth[dd$Year %% 1 == 0])
library(dplyr)
G + geom_vline(aes(xintercept = Depth), data = ~ filter(.x, Year %% 1 == 0))

非常漂亮的解决方案。虽然我觉得OP的想象有点不幸。。。e、 早期年份在右边,深度而不是年份作为x变量…非常漂亮的解决方案。虽然我觉得OP的想象有点不幸。。。e、 早期年份在右边,深度而不是年份作为x变量。。。