networkx draw_networkx_edges capstyle

7

有人知道在绘制网络图时,是否可以通过(例如)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()

在上面的示例中,我想通过控制端点样式来隐藏边缘之间的“间隙”。我考虑过在恰当的位置添加节点以填补这些空隙,但我的最终图表中的边缘是有颜色的,因此添加节点行不通。我无法从文档或查看 edges.properties() 中找出如何做到我想要的... 有什么建议吗?
1个回答

8

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接