我纠结于下面这个问题。我需要生成由一组图表组成的报告。除了一个以外,所有这些图表都是使用 Matplotlib 默认后端(TkAgg)制作的。其中一个图表需要使用 Cairo 后端来绘制,原因是我正在绘制一个图形图,而这个图形只能使用 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 后端... ... 请张贴您的答案。