20分钟
backend
matplotlib可以适用于非常广泛的场景:matplotlib可以交互式地用于python shellmatplotlib可以嵌入到wxpython或者pygtk等GUI程序中matplotlib可以在脚本中使用从而生成postscript image
为了适应于这些场景,
matplotlib针对这些target生成不同的输出格式。这种能力称之为backend。 与之相对的frontend指的是用户使用matplotlib而编写的代码
2. 有两种类型的backend:
- 交互式的
backend:应用于pygtk、wxpython、tkinter、qt4、macosx等中 - 非交互式的
backend:用于生成image file(如PNG、SVG、PDF、PS等格式文件,这些backend的名字暗示了要存储的文件的格式)
3. 有多种方法来设置backend,其中后面提到的方法会覆盖前面的方法设置的backend:
- 在
matplotlibrc配置文件中设置的backend参数,如backend: WXAgg #使use wxpython with antigrain(agg) rendering - 设置
MPLBACKEND环境变量,无论是在shell中设置还是在脚本中设置。 - 对单个脚本设置
backend时,可以直接在python命令后添加-d命令(这种方法不推荐,deprecated) - 在脚本中使用特定的
backend时,可以用matplotlib.use('PDF')命令。这条语句必须在import matplotlib.pyplot语句之前执行。如果在import matplotlib.pyplot之后执行use语句,则没有任何效果。通常建议避免使用use()方法,因为使用该脚本的人无法修改backend了。 - 设定
backend时,是忽略大小写的。因此GTKAgg也等价于gtkagg - 查看当前的
backend可以用:matplotlib.get_backend()
4. rendering engine :matplotlib提供的常用的rendering engine是Agg,它采用的是Anti-Grain Geometry C++ library。除了macosx之外的所有user interface都可以用agg rendering,如WXAgg,GTKAgg,QT4Agg,TkAgg这些backend。
某些user interface还支持其他引擎,如GTK支持Cario引擎,如GTKCariro backend。
下面是所有的Rendering engine:
AGG:输出png格式文件。它可以输出高质量的图形PS:输出ps\eps格式文件。它是Postscript outputPDF:输出pdf格式文件。SVG:输出svg格式文件Cairo:可以输出png、ps、pdf、svg...等格式文件GDK:可以输出png、jpg、tiff...等格式文件,它使用Gimp Drawing Kit
要想保存成指定类型文件,如
backend,
学员评价