Python 网络X绘制网络X边缘capstyle

Python 网络X绘制网络X边缘capstyle,python,matplotlib,networkx,Python,Matplotlib,Networkx,是否有人知道在通过(例如)draw\u networkx\u edges绘制networkx边时,是否可以对线特性进行细粒度控制?我想控制行solid\u capstyle和solid\u joinstyle,它们是(matplotlib)Line2D属性 >>> import networkx as nx >>> import matplotlib.pyplot as plt >>> G = nx.dodecahedral_graph()

是否有人知道在通过(例如)
draw\u networkx\u edges
绘制networkx边时,是否可以对线特性进行细粒度控制?我想控制行
solid\u capstyle
solid\u 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()
了解如何做我想做的事情。。。有什么建议吗


Carson

看起来无法在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()

谢谢你,阿里。很好用!