用pylab看不到图

时间:2014-02-07 15:17:02

标签: linux python-3.x matplotlib plot backend

我正在使用python3.3.3并且我已经安装了手动scipy 0.13.3,matplotlib 1.3.1,numpy 1.8.0(从sourgeforge下载并构建它们像$ sudo python3 setup.py或者自述文件告诉我的任何内容)去做)。我正在使用Linux Mint Maya 13.04 64bit和KDE 4.8.5

当我跑步时:

$ python3
Python 3.3.3 (default, Jan 27 2014, 12:55:04) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pylab as pl
>>> pl.figure(figsize=(8, 6), dpi=80)
<matplotlib.figure.Figure object at 0x7f2025397450>
>>> pl.show()
>>> 

我一无所获。我用谷歌搜索它,后端似乎有问题。所以我转到文件

/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/matplotlib/mpl-data/matplotlibrc

找到行

backend : agg

并将agg更改为TkAgg,WXAgg,GTKAgg,PS,PDF等。

对于PS,PDF,我也没有得到任何结果。如果我使用TkAgg ect,我在导入pylab时会出错。

>>> import pylab as pl
Traceback (most recent call last):                                                                                                                                                                                                 
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/pylab.py", line 1, in <module>
    from matplotlib.pylab import *
  File "/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/matplotlib/pylab.py", line 269, in <module>
   from matplotlib.pyplot import *
  File "/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/matplotlib/pyplot.py", line 98, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
   File "/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/matplotlib/backends/__init__.py", line 28, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/matplotlib/backends/backend_tkagg.py", line 8, in     <module>
    import tkinter as Tk, tkinter.filedialog
  File "/usr/local/lib/python3.3/tkinter/__init__.py", line 40, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named '_tkinter'
>>> 

我应该告诉我在Python 2.7上没有问题。此外,我尝试从包管理器安装python3和其他包,但这不起作用(即我无法导入scipy)。

任何想法??

2 个答案:

答案 0 :(得分:1)

很多后端都没有用pl.show()生成gui图形,比如agg,ps和pdf,它们用于生成文件。您尝试使用的其他人不适合您的系统,因为您没有安装它们。例如,对于TkAgg,您应该安装TkInter。有关详细信息,请参阅此matplotlib backend FAQ。由于您使用的是KDE,因此您可能希望使用&#39; Qt4Agg&#39;但这取决于您在系统上安装的内容。更改matplotlibrc文件是永久更改后端的一种方法,但您也可以使用以下方法动态更改它,如果您要生成文件而不是gui,这很有用:

import matplotlib
matplotlib.use('Qt4Agg')

您应该在导入其他matplotlib模块之前调用它。

答案 1 :(得分:0)

好的,我按照这些指示How to configure PyQt4 for Python 3 in Ubuntu?

找到了解决方案

我不知道我所做的其他事情是否有必要,但这就是我这样做的方式。首先我使用

手动卸载python3.3
rm -r /usr/local/lib/python3.3
rm -r /usr/local/bin/python3*

然后使用Synaptic安装了python3,python3-dev,python3-numpy,python3-scipy,python3-pyqt4。另外,下载并编译了matplotlib(使用自述文件中的说明)。 最后,我在stackexchange中使用了上面的响应来安装PyQT4(你可以看到我已经从synaptic安装了它,SIP也没有用,但它没有用)。

Finnaly我不得不改变后端使用Qt4Agg,所以我找到了文件:

/usr/local/lib/python3.3/site-packages/matplotlib-1.3.1-py3.3-linux-x86_64.egg/matplotlib/mpl-data/matplotlibrc

找到了后端的行并将其从agg更改为Qt4Agg

# backend : agg
backend : Qt4Agg

现在我的情节没有问题

(或者我可以使用建议的matplotlib.use('Qt4Agg'))

感谢您的帮助!