networkxを使用するにあたりgraphvizに依存しているかどうかを調べる必要が出てきた。とりあえずGraphvizがない状態でnetworkxとmatplotlibを使い、描画できるか確認した。
import matplotlib.pyplot as plt
import networkx as nx
G = nx.DiGraph()
nodes = {
"1": ("testing1", {'color': [0.3,0.3,0.3], 'node_size': 150, 'label': '', 'edgecolor': [0.9, 0.5, 0.2], 'linewidth': 1}),
"2": ("testing2", {'color': [0.3,0.3,0.3], 'node_size': 150, 'label': '', 'edgecolor': [0.9, 0.5, 0.2], 'linewidth': 1}),
}
conns = {
("1", "2"): ("testing1", "testing2",
{'color': [1, 1, 1], 'weight': 1, 'arrowsize': 1}),
}
position = {
"testing1": [1,3],
"testing2": [2,4],
}
G.add_nodes_from(nodes.values())
G.add_edges_from(conns.values())
fig, ax = plt.subplots(figsize=(5, 5))
nx.draw_networkx_nodes(
G, position, ax=ax,
node_color=[node['color'] for node in G.nodes.values()],
node_size=[node['node_size'] for node in G.nodes.values()],
linewidths=[node['linewidth'] for node in G.nodes.values()],
edgecolors=[node['edgecolor'] for node in G.nodes.values()])
nx.draw_networkx_labels(
G, position, ax=ax,
labels={node[0]: node[1]['label'] for node in nodes.values()},
font_size=8,
font_color=[1.0,1.0,1.0])
nx.draw_networkx_edges(
G, position, ax=ax,
width=[edge['weight'] for edge in G.edges.values()],
edge_color=[edge['color'] for edge in G.edges.values()],
arrowsize=[edge['arrowsize'] for edge in G.edges.values()],
connectionstyle='arc3,rad=0.2',
alpha=0.6)
plt.show()
実行した所、描画自体はできた。どうやらnetworkxはgraphvizに依存していなさそうだった。