6

有谁知道在通过(例如)绘制networkx边缘时是否可以对线属性进行细粒度控制draw_networkx_edges?我想控制线solid_capstylesolid_joinstyle,它们是(matplotlib)Line2D属性。

>>> 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()

在上面的示例中,我想通过控制 capstyle 来隐藏边缘之间的“间隙”。我考虑过以合适的大小添加节点来填补空白,但我最终绘图中的边缘是彩色的,所以添加节点不会削减它。我无法从文档中弄清楚或查看edges.properties()如何做我想做的事情......有什么建议吗?

卡森

4

1 回答 1

7

看起来您无法在 matplotlib 行集合上设置 capstyle。

但是您可以使用 Line2D 对象制作自己的边缘集合,这允许您控制 capstyle:

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 回答