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

Networkx如何选择仅保存文件、仅显示图形或两者兼顾?

自定义控制NetworkX图形的显示与保存

你可以通过添加模式控制参数,把显示和保存的逻辑拆分开,轻松实现三种操作的切换。这里是改好的代码:

import networkx as nx
import matplotlib.pyplot as plt

def handle_graph(G, mode='both'):
    # 图形绘制核心逻辑
    pos = nx.spring_layout(G)
    f1 = plt.figure(figsize=(18,10))
    default_axes = plt.axes(frameon=True)    
    nx.draw_networkx(G, node_size=600, alpha=0.8, ax=default_axes, pos=pos)
    
    edge_labels = nx.get_edge_attributes(G, "weight")        
    nx.draw_networkx_edge_labels(G, pos=pos, edge_labels=edge_labels)    
    
    # 根据选择的模式执行对应操作
    if mode in ['save', 'both']:
        plt.savefig('graph.jpg')
    if mode in ['show', 'both']:
        plt.show()
    plt.close()  # 清理图形资源,避免多图绘制时出现异常

# 调用示例:
# 仅显示图形
# handle_graph(G, mode='show')

# 仅保存图形
# handle_graph(G, mode='save')

# 同时显示+保存(默认行为)
# handle_graph(G)

关键细节说明

  • mode参数支持三个取值:'show'(仅显示)、'save'(仅保存)、'both'(同时执行),默认值为both,和你原有代码的行为一致
  • 务必把plt.savefig()放在plt.show()之前执行——如果先调用plt.show(),matplotlib会清空当前图形缓存,后续保存会得到空白图片
  • 末尾的plt.close()用于关闭当前图形对象,避免后续绘图时出现内存占用过高或图形重叠的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:20:40