本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

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")

出力例

・単純な使用例

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

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

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

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.