Rで解析:JavaScriptのMetricsGraphicsがRから利用できます。「metricsgraphicsパッケージ」の紹介

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

インタラクティブな図を出力するライブラリは数多くありますが、「MetricsGraphics.js」ライブラリは使い方が簡単で出力されたHTMLファイルの表示が非常に高速です。

ぜひとも、ウェブ制作に関わる関係者に表現手段の一つとして「metricsgraphics」パッケージを利用いただけたらと思います。ぐりぐり動きますので出力例で試してみてください。

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

スポンサーリンク

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

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

install.packages("metricsgraphics")

実行コマンドの紹介

本パッケージは%>%(パイプ)でコマンドをつなげて使用することもできます。紹介コマンドではパイプを使用しています。作成したHTMLファイルはsaveWidget(“ファイル名.html”)コマンドで作業フォルダに出力します。詳細はコメントを確認してください。

<パッケージ読み込み、HTMLファイルの保存場所の指定とデータ例の作成>
作業の前に実行してください

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

#HTMLファイルの保存場所を指定
setwd(paste(as.character(tkchooseDirectory(title = "保存場所を選択"), sep = "", collapse ="")))

#データ例の作成
SampleData <- data.frame(Data1 = sample(1:500, 30),
                         Data2 = sample(1:500, 30))

#&#26834;&#12464;&#12521;&#12501;&#12398;&#25551;&#20889;:mjs_bar&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 320, height = 400) %>% mjs_bar() %>%
  saveWidget("bar.html")

#&#12498;&#12473;&#12488;&#12464;&#12521;&#12512;&#12398;&#25551;&#20889;:mjs_histogram&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, width = 320, height = 400) %>% mjs_histogram(bins = 30) %>%
  saveWidget("Histogram.html")

#&#12521;&#12505;&#12523;&#12398;&#36861;&#21152;:mjs_labs&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, width = 320, height = 400) %>% mjs_histogram(bins = 30) %>%
  mjs_labs(x = "&#12521;&#12505;&#12523;&#12398;&#36861;&#21152;", y =  "&#12521;&#12505;&#12523;&#12398;&#36861;&#21152;") %>%
  saveWidget("Labs.html")

#&#12521;&#12452;&#12531;&#12503;&#12525;&#12483;&#12488;&#12398;&#25551;&#20889;:mjs_line&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 320, height = 400) %>% mjs_line() %>%
  saveWidget("LinePlot.html")

#&#25955;&#24067;&#22259;&#12398;&#25551;&#20889;:mjs_point&#12467;&#12510;&#12531;&#12489;
data.frame(Data1 = sample(1:500, 100),
           Data2 = sample(1:500, 100)) %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>% mjs_point(least_squares = TRUE) %>%
  saveWidget("PointPlot.html")

#&#22259;&#12398;&#35013;&#39166;
#x&#36600;&#12395;&#23550;&#12375;&#12390;&#24179;&#34892;&#32218;&#12398;&#36861;&#21152;:mjs_add_baseline
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>% mjs_line() %>%
  mjs_add_baseline(y_value = 150, label = "y&#12398;&#20516;&#12434;&#35373;&#23450;&#12375;&#12390;&#32218;&#12434;&#36861;&#21152;&#12375;&#12414;&#12377;") %>%
  saveWidget("add_baseline.html")

#y&#36600;&#12395;&#23550;&#12375;&#12390;&#24179;&#34892;&#32218;&#12398;&#36861;&#21152;:mjs_add_baseline
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>% mjs_line() %>%
  mjs_add_marker(x_value = 150, "&#20301;&#32622;&#12399;x&#12398;&#20516;&#12391;&#35373;&#23450;&#12375;&#12414;&#12377;") %>%
  saveWidget("mjs_add_marker.html")

#&#32218;&#12392;&#12471;&#12531;&#12508;&#12523;&#12398;&#27880;&#37320;&#12434;&#36861;&#21152;
#&#32218;&#12398;&#36861;&#21152;:mjs_add_line&#12467;&#12510;&#12531;&#12489;
#&#12471;&#12531;&#12508;&#12523;&#12398;&#27880;&#37320;&#12434;&#36861;&#21152;:mjs_add_legend&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>%
  mjs_line() %>% mjs_add_line(Data1) %>%
  mjs_add_legend(legend=c("X", "Y")) %>%
  saveWidget("add_legend.html")

#&#12510;&#12454;&#12473;&#12458;&#12540;&#12496;&#12540;&#26178;&#12398;&#12487;&#12540;&#12479;&#12521;&#12505;&#12523;&#12398;&#12459;&#12473;&#12479;&#12512;
#mjs_add_mouseover&#12467;&#12510;&#12531;&#12489;:&#12509;&#12452;&#12531;&#12488;&#12399;'(&#12459;&#12531;&#12510;&#12391;&#25991;&#23383;&#21015;&#12434;&#22258;&#12416;)
#&#12487;&#12540;&#12479;&#20363;&#12398;&#20316;&#25104;
SampleData <- data.frame(Data1 = sample(1:500, 30),
                         Data2 = sample(1:500, 30),
                         Test = c(rep(c("&#12390;&#12377;&#12392;", "&#12486;&#12473;&#12488;"), 15)))
#&#12487;&#12540;&#12479;&#12398;&#12503;&#12525;&#12483;&#12488;
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>%
  mjs_point() %>%
  mjs_add_mouseover("function(d, i) {
                $('{{ID}} svg .mg-active-datapoint')
                    .text('&#12459;&#12473;&#12479;&#12512;&#34920;&#31034; : ' + d.point.Test + ' ' + i);
                 }") %>%
  saveWidget("add_mouseover.html")

<出力例> ・棒グラフの描写:mjs_barコマンド
・ヒストグラムの描写:mjs_histogramコマンド

・ラインプロットの描写:mjs_lineコマンド

・散布図の描写:mjs_pointコマンド


<図の装飾コマンド>
詳細はコメントを確認してください。

#&#12521;&#12505;&#12523;&#12398;&#36861;&#21152;:mjs_labs&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, width = 320, height = 400) %>% mjs_histogram(bins = 30) %>%
  mjs_labs(x = "&#12521;&#12505;&#12523;&#12398;&#36861;&#21152;", y =  "&#12521;&#12505;&#12523;&#12398;&#36861;&#21152;") %>%
  saveWidget("Labs.html")


#x&#36600;&#12395;&#23550;&#12375;&#12390;&#24179;&#34892;&#32218;&#12398;&#36861;&#21152;:mjs_add_baseline
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>% mjs_line() %>%
  mjs_add_baseline(y_value = 150, label = "y&#12398;&#20516;&#12434;&#35373;&#23450;&#12375;&#12390;&#32218;&#12434;&#36861;&#21152;&#12375;&#12414;&#12377;") %>%
  saveWidget("add_baseline.html")

#y&#36600;&#12395;&#23550;&#12375;&#12390;&#24179;&#34892;&#32218;&#12398;&#36861;&#21152;:mjs_add_marker
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>% mjs_line() %>%
  mjs_add_marker(x_value = 150, "&#20301;&#32622;&#12399;x&#12398;&#20516;&#12391;&#35373;&#23450;&#12375;&#12414;&#12377;") %>%
  saveWidget("mjs_add_marker.html")

#&#32218;&#12392;&#12471;&#12531;&#12508;&#12523;&#12398;&#27880;&#37320;&#12434;&#36861;&#21152;
#&#32218;&#12398;&#36861;&#21152;:mjs_add_line&#12467;&#12510;&#12531;&#12489;
#&#12471;&#12531;&#12508;&#12523;&#12398;&#27880;&#37320;&#12434;&#36861;&#21152;:mjs_add_legend&#12467;&#12510;&#12531;&#12489;
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>%
  mjs_line() %>% mjs_add_line(Data1) %>%
  mjs_add_legend(legend = c("X", "Y")) %>%
  saveWidget("add_legend.html")

#&#12510;&#12454;&#12473;&#12458;&#12540;&#12496;&#12540;&#26178;&#12398;&#12487;&#12540;&#12479;&#12521;&#12505;&#12523;&#12398;&#12459;&#12473;&#12479;&#12512;
#mjs_add_mouseover&#12467;&#12510;&#12531;&#12489;:&#12509;&#12452;&#12531;&#12488;&#12399;'(&#12459;&#12531;&#12510;&#12391;&#25991;&#23383;&#21015;&#12434;&#22258;&#12416;)
#&#12487;&#12540;&#12479;&#20363;&#12398;&#20316;&#25104;
SampleData &amp;lt;- data.frame(Data1 = sample(1:500, 30),
                                Data2 = sample(1:500, 30),
                                Test = c(rep(c("&#12390;&#12377;&#12392;", "&#12486;&#12473;&#12488;"), 15)))
#&#12487;&#12540;&#12479;&#12398;&#12503;&#12525;&#12483;&#12488;
SampleData %>%
  mjs_plot(x = Data1, y = Data2, width = 300, height = 400) %>%
  mjs_point() %>%
  mjs_add_mouseover("function(d, i) {
    $('{{ID}} svg .mg-active-datapoint')
    .text('&#12459;&#12473;&#12479;&#12512;&#34920;&#31034; : ' + d.point.Test + ' ' + i);
  }") %>%
  saveWidget("add_mouseover.html")


<出力例>
・ラベルの追加:mjs_labsコマンド

・x軸に対して平行線の追加:mjs_add_baseline

・y軸に対して平行線の追加:mjs_add_marker

・線とシンボルの注釈を追加
本例ではインタラクティブになりません。パッケージHELP例ではインタラクティブです。mjs_add_lineコマンドを外すとインタラクティブになります。

・マウスオーバー時のデータラベルのカスタム


少しでも、あなたのウェブや実験の解析が楽になりますように!!

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