Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib Cairo错误_Python_Matplotlib_Plot_Python 3.4 - Fatal编程技术网

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