Python可视化让初学者沮丧的两面
为什么还是matplotlib
matplotlib的历史
Matplotlib有什么优点?
从 (2003-2008)
到 (2008-2015)
进入Python可视化领域的新手多数人都因为Python可视化生态的两面性有过非常沮丧的时候:
一方面,好象没有一个很完美的Python可视化工具。不像R,有ggplot2,得到多数人的肯定;
另一方面,Python的可视化工具又很多,让人无所适从
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页!
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源于模仿MATLAB,但是它却不同于MATLAB,与MATLAB相比它的优势在于:
Matplotlib是Python的拓展库,具有Python语法面向对象、易读、易维护、代码简洁的遗传优势。
Matplotlib依托于Python,借助Python的强大的可拓展性,Matplotlib可以在许多不同的环境中被使用。
生成多平台、易交换的图形硬拷贝,如自动生成PostScript文件以发送给打印机或发布者;
可用于Python脚本,Python和IPython shell,Jupyter笔记本,
在Web上应用程序服务器上部署Matplotlib,生成PNG输出包含在动态生成的网页中;
在Windows上以交互方式使用Matplotlib。
将Matplotlib嵌入到运行在Windows,Linux和Macintosh OS X上的应用程序中。
免费。MATLAB是一款商业软件且价格昂贵,而Matplotlib是开源免费的;
Matplotlib 实现了几乎是完全自主控制的图形定义功能,因此只要你能想到的图形,都能用Matplotlib绘制出来。
但也正是追求这些优点,导致了matplotlib库中的模块、类、类的方法和属性、各种对象的设置参数错综复杂,学习它的路径陡峭,常让初学者一头雾水。
尤其是各种书籍、教程都从 pyplot函数绘图开始,并以函数绘图为重点,让初学者照猫画虎,在学习matplotlib的路径上挖了一个最大的坑。
原创文章!
联系客服