14

我的平台如下

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,并且两个库都已成功安装。

但是,尽管有一个工作且稳定的 libpng,我无法打开由 python 代码生成的 png 文件(如上所示)。虚拟机是否有任何特定的配置设置来打开 .png 文件?.png 文件如何在运行于 Windows 主机上的 Linux VM 上打开?

4

3 回答 3

13

调试的第一步是替换plt.show()plt.savefig('foo.png'). 如果可行,则问题很可能出在后端:

>>> import matplotlib
>>> matplotlib.get_backend()
'Qt4Agg'

尝试切换后端,看看是否有帮助: 如何在 matplotlib / Python 中切换后端

如果这也无济于事,请确保您拥有所有依赖项(http://matplotlib.org/users/installing.html)---我只是从源代码重新安装。(不是 pip install matplotlib

于 2013-11-01T12:28:06.263 回答
2

我现在正在遇到一模一样的问题。但是,经过一些研究,这是我的解决方法:

sudo yum install PyQt4
sudo gedit file at mpl.matplotlib_fname()

在第 32 行更改第一个也是唯一一个未注释的设置(默认):

backend : Qt4Agg
于 2014-08-25T22:05:17.697 回答
0

我曾经遇到过类似的问题。import matplotlib.pyplot as plt我通过在每个后续之后和之后立即添加这些行来解决它plt.show()

plt.clf()
plt.cla()
plt.close()
于 2013-11-01T12:31:16.527 回答