我编写了以下脚本,我们将其称为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后端?
答案 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代码相当容易阅读。