You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Pandas DataFrame在NetworkX中构建以CEO为中心且部门节点相连的自我图(Ego Graph)

实现以CEO为中心的自我图(NetworkX + Pandas)

我来帮你一步步完成这个需求,确保CEO节点处于图的中心位置,且所有部门节点直接与CEO相连:

给定数据

首先把你提供的员工数据整理成清晰的表格格式:

BaseRateDepartmentNameTitle
80ProductionVice President
140ExecutiveCEO
30MaintenanceEngineer
70ProductionAssistant

现有代码片段

你已经完成了部分绘图逻辑:

D = nx.ego_graph(B, n = 'CEO')
nx.draw(D,node_color=color, with_labels=True, node_size=1500, arrowsize=20)

完整解决方案

  • 步骤1:导入所需库
    首先导入实现功能必备的三个库:

    import pandas as pd
    import networkx as nx
    import matplotlib.pyplot as plt
    
  • 步骤2:创建DataFrame并构建关系图
    我们需要先搭建完整的节点关系,确保CEO与每个部门直接相连,再提取CEO的自我图:

    # 将原始数据转为Pandas DataFrame
    data = [
        [80, 'Production', 'Vice President'],
        [140, 'Executive', 'CEO'],
        [30, 'Maintenance', 'Engineer'],
        [70, 'Production', 'Assistant']
    ]
    df = pd.DataFrame(data, columns=['BaseRate', 'DepartmentName', 'Title'])
    
    # 初始化有向图(用有向图更能体现层级关系,无向图可换成nx.Graph())
    B = nx.DiGraph()
    
    # 添加所有节点:CEO、各部门、各职位
    B.add_node('CEO')
    B.add_nodes_from(df['DepartmentName'].unique())
    B.add_nodes_from(df['Title'].unique())
    
    # 建立CEO与各部门的直接连接(满足需求核心要求)
    for dept in df['DepartmentName'].unique():
        B.add_edge('CEO', dept)
        B.add_edge(dept, 'CEO')  # 无向图只需添加一次,有向图双向添加更直观
    
    # 建立各职位与所属部门的连接
    for _, row in df.iterrows():
        B.add_edge(row['DepartmentName'], row['Title'])
        B.add_edge(row['Title'], row['DepartmentName'])
    
  • 步骤3:提取自我图并固定CEO中心位置
    为了让CEO稳定处于图的中心,我们可以手动指定其坐标:

    # 提取CEO的自我图,radius=2确保包含部门及下属职位节点
    D = nx.ego_graph(B, n='CEO', radius=2)
    
    # 用弹簧布局生成其他节点位置,强制CEO位于中心(0,0)
    pos = nx.spring_layout(D)
    pos['CEO'] = (0, 0)
    
    # 自定义样式绘图
    color = ['#ff9999' if node == 'CEO' else '#66b3ff' for node in D.nodes()]
    nx.draw(D, pos=pos, node_color=color, with_labels=True, node_size=1500, arrowsize=20)
    plt.show()
    
  • 代码细节说明

    • 选择DiGraph是为了体现管理层级的方向感,若不需要方向可替换为nx.Graph()
    • radius=2参数确保自我图不仅包含CEO直接连接的部门,还包含部门下的所有职位节点
    • 通过pos['CEO'] = (0,0)强制CEO处于中心,避免布局算法随机偏移
    • 节点颜色做了区分,你可以根据喜好修改配色、节点大小等样式参数

内容的提问来源于stack exchange,提问作者Neha Bose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:52:39