Pensez à lire un fichier dans le format de liste de liens (source, dest, poids)
comme indiqué ci-dessous avec graph-tool.
link_list.csv
Alice,Bob,2
Bob,Charlie,5
Charlie,Alice,3
Pour lire ce fichier avec grpah-tool, analysez-le en utilisant le module csv comme suit.
load_csv_link_list.py
import csv
import graph_tool.all as gt
nodes = set()
rows = []
with open('link_list.csv') as f:
reader = csv.reader(f)
rows = [row for row in reader]
for row in rows:
nodes.add(row[0])
nodes.add(row[1])
nodes = list(nodes)
g = gt.Graph()
g.vp['name'] = g.new_vp('string')
for n in nodes:
v = g.add_vertex()
g.vp['name'][v] = n
# set edges
g.ep['weight'] = g.new_ep('double')
for row in rows:
s = nodes.index(row[0])
t = nodes.index(row[1])
w = float(row[2])
vs = g.vertex(s) # => get vertex object from the index
vt = g.vertex(t)
e = g.add_edge(vs, vt)
g.ep['weight'][e] = w
Ce que nous faisons est comme suit
nœuds
--Je ne veux extraire que des choses uniques, donc je les stocke dans set
puis les convertis en liste.
--Pour le nom du nœud, créez la chaîne vertex_property name
dans le graphe et stockez-la g.vp ['name'] = g.new_vp ('string')
--g.vp
contient l'attribut (vertex_property) pour le nœudweight
Voici à quoi ressemble le graphique.
À propos, le résultat de la visualisation de ce graphique est le suivant.
pos = gt.arf_layout(g)
gt.graph_draw(g, pos=pos, vertex_text=g.vp.name, vertex_font_size=10)
Recommended Posts