首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有不同类型节点的图

具有不同类型节点的图
EN

Stack Overflow用户
提问于 2019-05-23 05:36:33
回答 1查看 514关注 0票数 -1

我有以下的熊猫日期框:

df = pd.DataFrame({
'id_emp':[13524791000109, 12053850000137, 4707821000113],
'name_emp': [
    'JL Consultores',
    'GRAAL OURINHOS',
    'SOJA COMERCIO DE DERIVADOS DE PETROLEO LTDA'
],
'name_dep': [
    'DIONILSO MATEUS MARCON',
    'JOSE AUGUSTO ROSA',
    'LUCIO ANTONIO MOSQUINI'
],
'donnated_value': [ 750.00, 5000.00, 27350.00],
'donnated_amount': [1,1,1],
'reimbursed_value':[36000.00,410.55, 241.22],
'amount_reimbursed': [1,2,1],
'roi':[4800.00, 8.21,0.88]
})

从这个Dataframe中,我用下面的代码绘制了一个图:

# Create graph
G = nx.Graph()
# Add id_emp nodes
G.add_nodes_from(df['id_emp'])
# Set 'name_emp' attribute for 'name_emp' column values
for node in G.nodes:
   G.nodes[node]['name_emp'] = df.loc[df['id_emp'] == node]['name_emp'].values[0]
# Add name_dep nodes
G.add_nodes_from(df['name_dep'])
# Create the new column with transformed 'roi' values
df['roi_new'] = df['roi'].apply(
lambda x: 1 if x < 100 else 2 if 100 <= x < 1000 else 3)
# Add weighted edges
G.add_weighted_edges_from(df[['id_emp', 'name_dep', 'roi_new']].values)

我需要改进这张图的可视化效果。为此,我希望df ['id_emp‘和df 'name_dep’中的节点具有不同的颜色和格式。此外,理想情况下,每种类型的节点都应该位于不同的一侧。示例: df节点的id_emp将留在图的顶部,而其他节点将留在图的底部。欢迎您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 06:20:48

  1. 为所有节点添加一个'type_'属性,表示它是id_emp还是name_dep (替换现有代码行,不要添加它们!):

# Add id_emp nodes
G.add_nodes_from(df['id_emp'], type_='id_emp')
...
# Add name_dep nodes
G.add_nodes_from(df['name_dep'], type_='name_dep')

  1. 为进一步的节点着色设置colors列表:

colors = ['#0000FF' if G.nodes[n]['type_'] == 'id_emp' else '#FF0000' for n in G.nodes]

  1. 设置pos dict进一步定位节点(需要random模块,返回的结果不是很理想;如果想更好的绘制节点/边,需要更复杂的图形分析):

pos = {
    n: (
        random.random(),
        0 if G.nodes[n]['type_'] == 'id_emp' else 1
    )
    for n in G.nodes
}

  1. 绘制图表:

nx.draw(
    G,
    pos=pos,
    node_color=colors,
    with_labels=True
)

您可以阅读有关networkx图形绘制here的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56265339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档