【发布时间】: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 玩得很好,而且我似乎每次转身都遇到了问题。因此,我不想继续我的试错方法,而是想问:
- Python3.2 和 Pyramid 的最佳选择是什么?
- 如何实现?
与此同时,我将继续试错,并随时更新我的问题。
关于我正在尝试的东西的注意事项
对于 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
电磁场:
【问题讨论】:
-
当你说例如agg“不画”是什么意思?
-
@JouniK.Seppänen:绝对没有任何反应。没有错误,没有图表,什么都没有
-
由于大多数后端似乎都会发生这种情况,我认为问题出在您的绘图代码上。八个不同的后端似乎不太可能都有错误,导致它们运行时没有错误,但会导致输出为空。
-
@JouniK.Seppänen:你的意思是我用来测试后端的脚本吗?我使用的代码包括在内(就在强大的列表下方)。我认为这就是您的意思,否则您可能会暗示 matplotlib 损坏了。我用来测试后端的代码直接来自手册,我不是唯一一个遇到后端问题导致 draw 什么都不输出的人。我看到的一般建议是“改变你的后端”
-
cairo、pdf 和那些类型的后端不适用于交互式绘图。不过,他们可以生成数字并将其保存到文件中。只需在脚本中使用
plt.savefig('test.pdf')而不是plt.show()
标签: python python-3.x matplotlib installation backend