我正在努力解决以下问题。我需要生成由一系列图表组成的报表。所有这些图表,除了一个,都是使用Matplotlib默认后端(TkAgg)制作的。一张图需要使用开罗后端制作,原因是我正在绘制一张igraph图,而且只能使用开罗进行绘制。如何在matplotlib/Python中切换后端
的问题是,我不能改变后端上的苍蝇,例如以下不工作:
matplotlib.pyplot.switch_backend('cairo.png')
(我知道switch_backend功能实验)
,我自己也尝试matplotlib.use("cairo.png")
但这导致导入问题,因为在导入matplotlib.pyplot
之前matplotlib.use("cairo.png")
声明应该出现。 但在脚本的生命周期中,我需要两个不同的后端。
所以我的问题是有人有一个代码片断,显示如何切换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()'。它可能不适用于你的情况。 – jfs 2011-01-30 05:59:10