Matplotlib的默认GUI后端是什么?

时间:2019-11-13 12:57:20

标签: python matplotlib

我编写了以下脚本,我们将其称为join

test-matplotlib-printbackend.py

对于Windows 10上的MINGW64下的Python3,以及Windows 10上的Anaconda下的Python3,我得到打印输出:

#!/usr/bin/env python

import matplotlib as mpl
import matplotlib.pyplot as plt

xx = range(100)
yy = [i*2+5 for i in xx]

fig, ax = plt.subplots()
ax.plot(xx, yy)

print("Matplotlib plt backend: {}".format(plt.get_backend()))

plt.show()

但是,对于Rasbian(Raspberry Pi的Debian OS)上的Python3,我得到了打印输出:

Matplotlib plt backend: Qt5Agg

这让我感到困惑,因为我希望TkAgg成为 all 平台上matplotlib的默认GUI后端!?

所以,我只想知道-是否在任何地方记录了针对不同平台的Matplotlib的默认GUI后端?

2 个答案:

答案 0 :(得分:2)

后端选择逻辑不是很透明并且没有很好的文档说明。

在现代的matplotlib中,没有“默认后端”,即rcParams['backend']设置为“前哨”。
导入matplotlib后,将选择a candicate list ["macosx", "qt5agg", "qt4agg", "gtk3agg", "tkagg", "wxagg"]中的第一个工作后端。

为了避免这种自动选择,您可以通过rcParams['backend']参数或MPLBACKEND环境变量手动设置后端。那部分是documented

答案 1 :(得分:1)

默认后端在mpl.rcParams['backend']中定义。在Linux_x64上,此设置为'Qt5Agg'_get_running_interactive_framework中的matplotlib.backends.__init__函数检查可用的后端。 PyQt5在优先级列表中最高。 pyplot.switch_backend函数使用_get_running_interactive_framework选择导入时有效使用的后端。在此处搜索行switch_backend(rcParams["backend"])https://matplotlib.org/3.1.1/_modules/matplotlib/pyplot.html

您可以检查PyQt5在Rasbian上是否可用以及rcParams条目是什么。回到您的实际问题:我不知道是否在某个地方对此进行了记录,但是对于庞大的库,matplotlib代码相当容易阅读。