Rで解析:インタラクティブな円グラフを作成「rd3pie」パッケージ

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

D3.jsを利用したd3pieをRから操作することができるパッケージです。いろいろな用途に利用できると思います。

d3pieのオフィシャルページを確認するとドーナツ型グラフの作成と塗り色を指定できるようですが、パッケージ収録のrd3pieコマンドは対応していませんでした。

そこで、オリジナルのソースに少しコマンドを追加しドーナツ型の作成と塗り色を指定できるようにしました。rd3pieコマンドと合わせて紹介します。ぜひ、実行コマンドを確認してください。

・参考:d3pieのオフィシャルページ
 http://d3pie.org/

パッケージバージョンは1.6.1.9000。実行コマンドはR version 4.2.2で確認しています。

スポンサーリンク

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

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

#パッケージのインストール
install.packages("devtools")
devtools::install_github("smartinsightsfromdata/rd3pie")
#「htmlwidgets」パッケージをインストール
devtools::install_github("ramnathv/htmlwidgets")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
#version 0.1.8
library("rd3pie")
library("htmlwidgets")

###データ例の作成#####
#正の乱数を作成
Runif <- round(runif(5, min = 1, max = 100), 2)
#列名はlabel,value,captionと設定する
TestData <- data.frame(label = paste0("Group", 1:5),
                       value = Runif,
                       caption = as.character(Runif),
                       colors = colorRampPalette(c("#0068b7", "#35a16b", "#f39800"))(5),
                       stringsAsFactors = F)
########

#インタラクティブなpieグラフをプロット:rd3pieコマンド
#データを指定:Dataオプション
#ツールチップの設定:enabled_tooltipsオプション
#グラフ外周の表示領域:OuterRadiusオプション
TESTrd3pie <- rd3pie(Data = TestData, Title = "TEST PIE", SubTitle = "TEST",
                     OuterRadius = NULL, enabled_tooltips = TRUE, type = "caption")
#プロットを保存
#作業フォルダにTESTrd3pie.htmlとJavaScriptが保存されたフォルダが出力されます
saveWidget(TESTrd3pie, "TESTrd3pie.html", selfcontained = FALSE, libdir = NULL,
           background = "white")

#####################################################################
#面白いのでコードに機能を追加:Rerd3pieコマンド
#追加した機能
#グラフをドーナツ化:pieInnerRadius = InnerRadiusを追記
#InnerRadiusオプション;ドーナツ範囲を%で指定
#塗り色を設定:misc = list(colors = list(segments = FillColors))を追記
#FillColorオプション
Rerd3pie <- function (Data, Title = NULL, SubTitle = NULL,
                      OuterRadius = NULL, InnerRadius = NULL,
                      width = NULL, height = NULL, FillColors = NULL,
                      enabled_tooltips = NULL, type = NULL)
{
  if (class(Data[[colnames(Data)[1]]]) == "character") {
    colnames(Data)[1] <- "label"
  }
  else {
    colnames(Data)[1] <- "value"
  }
  if (class(Data[[colnames(Data)[2]]]) == "character") {
    colnames(Data)[2] <- "label"
  }
  else {
    colnames(Data)[2] <- "value"
  }
  d3data <- lapply(1:nrow(Data), function(i) {
    l_ <- as.list(Data[i, ])
    return(l_)
  })
  lData <- list(header = list(title = list(text = Title), subtitle = list(text = SubTitle)),
                size = list(pieOuterRadius = OuterRadius, pieInnerRadius = InnerRadius),
                data = list(content = d3data), misc = list(colors = list(segments = FillColors)),
                tooltips = list(enabled = enabled_tooltips, type = type))
  htmlwidgets::createWidget(name = "rd3pie", x = lData, width = width,
                            height = height, package = "rd3pie")
}

#プロット
TESTRerd3pie <- Rerd3pie(Data = TestData, Title = NULL, SubTitle = NULL, FillColors = TestData[, 4],
                         InnerRadius = "80%", enabled_tooltips= TRUE, type = "caption")
#プロットを保存
#作業フォルダにTESTRerd3pie.htmlとJavaScriptが保存されたフォルダが出力されます
saveWidget(TESTRerd3pie, "TESTRerd3pie.html", selfcontained = FALSE, libdir = NULL,
           background = "white")
########

出力例

クリックでエリアが外側に移動します。

・rd3pieコマンド

・機能を追加したRerd3pieコマンド


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

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