ggplot2 - 時間序列



時間序列是圖形化地表示按特定時間順序排列的一系列資料點的圖。時間序列是在連續等間距的時間點上獲取的一系列資料。時間序列可以被認為是離散時間資料。我們將在本章中使用的資料集是“economics”資料集,其中包括美國經濟時間序列的所有詳細資訊。

資料框包含以下屬性:

日期 資料收集月份
Psavert 個人儲蓄率
Pce 個人消費支出
Unemploy 失業人數(千人)
Unempmed 失業持續時間中位數
Pop 總人口(千人)

載入所需的包並將預設主題設定為建立時間序列。

> library(ggplot2)
> theme_set(theme_minimal())
> # Demo dataset
> head(economics)
# A tibble: 6 x 6
date           pce            pop          psavert       uempmed       unemploy
<date>         <dbl>         <dbl>         <dbl>         <dbl>         <dbl>
1 1967-07-01    507.          198712        12.6          4.5           2944
2 1967-08-01    510.          198911        12.6          4.7           2945
3 1967-09-01    516.          199113        11.9          4.6           2958
4 1967-10-01    512.          199311        12.9          4.9           3143
5 1967-11-01    517.          199498        12.8          4.7           3066
6 1967-12-01    525.          199657        11.8          4.8           3018

建立一個基本的折線圖,該圖建立一個時間序列結構。

> # Basic line plot
> ggplot(data = economics, aes(x = date, y = pop))+
+ geom_line(color = "#00AFBB", size = 2)
Time Series Structure

我們可以使用以下命令繪製資料集的子集:

> # Plot a subset of the data
> ss <- subset(economics, date > as.Date("2006-1-1"))
> ggplot(data = ss, aes(x = date, y = pop)) +
+ geom_line(color = "#FC4E07", size = 2)
Subset Of Data

建立時間序列

在這裡,我們將根據日期繪製變數 psavert 和 uempmed。這裡我們必須使用 tidyr 包重塑資料。這可以透過將 psavert 和 uempmed 值合併到同一列(新列)中來實現。R 函式:gather()[tidyr]。下一步包括建立一個具有 levels = psavert 和 uempmed 的分組變數。

> library(tidyr)
> library(dplyr)
Attaching package: ‘dplyr’
The following object is masked from ‘package:ggplot2’: vars
The following objects are masked from ‘package:stats’: filter, lag
The following objects are masked from ‘package:base’: intersect, setdiff, setequal, union
> df <- economics %>%
+    select(date, psavert, uempmed) %>%
+    gather(key = "variable", value = "value", -date)
> head(df, 3)
# A tibble: 3 x 3
date          variable     value
<date> <chr>   <dbl>
1 1967-07-01   psavert       12.6
2 1967-08-01   psavert       12.6
3 1967-09-01   psavert       11.9

使用以下命令建立多條折線圖,以檢視“psavert”和“unempmed”之間的關係:

> ggplot(df, aes(x = date, y = value)) +
+    geom_line(aes(color = variable), size = 1) +
+    scale_color_manual(values = c("#00AFBB", "#E7B800")) +
+    theme_minimal()
Multiple Line Plots
廣告