1. backend

  1. matplotlib可以适用于非常广泛的场景:

    • matplotlib可以交互式地用于python shell
    • matplotlib可以嵌入到wxpython或者pygtkGUI程序中
    • matplotlib可以在脚本中使用从而生成postscript image

    为了适应于这些场景,matplotlib针对这些target生成不同的输出格式。这种能力称之为backend

    与之相对的frontend指的是用户使用matplotlib而编写的代码

  2. 有两种类型的backend

    • 交互式的backend:应用于pygtkwxpythontkinterqt4macosx等中
    • 非交互式的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 engineAgg,它采用的是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 output
    • PDF:输出pdf格式文件。
    • SVG:输出svg格式文件
    • Cairo:可以输出png、ps、pdf、svg...等格式文件
    • GDK:可以输出png、jpg、tiff...等格式文件,它使用Gimp Drawing Kit

    要想保存成指定类型文件,如PDF,那么首先要设置合适的backend