matplotlib savefig() 出现空白 - show() 无效

7
我已经浏览了“可能已经有您答案的问题”,但是如果有...我没有理解它。
我试图尽可能简化我的问题,并将其简化为以下代码(抱歉-我相信在得到所有40的numpy数组时有更优雅的方法,但这是我敲打头部后想出的...):
import numpy
import matplotlib.pyplot as plt

x=numpy.zeros((500,256))
x+=40
plt.title("Title")
plt.xlabel("Label")
plt.ylabel("Label")
plt.imshow(x,vmin=37.5,vmax=42.5, cmap='spectral')

#save the figure
filename="/xxx/yyy/matplotlibtest.jpg"
plt.savefig(filename)
plt.show()
plt.close()
plt.savefig()返回一个非常好的图片,有标签、轴和没有图形(即,矩形为空白)。 plt.show()展示了我所有上述内容,并在我的轴之间放置了一个漂亮的绿色矩形,就像应该的那样。我可以手动保存这个图像到同一个目录中,并得到我期望的结果(即,轴、标签、绿色矩形)。
我尝试过不使用show()或将show()调用作为第二步进行,因为这里(以及其他地方)的一些问题和答案似乎暗示了调用顺序可能是问题所在。
我已经将代码中的其他图像(相同数据的直方图)另存为jpg格式,所以我知道这台计算机可以保存为jpg格式。
我不确定我在savefig方面做错了什么,有什么建议吗?
谢谢!

我刚在另一台电脑上测试了这段代码,并且它能够正常工作。无法运行该程序的系统是Ubuntu 10.04,在那里我的帐户属于"不受欢迎者"(没有特权)的范畴。我会认为这意味着在Ubuntu后端内部有某些问题,尽管程序可以愉快地保存直方图图像的jpg文件。 - Topher Hughes
1个回答

7
通过添加:
import matplotlib
matplotlib.use('TkAgg')

在我的调用之前

import matplotlib.pyplot as plt

我已经成功把一切都搞定了。

(显然我还不太懂后端!)


我也真的不明白。我可以运行带有绘图函数的脚本,正常工作。但如果我从其他地方调用这个绘图函数,我会得到与你类似的行为。plt.show()弹出一个空白窗口。我在那个地方运行PyQt5,这就是为什么使用('TkAgg')应该会有所帮助,尽管我们有一个参数为Qt5...当我关闭绘图窗口时,我的终端会出现大量错误,看起来像黑夜一样丑陋。看来我现在只能忍受它。 - Mattu475

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接