matplotlib后端 - 我需要关心吗?

53 投票
1 回答
16428 浏览
提问于 2025-04-17 00:09
>>> 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 个回答

52

后端主要在你把matplotlib嵌入到一个应用程序时才重要。在这种情况下,你需要选择一个和你用来构建应用程序的工具包相匹配的后端,比如GTK、Qt、TkInter或WxWindows。如果你只是简单地用matplotlib进行交互操作,你也需要选择一个和你电脑上可用的后端相匹配的,比如如果你在使用Gnome,就用GTK;如果你在使用KDE,就用Qt等等(不过大多数库在大部分电脑上已经安装好了)。

后端的绘图层(比如Cairo、Agg等)在功能上也很重要:你可以根据这个层提供的功能和你应用程序的需求来选择它(比如抗锯齿、透明通道、导出格式等等)。所以如果你在开发和测试时使用的是TkAgg,而其他人用的是TkCairo,可能会有一些功能不兼容。另一方面,如果你使用QtAgg,只要遵循matplotlib的API,不去碰那些工具包的底层,基本上是可以正常工作的。

撰写回答