我使用的比pyplot tutorial网站上的示例代码更简单:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5])
plt.show()

但是当我运行它时,出现错误:
TypeError: Couldn't find foreign struct converter for 'cairo.Context'
我使用的是Python 3.4.2,并重新安装了matplotlib,cairocfft> 0.6,numpy> = 1.6(来自pip)。

我尝试卸载cairocfft并从Arch存储库中获取python-cairo,但是现在出现错误:
NotImplementedError: Surface.create_for_data: Not Implemented yet.
有没有一种方法可以绘制基本的折线图而不安装很多库?我不喜欢installing pyqt4推荐的this blogpostThis github issue建议安装gi-cairo,但是gi-cairo不在Arch repositories上,我也无法在PyPI上找到它(我自己的搜索失败?)

我记得这在Python2上是轻而易举的,但是现在已经迁移到Python3。

最佳答案

这是为了防止有人在Ubuntu 14.04上遇到与我使用Python 3.4.3相同的问题。通过使用JDong的答案中的点点滴滴和提示,我解决了以下问题。 (基本上将MatPlotLib后端更改为qt5agg。)

  • 安装python3-pyqt5sudo apt-get install python3-pyqt5
  • 找出matplotlibrc文件在哪里,以便您对其进行编辑。可以在Python控制台中使用以下命令完成此操作。import matplotlibmatplotlib.matplotlib_fname()
  • 编辑matplotlibrc文件(您可能需要sudo),找到以backend :开头的行,并将其更改为backend : qt5agg。如果这样的行不存在,只需创建一个。

  • 上面的步骤已经在Ubuntu 14.04上为我解决了。希望对您有所帮助。

    10-04 22:22
    查看更多