6

たとえば、networkxエッジを描画するときに、線のプロパティをきめ細かく制御できるかどうかを誰かが知っていますdraw_networkx_edgesか?(matplotlib)プロパティであるlinesolid_capstyleとを制御したいと思います。solid_joinstyleLine2D

>>> import networkx as nx
>>> import matplotlib.pyplot as plt
>>> G = nx.dodecahedral_graph()
>>> edges = nx.draw_networkx_edges(G, pos=nx.spring_layout(G), width=7)
>>> plt.show()

上記の例では、キャップスタイルを制御して非表示にしたいエッジの間に「ギャップ」があります。ギャップを埋めるために適切なサイズでノードを追加することを考えましたが、最終的なプロットのエッジは色付きであるため、ノードを追加してもカットされません。ドキュメントから、またはedges.properties()自分がやりたいことを実行する方法を確認することができません...何か提案はありますか?

カーソン

4

1 に答える 1

7

matplotlib行コレクションにcapstyleを設定できないようです。

ただし、Line2Dオブジェクトを使用して独自のエッジのコレクションを作成すると、キャップスタイルを制御できます。

import networkx as nx
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
G = nx.dodecahedral_graph()
pos = nx.spring_layout(G)
ax = plt.gca()
for u,v in G.edges():
    x = [pos[u][0],pos[v][0]]
    y = [pos[u][1],pos[v][1]]
    l = Line2D(x,y,linewidth=8,solid_capstyle='round')
    ax.add_line(l)
ax.autoscale()
plt.show()
于 2012-07-04T13:26:17.640 に答える