在很多网上文档和邮件列表中提到了"后端",并且很多初学者会对这个术语迷惑。matplotlib把不同使用情形和输出格式作为目标。一些人用matplotlib在python shell上交互,当他们输入命令能够弹出绘图窗口。一些人把matplotlib嵌入到其他的用户图形接口如:wxpython或者pygtk中来编写丰富的应用程序。有些人用matplotlib使用到批处理脚本中,从数字模拟中生成Postscript图片,还有些人用在web应用服务器中来动态生成图。

为了支持所有的使用情形,matplotlib能够产生不同的输出,而把每一个不同输出的能力叫做一个后端。而前端就是用户需要处理的代码,如绘图代码,然后后端做的就是所有看不到的辛苦工作来生成视图窗口。这里有两种不同类型的后端:

1.用户接口后端(又叫做"交互式后端",如pygtk, wxpython, thinter,qt, macosx或者fltk)。

2.硬拷贝后端,也叫做非交互式后端,用来生成图像文件(PNG,SVG,PDF, PS)

主要有两种方式配置你的后端。

1. 在matplotlibrc文件中设置后端参数,请查看
自定义matplotlib

backend : WXAgg # 使用wxpython和antigrain(agg)渲染

2. 另外一种方式是使用matplotlib的use()命令。

import matplotlib
matplotlib.use('PS') # 默认生成postscript输出。

如果你使用use命令,必须在import matplotlib.pyplot或者matplotlib.pylab之前设置。

注意: 后端的名字是不区分大小写的,如: “GTKAgg”和“gtkagg”是一样的。

使用常规方式安装matplotlib如二进制安装包或者linux发行包,那么一个好的默认后端已经设置好了,即允许你交互式工作也可以从脚本文件中绘制,可以输出到屏幕也可以输出到文件。所以你也不必去使用上面给出的方法去初始化了。

然而,如果你想要写用户图形接口或者web应用服务器(在web应用服务器中使用Matplotlib),或者需要更好理解它是怎么进行的,请阅读下去。对于图形化用户接口,为了使事情更加可定制化,matplotlib区分了渲染器(绘图)和绘图面板(显示绘图的地方)的概念。对于用户接口,典型的渲染器是Agg,它是使用Anti-Grain Geometry C++库来产生光栅(像素)图。所有的用户接口除了macosx外,都可以和agg一样来渲染,如WXAgg,GTKAgg,QT4Agg,TKAgg。另外,一些用户接口支持其他的渲染引擎。例如:使用GTK,你可以选择GDK渲染(后端为GTK), 也可以使用Cairo渲染(后端为GTKCairo)

对于渲染引擎,可以用向量或者光栅渲染器来区别。向量图语言画图命令有点像"从这个点到那个点画条线",所以是可以任意比例缩放。光栅后端通过每英寸每点的像素来产生线条。

这里对matplotlib渲染器做个总结(没有等级先后次序,都是非交互式的后端,拥有写入到文件中的能力)

  渲染器       文件类型 描述
  AGG png 光栅 –使用 Anti-Grain Geometry 高质量渲染引擎
  PS ps eps 矢量图 – Postscript 输出
  PDF pdf 矢量图– 携带格式
  SVG svg 矢量图 – 可伸缩矢量图形
  Cairo png ps pdf svg ... 矢量图 – Cairo
  GDK png jpg tiff ... 光栅 – gimp

还有一些支持用户接口和渲染器紧密结合的后端,他们是交互式的后端,拥有在屏幕上展示的能力,使用上表中适当的渲染器来写入到文件中。

     后端               描述
    GTKAgg Agg渲染器输出到GTK绘图面板(需要PyGTK)
       GTK GDK渲染器输出到GTK绘图面板(不推荐,需要PyGTK)
    GTKCairo Cairo渲染器输出到GTK绘图面板(需要PyGTK)
     WXAgg Agg渲染器输出到wxWidgets绘图面板(需要wxPython)
    WX 原生wxWidgets绘图输出到wxWidgets绘图面板(不推荐,需要wxPython)
    TkAgg Agg渲染器输出到Tk绘图面板(需要Tkinter)
    QtAgg Agg渲染器输出到Qt绘图面板(不推荐,请使用Qt4Agg,需要PyQt)
    Qt4Agg Agg渲染器输出到Qt4绘图面板(需要PyQt4)
    FLTKAgg Agg渲染器输出到FLTK绘图面板(需要pyFLTK, 使用不是很广,考虑使用TKAgg,GTKAgg,WXAgg,或者QT4Agg替代)
    macosx Cocoa渲染器在osx上。(目前在非交互式模式缺少阻塞show()行为)

matplotlib中什么是后端的更多相关文章

  1. 快速web开发中的前后端框架选型最佳实践

    这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...

  2. 基于Python实现matplotlib中动态更新图片(交互式绘图)

    最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和mat ...

  3. matplotlib中color可用的颜色

    http://stackoverflow.com/questions/22408237/named-colors-in-matplotlib 参考网址给出了matplotlib中color可用的颜色: ...

  4. SSM框架中的前后端分离

    认识前后端分离 在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线.将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端. ...

  5. matplotlib中的颜色及线条控制

    出自 http://www.cnblogs.com/darkknightzh/p/6117528.html 参考网址: http://stackoverflow.com/questions/22408 ...

  6. matplotlib中的legend()—显示图例

    源自  matplotlib中的legend()——用于显示图例 -- 博客园 http://www.cnblogs.com/yinheyi/p/6792120.html legend()的一个用法: ...

  7. Matplotlib中中文不显示问题

    我们在使用jupter进行数据分析的时候,会接触到Matplotlib这个库,它是用来进行可视化数据分析的,在一个图中,我们常常会加入一些中文来进行说明.当我们加入中文的时候会出现下图所示的样子: 可 ...

  8. python+NLTK 自然语言学习处理三:如何在nltk/matplotlib中的图片中显示中文

    我们首先来加载我们自己的文本文件,并统计出排名前20的字符频率 if __name__=="__main__": corpus_root='/home/zhf/word' word ...

  9. Matplotlib中的颜色

    使用matplotlib中会遇到选择颜色的问题,很多人会觉得自带的matlab风格的颜色不好看.好在Matplotlib已经预见到了这个问题,除了支持最基本的matlab传统颜色之外,还支持很多种颜色 ...

随机推荐

  1. Python 爬虫 招聘信息并存入数据库

    新学习了selenium,啪一下腾讯招聘 from lxml import etree from selenium import webdriver import pymysql def Geturl ...

  2. win10安装kali组双系统

    一.镜像下载: 根据需求下载自己需要的版本 从官网下载kali 2018.2 的安装包:https://www.kali.org/downloads/ 二.烧录: 这里推荐用 win32 disk i ...

  3. lr中常用函数以str开头函数

    对各函数的定义: strcat( ):添加一个字符串到另一个字符串的末尾.strncat  (拼接指定长度字符串)                                 --粘贴操作    ...

  4. JavaWeb——库存管理系统(2).java部分---18.12.13

    DBUtil.java package com.hjf.util; import java.sql.Connection;import java.sql.DriverManager;import ja ...

  5. Codevs1332_上白泽慧音_KEY

    题目传送门 裸的模板题,Tarjan求联通量.  code: #include <cstdio> #include <vector> #define min(a,b) a< ...

  6. VINS(二)Feature Detection and Tracking

    系统入口是feature_tracker_node.cpp文件中的main函数 1. 首先创建feature_tracker节点,从配置文件中读取信息(parameters.cpp),包括: ROS中 ...

  7. DMA是什么意思

    DMA是让硬盘不用通过CPU来控制读写 它的意思是直接存储器存取,是一种快速传送数据的机制,DMA技术的重要性在于,利用它进行数据存取时不需要CPU进行干预,可提高系统执行应用程序的效率.利用DMA传 ...

  8. 开发发布npm module包

    开发发布npm module包 问题 在项目开发过程中,每当进入一个新的业务项目,从零开始搭建一套前端项目结构是一件让人头疼的事情,就要重新复制一个上一个项目的前端框架和组件代码库.其中很多功能的模块 ...

  9. 阿里云服务器Linux系统安装配置ElasticSearch搜索引擎

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  10. VIN码识别(车架号识别)在二手车交易中的应用

    最新数据统计,2015年,中国卖出2110万辆新车,相比之下,美国卖出去了1740辆新车.然而,如果算上二手车,美国的汽车市场销量将扩展到4000多辆,而中国的乘用车才不到3000万辆. 销售总额上, ...