子图与子区 难点剖析(四)

在 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-

到今天为止,这个「可视化系列」,已经更新至第四篇。好像阅读量越来越少了,可能能坚持下来的人真的不多。对我来说,这些都只是一个铺垫,有了这些基础后,我后面将会写大家最喜欢的爬虫实战系列,尽可能的用到我公号的几乎所有知识点,真正达到学以致用。最后希望你能跟着我一起坚持下来。共勉..

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180828G0LAVS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券