2011-08-23 29 views
39
>>> import matplotlib 
>>> print matplotlib.rcsetup.all_backends 
[u'GTK', u'GTKAgg', u'GTKCairo', u'MacOSX', u'Qt4Agg', u'Qt5Agg', u'TkAgg', u'WX', u'WXAgg', u'CocoaAgg', u'GTK3Cairo', u'GTK3Agg', u'WebAgg', u'nbAgg', u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template'] 

看看所有的後端!matplotlib後端 - 我關心嗎?

我需要關心哪個後端正在使用?例如如果我僅使用TkAgg後端開發和測試我的東西,並且其他人使用我的代碼可能會在他們的系統上使用GTKAgg後端,那麼我的東西可能會以我不會注意到的方式突破 - 或者都需要後端或多或少地以同樣的方式「工作」?

+1

我在雙擊和三擊事件在不同後端處理方式上遇到了一些麻煩,所以我知道存在一些差異。如果有任何嚴重的問題需要注意,我很感興趣。 – wim

回答

37

如果您將matplotlib嵌入到應用程序中,後端主要是很重要的,在這種情況下,您需要使用與您用來構建應用程序的工具包相匹配的後端(GTK,Qt,TkInter,WxWindows)。如果您還以簡單的交互方式使用matplotlib,那麼您還需要使用與您計算機上可用內容匹配的後端(如果您運行的是Gnome,則爲GTK,如果您運行的是KDE等,則爲Qt)(儘管大多數機器上已經安裝了大多數庫)

後端(Cairo,Agg ...)的繪圖層部分在功能方面也很重要:您可以根據圖層提供的內容應用程序需求(反鋸齒,alpha通道,導出格式...)。因此,如果您使用TkAgg進行開發和測試,並且其他人使用例如TkCairo,有些事情可能無法正常工作。使用QtAgg運行的OTOH肯定會以非常相似的方式工作,只要您堅持使用matplotlib API並且不會在包裝的工具包層中進行操作。

相關問題