需要在NetworkX图中添加更多信息



我正在尝试构建一个组织结构图,但是我需要在图表中输入多条信息并插入人员的照片。我会像以前一样把它放在下面,我想知道我怎样才能把他们的照片和标题放在人名下面。提前感谢您的帮助!


import sqlite3, pandas as pd, networkx as nx
con = sqlite3.connect('people.db')
qry="""
SELECT a1.id, a1.name as a1, a2.name as a2, a1.position as a3
FROM people a1
INNER JOIN people a2 ON a1.manager_id = a2.id
"""
emps=pd.read_sql(qry, con)
emps.rename(
columns={'a2' :'manager', 'a1' :'person', 'a3':'position'},
inplace=True
)
edgelist=emps[['person', 'manager',]]
print(edgelist)
orgchart=nx.from_pandas_edgelist(edgelist, source='manager', target='person')
p=nx.drawing.nx_pydot.to_pydot(orgchart)
p.write_png('orgchart.png')

在每个圆圈中,我想把名字和放在位置和照片的下面。如果可能的话,我想把布局从圆形改为方形。

谢谢!

尝试阅读de docs,但是没有。

尝试读取文档,但是没有

只需向节点添加属性,它们将以"is"的形式传递。graphviz。

。,如果您有一个节点" gov ",则可以执行:

orgchart.nodes['George']['color'] = 'red'
orgchart.nodes['George']['shape'] = 'box'
orgchart.nodes['George']['label'] = 'Georgie boy is a swell guy'

查看Graphviz文档中的节点(和边缘)属性。

对于添加图像,有image属性(使用图像的绝对路径,因为pydot将工作目录切换到临时目录),但它显示为节点背景,因此使用HTML标签代替:
orgchart.nodes['George']['label'] = '<<TABLE><TR><TD>\N</TD></TR><TR><TD><IMG SRC="/absolute/path/to/george.png"/></TD></TR></TABLE>>'

最新更新