Подтвердить что ты не робот

Ошибка Python matplotlib Cairo

Я использую что-то более простое, чем пример кода на веб-сайте 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 и захватить python-cairo из репозиториев Arch, но теперь у меня есть ошибка:

NotImplementedError: Surface.create_for_data: Not Implemented yet.

Есть ли способ рисовать базовый граф строк без установки многих библиотек? Я не в восторге от установки pyqt4, поскольку этот blogpost рекомендует. Этот вопрос github предлагает установить gi-cairo, но gi-cairo не находится в архивных хранилищах и не может Я нахожу его в PyPI (мой собственный поиск не работает?)

Я помню, что это был легкий ветерок на Python2, но теперь он перенесен на Python3.

4b9b3361

Ответ 1

Это в случае, если у кого-то такая же проблема на Ubuntu 14.04, как и в Python 3.4.3. Используя биты и подсказки из ответа JDong, я решил проблему следующим образом. (В основном измените бэкэнд MatPlotLib на qt5agg.)

  • Установите python3-pyqt5. sudo apt-get install python3-pyqt5

  • Узнайте, где находится файл matplotlibrc, чтобы вы могли его отредактировать. Это можно сделать с помощью следующего в консоли Python. import matplotlib matplotlib.matplotlib_fname()

  • Отредактируйте файл matplotlibrc (вам, вероятно, потребуется sudo), найдите строку, начинающуюся с backend :, и измените ее на backend : qt5agg. Если такая строка не существует, просто создайте ее.

Вышеуказанные шаги решили для меня на Ubuntu 14.04. Надеюсь, что это поможет.

Ответ 2

Это кажется реальной проблемой; при дальнейшей игре я обнаружил сообщение об ошибке:

/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."

Как ни странно, я установил cairocffi. Лучшее решение, которое я нашел, - использовать другой бэкэнд, как указано в комментариях к tcaswell. Я нашел экспорт в pdf очень приятным только с строкой: plt.savefig("Graph.pdf").

skytux упоминает, что изменение бэкэнда на Tk работает. fooobar.com/questions/277964/... показывает, как это сделать.

Обновление от Mar 2016: plotly - отличная альтернатива matplotlib, которую я использую сейчас. Он работает с браузером для создания документов, и у меня не было проблем с платформой.

Ответ 3

После установки Matplotlib предупредил меня установить cairocffi из-за несовместимости в моей системе. После проверки NotImplementedError (графики не рисовались) установка пакета Debian python3-cairocffi решила проблему.

Ответ 4

В случае Python 2.7 его можно решить, установив пакет python-pyqt5 и используя pyplot следующим образом:

import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt

Если у вас есть sudo acces, вы также можете установить Qt5Agg в качестве основного бэкэнд по умолчанию, см. Matplotlib Backend для других способов настройки вашего бэкэнд.

Ответ 5

Установка python-gi-cairo с помощью sudo apt-get install python-gi-cairo решила мою проблему