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

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

vis.jsライブラリを利用した、インタラクティブに拡大、縮小、移動やノードとエッジの追加、削除、結合などが可能な「visNetwork」パッケージを紹介します。

パッケージバージョン2.1.2。windows11のR version 4.2.2で確認しています。

スポンサーリンク

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

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

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

実行コマンドの紹介

Rstudio利用すると、コマンドでもプロットをhtmlファイルに保存することができます。<単純な使用例>の後に<装飾や編集可能な図の出力例>のコマンドを紹介します。

<単純な使用例>

本パッケージでは「ノード」と「エッジ」の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コマンドを使用します
#保存場所の指定
library("tcltk")
setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), sep = "", collapse ="")))
network <- visNetwork(nodes, edges)
htmlwidgets::saveWidget(network, "network.html")

<装飾や編集可能な図の出力例>

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

#装飾を適応したデータ参考例の作成
#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("<<", 1:10,">>"),
  #色の設定
  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で実行してください
#保存場所の指定
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ファイルに保存
#保存場所の指定
library("tcltk")
setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), 
                         sep = "", collapse ="")))
htmlwidgets::saveWidget(network2, "network2.html")

#プロットをリアルタイムに編集
network3 <- visNetwork(nodes, edges) %>% visOptions(manipulation = TRUE)

#プロット
network3

#プロットをhtmlファイルに保存
#保存場所の指定
library("tcltk")
setwd(paste(as.character(tkchooseDirectory(title = "保存場所を指定"), 
                         sep = "", collapse ="")))
htmlwidgets::saveWidget(network3, "network3.html")

出力例

・単純な使用例

・ノードやエッジの装飾を適応

・ダイアログでノード周辺をハイライト

・プロットをリアルタイムに編集


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

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