Sto lottando con il seguente problema. Devo generare rapporti che consistono in una raccolta di grafici. Tutti questi grafici, tranne uno, sono realizzati utilizzando il backend predefinito di Matplotlib (TkAgg). Un grafico deve essere creato utilizzando il backend Cairo, il motivo è che sto tracciando un grafico igraph e che può essere tracciato solo utilizzando Cairo.
Il problema è che non posso modificare i backend al volo, ad esempio quanto segue non funziona:
matplotlib.pyplot.switch_backend('cairo.png')
(So che la funzionalità switch_backend è sperimentale)
e ho anche provato, matplotlib.use("cairo.png")
ma questo porta a problemi di importazione poiché l' matplotlib.use("cairo.png")
istruzione dovrebbe venire prima dell'importazione matplotlib.pyplot
. ma ho bisogno di due diversi backend nel corso della vita della sceneggiatura.
Quindi la mia domanda è: qualcuno ha uno snippet di codice che mostra come cambiare il backend in Matplotlib?
Grazie mille!
AGGIORNAMENTO: ho scritto uno snippet che carica matplotlib, mostra il backend predefinito, scarica matplotlib, lo ricarica e cambia il backend:
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()
ma è davvero questo il modo per farlo?
AGGIORNAMENTO 2: ieri ho avuto un serio congelamento del cervello ... La soluzione semplice e più ovvia è usare il backend Cairo per tutti i grafici e non cambiare affatto il backend :)
AGGIORNAMENTO 3: In realtà, è ancora un problema, quindi chiunque sappia come cambiare dinamicamente i backend matplotlib .... per favore pubblica la tua risposta.
pyplot.switch_backends()
. Potrebbe non funzionare nel tuo caso.