Rで解析:時系列データのプロットに便利「timelineR」パッケージ


時系列データの数値データ、カテゴリデータを同時にプロット可能なパッケージの紹介です。コマンドも大変簡単ですぐに利用することができると思います。実行コマンドを順番に進めていくと出力例以外のプロットを得ることができます。ぜひ試してみてください。

パッケージバージョンは1.0.0。実行コマンドはwindows 11のR version 4.1.3で確認しています。

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("timelineR")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("timelineR")

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
#日付データの作成に便利:lubridateパッケージがなければインストール
if(!require("lubridate", quietly = TRUE)){
  install.packages("lubridate");require("lubridate")
}
set.seed(1234)
#lubridate::ymd;locale="C", tz="Asia/Tokyo"を設定するのがポイント
TestData <- tibble(Date = seq(lubridate::ymd("2021-01-01", locale = "C",
                                             tz = "Asia/Tokyo"),
                              lubridate::ymd("2022-03-24", locale = "C",
                                             tz = "Asia/Tokyo"),
                              by = "1 day")) %>%
  mutate(Data_1 = sample(c(1:30), length(Date), replace = TRUE),
         Data_2 = sample(c(1:30), length(Date), replace = TRUE),
         Char_Data = sample(c("A", "B", "NO"), length(Date), replace = TRUE),
         #Dateを基準に曜日を入手:wdayコマンド
         Day_Type = lubridate::wday(Date, label = TRUE,
                                    abbr = FALSE, locale = "Japanese_Japan.932")) %>%
  #土曜日,日曜日をWEEKEND,その他をWEEKDAYに変換
  mutate(Day_Type = if_else((Day_Type == "土曜日"| Day_Type == "日曜日"),
                            "WEEKEND", "WEEKDAY"))
########

#時系列データをプロット:plot_timelineコマンド
##そのままプロット
plot_timeline(timeline_df = TestData)

##列を指定してプロット:data_colsオプション
#順番の入れ替えも可能
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"))

##プロット開始日,終了日を指定:start_time/end_timeオプション
#POSIXct classで指定します
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"))

##各グラフタイトルを変更:titlesオプション
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"))

##y軸ラベルを変更:ylabelsオプション
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"),
              ylabels = c("Data_1" = "Change_1", "Day_Type" = "Change_2",
                          "Char_Data" = "Change_3"))

##データの比率を変更:scale_valsオプション
#c(列名 = 比率)で指定,例では"Data_1"を1/10に変更
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"),
              ylabels = c("Data_1" = "Change_1", "Day_Type" = "Change_2",
                          "Char_Data" = "Change_3"),
              scale_vals = c("Data_1" = 0.1))

#カテゴリデータの色を変更:color_mappingオプション
#list(列名 = c(内容))で指定
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"),
              ylabels = c("Data_1" = "Change_1", "Day_Type" = "Change_2",
                          "Char_Data" = "Change_3"),
              scale_vals = c("Data_1" = 0.1),
              color_mapping = list("Char_Data" = c("A" = "#4b61ba",
                                                   "B" = "#ad8a80",
                                                   "NO" = "black")))

#数字データのプロット方式を指定:numeric_plot_typeオプション
#"line","step","point"の指定が可能
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"),
              ylabels = c("Data_1" = "Change_1", "Day_Type" = "Change_2",
                          "Char_Data" = "Change_3"),
              scale_vals = c("Data_1" = 0.1),
              color_mapping = list("Char_Data" = c("A" = "#4b61ba",
                                                   "B" = "#ad8a80",
                                                   "NO" = "black")),
              numeric_plot_type = "step")

#プロットの重ね書き:overlap_plots_namesオプション
#list("新規プロット名" = c("カテゴリデータ", "数値データ"))で指定する
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"),
              ylabels = c("Data_1" = "Change_1", "Day_Type" = "Change_2",
                          "Char_Data" = "Change_3"),
              scale_vals = c("Data_1" = 0.1),
              color_mapping = list("Char_Data" = c("A" = "#4b61ba",
                                                   "B" = "#ad8a80",
                                                   "NO" = "black")),
              numeric_plot_type = "step",
              overlap_plots_names = list("Data_1_Day_Type" = c("Day_Type",
                                                               "Data_1")))

#プロットを作業フォルダにPNGで保存:save_pathオプション
#RStudioを利用し保存するが便利です
plot_timeline(timeline_df = TestData,
              data_cols = c("Data_1", "Day_Type", "Char_Data"),
              start_time = as.POSIXct("2021-12-01"),
              end_time = as.POSIXct("2022-01-20"),
              titles = c("Data_1" = "X_1", "Day_Type"= "X_2",
                         "Char_Data"= "X_3"),
              ylabels = c("Data_1" = "Change_1", "Day_Type" = "Change_2",
                          "Char_Data" = "Change_3"),
              scale_vals = c("Data_1" = 0.1),
              color_mapping = list("Char_Data" = c("A" = "#4b61ba",
                                                   "B" = "#ad8a80",
                                                   "NO" = "black")),
              numeric_plot_type = "step",
              overlap_plots_names = list("Data_1_Day_Type" = c("Day_Type",
                                                               "Data_1")),
              save_path = "Test.png")

出力例

・そのままプロット

・カテゴリデータの色を変更:color_mappingオプション

・プロットの重ね書き:overlap_plots_namesオプション


少しでも、あなたの解析が楽になりますように!!

スポンサードリンク

スポンサードリンク