Я борюся з наступною проблемою. Мені потрібно створити звіти, які складаються з колекції діаграм. Всі ці діаграми, за винятком однієї, зроблені з використанням беккенда за замовчуванням Matplotlib (TkAgg). Одну діаграму потрібно зробити за допомогою каїрської серверної бази, причина полягає в тому, що я складаю графік графіку, і це може бути побудовано лише за допомогою Каїру.
Проблема в тому, що я не можу змінювати
matplotlib.pyplot.switch_backend('cairo.png')
серверні файли на льоту, наприклад, не працює:
і я також пробував, 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 ...., будь ласка, опублікуйте свою відповідь.
pyplot.switch_backends()
. У вашому випадку це може не спрацювати.