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