Matplotlib循环保存直方图出现空白图问题求助
解决循环中保存直方图空白的问题
你的问题出在两个关键细节上:
1. plt.show() 和 plt.savefig() 的顺序错误
plt.show() 会弹出显示当前图形,同时会清空并关闭当前画布,所以在它之后调用plt.savefig()时,画布已经没有内容了,自然保存出空白图。把savefig放到show之前就能解决这个核心问题。
2. 循环范围的语法错误
range(len(7))是无效写法,len()只能接收可迭代对象(比如列表、字符串),不能直接传入整数7。如果是要循环7次,直接写range(7);如果是要遍历你的数据列表,注意别用list当变量名(这是Python内置关键字,会引发冲突),应该用range(len(your_data_list))。
另外,循环中每次创建新图后,建议加上plt.close()释放内存资源,避免累积过多未关闭的图形。
修正后的代码示例:
# 替换成你的实际数据列表,避免用list当变量名 data_list = [你的数据1, 你的数据2, ...] for x in range(len(data_list)): plt.figure(figsize=(10, 6)) hist, bins, patches = plt.hist(data_list[x], 100) plt.title(f'pol frac reg {x}') plt.savefig(f'pol_frac_{x}.png') # 建议加上.png后缀明确文件格式 plt.show() plt.close() # 关闭当前图形,释放内存
如果确定要固定循环7次,就把range(len(data_list))改成range(7)即可。
内容的提问来源于stack exchange,提问作者Alison Andrade
相关产品推荐
相关产品推荐

