「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の色が変化します。
少しでも、あなたの解析が楽になりますように!!