如何在for循环中生成并保存多个无重叠的PNG格式图表?
解决Matplotlib循环绘图重叠问题
问题根源在于Matplotlib默认复用同一个画布,循环迭代时新的绘图元素会叠加在之前的内容上,导致图片重叠。下面是两种可行的解决方法:
方法一:每次绘图后清除画布内容
在保存图片后调用plt.clf()清除当前画布的所有元素,确保下一次绘图是空白画布:
import matplotlib.pyplot as plt for i in range(10): y = arr_df[i].flatten() plt.title('Nitrat Graph') plt.xlabel('X Axis') plt.ylabel('Y Axis') plt.plot(x_axis, y, color='blue') plt.savefig(f'NO_{i}.png') plt.clf() # 清除画布内容,为下一次绘图重置
方法二:每次循环新建独立画布
每次迭代时创建全新的画布,避免复用旧画布的内容,绘图完成后可关闭画布释放内存:
import matplotlib.pyplot as plt for i in range(10): plt.figure() # 创建新的空白画布 y = arr_df[i].flatten() plt.title('Nitrat Graph') plt.xlabel('X Axis') plt.ylabel('Y Axis') plt.plot(x_axis, y, color='blue') plt.savefig(f'NO_{i}.png') plt.close() # 关闭画布,释放内存资源
内容的提问来源于stack exchange,提问作者walikyu yudin
相关产品推荐
相关产品推荐

