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

