首页 > 解决方案 > 在 r 中使用颜色美学 ggplot 时删除连接线

问题描述

我正在绘制一个时间序列,其中一个来源的间隙从一秒钟开始填充。绘制它以指示来源,我将来源指定为颜色美学,但 ggplot 添加连接线将间隙连接在一起。
有没有清除这些连接线的干净方法?理想情况下,我希望将单独的组连接起来,因为我将它用作一个数据集。

library(ggplot)
set.seed(914)
df=data.frame(x=c(1:100),y=runif(100), z = rep(c("a", "b"), each = 25, times = 2))


ggplot(df, aes(x=x, y = y, color = z))+
      geom_line()

Example_with_connecting_lines

删除 ggplot 中缺失日期之间的连接线 建议创建一个组美学,或使用 NA 值明确差距。
我的真实数据中没有任何明确的分组美学,例如参考示例中的年份,并且有许多不规则间隔的间隙,目前尚不清楚如何在每个间隙中插入 NA。

标签: rggplot2

解决方案


只要您的彩色“组”在您的数据框中是连续的(如您的示例中所示),您就可以执行以下操作:

ggplot(df, aes(x=x, y = y, color = z,
               group = factor(c(0, cumsum(abs(head(z, -1) != tail(z, -1))))))) +
      geom_line()

在此处输入图像描述

或者,为简洁起见,使用data.table::rleid

ggplot(df, aes(x=x, y = y, color = z, group = data.table::rleid(z))) +
      geom_line()

给出相同的结果


推荐阅读