R: Diagramme „verbinden“
Mit R habe ich ein Diagramm erstellt und gezeichnet:
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)
Ist es möglich, Code zu schreiben, der zeigt, welcher Graph mit welchem Graph verbunden ist?

Beispiel: Das grüne Diagramm ist mit Orange und Lila verbunden. Das violette Diagramm ist nur mit dem grünen Diagramm verbunden. und das orangefarbene Diagramm ist mit dem grünen Diagramm verbunden
("a" ist der orangefarbene Graph, "b" ist der grüne Graph, "c" ist der lila Graph)
b: c und a
c: b
a: b
Antworten
Für den binären Fall, in dem die Frage lautet, ob eine Verbindung zwischen Communitys besteht oder nicht, können Sie Folgendes tun. Vereinbaren Sie zunächst einen Vertrag mit den Communities basierend auf ihrer Mitgliedschaft (die zu "a", "b" oder "c" gehört).
V(karate)$mem <- membership(cfg)
g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")
Zweitens entfernen Sie Schleifen und mehrere Kanten:
g <- simplify(g)
Extrahieren Sie abschließend benachbarte Knoten (die jetzt den Communitys entsprechen, nachdem Sie sie oben kontrahiert haben):
sapply(1:vcount(g), function(x) adjacent_vertices(g, x))