Extra Info
尽管每个人都展示了自己喜欢的后端,但要弄清楚您需要安装什么以及要求是什么是相当混乱的。至少当您尝试理解通常令人困惑和技术官僚的文档时。今天我做了几个实验,并认为我已经为每个后端找到了最简单的解决方案,以便能够在 Windows 中使用matplotlib并使用 Py3.8.5(没有内置 Qt)进行绘图。以下是我的发现:
#--------------------------------------
# Installing the matplotlib backends
#--------------------------------------
# https://matplotlib.org/users/installing.html
pip install pycairo # [1] Cairo : GTK3 based backend (replaces: cairocffi) [1.2 Mb]
#pip install mplcairo # [1] Cairo : Easy & Specific for matplotlib [1.7 Mb]
#pip install PyQt5 # [2] Qt5 : Require: Qt's qmake tool []
pip install PySide2 # [3] Qt5 : Require: shiboken2 & Clang lib bindings [136 Mb]
pip install wxPython # [4] WxAgg : ?? [18.1 Mb]
pip install tornado # [5] WebAgg: Require: pycurl,twisted,pycares ?? [422 kb]
以下是所有这些 PyPi 或 Repos 的链接:
[1] https://pypi.org/project/pycairo/ # Requires GTK3+: https://www.gtk.org/
[1] https://pypi.org/project/mplcairo/ # https://github.com/matplotlib/mplcairo
[2] https://pypi.org/project/PyQt5/ #
[3] https://pypi.org/project/PySide2/ #
[4] https://pypi.org/project/wxPython/ # https://github.com/wxWidgets/Phoenix/
[4] https://github.com/wxWidgets/wxWidgets/releases
[5] https://pypi.org/project/tornado/ # https://github.com/tornadoweb/tornado
然而,考虑到大量的使用文档Tcl/Tk
和tkinter
python 包,非常令人惊讶的是,我无法安装它,也找不到任何关于如何将 DLL 导入 python 的有用说明。(对于 linux,这很简单,因为您只使用 OS 包管理器apt-get install <tk-what-not>
,但此选项不适用于 windows,也没有任何简单的模拟。这里是您可以获得的许多和各种二进制文件的列表。
[6] http://www.bawt.tcl3d.org/download.html # Use Tcl-Pure (no additional packages)
[6] https://www.magicsplat.com/tcl-installer/index.html #
[6] https://www.irontcl.com/ #
[6] https://www.activestate.com/products/tcl/downloads/ #
[6] http://tclkits.rkeene.org/fossil/wiki/Downloads #
[6] http://kitcreator.rkeene.org/kitcreator #
也许有人可以启发我如何将这些导入python?
What backends are available and where?
让我们用以下单行来启发自己:
python.exe -c "import matplotlib as m; help(m);"
python.exe -c "import matplotlib as m; print('I: {}\nN: {}'.format(m.rcsetup.interactive_bk,m.rcsetup.non_interactive_bk));"
# I: ['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo']
# N: ['agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']
python.exe -c "import matplotlib as m; p=m.get_backend();print('current backend is:',p);"
# agg
python.exe -c "import matplotlib as m; p=m.matplotlib_fname(); print('The matplotlibrc is located at:\n',p);"
# C:\Python38\lib\site-packages\matplotlib\mpl-data\matplotlibrc
Setting the back-end
正如文档所说:有 3 种方式来配置你的后端:
- 在你的matplotlibrc文件中设置
rcParams["backend"]
(默认值:'agg')参数
- 设置
MPLBACKEND
环境(shell)变量
- 使用功能
matplotlib.use()
Using the backend
最后,要使用可用的后端,只需这样做:
import matplotlib
#matplotlib.use('tkagg', force=True) # Agg rendering to a Tk canvas
#matplotlib.use('wxcairo', force=True) # Cairo rendering to a wxWidgets canvas
#matplotlib.use('wxagg', force=True) # Agg rendering to a wxWidgets canvas
matplotlib.use('webagg', force=True) # On show() will start a tornado server with an interactive figure.
#matplotlib.use('qt5cairo', force=True) # Cairo rendering to a Qt5 canvas
#matplotlib.use('qt5agg', force=True) # Agg rendering to a Qt5 canvas
import matplotlib.pyplot as plt