我的平台如下
Centos 6.x(在Win-7主机上运行的VirtualBox VM), Python 2.6.6, Matplotlib 1.3.1, Numpy 1.8.0, Scipy 0.14.0.dev-bb608ba
我正在运行以下的histogram.py代码
#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 0, 1 # mean and standard deviation
f = np.random.normal(mu, sigma, 1000) # generate feature-vector with normal distribution
# plot the histogram - check the distribution
count, bins, ignored = plt.hist(f, 30, normed=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
linewidth=2, color='r')
plt.xlabel('Values')
plt.ylabel('Probability')
plt.title('Histogram')
plt.text(60, .025, r'$\mu=0,\ \sigma=1$')
plt.axis([-0.4, 0.3, 0, 5])
plt.grid(True)
plt.show()
但没有出现输出图。我没有收到任何错误,因此难以调试。
以下是我的matplotlib安装的rc文件位置和后端
[hue@sandbox ~]$ python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'/usr/lib64/python2.6/site-packages/matplotlib-1.3.1-py2.6-linux-x86_64.egg/matplotlib/mpl-data/matplotlibrc'
>>> matplotlib.get_backend()
'agg'
我是否需要将'agg'后端修改为'Qt4Agg'或其他?是否需要我修改rc文件?
注意:我检查了matplotlibrc文件只有backend : agg
。休息所有参数都被评论。
根据以下评论,我尝试安装libpng,但面临以下错误:
pngfix.o: In function `zlib_reset':
/usr/lib/hue/libpng-1.6.6/contrib/tools/pngfix.c:2151: undefined reference to `inflateReset2'
collect2: ld returned 1 exit status
我现在已成功安装了一个稳定且可正常工作的libpng-1.5.9 / zlib-1.2.7,而不是以前的不稳定版本libpng-1.6.6 / zlib-1.2.8,并且两个lib都已成功安装。
但是尽管有一个工作且稳定的libpng,我无法打开由python代码生成的png文件(如上所述)。 VM是否有特定的配置设置来打开.png文件?如何在运行在WIndows主机上的Linux VM上打开.png文件?
答案 0 :(得分:12)
调试此问题的第一步是将plt.show()
替换为plt.savefig('foo.png')
。如果它有效,问题很可能出在后端:
>>> import matplotlib
>>> matplotlib.get_backend()
'Qt4Agg'
尝试切换后端,看看是否有帮助: How to switch backends in matplotlib / Python
如果这也没有帮助,请确保您拥有所有依赖项(http://matplotlib.org/users/installing.html)---我只是从源代码重新安装。 (不 pip install matplotlib
)
答案 1 :(得分:2)
我遇到了完全相同的问题。然而,经过一些研究后,这是我的解决方案:
sudo yum install PyQt4
sudo gedit file at mpl.matplotlib_fname()
在第32行更改第一个也是唯一一个未注释的设置(默认设置):
backend : Qt4Agg
答案 2 :(得分:0)
我曾经遇到过类似的问题。我通过在import matplotlib.pyplot as plt
之后和之后的每个plt.show()
之后立即添加这些行来解决它:
plt.clf()
plt.cla()
plt.close()