在ggplot中绘制时间序列,使用按年份分组的行

时间:2018-01-16 19:23:43

标签: r ggplot2 time-series timeserieschart

我正在尝试用不同的线条绘制每个年份的时间序列。举个例子:

library(ggplot2)
library(lubridate)
library(dplyr)

df = data.frame(dt = seq(as.Date("2015/01/01"), by = "day", length.out = 1000),
     num = c(sample(1:333), sample(333:665), sample(665:998)))

通过这个样本数据,我然后尝试绘制:

ggplot(df, aes(x= format(dt, format="%m-%d"), y=num, group = as.factor(year(dt)))) 
    + geom_line()

这会返回geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?的警告。用color替换group给了我类似于我想要的东西,但x轴的标签太多,因为它的类型是字符串。

TimeSeriesPlot

如何使x轴仅显示每个月的第1天?或者是否有更好的方式来绘制这样的时间序列?

1 个答案:

答案 0 :(得分:0)

我认为如果您将所有日期转换为同一年并将其用于绘制x轴,这将是最简单的。然后,您可以自定义比例以获取所需的标签。例如

same_year <- function(x) {
  year(x) <- 2000
  x
}

ggplot(df, aes(x=same_year(dt), y=num, color = as.factor(year(dt)))) + 
  geom_line()  + 
  scale_x_date(date_breaks = "1 month", date_labels="%b")

返回

enter image description here