Formatieren von Diagrammen in R.
Ich versuche herauszufinden, wie ich einfach auf in R erstellte Diagramme zugreifen und diese bearbeiten kann.
Wenn ich mit folgenden Daten beginne. Ich erstelle ein Diagramm, führe ein Diagrammclustering aus und zeichne dann den ersten Cluster:
#libraries
library(igraph)
library(igraphdata)
data(karate)
#cluster
cfg <- cluster_fast_greedy(karate)
plot(cfg, karate)
cfg
IGRAPH clustering fast greedy, groups: 3, mod: 0.43
+ groups:
$`1` [1] "Actor 9" "Actor 10" "Actor 15" "Actor 16" "Actor 19" "Actor 21" "Actor 23" "Actor 24" "Actor 25" "Actor 26" "Actor 27" [12] "Actor 28" "Actor 29" "Actor 30" "Actor 31" "Actor 32" "Actor 33" "John A" $`2`
[1] "Mr Hi" "Actor 2" "Actor 3" "Actor 4" "Actor 8" "Actor 12" "Actor 13" "Actor 14" "Actor 18" "Actor 20" "Actor 22"
$`3`
[1] "Actor 5" "Actor 6" "Actor 7" "Actor 11" "Actor 17"
#make a plot of the first community
a = induced_subgraph(karate, cfg[[1]])
plot(a)
#biggest graph https://stackoverflow.com/questions/15103744/r-igraph-how-to-find-the-largest-community
x <- which.max(sizes(cfg))
subg <- induced.subgraph(karate, which(membership(cfg) == x))
Benutzer G5W zeigte, wie eine Tabelle erstellt wird, die die Größe jedes Clusters enthält:
my_table = table(cfg$membership)
Ich fand auch heraus, wie man alle Beobachtungen in ihren entsprechenden Gemeinschaften "verdichtet" (zusammenzieht, schrumpft) und dann eine Handlung macht.
contracted <- simplify(contract(karate,membership(cfg)))
plot(contracted)
Es scheint zwei "Linien" zu geben, die die drei Cluster miteinander verbinden:

Weiß jemand, ob diese Zeile "wirklich etwas bedeutet"? Kommt diese Linie natürlich vor? Auf welcher Basis verbindet diese Linie diese 3 Cluster?
Ich simulierte meine eigenen Netzwerkdaten, führte Graph-Clustering durch, zog die Ergebnisse nach Cluster zusammen und erstellte dann ein Diagramm
library(igraph)
library(dplyr)
library(visNetwork)
set.seed(1234)
#create file from which to sample from
x5 <- sample(1:10000, 10000, replace=T)
#convert to data frame
x5 = as.data.frame(x5)
#create first file (take a random sample from the created file)
a = sample_n(x5, 9000)
#create second file (take a random sample from the created file)
b = sample_n(x5, 9000)
#combine
c = cbind(a,b)
#create dataframe
c = data.frame(c)
#rename column names
colnames(c) <- c("a","b")
#create graph
graph <- graph.data.frame(c, directed=F)
graph <- simplify(graph)
cfg <- cluster_fast_greedy(graph)
#contract clusters
contracted <- simplify(contract(graph, membership(cfg), vertex.attr.comb=toString))
#visnetwork plot
visIgraph(contracted) %>% visOptions (highlightNearest = TRUE) %>% visIgraphLayout(layout = "layout_with_fr") %>%
visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE) %>%
visInteraction(navigationButtons = TRUE)
#without visnetwork
plot(contracted)
Einige Cluster sind noch miteinander verbunden, andere sind isoliert. Weiß jemand warum das so ist?
Vielen Dank
Antworten
Verwenden Sie Folgendes, um eine Tabelle mit der Größe jedes Clusters abzurufen:
table(cfg$membership)
1 2 3
18 11 5
Die Zeilen bedeuten, dass einige Personen in Gruppe 1 mit einigen in Gruppe 2 und einige in Gruppe 3 mit Personen in Gruppe 2 sprechen, aber niemand in Gruppe 1 mit jemandem in Gruppe 3 spricht. Zum Beispiel Herr Hi (Gruppe 2) spricht mit Schauspieler 5 (Gruppe 1) und mit Schauspieler 32 (Gruppe 3).
Ihr anderes Beispiel ist nicht verbunden. Es sind mehrere Komponenten verbunden.
table(COMP$membership)
1 2 3 4 5 6 7 8 9 10 11
6196 4 7 5 2 2 2 8 2 1 3
13 14 15 16 17 18
2 2 2 2 2 2
In der vertraglich vereinbarten Grafik gibt es natürlich immer noch keine Verknüpfungen zwischen diesen Komponenten.