python - 使用 python 字典和 agraph 在 Graphviz 中标记节点

标签 python networkx graphviz

我正在尝试使用Python的networkx创建一个显示自循环的有向图图像。 Networkx 没有显示它们,但其他在线论坛建议将 networkx 与 graphviz 连接。这是我为五节点定向网络输入的内容,该网络是用 Python 完成的。

 # Import packages
 import networkx as nx
 import numpy as npy
 from networkx.drawing.nx_agraph import to_agraph

 #Non-symmetric adjacency matrix with self-loop at 1.
 A=npy.matrix([[1,1,1,0,0],[1,0,1,0,0],[1,1,0,1,1],[0,0,1,0,1], 
 [0,0,1,1,0]])
 #Create directed graph
 G=nx.DiGraph(A)

 #add graphviz layout options (as per advice at
 #https://stackoverflow.com/a/39662097)

 G.graph['edge'] = {'arrowsize': '0.8', 'splines': 
 'curved', 'shape': 'circle'}
 G.graph['graph'] = {'scale': '3'}
 G.graph['node']={'shape': 'circle','fillcolor':'red'} 
 D = to_agraph(G) 
 D.layout('dot')
 D.draw('multi.png')  

一切正常。但是,我想使用存储在 Python 字典中的标签作为 标签={0:'A',1:'B',2:'C',3:'D',4:'E'}

我不知道如何在 graphviz 布局选项中添加它。显然,这是一个简单的图表,但我的字典标签通常更大。

最佳答案

您可以通过在将 NetworkX 图转换为 Graphviz AGraph 之前为每个节点设置“标签”属性来实现:

...
labels={0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E'}
nx.set_node_attributes(G, {k:{'label':labels[k]} for k in labels.keys()})
D = to_agraph(G)

结果为:

enter image description here

关于python - 使用 python 字典和 agraph 在 Graphviz 中标记节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507684/

相关文章:

python - string.translate 函数中的 "table"是什么意思?

Python从xml文件中读取base 64字符串到类似QT的字节数组

python - 深度优先搜索标记(Python)

python - networkx 图的无限路径长度

graphviz - 如何使用 GraphViz 分离节点的图片和标签?

python - 如何在sql select语句中使用python函数

python - 在 linux 机器中获取 astimezone 错误

python - osmnx 如何知道在最短路径中绘制哪些边

ubuntu - Graphviz 安装 Ubuntu 14.04

graphviz - DOT/graphviz边缘标签中的下标