Rで解析:簡単です。時系列データをインタラクティブにプロット「timetk」パッケージ


簡単に時系列データをインタラクティブにプロットすることができるパッケージの紹介です。パッケージではラインプロットや箱ひげ図などをインタラクティブだけでなく静的にもプロットすることが可能です。

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

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

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

実行コマンド

データ例は「crypto2」パッケージを取得可能な範囲の仮想資産のXYM(Symbol)のUSD価格を利用しています。なお、データ例は下記リンクより「XYM_Master.rda」としてダウンロードが可能です。コマンド例にはデータ例の読み込み方法を記述しています。詳細はコマンド、パッケージヘルプを確認してください。

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

###データ例の作成#####
#tidyverseパッケージを読み込み
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

#crypto2パッケージを読み込み
#crypto2パッケージがなければインストール
if(!require("crypto2", quietly = TRUE)){
  install.packages("crypto2");require("crypto2")
}

###取得可能な範囲のXYM(Symbol)のUSD価格#####
XYMList <- crypto_list(only_active = TRUE) %>%
  filter(symbol == "XYM") 
XYM_Data <- crypto_history(XYMList, limit = 1,
                           start_date = "20210320",
                           end_date = Sys.Date())
#dttmクラスをPOSIXctクラスに変換し
#データに年月を加えて,必要なデータを選択
XYM_Master <- XYM_Data %>%
  mutate(timestamp = as.Date(timestamp)) %>%
  mutate(Date = as.Date(timestamp), .before = 1) %>%
  mutate(Date = factor(format(Date, "%Y-%m"))) %>%
  select(Date, timestamp, name, symbol, open,
         high, low, close, volume) %>%
  pivot_longer(open:close,
               names_to = "OHLC", values_to = "Value")
#確認
head(XYM_Master)
# A tibble: 6 x 7
Date    timestamp  name   symbol volume OHLC  Value
<fct>   <date>     <chr>  <chr>   <dbl> <chr> <dbl>
1 2021-03 2021-03-20 Symbol XYM         0 open  0.383
2 2021-03 2021-03-20 Symbol XYM         0 high  0.519
3 2021-03 2021-03-20 Symbol XYM         0 low   0.382
4 2021-03 2021-03-20 Symbol XYM         0 close 0.467
5 2021-03 2021-03-21 Symbol XYM         0 open  0.464
6 2021-03 2021-03-21 Symbol XYM         0 high  0.771

###参考#####
#rdaでデータの保存
XYM_Master <- save(XYM_Master, file = "XYM_Master.rda")

#保存データの読込
library("tcltk")
FilePath <- paste0(as.character(tkgetOpenFile(title = "ファイルを選択",
                                              filetypes = '{"ファイル" {".rda"}}',
                                              initialfile = c("*.*"))), collapse = " ")
#読み込み
load(FilePath)
########

#時系列データをラインプロット:plot_time_seriesコマンド
#時系列の指定:.date_varオプション
#値の指定:.valueオプション
#線の色分けデータを指定:.color_varオプション
#図タイトルの指定:.titleオプション
#x,y軸,凡例タイトルの指定:.x_lab,.y_lab,.color_labオプション
#Lowess平滑化の追加:.smoothオプション
#線の色,太さ,種類:.line_color,.line_size,.line_typeオプション
#Lowess平滑化の色,太さ,種類:.smooth_color,.smooth_size,.smooth_alphaオプション
#図をインタラクティブに出力:.interactiveオプション
#インタラクティブ時に範囲スライダーを付与:.plotly_sliderオプション
XYM_Master %>% filter(OHLC == "close") %>%
  plot_time_series(.date_var = timestamp, 
                   .value = Value,
                   .color_var = Date,
                   .title = "XYM(Symbol)のClose_USD推移",
                   .x_lab = "Month",
                   .y_lab = "USD",
                   .color_lab = "Month",
                   .smooth = TRUE,
                   .line_color = "red", .line_size = 0.7,
                   .line_type = 1, .smooth_color = "#3366FF",
                   .smooth_size = 0.5, .smooth_alpha = 1,
                   .interactive = TRUE, .plotly_slider = TRUE)

###plot_time_seriesコマンドでプロット分割#####
#分割データの指定:.facet_varsオプション
#プロット列数の指定:.facet_ncolオプション
#軸スケールの設定:.facet_scalesオプション;
#"fixed","free","free_y","free_x"
XYM_Master %>% filter(OHLC == "close") %>%
  plot_time_series(.date_var = timestamp, .value = Value, 
                   .color_var = Date, .title = "XYM(Symbol)のClose_USD推移",
                   .x_lab = "Month", .y_lab = "USD", .color_lab = "Month",
                   .smooth = TRUE, .line_color = "red",
                   .line_size = 0.7, .line_type = 1,
                   .smooth_color = "#3366FF", .smooth_size = 0.5, .smooth_alpha = 1,
                   .interactive = FALSE,
                   .facet_vars = Date,
                   .facet_ncol = 3,
                   .facet_scales = "free_x")
########

#時系列データを箱ひげ図:plot_time_series_boxplotコマンド
#plot_time_seriesコマンドとの共通するオプションは省略
#箱ひげ図に適応するデータの範囲:.periodオプション
#"XX day","1 week","XX month","XX years","XX minutes"などと指定
XYM_Master %>%
  plot_time_series_boxplot(.date_var = timestamp,
                           .value = Value,
                           .period = "1 month",
                           .title = "XYM(Symbol)のUSD推移",
                           .x_lab = "Month", .y_lab = "USD",
                           .color_lab = "Month",
                           .color_var = Date,
                           .interactive = FALSE,
                           .plotly_slider = FALSE)

出力例

各インタラクティブなプロットはリンクより確認してください。

・plot_time_seriesコマンド

https://www.karada-good.net/wp/wp-content/uploads/2022/01/plot_time_series.html

・plot_time_seriesコマンドでプロット分割

・plot_time_series_boxplotコマンド

https://www.karada-good.net/wp/wp-content/uploads/2022/01/Box.html


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

スポンサードリンク

スポンサードリンク