由浅入深理解 Matplotlib
Matpoltlib 是常用的 python 可视化库,接触过数据分析读者想必都不陌生。
Matplotlib 的功能乍一看不太好记。本文就要尝试从统计图表开始逐步剖析,理解 Matplotlib 各功能的结构划分,由浅入深分析这个库的设计哲学。
我们可以先尝试分析统计图。翻阅资料会发现,实际上统计图的历史渊源还是很久远的。笔者之前刷到过一些有意思的古时候的统计表,比如这张古土耳其的饼状图。
图片
这些图有很强的构成感,十分吸引人,可见制图师的审美之重要性。
从绘制目的上分,可视化图共分这几类:
- 数据趋势 :折线图、面积图。
- 数据分布与构成 :直方图、散点图(分布);饼图、堆叠图(构成/占比)。
- 空间地理 :地图(如区域填充图、路线分布图等)
每种图的表现形式都不一样。
从颜色上分,可视化图的颜色可由这些决定:
密度、大小。
然后视角调远,观察整个画面布局。图 1 那样的图表,在一张纸面上画了两个图(饼图和柱状图)。
最后沿袭一般的纸质排版的习惯,一张图标会有标题、正文、注解、角标等文字元素。也就是说制表会使用文字排版的那一套方法,不过是以图为主的。
如此梳理下来,如果我们要做一张统计表,大概就是在搭建这个结构:
【统计图框图】
若要在计算机上实现这种统计表信息的存储与绘制,我们不妨也就遵循这个结构构建。
【】
最后使用面向对象的思想封装,给一个图表加上操作方法。matplotlib 的雏形差不都就成了。
在 Matplotlib 的官方文档中有张比较完整的图的各个元素的速记图,我稍微仿照着汉化了一下:
【图片】
统计图所在的那一张纸就叫 figure,
二维坐标图的两个坐标轴分别为 x 轴和 y 轴,横为 x 竖为 y. 二者都可以设置小标题来解释坐标含义。每个轴都可以标记刻度,刻度上的数字作为文字排版也可以自定义。
为了便于直观样本点的数值区间,可以以大刻度和小刻度设置背景网格。
绘制的内容有曲线、折线和点,虽然样式不同但实际都只需要 xy 坐标组就能表示。