天天看点

Matplotlib学习笔记backendmatplotlib的交互和非交互模式

  • backend
  • matplotlib的交互和非交互模式
    • 交互模式
    • 非交互模式

backend

参考matplotlib官网matplotlib.org

backend是为matplotlib中的绘图功能做幕后工作的,对应的’frontend’指的就是你编辑的绘图命令。通过设置’backend’可以使得matplotlib适应不同的应用场景,或者说输出形式,例如:python中的命令行模式下弹出的figure,图形界面的工具wxpython中嵌入的matplotlib,网页应用服务,批处理脚本生成可视化数据等。

backend可以分为两类:交互式的,包括命令行以及图形界面的集成开发环境;输出图片文件(格式为PNG,JPG,PDF等)的。

backend的设置有四种方法,在此我只总结官方建议的两种(后者优先级高):

1. 通过修改matplotlibrc文件(没有后缀)内容,matplotlibrc可能存放的位置有三个:

a. ~/.config/matplotlib/matplotlibrc

b. /usr/local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc

c. path-of-working

你可以通过’locate’命令来查找,当前工作路径中的matplotlib优先级最高。

要在python中查看当前是哪个文件在支配设置,可以在python命令行模式下输入以下命令:

>>> import matplotlib
>>> matplotlib.matplotlib_fname()
           

就可以看到了。

2. 通过在python文件中定义,例如PS模式的设置:

>>>import matplotlib
>>>matplotlib.use('PS')   # generate postscript output by default
           

注意两点,一是backend的参数不区分大小写,例如’TkAgg’等同于’tkagg’,另一点是通常情况matplotlib安装完成后的设置是可以提供各种应用场景的,是最优的,一般情况不需要更改,除非是图形化集成开发环境的开发者或者网络应用服务器的开发者。(PS:我就是看了一个包的README,然后改了backend设置,然后就不能正常导入pylab了,还好我的matplotlibrc有备份,查到了问题又改回来了)。

matplotlib的交互和非交互模式

交互模式

开启交互模式的方式是:

>>> import matplotlib.pyplot as plt
>>> plt.ion()
           

交互模式中任何绘图动作都会直接立即展现在输出中,在python或ipython的命令行模式下,命令行交互不受影响。

非交互模式

关闭交互模式的方法是:

>>> import matplotlib.pyplot as plt
>>> plt.ioff()
           

非交互模式在’show()’动作前输出是不会有任何变化的,如果要刷新输出,那么进行’show()’动作,但是此时命令行会被‘冰冻’,无法继续交互,除非手动杀掉输出窗口。但是这样可以防止输出的过度频繁刷新。