Python matplotlib Cairo错误
我使用的是比网站上的示例代码更简单的代码: 但当我运行它时,我得到了错误:Python matplotlib Cairo错误,python,matplotlib,plot,python-3.4,Python,Matplotlib,Plot,Python 3.4,我使用的是比网站上的示例代码更简单的代码: 但当我运行它时,我得到了错误: TypeError:找不到“cairo.Context”的外部结构转换器 我使用的是Python 3.4.2,并从pip重新安装了matplotlib,cairocfft>0.6,numpy>=1.6 我尝试卸载cairocfft并从Arch存储库中获取python cairo,但现在出现了错误: NotImplementedError:Surface.create\u for\u数据:尚未实现。 有没有一种方法可以在不
TypeError:找不到“cairo.Context”的外部结构转换器
我使用的是Python 3.4.2,并从pip重新安装了matplotlib,cairocfft>0.6,numpy>=1.6
我尝试卸载cairocfft并从Arch存储库中获取python cairo
,但现在出现了错误:
NotImplementedError:Surface.create\u for\u数据:尚未实现。
有没有一种方法可以在不安装许多库的情况下绘制基本线图?我并没有像推荐的那样对它感兴趣。建议安装gi cairo,但gi cairo不在上,我也无法在PyPI上找到它(我自己的搜索失败?)
我记得这对Python2来说是轻而易举的事,但现在我已经迁移到Python3了。这似乎是一个真正的问题;进一步播放时,我发现一条错误消息:
/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."
但奇怪的是,我确实安装了cairoffi
。我发现最好的解决方案是使用不同的后端,正如我在评论中所建议的那样。我发现导出到pdf非常容易,只需要一行:plt.savefig(“Graph.pdf”)
skytux提到将后端更改为Tk是可行的。演示如何执行此操作
2016年3月更新:是我现在使用的matplotlib的一个很好的替代品。它与浏览器一起生成文档,我没有遇到平台问题。这是为了防止有人在Ubuntu 14.04上遇到与我使用Python 3.4.3时相同的问题。通过使用JDong答案中的一些信息和提示,我解决了以下问题。(基本上将MatPlotLib后端更改为
qt5agg
)
python3-pyqt5
。
sudo apt get安装python3-pyqt5
matplotlibrc
文件的位置,以便进行编辑。这可以在Python控制台中使用以下命令完成。
导入matplotlib
matplotlib.matplotlib_fname()
matplotlibrc
文件(您可能需要sudo
),找到以backend:
开头的行,并将其更改为backend:qt5agg
。如果这样一条线不存在,就创建一条以上步骤在Ubuntu 14.04上为我解决了这个问题。我希望这会有所帮助。在Python 2.7的情况下,可以通过安装包
Python-pyqt5
并使用pyplot来解决此问题,如下所示:
import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
如果您有sudo访问权限,也可以将
Qt5Agg
设置为默认后端,请参阅以了解设置后端的其他方法。安装时,Matplotlib警告我安装Cairoffi,因为我的系统不兼容。在经历了NotImplementedError
(未绘制绘图)之后,安装Debian的python3 Cairocfi
包解决了问题。安装python gi cairo
使用sudo apt get install python gi cairo
解决了我的问题在Arch上做得很好。我已经安装了Python3.4.2和python cairo 1.10.0-4。是否安装了python gobject
?@nwk是的,python gobject
已安装。如果需要gui界面,则需要gui框架。Mpl支持qt、gtk、wx和tk(加上OSX、windows?、ipython笔记本电脑/网络浏览器)。至于绘画,你有什么理由需要使用cairo吗?如果需要光栅,Agg后端可以正常工作,svg/ps/pdf后端应该具有矢量图形的大部分基础,但是将后端从GTK3Agg更改为TkAgg现在可以正常工作。确认在Ubuntu 14.04中使用Python 3.4-FWIW,该文件似乎安装在/usr/local/lib/python3.4/dist packages/matplotlib/mpl data/matplotlibrc
中,这对每个人都应该是一样的(尽管@Ray建议的方法可以正常工作).这件事应该投票表决。比将后端更改为Qt好得多的解决方案。实际上,这是最好的解决方案。在我的情况下(Debian 9.2),公认的答案没有帮助,但这一个有帮助!
import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt