多重ネットワークグラフと2部グラフの作成に便利なパッケージの紹介です。データの特徴を改めて見直すことができるかもしれません。実行コマンドでは「array」classを利用していますが、「matrix」classでも単独でグラフの作成が可能です。
パッケージバージョンは0.97-2。実行コマンドはwindows 11のR version 4.1.3で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("multigraph")
実行コマンド
詳細はコマンド、各パッケージのヘルプを確認してください。「array」コマンドの例にもなればと思います。「array」コマンドは特にパッケージが必要なく初期状態で実行可能です。
#パッケージの読み込み
library("multigraph")
###データを準備#####
n = 8
#3次元の配列を作成
TestData <- array(0, c(n, n, 2),
dimnames = list(LETTERS[1:n],
LETTERS[1:n]))
set.seed(1234)
TestData[,, 1] <- sample(0:1, n^2, replace = TRUE)
set.seed(5678)
TestData[,, 2] <- sample(0:1, n^2, replace = TRUE)
#グループ分け変数
set.seed(2345)
GroupCu <- sample(0:2, n, replace = TRUE)
########
#多重ネットワークグラフを作成する:multigraphコマンド
#データを指定:netオプション
#レイアウトを選択:layoutオプション;
#"circ","force","stress","conc","rand"
#背景色:bgオプション
multigraph(net = TestData, layout = "force",
seed = 3, bg = "gray")
#グラフレイアウトの設定:multigraph;scopeオプション
#listで指定するのが簡単です。直接オプションで書き込むのも可
#シンボル、エッジの色は複数はベクトルで指定
#有向,無向の設定:directedオプション;有向/無向=TRUE/FALSE
#シンボルのグループ分け設定:cluオプション
#シンボルサイズ:cexオプション
#シンボル色:vcolオプション
#フォントサイズ:fsizeオプション
#フォント位置:posオプション;0でシンボル中央
#エッジ色:ecolオプション
#エッジ太さ:lwdオプション
#エッジ間の幅:bwdオプション
scp <- list(directed = TRUE, cex = 8, clu = GroupCu,
vcol = c("#deb7a0", "#4b61ba", "yellow"),
fsize = 13, pos = 0,
ecol = c("#505457", "red"),
lwd = 1, bwd = 0.5)
#グラフレイアウトの適応:scopeオプション
multigraph(net = TestData, layout = "force",
seed = 3, bg = "gray", scope = scp)
#2部グラフの作成:bmgraphコマンド
#レイアウトを選択:layoutオプション;
#"bip","bip3","bip3e","bipc","force",
#"rand","circ","stress","CA","circ2"
#グラフの回転:rotオプション;角度で入力
bmgraph(net = TestData, layout = "bip3",
seed = 3, bg = "gray", rot = 65)
#グラフレイアウトを設定
#上記,multigraphコマンドの紹介を参照
scp <- list(directed = TRUE, cex = 5,
vcol = c("#deb7a0", "#4b61ba", "yellow"),
fsize = 8, pos = 0,
ecol = c("#505457", "red"),
lwd = 1, bwd = 0.5)
#グラフレイアウトの適応:scopeオプション
bmgraph(net = TestData, layout = "bip3",
seed = 3, bg = "gray", rot = 65,
scope = scp)
出力例
・multigraphコマンド

・multigraphコマンドにscopeオプションを適応

・2部グラフの作成:bmgraphコマンド

・bmgraphコマンドにscopeオプションを適応

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