前回の記事がNetworkXの頂点の書式についての記事だったので今回は辺の書式です。
ドキュメントは同じ場所です。
ドキュメント: draw_networkx
有向グラフの場合は矢印の形などもう少し項目が多いのですが、
無向グラフの場合は、太さと色とスタイル(単線、破線、ドットなど)が設定項目になります。
このうち、太さ(width) と 色(edge_color) は単一の値だけではなく、
辺の数と同じ長さの配列で指定することができます。
配列で指定した値は、 G.edge
で取得できる辺の一覧の順番と対応するように設定されます。
(初めてNetworkXをいじった時はこの辺りをしらず、思った設定ができずにいました。)
細かいですがドキュメントにデフォルトの色は’r’ (赤)と書いてありますが、これはおそらくドキュメントの誤りです。
(何も指定しないと黒になります。)
edge_color (color string, or array of floats (default=’r’))
styleに指定できるのは次の4種類です。(スタイルの指定は辺別ではなく、全体で一つ指定する必要があります。)
solid|dashed|dotted|dashdot
それでは適当なグラフで実行してみましょう。
import networkx as nx
import matplotlib.pyplot as plt
# グラフを生成
G = nx.Graph()
G.add_cycle(range(5))
# 辺の順番を確認
print(G.edges)
# [(0, 1), (0, 4), (1, 2), (2, 3), (3, 4)]
# 可視化
nx.draw_networkx(
G,
edge_color=["r", "g", "m", "c", "y"],
width=[1, 2, 3, 4, 5],
style= "dashdot",
)
plt.show()
出力がこちら。
0と1を結んでるのが一番細い赤い線で、次に0と4を結んでるが緑の線で、
と G.edges の値と対応して設定が反映されました。