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

如何使用for循环为分组数据集生成独立的NetworkX及ipycytoscape网络图

完整实现代码

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
import ipycytoscape
from IPython.display import display

# 此处替换为你自己的数据集读取逻辑,示例为构造测试数据
data = {
    'Node': ['A','A','B','F','F','G'],
    'Target': ['B','C','D','E','A','M'],
    'Group': [1,1,2,3,3,3]
}
df = pd.DataFrame(data)

file_prefix = "group_network"
# 按Group字段自动遍历所有分组,无需硬编码分组数量
for group_id, group_df in df.groupby('Group'):
    # 生成当前分组独立的NetworkX图对象
    G = nx.from_pandas_edgelist(group_df, source='Node', target='Target')
    
    # 绘制静态图并保存
    plt.figure()
    nx.draw(G, with_labels=True, node_color='lightblue')
    plt.title(f'Iteration n.{group_id}')
    plt.savefig(f'{file_prefix}_{group_id}.png')
    plt.close()
    
    # 生成当前分组独立的ipycytoscape交互对象
    cytoscapeobj = ipycytoscape.CytoscapeWidget()
    cytoscapeobj.graph.add_graph_from_networkx(G)
    display(cytoscapeobj)

核心修复说明

  • 修正循环逻辑:替换错误的固定数值循环,通过df.groupby('Group')直接遍历每个分组的专属子数据集,自动适配任意数量的分组
  • 独立图对象生成:每次循环使用当前分组的子数据集构造NetworkX对象,确保不同分组的图数据完全隔离
  • 修复绘图重叠问题:每次循环新建、关闭画布,避免多张图叠加,用分组ID作为标识生成独立的图片文件
  • 修复交互组件显示问题:新增display调用,解决循环内ipycytoscape组件无法正常渲染的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:15:03