Matplotlib后端 - 我需要关心吗?

53
>>> 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
我已经遇到了一些问题,因为不同的后端处理双击和三击事件的方式不同,所以我知道存在一些差异。我想知道是否有任何需要注意的严重问题。 - wim
1个回答

52

如果您在应用程序中嵌入matplotlib,那么后端就非常重要,这时您需要使用与构建应用程序所使用的工具包相匹配的后端(GTK,Qt,TkInter,WxWindows)。如果您还以一种简单的交互方式使用matplotlib,则还需要使用与您的机器上可用的后端相匹配的后端(如果您正在运行Gnome,则使用GTK,如果您正在运行KDE,则使用Qt等)(尽管大多数库已安装在大多数机器上)

后端的绘图层部分(Cairo、Agg...)在功能方面也很重要:您可以根据该层提供的内容选择它,与您的应用程序所需的内容进行比较(抗锯齿、alpha通道、导出格式...)。因此,如果您使用TkAgg进行开发和测试,而其他人则使用例如TkCairo运行,某些东西可能无法正常工作。另一方面,只要您坚持使用matplotlib API并且不进行包装工具包层的操作,那么使用QtAgg肯定会以非常类似的方式工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接