R:「接続」グラフ

Nov 24 2020

Rを使用して、グラフを作成してプロットしました。

library(igraph)
library(igraphdata)
data(karate)

#cluster
cfg <- cluster_fast_greedy(karate)

#plot entire graph
plot(cfg, karate)

#plot first subgraph

a = induced_subgraph(karate, cfg[[1]])
plot(a)

#plot second subgraph

b = induced_subgraph(karate, cfg[[2]])
plot(b)

#plot third subgraph

c = induced_subgraph(karate, cfg[[3]])
plot(c)

どのグラフがどのグラフに接続されているかを示すコードを書くことは可能ですか?

例:緑のグラフはオレンジと紫に接続されています。紫色のグラフは緑色のグラフにのみ接続されています。オレンジ色のグラフは緑色のグラフに接続されています

(「a」はオレンジ色のグラフ、「b」は緑色のグラフ、「c」は紫色のグラフです)

b:cおよびa

c:b

a:b

回答

1 BenNutzer Nov 25 2020 at 08:58

コミュニティ間の接続が存在するかどうかが問題となるバイナリの場合、次のように実行できます。まず、メンバーシップ( "a"、 "b"、または "c"に属する)に基づいてコミュニティを契約します。

V(karate)$mem <- membership(cfg) g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")

次に、ループと複数のエッジを削除します。

g <- simplify(g)

最後に、隣接するノードを抽出します(上記で契約した後、コミュニティと等しくなります)。

sapply(1:vcount(g), function(x) adjacent_vertices(g, x))