如何使用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
相关产品推荐
相关产品推荐

