【问题标题】:Removing connetion lines between missing Dates in ggplot删除ggplot中缺失日期之间的连接线
【发布时间】:2019-10-18 22:09:34
【问题描述】:

我想绘制一个缺少日期和值的时间序列。这是一个例子:

library(lubridate)
date_list = seq(ymd('1990-05-01'),ymd('2000-09-30'),by='day')
date_list = date_list[which(month(date_list) %in% c(5:9))]

value_list1 = sample(1:40, 1683, replace=TRUE)
value_list2 = sample(1:40, 1683, replace=TRUE)

testsample = data.frame(Date = date_list, Value1 = value_list1, Value2 = value_list2)

library(ggplot2)
ggplot(data = testsample, aes(x = Date)) +
  geom_line(aes(y = Value1), color = "black", size = 1, alpha=0.5) +
  geom_line(aes(y = Value2), color = "red", size = 1, alpha=0.5) +
  labs(subtitle="testplot", 
       x = "year", 
       y = "values") +
  scale_x_date(date_labels="%y",date_breaks  ="1 year")

我没有从 11 月到 4 月的日期和数据。

我的情节是这样的:

如何去除这些年份之间的连接线?我读过关于将日期转换为因子的内容,但我不确定这一点。还有其他解决方案吗?

【问题讨论】:

  • 您可以将group = format(Date, "%Y-%m") 添加到您的aes-call 中,但是我发现这种数据表示形式的信息量不是很大...
  • 谢谢!这已经有很大帮助了。数据本身根本不重要。我只热衷于摆脱那些连接线。
  • 如果您的缺失日期被标记为缺失值(带有NA),它们将无法连接。
  • 我没有你看到的任何数据。这是一个时间间隔。
  • 并不意味着过于具体。如果您丢失的 > 被 标记 为缺失值(使用 NA),它们将不会被连接。

标签: r date ggplot2 plot


【解决方案1】:

一种解决方案是指定组美学以匹配您希望通过线连接的组。

在你的情况下是这一年:

ggplot(data = testsample, aes(x = Date, group = year(Date))) +
  geom_line(aes(y = Value1), color = "black", size = 1, alpha=0.5) +
  geom_line(aes(y = Value2), color = "red", size = 1, alpha=0.5) +
  labs(subtitle="testplot", 
       x = "year", 
       y = "values") +
  scale_x_date(date_labels = "%y", date_breaks  ="1 year")

在 Gregors 注释的基础上,我们还可以将隐式缺失值更改为显式缺失值,例如使用tidyr::complete:

testsample2 <- tidyr::complete(testsample, Date = seq(min(Date), max(Date), by = "day"))
ggplot(data = testsample2, aes(x = Date)) +
  geom_line(aes(y = Value1), color = "black", size = 1, alpha=0.5) +
  geom_line(aes(y = Value2), color = "red", size = 1, alpha=0.5) +
  labs(subtitle="testplot", 
       x = "year", 
       y = "values") +
  scale_x_date(date_labels = "%y", date_breaks  ="1 year")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2019-07-20
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多