Как переключать бэкэнды в matplotlib / Python

Я борюсь со следующей проблемой. Мне нужно создавать отчеты, которые состоят из коллекции графиков. Все эти диаграммы, кроме одной, сделаны с использованием стандартного бэкэнда Matplotlib (TkAgg). Один график должен быть сделан с использованием бэкэнда Cairo, причина в том, что я строю график igraph, и его можно построить только с помощью Cairo.

Проблема в том, что я не могу изменить бэкэнды на лету, например, следующее не работает:
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 ..., пожалуйста, опубликуйте свой ответ.

Ответы на вопрос(5)

Ваш ответ на вопрос