Baseコマンド、ggplot2パッケージなどの静的な図を、svg-pan-zoom.jsを利用して「インタラクティブに拡大・縮小が可能」な図に変換する「svgPanZoom」パッケージを紹介します。なお、「svgPanZoom」パッケージは「SVGAnnotation」パッケージと組み合わせて使用します。
例として、「UpSetR」、「tagcloud」、「VIM」の各パッケージとBaseコマンドを利用したカラーパレットの出力を紹介します。ぜひ、パッケージを活用ください。
パッケージのバージョンは0.2.0。R version 3.2.1でコマンドをWindows7ならびにMacOS10.10.4で確認しています。
パッケージのインストール
下記コマンドを実行してください。エラーが表示された場合は、表示に従い対応するRtoolsをダウンロードしてインストールしてください。詳細はコメントを確認してください。
http://cran.r-project.org/bin/windows/Rtools/
#svgPanZoomパッケージ #devtoolsパッケージをインストールします。念のためstringiパッケージをインストールします。 install.packages(c("devtools", "stringi")) devtools::install_github("timelyportfolio/svgPanZoom") #SVGAnnotationパッケージ install.packages("remotes") remotes::install_github("duncantl/SVGAnnotation") #Cairoパッケージ install.packages("Cairo")
実行コマンドの紹介
詳細はコメント、パッケージヘルプを確認してください。
#紹介に使用したパッケージのインストール #UpSetパッケージ devtools::install_github("hms-dbmi/UpSetR") #tagcloudパッケージ install.packages("tagcloud") #VIMパッケージ install.packages("VIM") #ライブラリの読み込み library("svgPanZoom") library("SVGAnnotation") #####準備##################### #データ例の作成 TestData <- data.frame(Group = paste0("Group", 1:100), Data1 = sample(0:1, 100, replace = TRUE), Data2 = sample(0:1, 100, replace = TRUE), Data3 = sample(0:1, 100, replace = TRUE), Data4 = sample(0:200, 100, replace = TRUE), Data5 = sample(100:300, 100, replace = TRUE)) ############################## ###UpSetRパッケージとの組み合わせ例##### #https://www.karada-good.net/analyticsr/r-152/ library("UpSetR") library("ggplot2") svgPanZoom(svgPlot(upset(TestData, sets.bar.color = "#56B4E9", attribute.plots = list(gridrows = 60, ncols = 1, plots = list(list(plot = histogram, x = "Group", queries = TRUE), list(plot = scatter_plot, x = "Group", y = "Data5", queries = TRUE))), sets = c("Data1", "Data2", "Data3"), queries = list(list(query = intersects, params = list("Data1"), active = FALSE), list(query = intersects, params = list("Data2"), active = TRUE)))), controlIconsEnabled = TRUE, height = 400, width = 400) ###tagcloudパッケージとの組み合わせ例##### #https://www.karada-good.net/analyticsr/r-148/ library("tagcloud") svgPanZoom(svgPlot(tagcloud(TestData[, 1], weights = TestData[, 2], col = smoothPalette(TestData[, 2], palfunc = colorRampPalette(c("red", "#a87963", "gray", "#4b61ba"))), order = "size", algorithm = "oval")), controlIconsEnabled = TRUE, height = 400, width = 400) ###VIMパッケージとの組み合わせ例##### #https://www.karada-good.net/analyticsr/r-147/ #パッケージの読み込み library("VIM") #データ例の作成 n <- 50 TestData <- data.frame(Group = sample(paste0("Group", formatC(1:n, width = 2, flag = "0")), n, replace = TRUE), Data1 = sample(c(NA, 1:10), n, replace = TRUE), Data2 = sample(NA, n, replace = TRUE), Data3 = sample(c(NA, 5:10), n, replace = TRUE), Data4 = sample(c(NA, 7:10), n, replace = TRUE)) svgPanZoom(svgPlot(mosaicMiss(TestData[, 1:2], col = c("#4b61ba", alphablend("#a87963", 0.6)))), controlIconsEnabled = TRUE, height = 400, width = 400) ###シャーロットキャラクターカラーパレットも動的にカラーパレットも動的に##### #https://www.karada-good.net/analyticsr/r-135/ #記事の実行コマンドにsvgPanZoom、svgPlotコマンドの追記方法 svgPanZoom( svgPlot( { ###データのプロット##### #軸の設定 xRange <- seq(0, 1, by = 1/ItemVol) ###########省略############## #データのプロット rasterImage(as.raster(Plot[, 6]), xRange[k], 0, xWidth[k], 1, interpolate = FALSE) } } ), controlIconsEnabled = TRUE, height = 400, width = 400)
出力例
スマートフォンでの閲覧は画面を横にすると見やすいです。
・UpSetRパッケージとの組み合わせ例
紹介記事:https://www.karada-good.net/analyticsr/r-152/
・tagcloudパッケージとの組み合わせ例
紹介記事:https://www.karada-good.net/analyticsr/r-148/
・VIMパッケージとの組み合わせ例
紹介記事:https://www.karada-good.net/analyticsr/r-147/
・シャーロットキャラクターカラーパレットも動的に
紹介記事:https://www.karada-good.net/analyticsr/r-135/
少しでも、あなたのウェブや実験の解析が楽になりますように!!