python – networkx – 根据边缘属性更改颜色/宽度 – 结果不一致
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – networkx – 根据边缘属性更改颜色/宽度 – 结果不一致,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1108字,纯文字阅读大概需要2分钟。
内容图文
我设法正确生成了图形,但是对于以下两个不同的代码行,一些更多的测试结果表明结果不一致:
nx.draw_circular(h,edge_color=[h.edge[i][j]['color'] for (i,j) in h.edges_iter()], width=[h.edge[i][j]['width'] for (i,j) in h.edges_iter()])
nx.draw_circular(h,edge_color=list(nx.get_edge_attributes(h,'color').values()), width=list(nx.get_edge_attributes(h,'width').values()))
第一行产生一致的输出,而第二行产生每个边缘的错误颜色/大小.
但是,它看起来我上面的两行都依赖于函数调用来返回每个边缘顺序的属性.为什么结果不同?
使用h [] [] []访问属性对我来说有点笨拙;是否可以通过点约定来访问它,例如edge.color用于h.edges()中的边缘.
或者我错过了什么?
解决方法:
传递给绘图函数的边的顺序很重要.如果您未指定(使用edges关键字),您将获得G.edges()的默认顺序.最明确地给出这样的参数是最安全的:
import networkx as nx
G = nx.Graph()
G.add_edge(1,2,color='r',weight=2)
G.add_edge(2,3,color='b',weight=4)
G.add_edge(3,4,color='g',weight=6)
pos = nx.circular_layout(G)
edges = G.edges()
colors = [G[u][v]['color'] for u,v in edges]
weights = [G[u][v]['weight'] for u,v in edges]
nx.draw(G, pos, edges=edges, edge_color=colors, width=weights)
这导致输出如下:
内容总结
以上是互联网集市为您收集整理的python – networkx – 根据边缘属性更改颜色/宽度 – 结果不一致全部内容,希望文章能够帮你解决python – networkx – 根据边缘属性更改颜色/宽度 – 结果不一致所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。