使用 ggplot geom_line 绘制时间序列

Plotting a time series with ggplot geom_line

我正在尝试根据不同的数据集绘制多个时间序列图。第一个数据集绘制完美。

library(tidyverse)
library(dplyr)
data("economics")

economics %>% 
  ggplot(aes(date, unemploy, pop)) + 
  geom_line(col = "maroon") + 
  xlab("Year") + 
  ylab("U.S. Unemployment Rate")

第二个数据集可能需要一些额外的条件,但本质上它显示的是同一类型的数据,但绘制的数据不同。数据可以在这里找到 https://fiscaldata.treasury.gov/datasets/debt-to-the-penny/debt-to-the-penny.

library(tidyverse)
library(dplyr)
data(debt)

debt <- read.csv("C:##path here to the data")

debt %>%
  filter(Calendar.Month.Number==12 & Calendar.Day.Number==31) %>% 
  ggplot(aes(Calendar.Year, Debt.Held.by.the.Public)) +
  geom_line(col = "blue")

我应该怎么做?

这里的问题是 read.csv 默认读取列 Record.Date 作为类型字符。 ggplot 然后将日期变量解释为一个因子,而您希望在 x 轴上使用日期类型。

您可以通过几种方式解决这个问题。

  1. 使用readr::read_csv。在这种情况下,该列将被读取为日期类型,因为它采用标准的“年-月-日”格式,但情况并非总是如此。

  2. 使用 colClasses 参数指定列类型。

    debt <- read.csv("DebtPenny_20160909_20210909.csv", colClasses = c("Record.Date" = "Date"))
    
  3. 读取数据后转为日期类型

    debt$Record.Date <- as.Date(debt$Record.Date)