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)
#&#21015;&#21517;&#12399;label,value,caption&#12392;&#35373;&#23450;&#12377;&#12427;
TestData <- data.frame(label = paste0("Group", 1:5),
                       value = Runif,
                       caption = as.character(Runif),
                       colors = colorRampPalette(c("#0068b7", "#35a16b", "#f39800"))(5),
                       stringsAsFactors = F)
########

#&#12452;&#12531;&#12479;&#12521;&#12463;&#12486;&#12451;&#12502;&#12394;pie&#12464;&#12521;&#12501;&#12434;&#12503;&#12525;&#12483;&#12488;:rd3pie&#12467;&#12510;&#12531;&#12489;
#&#12487;&#12540;&#12479;&#12434;&#25351;&#23450;:Data&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12484;&#12540;&#12523;&#12481;&#12483;&#12503;&#12398;&#35373;&#23450;:enabled_tooltips&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12464;&#12521;&#12501;&#22806;&#21608;&#12398;&#34920;&#31034;&#38936;&#22495;:OuterRadius&#12458;&#12503;&#12471;&#12519;&#12531;
TESTrd3pie <- rd3pie(Data = TestData, Title = "TEST PIE", SubTitle = "TEST",
                     OuterRadius = NULL, enabled_tooltips = TRUE, type = "caption")
#&#12503;&#12525;&#12483;&#12488;&#12434;&#20445;&#23384;
#&#20316;&#26989;&#12501;&#12457;&#12523;&#12480;&#12395;TESTrd3pie.html&#12392;JavaScript&#12364;&#20445;&#23384;&#12373;&#12428;&#12383;&#12501;&#12457;&#12523;&#12480;&#12364;&#20986;&#21147;&#12373;&#12428;&#12414;&#12377;
saveWidget(TESTrd3pie, "TESTrd3pie.html", selfcontained = FALSE, libdir = NULL,
           background = "white")

#####################################################################
#&#38754;&#30333;&#12356;&#12398;&#12391;&#12467;&#12540;&#12489;&#12395;&#27231;&#33021;&#12434;&#36861;&#21152;:Rerd3pie&#12467;&#12510;&#12531;&#12489;
#&#36861;&#21152;&#12375;&#12383;&#27231;&#33021;
#&#12464;&#12521;&#12501;&#12434;&#12489;&#12540;&#12490;&#12484;&#21270;:pieInnerRadius = InnerRadius&#12434;&#36861;&#35352;
#InnerRadius&#12458;&#12503;&#12471;&#12519;&#12531;;&#12489;&#12540;&#12490;&#12484;&#31684;&#22258;&#12434;%&#12391;&#25351;&#23450;
#&#22615;&#12426;&#33394;&#12434;&#35373;&#23450;:misc = list(colors = list(segments = FillColors))&#12434;&#36861;&#35352;
#FillColor&#12458;&#12503;&#12471;&#12519;&#12531;
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")
}

#&#12503;&#12525;&#12483;&#12488;
TESTRerd3pie <- Rerd3pie(Data = TestData, Title = NULL, SubTitle = NULL, FillColors = TestData[, 4],
                         InnerRadius = "80%", enabled_tooltips= TRUE, type = "caption")
#&#12503;&#12525;&#12483;&#12488;&#12434;&#20445;&#23384;
#&#20316;&#26989;&#12501;&#12457;&#12523;&#12480;&#12395;TESTRerd3pie.html&#12392;JavaScript&#12364;&#20445;&#23384;&#12373;&#12428;&#12383;&#12501;&#12457;&#12523;&#12480;&#12364;&#20986;&#21147;&#12373;&#12428;&#12414;&#12377;
saveWidget(TESTRerd3pie, "TESTRerd3pie.html", selfcontained = FALSE, libdir = NULL,
           background = "white")
########

出力例

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

・rd3pieコマンド

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


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

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