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

如何在Matplotlib中将多个子图分别保存为独立图片?

如何将多个子图分别保存为独立图片

你的问题出在plt.savefig()的位置——它被放在了循环外面,只会保存循环最后生成的那个子图。要把每个城市的子图单独保存,只需要把保存操作移到循环内部,每次生成完一个子图就立即保存,同时用唯一的文件名区分每个文件。

修改后的代码如下:

# 定义配色方案
color_palette = [{"Neon": "#ff0099",  "Background": "#2e002e"},
                 {"Neon": "#00ff00",  "Background": "#003300"},
                 {"Neon": "#00ccff",  "Background": "#002233"},
                 {"Neon": "#ffff00",  "Background": "#333300"},
                 {"Neon": "#ff6600",  "Background": "#331a00"},
                 {"Neon": "#ff00ff",  "Background": "#330033"}
]

# 可视化网络
for idx, (city, edges) in enumerate(city_edges.items()):   

    # 设置绘图参数
    neon = color_palette[idx]['Neon']
    color_bcg  = color_palette[idx]['Background']
    width = 0.5

    # 创建画布和轴
    f, ax = plt.subplots(1,1,figsize=(12,12))
    edges.plot(ax = ax, color = neon, linewidth = width, alpha = 0.9)
    ax.set_facecolor(color_bcg)

    # 隐藏刻度
    for xlabel_i in ax.get_xticklabels(): xlabel_i.set_visible(False)
    for ylabel_i in ax.get_yticklabels(): ylabel_i.set_visible(False)
    for tick in ax.get_xticklines(): tick.set_visible(False)
    for tick in ax.get_yticklines(): tick.set_visible(False)

    # 添加标题
    ymin, ymax = plt.ylim()
    extension = 0.1 * (ymax - ymin)
    ax.set_ylim(ymin, ymax + extension)
    ax.set_title(city, fontsize = 20, color = neon, y = 0.9)

    # 保存当前子图,用城市名作为文件名
    plt.savefig(f"{city}.png")
    # 关闭当前画布,释放内存(可选但推荐)
    plt.close(f)

关键改动说明:

  • 将plt.savefig()移入循环,使用f"{city}.png"作为文件名,每个城市的图会以城市名.png的形式单独保存。
  • 添加plt.close(f)关闭画布,避免多次绘图后内存占用过高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:40:10