matplotlib后端 - 我在乎吗?

时间:2011-08-23 03:47:37

标签: python backend matplotlib

>>> 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']

看看所有这些后端!

我是否需要关心使用哪个后端?例如如果我仅使用TkAgg后端开发和测试我的东西,并且其他人使用我的代码可能在他们的系统上使用GTKAgg后端,那么我的东西可能以我不会拥有的方式为他们打破注意到 - 或者所有后端都需要以相同的方式或多或少地“工作”?

1 个答案:

答案 0 :(得分:44)

如果您在应用程序中嵌入matplotlib,后端主要很重要,在这种情况下,您需要使用与您用于构建应用程序的工具包相匹配的后端(GTK,Qt,TkInter,WxWindows)。如果您还以简单的交互方式使用matplotlib,您还需要使用与您的计算机上可用的匹配的后端(如果您运行Gnome则为GTK,如果您运行KDE则为Qt等)(虽然大多数机器已安装在大多数机器上)

后端的绘图层部分(Cairo,Agg ...)在功能方面也很重要:您可以根据图层提供的内容与应用程序需要的内容进行选择(抗锯齿,Alpha通道,导出格式) ...)。因此,如果您使用TkAgg进行开发和测试,并且其他人使用例如TkCairo,有些事情可能行不通。 OTOH,与QtAgg一起运行肯定会以非常类似的方式工作,只要你坚持使用matplotlib API并且不会在包装的工具包层中到达。