Tengo problemas con el siguiente problema. Necesito generar informes que consistan en una colección de gráficos. Todos estos gráficos, excepto uno, están hechos usando el backend predeterminado de Matplotlib (TkAgg). Hay que hacer una tabla usando el backend de El Cairo, la razón es que estoy trazando un gráfico de igrafas y eso solo se puede trazar utilizando Cairo.Cómo cambiar los procesadores en matplotlib/Python
El problema es que no puedo cambiar backends sobre la marcha, por ejemplo, el siguiente no funciona: También
matplotlib.pyplot.switch_backend('cairo.png')
(sé que la funcionalidad switch_backend es experimental)
y he intentado matplotlib.use("cairo.png")
pero esto lleva a problemas de importación ya que la declaración matplotlib.use("cairo.png")
debe aparecer antes de importar matplotlib.pyplot
. pero necesito dos backends diferentes a lo largo de la vida del script.
Así que mi pregunta es, ¿alguien tiene un fragmento de código que muestra cómo cambiar el backend en Matplotlib?
¡Muchas gracias!
ACTUALIZACIÓN: he escrito un fragmento que las cargas matplotlib, muestra el backend por defecto, descarga matplotlib, vuelve a cargar y cambia el 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()
pero esta es realmente la manera de hacerlo?
ACTUALIZACIÓN 2: Yo tenía un poco de congelación cerebral grave ayer ... La solución más simple y más obvia es utilizar el backend Cairo para todos los gráficos y no para cambiar el backend en absoluto :)
Actualización 3: En realidad , sigue siendo un problema por lo que cualquiera que sepa cómo cambiar dinámicamente los backends de matplotlib ... por favor publique su respuesta.
Hay 'pyplot.switch_backends()'. Puede que no funcione en tu caso. – jfs