001-Matplotlib还是Python可视化的终极武器

Matplotlib还是Python可视化的终极武器

Python草堂 ,2019-11-11
在这里插入图片描述python

  • Python可视化让初学者沮丧的两面
  • 为何仍是matplotlib
  • matplotlib的历史
  • Matplotlib有什么优势?

从 2003-2008

在这里插入图片描述

从 2008-2015

在这里插入图片描述

Python可视化让初学者沮丧的两面

进入Python可视化领域的新手多数人都由于Python可视化生态的两面性有过很是沮丧的时候:程序员

一方面,好象没有一个很完美的Python可视化工具。不像R,有ggplot2,获得多数人的确定;web

另外一方面,Python的可视化工具又不少,让人无所适从:shell

  • matplotlib
  • Pandas
  • Seaborn
  • ggplot
  • Bokeh
  • pygal
  • Plotly
  • plotnine…

前面已有那么多python可视化工具了,但2018年,有个德国学者仍是借鉴R语言 ggplot2 包的语法开发了 plotnine 包,几乎实现了对 R 语言 ggplot2 语法的直接移植,正是Python可视化生态上述两面性的证实。数据库

matplotlib 是python的标准绘图库,实现了对绘图各方面的自由定义,你们几乎都从这里开始过。但matplotlib学习的曲线很是陡峭。而其它包又各有侧重,因些或多或少存在功能不全、不一样缺陷的问题。编程

我也是从matplotlib开始Python的可视化,但一段时间后,由于相同的缘由转向其它工具。服务器

在尝试了各类工具,走过一些弯路后,又回到 matplotlib,才找到学习 matplotlib的正确姿式,才明白matplotlib还是Python可视化的终极武器,只是太多初学者一开始就跌落到了学习 matplolib那个最大的坑里。数据结构

最近与一些网友在群里交流讨论后,深有感触。就想把本身学习matplotlib的笔记和心得整理出来,但愿能帮助你们绕过一些坑,更快地进入matplotlib世界的自由境界!并发

本系列会是一个长期写做计划,到底会有多少篇,我如今也不知道。但我知道,matplotlib最新版是3.1.1,它的官方文档长达近3000页!编程语言

为何仍是matplotlib

matplotlib的历史

John D. Hunter(1968 - 2012年),是美国神经生物学家,他是 matplotlib的原做者。在这里插入图片描述
John D. Hunter 1968年出生于美国田纳西州的戴尔斯堡,毕业于麦卡利高中。他最初在普林斯顿大学学习,后来于2004年在芝加哥大学得到神经生物学博士学位。

在攻读神经生物学博士期间,Jonh D. Hunter 常用MATLAB进行数据分析和可视化。当他开始使用EEG(脑电图)数据时,他就在MATLAB中开发了一个EEG分析应用程序来与数据交互。

随着分析的深刻,须要与数据库、http服务器交互,须要操纵复杂的数据结构,应用程序的复杂性不断增长,MATLAB做为编程语言的局限性日益突显。

John D. Hunter决定转向Python,当 Jonh D. Hunter 搜索Python绘图包时,有几个要求:

绘制的图形要达到出版的质量,一个重要的要求是文本显示不能有锯齿;包含Postscript输出可嵌入Tex排版的eps格式图像的功能;可嵌入到图形用户界面中开发应用程序;代码应该足够简单,容易理解并扩展它;绘制图形很简易。

找不到适合符合上述要求的Python 绘图软件包,Jonh D. Hunter 作了不少Python程序员会作的事情:卷起袖子本身干!

由于长期使用Matlab的经验,他决定模仿MATLAB的绘图功能,理由以下:

  • MATLAB的东西作得很好,绘图质量很高;
  • 许多人拥有大量的MATLAB经验,所以他们能够快速上手。

Matplotlib就这样诞生了,而且名字都带有Matlab的影子!

很是不幸,John D. Hunter 2012年因癌症的治疗并发症去世! John D. Hunter 走了,但他给开放的互联网社区留下了伟大的 Matplotlib。

Matplotlib目前的首席开发人员是Thomas A. Caswell。不少人为matplotlib的维护作出了贡献,应该向他们致敬!

Matplotlib有什么优势?

虽然Matplotlib源于模仿MATLAB,可是它却不一样于MATLAB,与MATLAB相比它的优点在于:

  1. Matplotlib是Python的拓展库,具备Python语法面向对象、易读、易维护、代码简洁的遗传优点。
  2. Matplotlib依托于Python,借助Python的强大的可拓展性,Matplotlib能够在许多不一样的环境中被使用。
  3. 生成多平台、易交换的图形硬拷贝,如自动生成PostScript文件以发送给打印机或发布者。
  4. 可用于Python脚本,Python和IPython shell,Jupyter笔记本。
  5. 在Web上应用程序服务器上部署Matplotlib,生成PNG输出包含在动态生成的网页中。
  6. 在Windows上以交互方式使用Matplotlib。
  7. 将Matplotlib嵌入到运行在Windows,Linux和Macintosh OS X上的应用程序中。
  8. 免费。MATLAB是一款商业软件且价格昂贵,而Matplotlib是开源免费的。
  9. Matplotlib 实现了几乎是彻底自主控制的图形定义功能,所以只要你能想到的图形,都能用Matplotlib绘制出来。
    在这里插入图片描述
    但也正是追求这些优势,致使了matplotlib库中的模块、类、类的方法和属性、各类对象的设置参数错综复杂,学习它的路径陡峭,常让初学者一头雾水。

尤为是各类书籍、教程都从 pyplot函数绘图开始,并以函数绘图为重点,让初学者照猫画虎,在学习matplotlib的路径上挖了一个最大的坑。

(This end.)