我正在努力解决以下问题。我需要生成包含图表集合的报告。除一个图表外,所有这些图表都是使用Matplotlib默认后端(TkAgg)制作的。需要使用Cairo后端制作一张图表,原因是我正在绘制igraph图形,并且只能使用Cairo绘制。
问题是我无法即时更改后端,例如以下操作不起作用:(
matplotlib.pyplot.switch_backend('cairo.png')
我知道switch_backend功能是实验性的)
而且我也尝试过,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()
。这可能不适用于您的情况。