如何在 ggplot2 中使用 line/block 分隔制作连续图

How to make continous plots with line/block separations in ggplot2

我融化的数据框包含 Msrt_OrderSample_IntensityrtcGroupMsrt_Day

我想沿着 Msrt_Order(测量顺序,从 1 到 1000+)绘制样本强度峰值图

ggplot(peak) +  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = rtc, shape=rtc), alpha = 0.6)

我想根据 msrt_Day(measurement_day 和 Msrt_Order 的顺序将它们分开,让它变得更好,但不是 1000+ 因素,只有 24天,因为我们每天测量 40 多个样本。)

我不想要的是这个

ggplot(peak) +  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = Msrt_Day, shape=rtc), alpha = 0.6)

因为有24个,所以很难区分,我也不想要图例中的24个图标。

我尝试使用 facet_grid

ggplot(peak) +  geom_jitter(aes(x = Msrt_Order, y = Sample_Intensity, color = rtc, shape=rtc), alpha = 0.6) + facet_grid(~Msrt_Day)

但这不是我所期望的,我想要一个由 Mrst_Day 分隔的 24 个块的连续图,同时保持 Msrt_Order.

希望你们明白我的想法...

峰值 csv link 在这里 peak.csv

我想你想要做的是使用 x 轴值 Msrt_Order.

添加一个或多个描述 Msrt_Day 边界的变量

这是一种尝试:按 Msrt_Day 分组并将边界定义为每组 Msrt_Order 的最大值。然后您可以将该值用于 geom_vline.

peak %>% 
  group_by(Msrt_Day) %>% 
  mutate(orderMax = max(Msrt_Order) %>% 
  ungroup() %>% 
  ggplot(aes(Msrt_Order, Sample_Intensity)) + 
  geom_point(aes(color = rtc)) + 
  geom_vline(aes(xintercept = orderMax)) +
  theme_bw()

结果: