Python matplotlib开罗错误

JDo*_*ong 19 python plot matplotlib python-3.4

我使用的东西比pyplot教程网站上的示例代码更简单:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5])
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到错误:

TypeError: Couldn't find foreign struct converter for 'cairo.Context'

我使用的是Python 3.4.2,并且从pip开始全新安装matplotlib,cairocfft> 0.6,numpy> = 1.6.

我尝试卸载cairocfft并python-cairo从Arch存储库中获取,但现在我有错误:

NotImplementedError: Surface.create_for_data: Not Implemented yet.

有没有办法在不安装许多库的情况下绘制基本线图?我并不热衷于安装pyqt4,正如这篇博文建议的那样.这个github问题建议安装gi-cairo,但gi-cairo不在Arch存储库上,也不能在PyPI上找到它(我自己的搜索失败了?)

我记得在Python2上这是一件轻而易举的事,但现在已经迁移到了Python3.

Ray*_*Ray 31

这是因为有人在Ubuntu 14.04上遇到了同样的问题,就像我使用Python 3.4.3一样.通过使用JDong答案中的位和提示,我已经解决了以下问题.(基本上将MatPlotLib后端更改为qt5agg.)

  1. 安装python3-pyqt5. sudo apt-get install python3-pyqt5

  2. 找出matplotlibrc文件的位置,以便进行编辑.这可以使用Python控制台中的以下内容完成. import matplotlib matplotlib.matplotlib_fname()

  3. 编辑matplotlibrc文件(您可能需要sudo),找到以...开头的行backend :,并将其更改为backend : qt5agg.如果这样的行不存在,只需创建一行.

以上步骤在Ubuntu 14.04上为我解决了这个问题.我希望有所帮助.


JDo*_*ong 6

这似乎是一个真正的问题; 在进一步播放时我发现了一条错误消息:

/usr/lib/python3.4/site-packages/matplotlib/backends/backend_gtk3agg.py:18:
UserWarning: The Gtk3Agg backend is known to not work on Python 3.x with pycairo.
Try installing cairocffi.
"The Gtk3Agg backend is known to not work on Python 3.x with pycairo."
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我确实安装了cairocffi.我找到的最佳解决方案是使用不同的后端,正如tcaswell在评论中所建议的那样.我发现导出到pdf非常适合只有这一行:plt.savefig("Graph.pdf").

skytux提到将后端改为Tk可行./sf/answers/1525373181/显示了如何执行此操作.

2016年3月更新:plotly是我现在使用的matplotlib的一个很好的替代品.它与浏览器一起生成文档,我没有平台问题.