Vous pourriez peut-être utiliser igraph
. Si dans un graphique x
et y
sont liés de manière unique, ils ne seront pas connectés à d'autres nœuds - donc le graphique aura clusters
. L'objectif est donc d'identifier les clippers de taille 2 et d'extraire les noms des nœuds.
# extend your data a little to include another unique link
df <- data.frame(g1=c("x1","x2","x2","x3","x4","x7"),
g2=c("y1","y1","y2","y3",NA, "y8"),
stringsAsFactors = FALSE)
library(igraph)
g <- graph.data.frame(na.omit(df[,1:2]))
plot(g)
by(V(g)$name, clusters(g)$membership, as.character) [clusters(g)$csize==2]
#$`2`
#[1] "x3" "y3"
#$`3`
#[1] "x7" "y8"
EDIT Suivi de commentaires
Vous pouvez attribuer des couleurs (et d'autres attributs) aux noeuds en utilisant V (g) $ couleur. Vous pouvez les affecter de manière conditionnelle.
Donc, pour colorer les noeuds avec un seul lien différemment
b <- by(V(g)$name, clusters(g)$membership, as.character) [clusters(g)$csize==2]
V(g)$color <- ifelse(V(g)$name %in% unlist(b), "red", "blue")
plot(g)
Ou pour colorer chaque groupe différemment
V(g)$color <- c("red", "blue", "green")[clusters(g)$membership]
plot(g)
Jetez un oeil à ?V
, ?clusters
et ?plot.igraph
pour plus d'options
Cette est très intéressant. Existe-t-il un moyen d'appliquer également une couleur différente à ces paires un-à-un, soit le remplissage de vertice ou la bordure? Merci @ utilisateur20650 – santoku
@santoku; vous êtes le bienvenu. S'il vous plaît voir modifier re la coloration des noeuds – user20650