Я борюсь со следующей проблемой. Я должен генерировать отчеты, который состоит из набора диаграмм. Все эти диаграммы, кроме одной, сделаны с помощью бэкенда значения по умолчанию Matplotlib (TkAgg). Одна диаграмма должна быть сделана с помощью Каирского бэкенда, причина состоит в том, что я строю igraph график, и это может только быть напечатано с помощью Каира.
Проблема - то, что я не могу изменить бэкенды на лету, например, следующее не работает:
matplotlib.pyplot.switch_backend('cairo.png')
(Я знаю, что switch_backend функциональность экспериментальна),
и я также попробовал matplotlib.use("cairo.png")
но это ведет для импорта проблем как matplotlib.use("cairo.png")
оператор должен прибыть перед импортом matplotlib.pyplot
. но мне нужны два различных бэкенда в течение жизни сценария.
Таким образом, мой вопрос - кто-то, имеет фрагмент кода, который показывает, как переключить бэкенд в Matplotlib?
Большое спасибо!
ОБНОВЛЕНИЕ: Я записал отрывок, который загружает matplotlib, показывает бэкенд по умолчанию, разгружает matplotlib, перезагружает его и изменяет бэкенд:
import matplotlib
import matplotlib.pyplot as plt
import sys
print matplotlib.pyplot.get_backend()
modules = []
for module in sys.modules:
if module.startswith('matplotlib'):
modules.append(module)
for module in modules:
sys.modules.pop(module)
import matplotlib
matplotlib.use("cairo.png")
import matplotlib.pyplot as plt
print matplotlib.pyplot.get_backend()
но это - действительно способ сделать это?
ОБНОВЛЕНИЕ 2: вчера у Меня было некоторое серьезное мозговое замораживание... Простое и самое очевидное решение состоит в том, чтобы использовать Каирский бэкенд для всех диаграмм а не переключить бэкенд вообще :)
ОБНОВЛЕНИЕ 3: На самом деле это - все еще проблема так кто-либо, кто знает, как динамично переключить matplotlib бэкенды...., отправьте свой ответ.
Поэтому я не совсем уверен, что это то, что вы ищете.
Вы можете изменить свой сервер с помощью файла matplotlibrc, который содержит определенные конфигурации для вашего matplotlib.
В вашем скрипте вы можете указать:
matplotlib.rcParams['backend'] = 'TkAgg'
или что-то в этом роде для переключения между бэкэндами.