NetworkX可视化:如何让节点按顺序排列在圆周上?
解决方案
要让节点按数值顺序排列在圆周上并呈现星形效果,你可以用circular_layout代替spiral_layout,并指定节点的排序顺序,完全不需要手动设置位置。
具体实现代码:
g = nx.Graph(edge_generator(5,4)) # 按数值升序排序节点 sorted_nodes = sorted(g.nodes()) # 基于排序后的节点生成圆周布局 pos = nx.circular_layout(g, sorted_nodes) # 绘制图形 nx.draw(g, with_labels=True, pos=pos)
原理说明:
spiral_layout默认按照节点的内部存储顺序(非数值顺序)排列,所以无法保证0、2、4…的有序分布circular_layout支持传入自定义节点顺序,会严格按照你给定的顺序将节点均匀分布在圆周上,你的边连接后自然会形成中间交叉的星形效果
内容的提问来源于stack exchange,提问作者regionalsky
相关产品推荐
相关产品推荐

