Networkx будет достаточно для вашей задачи. Вы можете легко создавать и сохранять графики. Вот быстрый пример:
import networkx as nx
import matplotlib.pyplot as plt
graph = nx.DiGraph()
graph.add_weighted_edges_from([("Tool", "A", 80), ("A", "Tool", 100), ("B", "Tool", 50), ("Tool", "C", 2000)])
nx.draw(graph, with_labels=True, font_weight='normal')
plt.savefig("your_graph.png")
В настоящее время этот пример не отображает вес ребер и пышных стрелок, но я уверен, что он настраивается. Для получения дополнительной информации просто проверьте документация . Надеюсь, мой ответ будет огромным