使用Cairo的Matplotlib后端GTK3 Agg?

时间:2014-08-01 13:18:37

标签: python matplotlib gtk3 cairo pycairo

我不明白为什么当我'试图使用Gtk3Agg后端时,我最终错误地告诉我没有找到cairo模块。

    ** (simple_plot_in_gtk3.py:312517): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
    Traceback (most recent call last):
      File "simple_plot_in_gtk3.py", line 5, in 
        from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas
      File "/Produits/publics/x86_64.Linux.RH6/python/3.4.1/lib/python3.4/site-packages/matplotlib-1.3.1-py3.4-linux-x86_64.egg/matplotlib/backends/backend_gtk3agg.py", line 1, in 
        import cairo
    ImportError: No module named 'cairo'

我正在尝试从matplolib网站运行matplotlib/GTK3 example

2 个答案:

答案 0 :(得分:0)

如果查看backend_gtk3agg.py文件,您会看到文件中的第一行是;

import cairo
import numpy as np
import sys
import warnings

import backend_agg
import backend_gtk3
from matplotlib.figure import Figure
from matplotlib import transforms

所以,是的,gtk3agg后端需要cairo library及其Python bindings。和numpy。

它将Cairo用于ImageSurface缓冲区,因为这是AGG does not provide。我不知道为什么gtk3agg开发人员选择了这种方法。大概是因为它很方便。

答案 1 :(得分:0)

安装Python binging for Python的工作原理:

$ pip install pycairo