Rで解析:ggplot2をインタラクティブに!「ggiraph」パッケージ

Rの解析に役に立つ記事

「ggplot2」パッケージのグラフをインタラクティブにするパッケージの紹介です。実行コマンドではgeom_pointとgeom_boxplotをインタラクティブにする「geom_point_interactive」と「geom_boxplot_interactive」コマンドを紹介します。また、htmlファイルで作業フォルダに保存するコマンドも紹介します。

多くのコマンドが収録されたパッケージです。紹介しきれないコマンドは下記HPを参考にしてください。

ggiraph:https://davidgohel.github.io/ggiraph/index.html

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

スポンサーリンク
スポンサーリンク

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

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

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

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。クリックで表示する文字がUTF-8でないとエラーが起きます。日本語の表記エラー防止に「stringi」パッケージの「stri_enc_toutf8」コマンドを使用しています。

また、出力をhtmlファイルで保存するために「htmlwidgets」パッケージの「saveWidget」コマンドを使用しています。

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

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
#stringiパッケージがなければインストール
if(!require("stringi", quietly = TRUE)){
  install.packages("stringi");require("stringi")
}
set.seed(1234)
n <- 100
TestData <- tibble(Group = sample(paste0("Group", 1:4), n,
                                  replace = TRUE),
                   ID = sample(LETTERS[1:5], n, replace = TRUE),
                   X_num_Data = sample(c(1:30), n, replace = TRUE),
                   Y_num_Data = sample(c(51:100), n, replace = TRUE)) %>%
  #ツールチップデータ
  mutate(Tooltip = paste0( "グループ名<br>", Group)) %>%
  #クリックで表示するデータ
  mutate(Click = stri_enc_toutf8(sprintf("alert(\"Xの値は%sです。<br>Yの値は%sです。\")",
                                         round(X_num_Data, 2), round(Y_num_Data, 2))))
########

##geom_point_interactiveコマンド
#散布図
ggplot(TestData, aes(x = X_num_Data, y = Y_num_Data,
                     color = Group)) +
  geom_point() + 
  labs(x = "Data1", y = "Data2", title = "TEST PLOT", color = "Group Name")

#インタラクティブな散布図
#aesにオプションを追加
#マウスオーバーで情報表示:tooltipオプション
#クリックで情報表示:onclickオプション
PlotData <- ggplot(TestData,
                   aes(x = X_num_Data, y = Y_num_Data,
                       color = Group, tooltip = Tooltip,
                       onclick = Click))

#散布図のインタラクティブ化:geom_point_interactiveコマンド
PlotData <- PlotData +
  geom_point_interactive() + 
  labs(x = "Data1", y = "Data2",
       title = "Interactive Point_Plot", color = "Group Name")

#インタラクティブなグラフをプロット:girafeコマンド
girafe(ggobj = PlotData)
##########################################################

##geom_boxplot_interactiveコマンド
#BoxPlot
ggplot(TestData, aes(x = ID, y = Y_num_Data,
                     fill = ID)) +
  geom_boxplot() + facet_grid(~Group) +
  labs(x = "Data1", y = "Data2", title = "TEST PLOT", color = "Group Name")

#インタラクティブな箱ひげ図
#aesにオプションを追加
#グループ表示:data_idオプション
PlotData <- ggplot(TestData,
                   aes(x = ID, y = Y_num_Data,
                       tooltip = ID, data_id = ID))

#箱ひげ図のインタラクティブ化:geom_boxplot_interactiveコマンド
PlotData <- PlotData +
  geom_boxplot_interactive() +
  facet_grid(~Group) +
  labs(x = "ID", y = "Y_num_Data",
       title = "Interactive Box_Plot", fill = "Group Name")

#インタラクティブなグラフをプロット:girafeコマンド
#マウスオーバー時の色を設定:opts_hoverオプション
girafe(ggobj = PlotData,
       options = list(
         opts_hover(css = "fill:#5c463e;cursor:pointer;")))
##########################################################

###参考:htmlファイルで作業フォルダに保存#####
#htmlwidgetsパッケージがなければインストール
if(!require("htmlwidgets", quietly = TRUE)){
  install.packages("htmlwidgets");require("htmlwidgets")
}
#saveWidgetコマンドで保存
#girafeコマンドをwidgetオプションに指定
saveWidget(file = "geom_boxplot_interactive.html",
           widget = girafe(ggobj = PlotData,
                           options = list(
                             opts_hover(css = "fill:#5c463e;cursor:pointer;"))))

出力例

・geom_point_interactiveコマンド

ポイントをクリックするとデータが表示されます。

・geom_boxplot_interactiveコマンド

BoxPlotをマウスオーバーすると同じIDのBoxPlotの色が変化します。


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

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