Je suis aux prises avec le problème suivant. J'ai besoin de générer des rapports qui consistent en une collection de graphiques. Tous ces graphiques, sauf un, sont créés à l'aide du backend par défaut de Matplotlib (TkAgg). Un graphique doit être créé en utilisant le backend Cairo, la raison en est que je trace un graphique igraph et qui ne peut être tracé qu'en utilisant Cairo.
Le problème est que je ne peux pas changer les backends à la volée, par exemple ce qui suit ne fonctionne pas:
matplotlib.pyplot.switch_backend('cairo.png')
(je sais que la fonctionnalité switch_backend est expérimentale)
et j'ai également essayé, matplotlib.use("cairo.png")
mais cela conduit à des problèmes d'importation car la matplotlib.use("cairo.png")
déclaration doit venir avant l'importation matplotlib.pyplot
. mais j'ai besoin de deux backends différents au cours de la vie du script.
Ma question est donc est-ce que quelqu'un a un extrait de code qui montre comment changer le backend dans Matplotlib?
Merci beaucoup!
MISE À JOUR: J'ai écrit un extrait de code qui charge matplotlib, montre le backend par défaut, décharge matplotlib, le recharge et change le 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()
mais est-ce vraiment la façon de procéder?
MISE À JOUR 2: J'ai eu un sérieux gel du cerveau hier ... La solution simple et la plus évidente est d'utiliser le backend Cairo pour tous les graphiques et de ne pas changer de backend du tout :)
MISE À JOUR 3: En fait, c'est toujours un problème donc quiconque sait comment changer dynamiquement les backends matplotlib .... s'il vous plaît poster votre réponse.
pyplot.switch_backends()
. Cela pourrait ne pas fonctionner dans votre cas.