【问题标题】:matplotlib won't draw python3matplotlib 不会绘制 python3
【发布时间】:2012-10-08 13:04:42
【问题描述】:

我在 virtualenv 中成功安装了 matplotlib。现在我正试图让它画出来。我知道如何更改后端,但是在弄清楚将其更改为什么时遇到了很多麻烦。

有没有人设法让它完全与 python3 一起工作?如果是,怎么做?

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

另外可能值得注意的是,我的目标是将它集成到 Pyramid 应用程序中。

这是迄今为止所有不同后端发生的情况:

  • Agg:这是默认后端。它不画
  • GTK:需要 pygtk,它显然没有被移植到 python3
  • GTKAgg:同上
  • GTKCairo:说“必需的包 gtk”假设类似于上述内容
  • FltkAgg:看起来它没有 python3 版本。尽管它在 python3 UI FAQ 中被提及。我想那只是一个刺激。天哪
  • 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:同上
  • CocoaAgg:ImportError:CococaAgg 后端需要安装 PyObjC!
  • GTK3Cairo : ImportError: GTK3 后端需要安装 pygobject。我尝试安装它,但是当我尝试使用正确的 python 配置它时,它抱怨缺少标题
  • GTK3Agg:没有名为 cairo 的模块。但我认为我会遇到与上述相同的问题
  • cairo:Cairo 后端要求安装 pycairo
  • emf:必须先从http://pyemf.sf.net安装pyemf。看起来它应该做 windowsey 的东西所以这可能不是一个好的选择
  • gdk:没有名为 gobject 的模块
  • pdf:运行但不绘制
  • pgf:同上
  • ps:同上
  • svg:同上
  • 模板:同上。

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

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

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

  1. Python3.2 和 Pyramid 的最佳选择是什么?
  2. 如何实现?

与此同时,我将继续试错,并随时更新我的​​问题。

关于我正在尝试的东西的注意事项

对于 TkAgg:

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

对于 WX 的东西:

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

可可:

同上:Writing Cocoa applications in Python 3

电磁场:

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

【问题讨论】:

  • 当你说例如agg“不画”是什么意思?
  • @JouniK.Seppänen:绝对没有任何反应。没有错误,没有图表,什么都没有
  • 由于大多数后端似乎都会发生这种情况,我认为问题出在您的绘图代码上。八个不同的后端似乎不太可能都有错误,导致它们运行时没有错误,但会导致输出为空。
  • @JouniK.Seppänen:你的意思是我用来测试后端的脚本吗?我使用的代码包括在内(就在强大的列表下方)。我认为这就是您的意思,否则您可能会暗示 matplotlib 损坏了。我用来测试后端的代码直接来自手册,我不是唯一一个遇到后端问题导致 draw 什么都不输出的人。我看到的一般建议是“改变你的后端”
  • cairo、pdf 和那些类型的后端不适用于交互式绘图。不过,他们可以生成数字并将其保存到文件中。只需在脚本中使用 plt.savefig('test.pdf') 而不是 plt.show()

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


【解决方案1】:

我遇到了完全相同的问题,但经过大量努力,我设法使 TkAgg 正常工作(这导致 _tkagg 的导入错误)。有点晚了,但有人可能会觉得它很有用。

FWIW 我将问题解决如下(使用 TkAgg):

  • 从包管理器安装tk-dev
  • 重新安装 python3-tk 来自包管理器
  • 重新构建并重新安装 matplotlib 来自源代码
  • (当然还有在 matplotrc 中设置 TkAgg)

如果您认为您已经正确安装了tk-devpython3-tk,您需要重新构建并重新安装matplotlib,以便它在您的@ 中生成_tkagg.py 987654327@目录。

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

【讨论】:

  • 我使用的是pyenv,安装tk-devpython3-tk后必须重新安装python,否则效果很好
【解决方案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)

终于看到那个愚蠢的盒子弹出我的 x=y 行。

小时....

【讨论】:

    【解决方案3】:

    Matplotlib 似乎向 Python 3 迈出了一大步,他们的 1.2.x releasematplotlib 1.2.0rc2 (+ numpy 1.7.0b2) 正在为我工​​作

    • Python 3.2.2(Linux Mint 12 上的虚拟环境)
    • Python 3.3.0(从源本地安装)

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

    不幸的是,我不知道这是否/如何与 Pyramid 一起使用。

    【讨论】:

      【解决方案4】:

      我写了一个答案,以确保在 Ubuntu 16.04 的 Python 3 virtualenv 中 matplotlib 使用 https://askubuntu.com/a/785506/15003TkAgg 后端,这在这里很有用。结果是安装tk-dev,激活virtualenv并在virtualenv中重新安装matplotlib

      sudo apt install tk-dev
      source venv/bin/activate
      pip --no-cache-dir install -U --force-reinstall matplotlib
      

      python -c 'import matplotlib as mpl; print(mpl.get_backend())' 现在应该说 TkAgg

      【讨论】:

        【解决方案5】:

        对我来说,以下工作:

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

        它现在使用 virtualenv 进行绘图。

        $ lsb_release -a (gives..)
        

        Ubuntu 14.04.5 LTS

        【讨论】:

          猜你喜欢
          • 2014-11-04
          • 1970-01-01
          • 2020-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 1970-01-01
          • 2018-09-26
          相关资源
          最近更新 更多