Matplotlib导出图片空白求助:Ising模型仿真绘图异常
解决Matplotlib导出空白图的问题
问题根源
plt.show()顺序错误plt.show()运行后会弹出图形窗口,同时清空当前绘图上下文。你在这之后调用plt.savefig(),自然只能保存空白图——因为绘图内容已经被清空了。图形对象创建错误
代码里fig = plt.figure只是把函数本身赋值给了变量,没有实际创建图形实例,正确写法是fig = plt.figure()。这就是你看到<Figure size 640x480 with 0 Axes>提示的原因:图形未正确初始化,后续坐标轴也没绑定到有效图形上。
修正后的完整代码
import numpy as np import matplotlib.pyplot as plt M = 1000 plot = np.zeros(M) # 正确创建图形实例 fig = plt.figure() ax = plt.axes(xlim=(0, M), ylim=(-400,400)) for x in range(M): plot[x] = x xarr = range(0, M) ax.plot(xarr, plot, 'r-') ax.set_ylabel("Magnetism") ax.set_xlabel("Steps") # 先保存再显示,顺序别搞反 plt.savefig("output_mplot.png") plt.show()
额外优化建议
- 推荐用
ax.set_xxx这类面向对象的方式设置标签、刻度,比直接用plt.xxx更清晰,多子图场景下不易出错。 - 如果不需要弹出图形窗口,直接删掉
plt.show()即可,节省资源。
内容的提问来源于stack exchange,提问作者Faith
相关产品推荐
相关产品推荐

