Ich habe Probleme mit dem folgenden Problem. Ich muss Berichte erstellen, die aus einer Sammlung von Diagrammen bestehen. Alle diese Diagramme mit einer Ausnahme werden mit dem Matplotlib-Standard-Backend (TkAgg) erstellt. Ein Diagramm muss mit dem Kairoer Backend erstellt werden. Der Grund dafür ist, dass ich ein Igraph-Diagramm zeichne, das nur mit Kairo gezeichnet werden kann.
Das Problem ist, dass ich Backends nicht
matplotlib.pyplot.switch_backend('cairo.png')
im laufenden Betrieb ändern kann. Beispielsweise funktioniert Folgendes nicht: (Ich weiß, dass die switch_backend-Funktionalität experimentell ist)
und ich habe es auch versucht, matplotlib.use("cairo.png")
aber dies führt zu Importproblemen, da die matplotlib.use("cairo.png")
Anweisung vor dem Import kommen sollte matplotlib.pyplot
. Aber ich brauche im Laufe des Skriptlebens zwei verschiedene Backends.
Meine Frage ist also, ob jemand ein Code-Snippet hat, das zeigt, wie man das Backend in Matplotlib wechselt.
Vielen Dank!
UPDATE: Ich habe ein Snippet geschrieben, das matplotlib lädt, das Standard-Backend anzeigt, matplotlib entlädt, neu lädt und das Backend ändert:
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()
Aber ist das wirklich der richtige Weg?
UPDATE 2: Ich hatte gestern ein ernstes Einfrieren des Gehirns ... Die einfachste und naheliegendste Lösung besteht darin, das Kairoer Backend für alle Charts zu verwenden und das Backend überhaupt nicht zu wechseln :)
UPDATE 3: Eigentlich ist es immer noch ein Problem, also jeder, der weiß, wie man Matplotlib-Backends dynamisch wechselt ... bitte posten Sie Ihre Antwort.
pyplot.switch_backends()
. In Ihrem Fall funktioniert es möglicherweise nicht.