以下のようなcsv形式で与えられる隣接行列からグラフを生成するスクリプト。
,V1,V2,V3,V4,V5,V6,V7,V8,V9
V1,0,,,,,,,,
V2,3,0,,,,,,,
V3,1,4,0,,,,,,
V4,1,4,0,0,,,,,
V5,0,8,1,0,0,,,,
V6,0,4,0,0,9,0,,,
V7,0,1,3,4,5,12,0,,
V8,3,0,6,0,1,1,1,0,
V9,0,0,0,0,1,2,3,1,0スクリプト
with open("ADJ.csv", "r") as f:
lines = [[i.replace("\n","") for i in i.split(",")] for i in f.readlines()]
import numpy as np
for i in lines:
print(i)
header = lines[0][1:]
ADJ = np.array([list(map(lambda y: int(y) if y != "" else 0 ,i[1:])) for i in lines[1:]])
print(ADJ + ADJ.T)
print(header)
dict_loc = {i: header[i] for i in range(len(header))}
dict_loc = {v: k for k, v in dict_loc.items()}
from graphviz import Digraph
G = Digraph(format="png")
G.attr("node", shape="circle",dpi = "\"1000\"")
for i in range(len(header)):
for j in range(len(header)):
print(f"{header[i]} -> {header[j]}: {ADJ[i][j]}")
if ADJ[i][j] != 0:
G.edge(header[i], header[j], label=str(ADJ[i][j]))
G.render("bt")
G = Digraph(format="png")実行結果


