我正在努力解決以下問題。我需要生成由一系列圖表組成的報表。所有這些圖表,除了一個,都是使用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