Python Matplotlib.Pyplot 不显示输出;没有错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19721385/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Matplotlib.Pyplot does not show output; No Error
提问by somnathchakrabarti
My platform is as follows
我的平台如下
Centos 6.x (VirtualBox VM running on Win-7 host), Python 2.6.6, Matplotlib 1.3.1, Numpy 1.8.0, Scipy 0.14.0.dev-bb608ba
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
I am running the below histogram.py code
我正在运行下面的 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()
But no output plot is appearing. I am receiving no error, so getting difficult to debug.
但是没有出现输出图。我没有收到任何错误,因此很难调试。
Following are the rc file-location and backend for my matplotlib installation
以下是我的 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'
Do I need to modify my 'agg' backend to 'Qt4Agg' or something else? Does it need me to modify the rc file?
我是否需要将我的“agg”后端修改为“Qt4Agg”或其他什么?需要我修改rc文件吗?
Note: I checked my matplotlibrc file to have only backend : agg
. Rest all parameters are commented.
注意:我检查了我的 matplotlibrc 文件中只有backend : agg
. 其余所有参数均已注释。
As per below comments, I tried installing libpng but facing the below error:
根据以下评论,我尝试安装 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
I have now successfully installed a stable and working duo of libpng-1.5.9/zlib-1.2.7 instead of the previous unstable versions libpng-1.6.6/zlib-1.2.8 and both the libs are successfully installed.
我现在已经成功安装了 libpng-1.5.9/zlib-1.2.7 的稳定和工作二重奏,而不是以前的不稳定版本 libpng-1.6.6/zlib-1.2.8,并且两个库都已成功安装。
But despite having a working and stable libpng, I can't open the png file being generated by the python code (given above). Is there any specific configuration setting for VMs to open .png files? How exactly can .png files be opened on Linux VMs running on WIndows host?
但是,尽管有一个工作稳定的 libpng,我还是无法打开由 python 代码生成的 png 文件(上面给出)。虚拟机是否有任何特定的配置设置来打开 .png 文件?.png 文件究竟如何在 WINdows 主机上运行的 Linux VM 上打开?
采纳答案by ev-br
The first step in debugging this is to replace plt.show()
by plt.savefig('foo.png')
. If it works, the problem is most probably with the backend:
调试它的第一步是替换plt.show()
为plt.savefig('foo.png')
. 如果它有效,问题很可能出在后端:
>>> import matplotlib
>>> matplotlib.get_backend()
'Qt4Agg'
Try switching backends and see if that helps: How to switch backends in matplotlib / Python
尝试切换后端,看看是否有帮助: How to switch backends in matplotlib / Python
If that does not help either, make sure you have all the dependencies (http://matplotlib.org/users/installing.html) --- I'd just reinstall from source. (notpip install matplotlib
)
如果这也没有帮助,请确保您拥有所有依赖项(http://matplotlib.org/users/installing.html)---我只是从源代码重新安装。(不是pip install matplotlib
)
回答by atomh33ls
I once had a similar problem. I solved it by adding these lines imediately after import matplotlib.pyplot as plt
and after every subsequent plt.show()
:
我曾经遇到过类似的问题。我通过import matplotlib.pyplot as plt
在每个后续之后立即添加这些行来解决它plt.show()
:
plt.clf()
plt.cla()
plt.close()
回答by raf
I am having the exact same problem. However, this was my fix after a little bit of research:
我现在正在遇到一模一样的问题。然而,这是我经过一些研究后的修复:
sudo yum install PyQt4
sudo gedit file at mpl.matplotlib_fname()
Change the first and only uncommented setting (as default) at line 32:
在第 32 行更改第一个也是唯一一个未注释的设置(默认):
backend : Qt4Agg