Rで解析:インタラクティブな編集!ネットワーク図をぐりぐり動かせ!「visNetwork」パッケージの紹介


vis.jsライブラリを利用した、インタラクティブに拡大、縮小、移動やノードとエッジの追加、削除、結合などが可能な「visNetwork」パッケージを紹介します。なお、iOSで出力ファイルの読み込みでエラーが起きたので、スマートフォンでの閲覧は出力結果を画像で表示しています。ぜひ、スマートフォン以外の環境で動作を確認してください。

RStudioを導入することで、本パッケージのプロットをhtmlファイルで保存するだけではなく、Rの作業性が向上します。最下部に導入と保存方法を紹介します。ぜひ、使用を検討ください。

パッケージバージョン0.0.4。R version 3.2.0でコマンドを確認しています。
プロットの動作はInternet Explorerバージョン11(windows)とChromeバージョン 43.0.2357.132(windows and Mac)で確認しました。


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

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

#パッケージのインストール
install.packages("visNetwork")

実行コマンドの紹介

Rstudio利用すると、コマンドでもプロットをhtmlファイルに保存することができます。また、Macでは特別な工夫なくノードラベルなどに日本語の利用が可能でした。Windowsでも工夫次第で可能かと思います。<単純な使用例>の後に<装飾や編集可能な図の出力例>のコマンドを紹介します。

<単純な使用例>
本パッケージでは「ノード」と「エッジ」の2つのデータを準備する必要があります。理解しやすいように「ノードid1」に他の4つのノードと自身のエッジが結合する例を紹介します。出力結果と合わせて確認ください。詳細はコメントを確認してください。

#パケージの読み込み
library("visNetwork")
#単純な使用例
#ノードid1にすべてのエッジが結合
#nodesとedgesのデータが必要です
#nodeデータの作成
nodes <- data.frame(#ノードid
                    id = 1:5,
                    #ノードラベル
                    label = paste("node", 1:5))

#edgesデータの作成
edges <- data.frame(#エッジの始点
                    from = 1:10,
                    #エッジの終点
                    to = 1,
                    #エッジラベルの指定
                    label = paste("edge", 1:10))

#プロット
visNetwork(nodes, edges)

#プロットをhtmlファイルに保存
#htmlwidgets::saveWidgetコマンドを使用します
#なお、保存コマンドはRStudioで実行してください
#R単独での実行ではエラーが出ます
#保存場所の指定
#library("tcltk")
#setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), sep = "", collapse ="")))
#network <- visNetwork(nodes, edges)
#htmlwidgets::saveWidget(network, "network.html")

[pc]<単純な使用例出力>
[/pc]
[nopc]<単純な使用例出力>
スマートフォンでの閲覧は出力結果を画像で表示しています。ぜひ、スマートフォン以外の環境で動作を確認してください。
network[/nopc]


<装飾や編集可能な図の出力例>
「ノードやエッジの装飾を適応」、「ダイアログでノード周辺をハイライト」、「プロットをリアルタイムに編集」するコマンド例です。詳細はコメントを確認してください。

#装飾を適応したデータ参考例の作成
#nodeデータの作成
nodes <- data.frame(#ノードid
           id = 1:10,
                    #ノードラベル
                    label = paste("node", 1:10),
                    #ノードグループ 
                    group = c("GrA", "GrB"),
                    #シンボルサイズ
                    value = 1:10,
                    #ノードシンボルの設定
                    shape = c("square", "triangle", "box", "circle", "dot", "star",
                              "ellipse", "database", "text", "diamond"),
                    #ツールチップの指定
                    #ノードシンボルにカーソルを合わせると表示されます
                    title = paste0("<p><b>", 1:10,"</b><br>node</p>"),
                    #色の設定
                    color = c("#e1e6ea", "#505457", "#4b61ba", "#a87963", "#deb7a0",
                              "#d9bb9c", "#28231e", "#EEFFFF", "#EEE0FF", "#F6CEDF"),
                    #影の設定
                    shadow = c(FALSE, TRUE, FALSE, TRUE, TRUE))

#edgesデータの作成
edges <- data.frame(#エッジの始点
                    from = sample(1:10,10),
                    #エッジの終点
                    to = sample(1:10, 10),
                    #エッジラベルの指定
                    label = paste("edge", 1:10),
                    #エッジの長さを指定
                    length = c(200,500),
                    #エッジ矢印の種類の指定
                    #"to", "from", "middle", "middle;to"の4種類の設定が可能です
                    arrows = c("to", "from", "middle", "middle;to", "from"), 
                    #実線(TRUE)、破線(FALSE)の指定
                    dashes = c(TRUE, FALSE),
                    #ツールチップの指定
                    #エッジラベルにカーソルを合わせると表示されます
                    title = paste0("Color:", c("#e1e6ea", "#505457", "#4b61ba", "#a87963", "#deb7a0",
                                             "#d9bb9c", "#28231e", "#EEFFFF", "#EEE0FF", "#F6CEDF")),
                    #スムージングの指定
                    smooth = c(FALSE, TRUE),
                    #影の指定
                    shadow = c(FALSE, TRUE, FALSE, TRUE, TRUE))



#ノードやエッジの装飾を適応
network1 <- visNetwork(nodes, edges)
network1
#プロットをhtmlファイルに保存
#なお、保存コマンドはRStudioで実行してください
#R単独での実行ではエラーが出ます
#保存場所の指定
#library("tcltk")
#setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), sep = "", collapse ="")))
#htmlwidgets::saveWidget(network1, "network1.html")

#ダイアログでノード周辺をハイライト
network2 <- visNetwork(nodes, edges) %>% visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE)
network2
#プロットをhtmlファイルに保存
#なお、保存コマンドはRStudioで実行してください
#R単独での実行ではエラーが出ます
#保存場所の指定
#library("tcltk")
#setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), sep = "", collapse ="")))
#htmlwidgets::saveWidget(network2, "network2.html")

#プロットをリアルタイムに編集
network3 <- visNetwork(nodes, edges) %>% visOptions(manipulation = TRUE)
network3
#プロットをhtmlファイルに保存
#なお、保存コマンドはRStudioで実行してください
#R単独での実行ではエラーが出ます
#保存場所の指定
#library("tcltk")
#setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), sep = "", collapse ="")))
#htmlwidgets::saveWidget(network3, "network3.html")

[pc]

図の出力例

[/pc]
[nopc]

図の出力例

スマートフォンでの閲覧は出力結果を画像で表示しています。ぜひ、スマートフォン以外の環境で動作を確認してください。[/nopc]

[pc]・ノードやエッジの装飾を適応
[/pc]
[nopc]・ノードやエッジの装飾を適応
network1
[/nopc]

[pc]・ダイアログでノード周辺をハイライト
[/pc]
[nopc]・ダイアログでノード周辺をハイライト
network2[/nopc]

[pc]・プロットをリアルタイムに編集
[/pc]
[nopc]・プロットをリアルタイムに編集
network3[/nopc]

[pc]・参考:Macでの日本語を含む出力
[/pc]
[nopc]・参考:Macでの日本語を含む出力
JPnetwork
[/nopc]


参考:RStudioの導入

・RStudioオフィシャルページ:http://www.rstudio.com/

RStudioオフィシャルページのTopに表示される赤枠部分「Download RStudio」をクリックします。
screenshot-www.rstudio.com 2015-06-17 04-48-30

表示されるページ内、赤枠部分「Desktop」をクリックします。
screenshot-www.rstudio.com 2015-06-17 04-49-01

左側「Open Source Edition」最下部の「DOWNLOAD RSTUDIO DESKTOP」をクリックします。
screenshot-www.rstudio.com 2015-06-17 04-49-36

表示されるダウンロードページより、使用中のOSにあったファイルをダウンロードして導入します。RStudioは手軽な画像の保存だけでなく、実行コードの管理が簡単なので作業効率が良くなると思います。色々さわってみてください。


結果をHTMLファイルで保存する方法

コマンドを実行することで、RStudioの右下部「Viewer」に結果が表示されます。その後、Exportをクリックし「Save as Web Page」を選択し保存します。この方法は、「metricsgraphics」パッケージや「DT」パッケージなどでも応用可能です。なお、データ数が多いと出力ができませんので注意してください。

scatterD3RStudio


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク