Matplotlib.Pyplot不显示输出;没有错误

时间:2013-11-01 05:36:52

标签: python numpy matplotlib scipy

我的平台如下

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文件?

3 个答案:

答案 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()