Pythonでnetworkxを使用して有向グラフをプロットしています。ところが、エッジのアローヘッドは先のとがった矢印ではなく、一端から太いことがわかりました。太いエッジを先のとがった矢印に変更したい。これが私のコード、実際の出力、そして望ましい出力です:
import networkx as nx
import matplotlib.pyplot as plt
G=nx.DiGraph()
item = [1,2]
G.add_Edge(*item) #color = item[-1], weight = 2)
pos = nx.circular_layout(G)
nx.draw(G, pos, with_labels = True, Edge_color = 'b')
plt.show()
何か提案は本当に役に立ちますか?
これは遅い答えかもしれませんが、新しいバージョンのnetworkx 2.1では、arrowstyleとarrowsizeを使用して矢印の種類を設定できますパラメータ。
import networkx as nx
import matplotlib.pyplot as plt
G=nx.DiGraph()
item = [1,2]
G.add_Edge(*item) #color = item[-1], weight = 2)
pos = nx.circular_layout(G)
nx.draw(G, pos, with_labels = True, Edge_color = 'b', arrowsize=20, arrowstyle='fancy')
plt.show()
詳細については、ドキュメントにアクセスしてください: https://networkx.github.io/documentation/stable/reference/generated/networkx.drawing.nx_pylab.draw_networkx_edges.html#networkx.drawing.nx_pylab.draw_networkx_edges ==
良いニュースです。これは、networkxの開発バージョン(networkx-2.1になる予定)で可能になりました。これで、コードに矢印が描画されます
In [5]: import networkx as nx
...: import matplotlib.pyplot as plt
...:
...: G=nx.DiGraph()
...:
...: item = [1,2]
...:
...: G.add_Edge(*item) #color = item[-1], weight = 2)
...:
...: pos = nx.circular_layout(G)
...: nx.draw(G, pos, with_labels = True, Edge_color = 'b')
...: plt.show()
...:
今のところ、これはnx.drawでは不可能です。 https://github.com/networkx/networkx/blob/master/networkx/drawing/nx_pylab.py#L584 によると、まだ実装されていません。
ただし、graphvizを使用してグラフをプロットすることはできます。 Networkxには、グラフをgraphvizオブジェクトに簡単に変換するためのインターフェースがあります。 https://networkx.github.io/documentation/stable/reference/drawing.html#module-networkx.drawing.nx_agraph を参照してください。