サムネがコーヒーの記事は書きかけです。

隣接行列から有向グラフを出力するスクリプト【研究用スクリプト】

以下のような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")

実行結果

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です