历史

注解

以下介绍性文本由Matplotlib的原作者John D.Hunter(1968-2012)于2008年编写。

Matplotlib是一个库,用于在 Python . 虽然它起源于对matlab图形命令的仿真,但它独立于matlab,并且可以以一种 Python 式的、面向对象的方式使用。虽然matplotlib主要是用纯Python编写的,但它大量使用 NumPy 以及其他扩展代码,即使对于大型数组也能提供良好的性能。

Matplotlib的设计理念是,您应该能够创建简单的绘图,只需几个命令,或者只需一个命令!如果您想查看数据的柱状图,就不需要实例化对象、调用方法、设置属性等等;它应该可以正常工作。

多年来,我一直只用matlab进行数据分析和可视化。Matlab擅长轻松制作美观的绘图。当我开始使用EEG数据时,我发现我需要编写应用程序来与我的数据交互,并在Matlab中开发了一个EEG分析应用程序。随着应用程序变得越来越复杂,与数据库、HTTP服务器交互,操作复杂的数据结构,我开始努力克服Matlab作为编程语言的局限性,并决定从Python开始。作为编程语言,python不仅弥补了matlab的所有不足,而且我很难找到一个二维绘图包(用于3d VTK 超过了我所有的需要)。

当我搜索Python绘图包时,我有几个要求:

  • 情节应该看起来很好-出版质量。对我来说一个重要的要求是,文本看起来很好(抗锯齿等)。
  • 用于包含Tex文档的PostScript输出
  • 可嵌入在图形用户界面中用于应用程序开发
  • 代码应该足够简单,我可以理解并扩展它
  • 绘图应该很容易

发现没有一个适合我的包,我做了任何有自尊的Python程序员都会做的事情:卷起袖子,潜入其中。我对计算机图形没有任何实际经验,所以决定模拟matlab的绘图功能,因为matlab做得很好。这有一个额外的优势,许多人有很多matlab经验,因此他们可以很快开始用python进行蒸汽绘图。从开发人员的角度来看,拥有一个固定的用户界面(pylab界面)非常有用,因为代码库的内部结构可以在不影响用户代码的情况下重新设计。

Matplotlib代码在概念上分为三部分: PYLAB接口 是由 pylab 它允许用户使用与Matlab图形生成代码非常相似的代码创建绘图。 (PyPror教程 )这个 Matplotlib前端MatpTLIB API 是一组类,用于进行重提升、创建和管理图形、文本、线条、绘图等 (艺术家辅导 )这是一个对输出一无所知的抽象接口。这个 后端 与设备相关的绘图设备,也称为渲染器,将前端表示转换为硬拷贝或显示设备吗? (什么是后端? )后端示例:ps创建 PostScript® 硬拷贝,SVG创建 Scalable Vector Graphics 硬拷贝,agg使用高质量创建png输出 Anti-Grain Geometry 带有matplotlib的库,gtk将matplotlib嵌入到 Gtk+ 应用程序,gtkagg使用反纹理渲染器创建一个图形并将其嵌入gtk+应用程序,依此类推 PDFWxWidgetsTkinter 等。

Matplotlib在许多不同的环境中被许多人使用。有些人希望自动生成PostScript文件以发送到打印机或发布服务器。其他人在Web应用服务器上部署matplotlib,以生成PNG输出,以便包含在动态生成的网页中。有些人在Windows的tkinter中交互地使用来自python shell的matplotlib。我的主要用途是在运行在Windows、Linux和Macintosh OS X上的GTK+EEG应用程序中嵌入matplotlib。


Matplotlib的原始徽标(2003-2008)。

(Source code _, pngpdf

../_images/history-1.png

Matplotlib标志(2008-2015)。

(Source code _, pngpdf

../_images/history-2.png