ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

時系列データをグラフにする(ggplot2パッケージ)[R]

時間・順序と組になっている変量をグラフにする

ggplot2パッケージ(tidyverseパッケージに含まれている)のeconomicsデータセットを使う。

> library(tidyverse)
> 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
  • date:データ収集月
  • pce:personal consumption expenditures(個人消費支出, $)
  • pop:総人口(1000人)
  • psavert:personal savings rate(個人貯蓄率)
  • unempmed:median duration of unemployment(失業期間中央値, 週)
  • unemploy:失業者数(1000人)

geom_area( )で面グラフを描く

fill, alphaで面を塗りつぶす色・透過度を、color, linetypeで線の色・種類を指定できる。 outline.typeはどの部分に線を引くかを指定するための引数。

  • upper:上側のみ
  • lower:下側のみ
  • both:上下両方
  • full:横側も含めて全部
ggplot(data = economics, aes(x = date, y = unemploy)) +
  geom_area(fill = "salmon", alpha = 0.5,
            color= "darkred", outline.type = "upper")

図1:時系列データを面グラフで表した

geom_line( )で折れ線グラフを描く

グラフィックに関係する引数の指定はgeom_area( )を参照のこと。

ggplot(data = economics, aes(x = date, y = unemploy)) +
  geom_line()

図2:時系列データを折れ線グラフで表した

geom_ribbon( )でリボンプロットを描く

リボンの上縁・下縁をymin, ymaxで指定する。グラフィックに関係する引数の指定はgeom_area( )を参照のこと。

ggplot(data = economics, aes(x = date, ymin = unemploy*0.5, ymax = unemploy)) +
  geom_ribbon(fill = "darkorange")

図3:時系列データをリボンプロットで表した

geom_step( )で階段状プロットを描く

グラフィックに関係する引数の指定はgeom_area( )を参照のこと。

引数directionでは、水平方向→垂直方向で繋いでいくか("hv")、垂直方向→水平方向で繋いでいくか("vh")を指定する。

ggplot(data = df, aes(x = x, y = y)) +
  geom_step(direction = "hv")

図4:時系列データを階段上プロット(水平→垂直)で表す

ggplot(data = df, aes(x = x, y = y)) +
  geom_step(direction = "vh")

図5:時系列データを階段状プロット(垂直→水平)で表す

geom_path( )で経路を表示する

例えば、ある物体の位置座標 (x, y) のデータがあるとき、(x, y)を移動した順にプロットして線でつなげば物体の軌跡を描くことができる。
例示用に下のようなデータを作る。

df <- data.frame(x = c(rnorm(20,0,1), rnorm(20,5,1)),
                 y = c(rnorm(20,0,1), rnorm(20,5,1)),
                 group = c(rep("A",20), rep("B",20)))
           x          y group
1  -0.5582965 -1.2303512     A
2   1.1087737  1.5771129     A
3  -0.2462958 -2.7714253     A
~~~~~(省略)~~~~~
38  5.388052   3.456344      B
39  4.416402   4.400456      B
40  4.731257   4.035181      B

軌跡(path)をgeom_path( )で描く。

ggplot(data = df, aes(x = x, y = y)) +
  geom_path(aes(color = group))

図6:geom_path( )で軌跡を描いた

おわりに

  • geom_path( )はあまり使う機会がない(私は)

参考資料

  • 本家ページ:

ggplot2.tidyverse.org