0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

R で、複数の時系列プロットを重ね描きする方法

Last updated at Posted at 2022-07-22

目的

R を使って、複数の時系列データのプロットを重ね描きする。データ毎の色分けを、ランダムな配色にしたい。

PC の環境

Windows 10

前準備

今回使用する R のパッケージをインストールする。

1. tidyverse

データ解析に有用なパッケージコレクション。グラフを作るggplot2 や、データ加工ができる tidyr などのパッケージが含まれている。

2. rondomcoloR

ランダムな配色ができるパッケージ。
多データの円グラフを作成するときなど、特に有用だと思う。

install.packages("tidyverse")
install.packages("randomcoloR")

時系列データの作成

今回は、A,B,C,D,....,Z の26地点で、1日目から7日目までの7回温度を測定した結果の
時系列データのプロットを作成することを目的に、進めていく。

まずは、その時系列データを作成する。

# データの作成
# 今回は、AからZの26地点において、温度測定(7回測定) の結果を想定している。
m <- matrix(rnorm(n=7*26, mean = 25, sd= 5), nrow = 7)
m <- cbind(c(1:7),m)
data_m <- data.frame(m)
colnames(data_m) <- c("day", LETTERS)

上記のコマンドにより、1列目に日付、2列目から27列目に A,B,C,D,....,Z の温度が並んだデータフレーム"data_m" が作成された。

データの整列

次に、時系列プロットの重ね書きに適した形に、データフレームを整列させる。

今回Rでグラフを描く方法では、プロットするデータの xとy が1対1対応している形にデータを整形させないといけない。
したがって、26x7=182行の縦長のデータに、"data_m" を整列させる。

# データ整列に必要な "tidyr" パッケージを含む、"tidyverse" を呼び出す。
library(tidyverse)

# 各地点の温度変化を示す折れ線グラフを作成するために、データを整列。
# データを縦長に変更
data_long <- pivot_longer(data = data_m, 
                          cols = -day, 
                          names_to = "Place", 
                          values_to = "Temperature")

これによって、1列目は日付、2列目は観測地点、3列目は温度を示す縦長のデータフレーム"data_long" ができた。

時系列データのプロットの重ね描き

データフレーム"data_long" からプロットを作成すると、時系列データを重ね描きしたプロットが作成される。

# 折れ線グラフを作成
graph <- ggplot(data_long, aes(x = day, y = Temperature, color = Place))
graph <- graph + geom_line()
graph

これによって、作成された"graph"は、以下のグラフ。
graph.png

右に示される凡例をみると、AからZの26データの色分けが、グラデーションになっているのが分かる。R で一定数以上のデータをプロットする場合、自動的にグラデーションカラーが適用される。
R には、様々なカラーパレットが用意されているが、そのほとんどは1限られたデータ数(例えば、12色までなど)にしか適用できない。
折れ線グラフでは、あまり弊害がないかもしれないが、円グラフとなるとデータ凡例が分かりづらくなる。

ランダムな色で配色したグラフの作成

そこで、ランダムな色を生成できる "rondomcoloR" パッケージを利用する。

# ランダムな色を配色した、折れ線グラフを作成
graph2 <- ggplot(data_long, aes(x = day, y = Temperature, color = Place))
graph2 <- graph2 + geom_line()
plot_color <- randomColor(26,hue="random")
graph2 <- graph2 + scale_color_manual(values = plot_color)
graph2

これによって、作成された "graph2" は以下の通り。
graph2.png

データの並びに関係ない配色となった。

以上!

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?