Rで解析:ApexChartsをRで作成「apexcharter」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

JavaScriptのチャートを作成できるApexCharts.jsをRから利用できるパッケージの紹介です。使い方はかなりシンプルです。

パッケージバージョンは0.4.0。R version 4.2.2で確認しています。

スポンサーリンク

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

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

#「htmltools」パッケージ>= 0.5.4が必要
install.packages("htmltools")
#パッケージのインストール
install.packages("apexcharter")

実行コマンド

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

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

###データ例の作成#####
#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)
n <- 30
TestData <- tibble(Group = sample(paste0("Group ", 1:5),
                                  n, replace = TRUE),
                   Date = seq(lubridate::ymd("2022-12-01", locale = "C",
                                             tz = "Asia/Tokyo"),
                              by = "1 day", length.out = n),
                   Num = sample(20:50, n, replace = TRUE))

#type&#12458;&#12503;&#12471;&#12519;&#12531;:"candlestick"&#29992;&#12487;&#12540;&#12479;
#crypto2&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
#https://www.karada-good.net/analyticsr/r-645/
if(!require("crypto2", quietly = TRUE)){
  install.packages("crypto2");require("crypto2")
}
#&#26263;&#21495;&#36039;&#29987;&#12398;&#12522;&#12473;&#12488;&#12434;&#21462;&#24471;:crypto_list&#12467;&#12510;&#12531;&#12489;
coins <- crypto_list(only_active = TRUE)
#XYM(Symbol)&#12398;&#24773;&#22577;&#12434;&#25244;&#12365;&#20986;&#12375;
coins %>%
  filter(symbol == "XYM") -> XYMList
#&#26263;&#21495;&#36039;&#29987;&#12398;&#20385;&#26684;&#12434;&#21462;&#24471;:crypto_history&#12467;&#12510;&#12531;&#12489;
coin_hist <- crypto_history(XYMList, limit = 1,
                            start_date = "20221201",
                            end_date = "20230109") %>%
  select(timestamp, open, close, low, high) %>%
  mutate(timestamp = as.Date(timestamp)) %>%
  mutate_if(is.numeric, ~round(., 4))
  
  
########

#ApexCharts&#12398;&#20316;&#25104;:apex&#12467;&#12510;&#12531;&#12489;
#&#12487;&#12540;&#12479;&#12398;&#25351;&#23450;:data&#12458;&#12503;&#12471;&#12519;&#12531;
#&#32654;&#30340;&#12510;&#12483;&#12500;&#12531;&#12464;&#12398;&#25351;&#23450;:mapping&#12458;&#12503;&#12471;&#12519;&#12531;;&#12300;aes&#12301;&#12458;&#12503;&#12471;&#12519;&#12531;&#12392;&#21512;&#12431;&#12379;&#12390;&#20351;&#29992;
##&#36600;&#12384;&#12369;&#12391;&#12394;&#12367;group&#12394;&#12393;&#12418;&#25351;&#23450;&#21487;&#33021;
#&#12503;&#12525;&#12483;&#12488;&#20869;&#23481;&#12434;&#25351;&#23450;:type&#12458;&#12503;&#12471;&#12519;&#12531;;"column","bar","line","step","spline",
##"area","area-step","area-spline","pie","donut","radialBar","radar","scatter",
##"heatmap","treemap","candlestick"&#12398;&#25351;&#23450;&#12364;&#21487;&#33021;

#type&#12458;&#12503;&#12471;&#12519;&#12531;:"candlestick"&#20197;&#22806;
ALLType <- c("column","bar","line","step","spline","area","area-step",
             "area-spline","pie","donut","radialBar","radar","scatter",
             "heatmap","treemap")

#&#12503;&#12525;&#12483;&#12488;
for(n in seq(ALLType)){
  
  if(ALLType[n] != "heatmap"){
    
    print(apex(data = TestData,
               mapping = aes(x = Group),
               type = ALLType[n]) %>%
            
            #&#22615;&#33394;&#12398;&#25351;&#23450;:ax_colors&#12467;&#12510;&#12531;&#12489;;16&#36914;&#25968;&#12459;&#12521;&#12540;&#12467;&#12540;&#12489;&#12391;&#25351;&#23450;&#12377;&#12427;
            ax_colors("#deb7a0") %>%
            
            #&#12479;&#12452;&#12488;&#12523;&#36861;&#21152;:ax_title&#12467;&#12510;&#12531;&#12489;
            #&#20869;&#23481;:text&#12458;&#12503;&#12471;&#12519;&#12531;
            #&#25991;&#23383;&#20301;&#32622;:align&#12458;&#12503;&#12471;&#12519;&#12531;;"left","center","right"
            #&#25991;&#23383;&#12469;&#12452;&#12473;,&#33394;:style&#12458;&#12503;&#12471;&#12519;&#12531;;list class&#12391;&#25351;&#23450;&#12377;&#12427;
            ax_title('apex&#12467;&#12510;&#12531;&#12489;',
                     style = list(fontSize = 15, color = "black")) %>%
            
            #&#12469;&#12502;&#12479;&#12452;&#12488;&#12523;&#36861;&#21152;:ax_subtitle&#12467;&#12510;&#12531;&#12489;
            #&#12458;&#12503;&#12471;&#12519;&#12531;&#12399;ax_title&#12467;&#12510;&#12531;&#12489;&#12392;&#21516;&#12376;
            ax_subtitle(paste0("type = ", ALLType[n]),
                        style = list(fontSize = 13, color = "red")))
    
  }else{
    
    print(apex(data = TestData,
               mapping = aes(x = as.character(Date), y = Group, fill = Num),
               type = ALLType[n]) %>%
            
            #&#22615;&#33394;&#12398;&#25351;&#23450;:ax_colors&#12467;&#12510;&#12531;&#12489;;16&#36914;&#25968;&#12459;&#12521;&#12540;&#12467;&#12540;&#12489;&#12391;&#25351;&#23450;&#12377;&#12427;
            ax_colors("#deb7a0") %>%
            
            #&#12479;&#12452;&#12488;&#12523;&#36861;&#21152;:ax_title&#12467;&#12510;&#12531;&#12489;
            #&#20869;&#23481;:text&#12458;&#12503;&#12471;&#12519;&#12531;
            #&#25991;&#23383;&#20301;&#32622;:align&#12458;&#12503;&#12471;&#12519;&#12531;;"left","center","right"
            #&#25991;&#23383;&#12469;&#12452;&#12473;,&#33394;:style&#12458;&#12503;&#12471;&#12519;&#12531;;list class&#12391;&#25351;&#23450;&#12377;&#12427;
            ax_title('apex&#12467;&#12510;&#12531;&#12489;',
                     style = list(fontSize = 15, color = "black")) %>%
            
            #&#12469;&#12502;&#12479;&#12452;&#12488;&#12523;&#36861;&#21152;:ax_subtitle&#12467;&#12510;&#12531;&#12489;
            #&#12458;&#12503;&#12471;&#12519;&#12531;&#12399;ax_title&#12467;&#12510;&#12531;&#12489;&#12392;&#21516;&#12376;
            ax_subtitle(paste0("type = ", ALLType[n]),
                        style = list(fontSize = 13, color = "red")))
    
  }
}

#type&#12458;&#12503;&#12471;&#12519;&#12531;:"candlestick"
apex(coin_hist,
     aes(x = timestamp,
         open = open, close = close,
         low = low, high = high),
     type = "candlestick") %>%
  ax_title('"type = "candlestick"',
           style = list(fontSize = 15, color = "black"))

出力例


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

タイトルとURLをコピーしました