使用 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 轴上使用日期类型。
您可以通过几种方式解决这个问题。
使用readr::read_csv
。在这种情况下,该列将被读取为日期类型,因为它采用标准的“年-月-日”格式,但情况并非总是如此。
使用 colClasses
参数指定列类型。
debt <- read.csv("DebtPenny_20160909_20210909.csv", colClasses = c("Record.Date" = "Date"))
读取数据后转为日期类型
debt$Record.Date <- as.Date(debt$Record.Date)
我正在尝试根据不同的数据集绘制多个时间序列图。第一个数据集绘制完美。
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 轴上使用日期类型。
您可以通过几种方式解决这个问题。
使用
readr::read_csv
。在这种情况下,该列将被读取为日期类型,因为它采用标准的“年-月-日”格式,但情况并非总是如此。使用
colClasses
参数指定列类型。debt <- read.csv("DebtPenny_20160909_20210909.csv", colClasses = c("Record.Date" = "Date"))
读取数据后转为日期类型
debt$Record.Date <- as.Date(debt$Record.Date)