2017-06-19 2 views
0

J'ai donc le problème suivant: J'ai un réseau plutôt grand qui contient des informations sur la connexion personnelle entre les personnes. L'un des attributs de vertex est leur ville de résidence. Je veux maintenant voir s'il y a un lien entre les gens de différentes villes. Le genre de résultat que je voudrais obtenir est un complot qui représente ces liens. Il est peut-être le plus facile à montrer un exemple de ce que je cherchais:R et igraph: Création d'un graphique montrant quels types d'attributs de vertex ont des arêtes entre eux

Example image

Donc dans ce cas, l'axe des x représenterait les gens de différentes villes, alors que l'axe y représente leur amitié . Donc, si une personne de New York est amie avec une personne de Tokyo, un point serait dessiné à [New York, Tokyo]. Cela pourrait me donner des informations supplémentaires en plus du coefficient d'assortativité. J'ai déjà vu des représentations similaires auparavant dans des articles, mais je suis complètement désemparé comment les créer en utilisant igraph sur R. Je regardais les voisins ou les commandes de quartier, mais je n'ai pas été capable de comprendre comment créer quelque chose comme ça encore. L'aide serait très appréciée.

Edit: Exemple de code qui pourrait être utilisé pour reproduire:

g <- erdos.renyi.game(25, 1/10)
V(g)$location <- c("NY", "Tokyo", "Madrid", "Berlin", "NY", "Tokyo", "Madrid", "Berlin", "NY", "Tokyo", "Madrid", "Berlin", "NY", "Tokyo", "Madrid", "Berlin", "NY", "Tokyo", "Madrid", "Berlin", "Berlin", "NY", "Tokyo", "Madrid", "Berlin")

+2

Il est plus facile d'aider vous si vous fournissez un [exemple reproductible] (https: // stackoverf low.com/questions/5963269/how-to-make-a-great-r-reproducible-example) avec des données d'entrée d'échantillon qui peuvent être utilisées pour tester des solutions possibles. – MrFlick

+0

Merci pour la réponse. Je suppose que vous pourriez juste utiliser un graphe d'échantillon aléatoire comme ceci: 'g <- erdos.renyi.game (25, 1/10)' 'V (g) $ location <- c (" NY "," Tokyo "," Madrid "," Berlin "," NY "," Tokyo "," Madrid "," Berlin "," NY "," Tokyo "," Madrid "," Berlin "," NY "," Tokyo ", "Madrid", "Berlin", "NY", "Tokyo", "Madrid", "Berlin", "Berlin", "NY", "Tokyo", "Madrid", "Berlin") ' – suedbaden

Répondre

2

Voici ce que vous pouvez faire en utilisant as_long_data_frame:

df<- apply(as_long_data_frame(g),2,as.character) 
colnames(df) <- c("from","to","from_city","to_city") 
df <- as.data.frame(df) 
ggplot(df,aes(x=from_city,y=to_city))+ 
    geom_jitter(position = position_jitter(width = 0.1, height = 0.1)) 

enter image description here

+0

Cela a résolu mon problème . Merci beaucoup! – suedbaden