繁体   English   中英

matplotlib不会绘制python3

[英]matplotlib won't draw python3

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

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

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

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

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

  • Agg:这是默认的后端。 它没有画画
  • GTK:需要pygtk,显然还没有移植到python3
  • GTKAgg:同上
  • GTKCairo:说'必需的包gtk'假设上面的内容
  • FltkAgg:看起来好像没有python3版本。 即使它在python3 UI FAQ中提到过。 我猜这只是一个唤醒。 gosh darnit
  • MacOSX:我正在运行ubuntu。 假定不合适
  • QtAgg:需要pyqt。 见Qt4Agg
  • Qt4Agg:请参阅在virtualenv中安装PyQt4
  • 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的模块。 但我认为我会遇到与上述相同的问题
  • 开罗:开罗后端需要安装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并编辑有问题的import语句。 我发现很难相信matplotlib发货破损(我无法运行修改后的代码建议......)

对于WX的东西:

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

可可:

同上: 在Python 3中编写Cocoa应用程序

EMF:

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

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

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

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

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

我在LM14上使用Python3.3(numpy 1.7)。 但我认为它应该适用于Ubuntu / Python3.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线。

小时 ....

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

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

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

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

我写了一个答案,确保在Ubuntu 16.04中的Python 3 virtualenv中的matplotlib使用https://askubuntu.com/a/785506/15003中的TkAgg后端,这在这里很有用。 结果是安装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())' python -c 'import matplotlib as mpl; print(mpl.get_backend())'现在应该说是TkAgg

对我来说,以下工作:

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

它现在使用virtualenv进行绘图。

$ lsb_release -a (gives..)

Ubuntu 14.04.5 LTS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM