2012-10-31 73 views
2

我浏览过“可能已经有你的答案的问题”,如果他们这样做......我不明白这一点。matplotlib savefig()blank - show()不是

我试图尽可能地消除,并简化了我的问题到下面的代码(我的道歉 - 我敢肯定,有一个更优雅的方式获得所有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()调用来第二次,因为一些问题&在这里(和其他地方)的答案似乎暗示呼叫顺序可能是问题。

我把这段代码中的其他数字(相同数据的直方图)保存为jpg,所以我知道这台计算机可以保存为jpg。

我不知道我在做什么错误与savefig - 任何建议?

谢谢!

+0

我刚刚在不同的计算机上测试过这段代码,它在哪里工作。它不起作用的系统是Ubuntu 10.04,我的帐户是未经洗刷的大众的一部分(没有特权)。我认为这意味着它在Ubuntu的后端,尽管事实上它很高兴地为我保存了直方图的数字。 –

回答

2

通过添加:

import matplotlib 
matplotlib.use('TkAgg') 

我的电话之前

import matplotlib.pyplot as plt 

我能够得到的一切工作愉快。

(我不明白后端,但很明显!)

相关问题