gpt4 book ai didi

python在SPYDER中绘制有向图

转载 作者:太空狗 更新时间:2023-10-30 00:55:59 33 4
gpt4 key购买 nike

我正在使用 SPYDER。我有以下代码。代码生成图形。但图表并不干净。我想在图表中查看图层 - 我的第一层有“开始”节点,第二层有 1、2、3 节点,第三层有“a”、“b”、“c”节点,最后一层有“结束'节点。知道如何实现我的目标吗?

import networkx as nx
import matplotlib.pyplot as plt
import os.path as path

G=nx.DiGraph()
G.add_nodes_from(['start',1,2,3,'a','b','c','end'])

G.nodes(data=True)

G.add_edge('start',2)
G.add_edge('start',3)
G.add_edge(2,'b')
G.add_edge('b','end')
G.add_edge('a','end')
G.add_edge('f','g')
nx.draw(G)

------------------------更新--------------------

按层我的意思是我应该看到附图中的网络。我希望以这种方式绘制网络,因为 X 层中的节点将仅直接连接到 X+1 层或 X-1 层中的节点

enter image description here

最佳答案

[似乎networkx does not provide much for arranging graphs但我只接触过几次,所以我不能肯定地说。我找不到一种方法来完成您的要求。

但是,我尝试使用 graphviz (必须首先安装)来完成它。排名方法归功于this SO answer .

复制粘贴示例

import networkx as nx

ranked_node_names = [['start'],
[1, 2, 3],
['a', 'b', 'c'],
['end']]
node_edges = [('start', 2),
('start', 3),
(2, 'b'),
('b', 'end'),
('a', 'end')]

# graph and base nodes/edges in networkx
G = nx.DiGraph()
for rank_of_nodes in ranked_node_names:
G.add_nodes_from(rank_of_nodes)
G.nodes(data=True)
G.add_edges_from(node_edges)
# I don't know a way to automatically arrange in networkx so using graphviz
A = nx.to_agraph(G)
A.graph_attr.update(rankdir='LR') # change direction of the layout
for rank_of_nodes in ranked_node_names:
A.add_subgraph(rank_of_nodes, rank='same')
# draw
A.draw('example.png', prog='dot')

默认输出

enter image description here

LR(左右)输出

enter image description here

关于python在SPYDER中绘制有向图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585140/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com