将分组的 geom_vline 添加到多个方面

mou*_*ler 4 grouping r line ggplot2

我正在尝试添加应该特定于每个情节方面的垂直线。我试图通过与绘图数据分组相同的过程对 geom_vline 数据进行分组来做到这一点。垂直数据来自与点不同的数据帧。下面的代码行是我所拥有的。

plots <-
  dd %>%
   ggplot(aes(Date, TDS)) +
    theme_bw() +
    geom_point(aes(group = Well, color = Well), size = 1) +
    ggtitle(paste("WMA A-AX TDS")) +
    ylab("mg/L") +
    geom_smooth(aes(group= Well), method = "loess", color = "black",  se = FALSE) +
    geom_vline(data = cpdates, aes(group = Well_LOC, xintercept=as.numeric(CPT_DATE)), color ="blue", lwd=0.5, lty=1) +
    facet_grid(Well~.)
Run Code Online (Sandbox Code Playgroud)

但是,此代码不会对 geom_vline 数据进行分组,而是将所有行放在所有方面中。分组适用于点和黄土线,那么为什么不适用 vlines?

多面垂直线的示例图

我已经尝试了很多方法来解决这个问题,但没有任何效果。任何和所有建议将不胜感激。

Pau*_*aul 5

Facet 不使用组美学。情节在 上分面Well,因此cpdates需要一个Well变量。

这里有一些虚拟数据来重现有问题的情节。

library('ggplot2')
library('dplyr')

cpdates <- data.frame(
  Well_LOC = c(4, 5, 6, 8),
  CPT_DATE = c(1, 2, 3,4))

dd <- data.frame(
  Date = mpg$displ,
  TDS = mpg$cty,
  Well = mpg$cyl)


dd %>%
 ggplot(aes(Date, TDS)) +
  theme_bw() +
  geom_point(aes(group = Well, color = Well), size = 1) +
  ggtitle(paste("WMA A-AX TDS")) +
  ylab("mg/L") +
  geom_smooth(aes(group = Well), method = "loess", color = "black",  se = FALSE) +
  geom_vline(data = cpdates, aes(group = Well_LOC, xintercept=as.numeric(CPT_DATE)), color ="blue", lwd=0.5, lty=1) +
  facet_grid(Well~.)
Run Code Online (Sandbox Code Playgroud)

糟糕的情节

添加Wellcpdates解决问题。我们也可以摆脱group审美。

cpdates$Well = cpdates$Well_LOC

dd %>%
 ggplot(aes(Date, TDS)) +
  theme_bw() +
  geom_point(aes(group = Well, color = Well), size = 1) +
  ggtitle(paste("WMA A-AX TDS")) +
  ylab("mg/L") +
  geom_smooth(method = "loess", color = "black",  se = FALSE) +
  geom_vline(data = cpdates, aes(xintercept=as.numeric(CPT_DATE)), color ="blue", lwd=0.5, lty=1) +
  facet_grid(Well~.)
Run Code Online (Sandbox Code Playgroud)

固定情节