networkD3パッケージを使ってみた
networkD3:Tools for creating D3 JavaScript network graphs from R
というRパッケージがリリースされています。
http://christophergandrud.github.io/networkD3/
http://cran.r-project.org/web/packages/networkD3/index.html
D3 JavaScriptを使ってネットワークを描画してくれるパッケージということですが、D3 JavaScriptに関する知識が全くなくても使えました。
RStudioで使うことが推奨されていますが、RGuiなどでもできました。
その場合、図はhtmlファイルとしてブラウザで表示されます。
simpleNetwork
辺リストからネットワークを描く。
サンプルコード
library(networkD3)
# Fake data
Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)
# Create graph
simpleNetwork(NetworkData)
head(MisLinks)
でサンプルデータ(『レ・ミゼラブル』の人物相関図)の辺リストを見てみると、
source target value
1 1 0 1
2 2 0 8
3 3 0 10
4 3 2 6
5 4 0 1
6 5 0 1
1列めに始点、2列めに終点、3列目に辺の値(リンクの太さ)の入ったdata.frameになっている。
head(MisNodes)
でノードのデータを見てみると、
name group
1 Myriel 1
2 Napoleon 1
3 Mlle.Baptistine 1
4 Mme.Magloire 1
5 CountessdeLo 1
6 Geborand 1
1列めにノードの名前、2列めにノードのグループが入ったdata.frameになっている。
treeNetwork
樹形図を描くのだが、階層クラスタ分析の結果から描画できるのが面白かった。
サンプルコード
hc <- hclust(dist(USArrests), "ave")
これは普通の階層クラスタ分析。
通常のデンドログラムだとこうなる。
plot(hc)
これをJSONのリスト形式に変換してツリー形のネットワークとして描画する。
treeNetwork(as.treeNetwork(hc))
?treeNetwork
すると階層のリストを手入力するサンプルもあるけど大変そう。
文字コードの関係で、Windowsではデフォルトではラベルに日本語が使えませんが、Macなら大丈夫なようです。
というRパッケージがリリースされています。
http://christophergandrud.github.io/networkD3/
http://cran.r-project.org/web/packages/networkD3/index.html
D3 JavaScriptを使ってネットワークを描画してくれるパッケージということですが、D3 JavaScriptに関する知識が全くなくても使えました。
RStudioで使うことが推奨されていますが、RGuiなどでもできました。
その場合、図はhtmlファイルとしてブラウザで表示されます。
simpleNetwork
辺リストからネットワークを描く。
サンプルコード
library(networkD3)
# Fake data
Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)
# Create graph
simpleNetwork(NetworkData)
data.frame形式で1列めにリンクの始点(source)、2列めに終点(target)を指定した辺リストを作っています。
引数を追加すれば、ノードやリンクの色などを変更することができます。
引数を追加すれば、ノードやリンクの色などを変更することができます。
forceNetwork
力学モデルによるグラフ描画。
リンクの太さやノードのグループの色分けができる。
サンプルコード
力学モデルによるグラフ描画。
リンクの太さやノードのグループの色分けができる。
サンプルコード
head(MisLinks)
でサンプルデータ(『レ・ミゼラブル』の人物相関図)の辺リストを見てみると、
source target value
1 1 0 1
2 2 0 8
3 3 0 10
4 3 2 6
5 4 0 1
6 5 0 1
1列めに始点、2列めに終点、3列目に辺の値(リンクの太さ)の入ったdata.frameになっている。
head(MisNodes)
でノードのデータを見てみると、
name group
1 Myriel 1
2 Napoleon 1
3 Mlle.Baptistine 1
4 Mme.Magloire 1
5 CountessdeLo 1
6 Geborand 1
1列めにノードの名前、2列めにノードのグループが入ったdata.frameになっている。
treeNetwork
樹形図を描くのだが、階層クラスタ分析の結果から描画できるのが面白かった。
サンプルコード
hc <- hclust(dist(USArrests), "ave")
これは普通の階層クラスタ分析。
通常のデンドログラムだとこうなる。
plot(hc)
これをJSONのリスト形式に変換してツリー形のネットワークとして描画する。
treeNetwork(as.treeNetwork(hc))
?treeNetwork
すると階層のリストを手入力するサンプルもあるけど大変そう。
文字コードの関係で、Windowsではデフォルトではラベルに日本語が使えませんが、Macなら大丈夫なようです。