我成功地生成了图表,但在进行更多的测试时发现以下两行代码产生了不一致的结果:
colors = [h.edge[i][j]['color'] for (i,j) in h.edges_iter()]
widths = [h.edge[i][j]['width'] for (i,j) in h.edges_iter()]
nx.draw_circular(h, edge_color=colors, width=widths)
这种方法会产生一致的输出,而以下的方法会根据边缘顺序产生错误的颜色/大小:
colors = list(nx.get_edge_attributes(h,'color').values())
widths = list(nx.get_edge_attributes(h,'width').values())
nx.draw_circular(h, edge_color=colors, width=widths)
然而,我看上面两行代码都依赖于函数调用按边的顺序返回属性。为什么会有不同的结果呢?
使用 h[][][]
来访问属性感觉有点笨拙,能否通过点表示法来访问呢,比如说 edge.color for edge in h.edges()
。
还是我漏掉了什么?