I have an excell file of twitter users, and my program already draws me the graphic, later, I make a random walk, (where I'm going to see what route it made) I keep it in a dictionary, but I want the users that more they were visited have a larger node in my drawing.
import csv
import networkx as nx
import matplotlib.pyplot as plt
import random as np
import operator
from statistics import mode
f = open("Twitter_network_R.csv")
lines = csv.reader(f)
lista = []
usuarios = {}
for line in lines:
lista.append(line[0])
lista.append(line[1])
if line[0] in usuarios:
usuarios[line[0]].append (line[1])
else:
usuarios[line[0]] = [line[1]]
#generamos grafica inciso a
k = len(usuarios)
g = nx.Graph()
for i in set(lista):
#generamos nodos
g.add_node(i)
if i in usuarios:
for j in usuarios[i]:
#generamos aristas
g.add_edge(i, j)
nx.draw(g, with_labes=True)
plt.show()
#Inciso b Caminata
caminata = []
n = 40
#elegimos un i_0 (vertice inicial) de forma aleatoria
persona = np.choice(list(set(lista)))
#agregamos el usuario inicial
caminata.append(persona)
#y escogemos el proximo a quien visita, se agrega a una lista para ver su recorrido
for i in range(n):
caminata[i] = np.choice(usuarios[caminata[i]])
caminata.append(caminata[i])
caminata.pop()
print("La caminata que siguio fue:")
print(caminata)
#inciso c Nos dice las veces que fue visitado cada usuario i
hasta el tiempo n
sinrep = list(set(caminata))
dic2 = {}
contador = []
for i in sinrep:
m = caminata.count(i)
contador.append(m)
dic2[i] = m
#aqui imprimimos cuantas veces fue visitado cada usuario
print("la persona {} se visito {} veces ".format(i, m))
print("\nmetemos los datos a un diccionario")
print(dic2)
#inciso d, ordenar los vertices (nodos de mayor a menor cantidad de visitas
#es decir de mayor a menos segun la importancia del sitio
print("ordenar de mayor a menor")
resultado = sorted(dic2.items(),key=operator.itemgetter(1))
print(resultado)
resultado.reverse()
print(resultado)