2017-05-12 2 views
0


J'ai un problème avec la visualisation de différents noeuds dans un réseau 2-mode et j'espère, quelqu'un pourrait m'aider à trouver l'erreur.
J'ai vérifié ce qui suit liés Q & A, How to create a bipartite network in R with igraph or tnet ou Converting data form for 2mode network in r mais même si, j'ai suivi les instructions, il n'a pas pu résoudre mon problème. Donc, voici ce que j'ai fait: J'ai un fichier csv.file avec deux colonnes (position & justification). Il ressemble à ceci:deux couleurs différentes de réseau de mode pour des noeuds

title of the file: mydata.csv 
id position    justification 
[1] contra solidarity legal regulations 
[2] pro solidarity  no justification  
[3] pro solidarity  political solidarity 
[4] pro solidarity  political solidarity 
[5] pro solidarity  legal regulations 
... (in total, 620 observations/rows of 2 variables) 

Je travaille avec et les paquets & et que vous souhaitez créer un avec des couleurs différentes pour les noeuds/sommets. R lit le fichier et le script fonctionne bien (pas d'erreurs):

EC_data <- read.csv("Mydata.csv", sep=";") 
EC_data 

library(statnet) 
library(devtools) 

euro_network <- network(EC_data, matrix.type="edgelist", sep=";") 
euro_network 

# overview about the network 
summary(euro_network, print.adj=FALSE) 

# for 2-mode networks 
detach(package:statnet) 
library(igraph) 

# bipartite/2-mode network is created from edge lists 
bn <- graph.data.frame(EC_data, directed=FALSE) 
bn 

# telling igraph that this is bipartite graph 
V(bn)$type <- V(bn)$type %in% EC_data[,1] 
bn 
plot(bn) 

# plotting the network 
plot.igraph(bn,layout=layout.fruchterman.reingold) 

# creating an vertex attribute to have different colors 
V(bn)$type <- V(bn)$name %in% bn[,1] 
bn 
colors <- c("green", "red") 
# green for 'contra solidarity', red for 'pro solidarity' 
plot(bn, vertex.color=colors[V(bn)$type+1]) 

Mais cela ne fonctionne pas. Tous les nœuds ont la même couleur et je ne sais pas pourquoi. De plus, j'ai l'impression que quelque chose me manque fondamentalement ou que je ne considère pas complètement, parce que je commence juste avec R et igraph.

Alors, quel est le problème avec les données ou le script?

Toute aide ou suggestion sont les bienvenues!

Répondre

1

Essayez plutôt

library(igraph) 

col <- c("#a0d468", "#ffce54") 
shape <- c("circle", "square") 


d_edgelist <- read.csv("G:\\DATA.csv") 

summary(d_edgelist) 

library(igraph) 
g <- graph.data.frame(d_edgelist, directed = FALSE) 
g <- simplify(g) 
V(g)$type <- FALSE 
V(g)$type[V(g)$name %in% d_edgelist[, 1]] <- TRUE 
g.proj <- bipartite.projection(g) 
plot(g, layout = layout.bipartite, 
    vertex.size = 40, 
    vertex.shape = shape[as.numeric(V(g)$type) + 1], 
    vertex.color = col[as.numeric(V(g)$type) + 1], 
    edge.color = "#333333", 
    edge.width = E(g)$weight * 2 
) 
+0

Merci pour l'aide. Ça a bien marché! Donc, mes erreurs étaient la commande de type V (g) $ et que je n'ai pas fait de projection, non?! –