在 matplotlib 中有两个非常重要,而且很容易混淆的概念,一个是subplot,一个是axes。这两个概念将贯穿整个 matplotlib 学习历程。在往后进行深度研究之前呢,务必要先弄懂这两个概念,否则将后面的绘制代码,我相信你一定会一头雾水的。
在查阅了一些相关中文文档后,我暂且将 subplot 称为子区,而将 axes 称之为子图。这些只是为了方便后续的描述。
你会发现,即使翻译成中文后,还是无法帮助我们直观的理解这两个概念。因此我特地画了几张图,来解释这两者到底是啥区别。
01. 子区
子区(subplot),是基于 网格(grid)来规划的。
比如,这个写法
是将当前图像(figure)按 2 行 2 列的布局进行分割,然后取索引为 1 的子图。注意 matlibplot 是完全借鉴了 MATLAB 的思想,所以的起始索引为 1,不像 Python 的起始索引为 0。
他有好几种写法,这里写我在官网学到的几个方法。
这几种写法是等价的。
这第二种写法呢,是将图像分成 2 行 2 列,再取 第 0 索引行(第一行),第 0 索引列(第一列)。
学完了以上内容,我们来使用最简单的方法(第一种)来实践一下。
02. 子图
子图(axes),和子区(subplot)非常相似,一个子图可能是由一个或多个子区域构成的。它比子区更加灵活。
它可以是这样
要实现如上这个效果。常用的有两种方法。
第一种,使用
第二种,使用 (可以切片)
这个比较规则的划分我们举个例子看看。
代码如下:
为什么说,子图的灵活性更高呢,因为它允许把图片放置到图像(figure)中的任何地方(如下图)。所以如果我们想要在一个大图片中嵌套一个小点的图片,我们通过子图(axes)来完成它。
图中的 axes 是如何实现的,刚开始我也有点懵逼,在查阅了官方文档后,我才明白。
是指,离左边界的距离。
是指,离底边的距离。
是指,子图的宽度。
是指,子图的高度。
以上四个参数,是一个(0, 1)的比例(相比于figure),而不是具体数值。
最后同样地,我们也来看一个例子。
这个图的亮点,在于中间,多了两个子图,就像往图中贴上两个插画一样。
那么这个如何实现呢?
-END-
到今天为止,这个「可视化系列」,已经更新至第四篇。好像阅读量越来越少了,可能能坚持下来的人真的不多。对我来说,这些都只是一个铺垫,有了这些基础后,我后面将会写大家最喜欢的爬虫实战系列,尽可能的用到我公号的几乎所有知识点,真正达到学以致用。最后希望你能跟着我一起坚持下来。共勉..
领取专属 10元无门槛券
私享最新 技术干货