matplotlib不会绘制python3

时间:2012-10-18 06:30:50

标签: python python-3.x matplotlib install backend

我在virtualenv中成功安装了matplotlib。现在我想把它画出来。我知道如何改变后端,但是我在弄清楚要改变什么方面遇到了很多麻烦。

有没有人设法让它完全使用python3?如果是,怎么样?

我尝试了很多东西。我已经遍历了所有的后端,看看所有的投诉是什么,而不是我试图让其中一个投入工作。

另外值得注意的是,我的目标是将其整合到Pyramid应用程序中。

以下是所有不同后端发生的事情:

  • Agg:这是默认的后端。它没有绘制
  • GTK:需要pygtk,显然还没有移植到python3
  • GTKAgg:ditto
  • GTKCairo:说'必需的包gtk'假设上面的内容
  • FltkAgg:看起来好像没有python3版本。即使它在python3 UI FAQ中提到过。我猜这只是一个唤醒。 gosh darnit
  • MacOSX:我正在运行ubuntu。假设不合适
  • QtAgg:需要pyqt。见Qt4Agg
  • Qt4Agg:见Installing PyQt4 in a virtualenv
  • TkAgg:ImportError:无法导入名称_tkagg。我可以在解释器中运行import tkinter,所以我不确定到底有什么坏了
  • WX:ImportError:Matplotlib backend_wx和backend_wxagg需要wxversion,但未找到
  • WXAgg:ditto
  • CocoaAgg:ImportError:CococaAgg后端需要安装PyObjC!
  • GTK3Cairo:ImportError:GTK3后端需要安装pygobject。我尝试安装它,但是当我尝试使用正确的python配置它时,它会抱怨缺少标题
  • GTK3Agg:没有名为cairo的模块。但我认为我会遇到与上述相同的问题
  • cairo:开罗后端需要安装pycairo
  • emf:您必须先从http://pyemf.sf.net安装pyemf。看起来应该做windowsey的东西所以这可能不是一个好选择
  • gdk:没有名为gobject的模块
  • pdf:运行但不绘制
  • pgf:ditto
  • ps:ditto
  • svg:ditto
  • template:ditto。

我用来测试后端的脚本是:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()

到目前为止,我花了太多时间试图让python3.2和qt4玩得很好,而我似乎每次转弯都会遇到问题。因此,我不想继续尝试我的试错方法,而是要问:

  1. Python3.2和Pyramid的最佳选择是什么?
  2. 我该如何实现?
  3. 与此同时,我将继续进行反复试验,并在我离开时更新我的​​问题。

    注意我正在尝试的东西

    对于TkAgg:

    因为tkinter正确导入我假设它已正确安装(如果我错了,我想有办法测试它?)。这个家伙http://ask.sagemath.org/question/626/sage-python-import-matplotlib-no-module-named有类似的问题,但我确定他的设置与我的不同。解决方案是在python3.2站点包目录的内容中找到tkagg.py并编辑有问题的import语句。我发现很难相信matplotlib出现故障(我无法运行修改后的代码建议......)

    对于WX的东西:

    wxPython for Python 3表示目前尚不支持python3。另外wxPython在他们的网站上没有提到python3,所以我猜这是不行的。用完了选项:/

    可可:

    同上:Writing Cocoa applications in Python 3

    EMF:

    同上:http://pyemf.sourceforge.net/README.html

5 个答案:

答案 0 :(得分:15)

我遇到了完全相同的问题,但经过多方努力后,我设法让TkAgg工作(这给了_tkagg的导入错误)。不太晚,但有人可能觉得它很有用。

FWIW我解决了以下问题(使用TkAgg):

  • 从软件包管理器
  • 安装 tk-dev
  • 从软件包管理器重新安装 python3-tk
  • 从源
  • 重建并重新安装 matplotlib
  • (当然在matplotrc中设置TkAgg)

如果您认为已正确安装tk-devpython3-tk,则需要 重建并重新安装matplotlib ,以便生成{{ 1}}在您的_tkagg.py目录中。

我在LM14上使用Python3.3(numpy 1.7)。但我认为它应该适用于Ubuntu / Python3.2

答案 1 :(得分:2)

我一直在做python 3.3.2和matplotlib的源代码构建。如上所述,TkAgg有效。如果您从源代码构建所有内容:

  1. sudo apt-get install tk-dev
  2. 重建python3(make clean; ./configure; make)
  3. 清理matplotlib(从virtualenv删除egg,从〜/ .config / matplotlib中删除缓存对象)
  4. 从源代码重建matplotlib(rm -r build /; python setup.py build; python setup.py install)
  5. 终于看到那个愚蠢的盒子弹出我的x = y线。

    小时 ....

答案 2 :(得分:1)

Matplotlib似乎已经向他们的1.2.x release迈出了一大步。 matplotlib 1.2.0rc2(+ numpy 1.7.0b2)正在为我工​​作

  • Python 3.2.2(Linux Mint 12上的virtualenv)
  • Python 3.3.0(从源代码本地安装)

在这两种情况下,matplotlib报告“TkAgg”作为后端使用。

不幸的是,我不知道这可能与金字塔有什么关系。

答案 3 :(得分:0)

我在Ubuntu 16.04中使用matplotlib后端TkAgg后端写了一个确保tk-dev的答案。matplotlib后端在这里很有用。结果是安装sudo apt install tk-dev source venv/bin/activate pip --no-cache-dir install -U --force-reinstall matplotlib ,激活virtualenv并在virtualenv中重新安装python -c 'import matplotlib as mpl; print(mpl.get_backend())'

TkAgg

before_action :set_locale def set_locale I18n.locale = params[:locale] || I18n.default_locale end def default_url_options(options = {}) { locale: I18n.locale }.merge options end 现在应该说 # Locale Information scope "(:locale)" do resources :restaurants end # Example of regular route: get 'restaurant/list' => 'restaurant#list' get 'hello/index' => 'hello#index'

答案 4 :(得分:0)

对我来说,以下工作:

  • 停用
  • sudo apt-get install python3-matplotlib libfreetype6-dev
  • (激活virtualenv)source / home /...,
  • pip install numpy matplotlib(如果您已经拥有它,可以卸载然后安装,或者此时尝试创建新的venv)
  • 在venv里面的
  • pip install --upgrade pip也可能有帮助(由于某些原因我不知道),就像我安装scipy一样。

现在使用virtualenv进行绘图。

$ lsb_release -a (gives..)

Ubuntu 14.04.5 LTS