Matplotlib绘图(1):figure,axes,subplot等函数解析

文章首发于我的个人博客:欢迎大佬们来逛逛

本文基础:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10,10,1000)
ys = np.sin(x)
yc = np.cos(x)

figure:画图板

figure在matplotlib中代表画图板的意思,是最基本的画图单位

通过 figure() 函数可以创建一个新的画图板或者激活一个已经存在的。

例如下面的代码,我们创建了两个画图板,一个是f1,另一个是f2,但是其实在之后的绘制的时候和画图板的名字无关,它遵循就进原则,即创建一个画图板之后,则其下方绘制的一切都是属于上面的最近的画图板的。

f1 = plt.figure(1,figsize=[6,2])
plt.plot(x,ys)
f2 = plt.figure(2,figsize=(4,2))
plt.plot(x,yc)

f1.suptitle('figure 1')
f2.suptitle('figure 2')

上面我们是创建了两个新的画图板,然后分别绘制:

在这里插入图片描述

如果我们想要激活一个已经存在的,则我们再次指出即可:

注意:figure的参数第一个是名称,可以是数字,字符串等等,用于标识唯一的画图板的标题。

如下我们又重新激活了 一号画图板并且在其上绘图。

plt.figure(1) # 激活
plt.plot(x,yc)

在这里插入图片描述

我们只需要记住一句话即可:figure是最基本的绘图单位,存在则激活,不存在则创建,就近原则


plot:画布

plot有情节的意思。

我们有一个函数:subplot(x,y,p) ,它可以为我们新建画布

注意与上面的figure的区别,figure是画图板,我们需要在画图板上创建画布然后绘画,因此一个画图板上可以有多个画布,反之则不行。

如下:我们创建了一个画图板,然后又分别创建了三个画布,注意:在画布上的绘制也是遵循就近原则的。

fg = plt.figure(figsize=[8,2]) #创建一个画图板
plt.subplot(1,3,1) #画布1
plt.plot(x,ys,color='r')
plt.subplot(1,3,2) #画布2
plt.plot(x,ys,color='g')
plt.subplot(1,3,3) #画布3
plt.plot(x,ys,color='b')

在这里插入图片描述

那么subplot中的参数是什么意思呢?

我们可以把这三个数字分别从左往右读:(画图板:figure,画布:plot)

  • 1 3 1:代表的就是把这个画图板分成一行三列,这个画布在第一个位置。
  • 1 3 2:这个画布在第二个位置。
  • 1 3 3:这个画布在第三个位置。

因此就可以明白了:画布依赖于画图板,画布的位置可以由这种方式来确定,实际上我们可以任意指定对画图板的划分。


axes:画布

axes有轴的意思。

它有一个函数:axes([x, y, w, h]),它可以为我们创建画布,对,这个函数和上面的 subplot功能是相同的,都是创建画布

# 创建多个画图板
f1 = plt.figure('first')
# axes:在画图板上绘制区域 自定义位置,比较自由
fax1 = plt.axes((0,0,0.5,0.5))
plt.plot(x,ys)
fax2 = plt.axes((0.6,0,0.5,0.5))
plt.plot(x,ys)
plt.plot(x,yc) # 就近原则
fax3 = plt.axes([1.2,0,0.5,0.5])
plt.plot(x,ys)

在这里插入图片描述

注意到其与上面的 subplot 区别了吗?

axes() 的第一个参数接受一个序列:[x,y,w,h]

表示这个画布放置在相对于整个画图板(x,y)的位置,宽和高为 w 和 h 。

例如我们上面的例子中:

  • (0,0,0.5,0.5):在画图板(0,0)的位置,宽度和高度为0.5和0.5

第二个画布:(0.6,0,0.5,0.5):在画图板(0.6,0)的位置,为什么x是06?

稍微变化以下参数你就明白了:

fax2 = plt.axes((0.4,0.2,0.5,0.5)) # 第二个变化

最左下角就是画图板的(0,0)的位置,往右是x轴正方向,往上是y轴正方向。

在这里插入图片描述

因此我们可以看出:axes() 创建画布的方式相对于 subplot() 更加灵活,因为你可以任意指定他们的位置,即使他们有重叠。

补充与示例

我们创建了两个画图板

  • 第一块板子使用 axes创建三个画布,然后分别绘制图形
  • 第二个板子使用subplot创建三个画布,然后绘制:
# 创建多个画图板
f1 = plt.figure('first')
# axes:在画图板上绘制区域 自定义位置,比较自由
fax1 = plt.axes((0,0,0.5,0.5))
plt.plot(x,ys)
fax2 = plt.axes((0.6,0,0.5,0.5))
plt.plot(x,ys)
plt.plot(x,yc) # 就近原则
fax3 = plt.axes([1.2,0,0.5,0.5])
plt.plot(x,ys)

f2 = plt.figure('second',figsize=(8,2))
# subplot: 同样是绘制区域,是规整的
plt.subplot(1,3,1)
plt.plot(x,ys)
plt.subplot(1,3,2)
plt.plot(x,ys)
plt.subplot(1,3,3)
plt.plot(x,yc)
plt.plot(x,ys)

在这里插入图片描述

可以看到他们基本上是一样的,但是推荐使用subplot,因为我们无须自已指定具体坐标


axis() 可以指定某一个画布的具体显示区域。

如果我们只有一个画图板与一个画布,则默认是这样的设置

  • 画图板的缺省是:figure(1)
  • 图形区的缺省是:subplot(111)

规则描述:

  • subplot()作用在最近使用的画图板上,有可能是缺省的画图板figure(1)。
  • axes()作用在最近使用的画图板上,有可能是缺省的画图板figure(1)。
  • axis()作用在最近使用的图形区上,可能来自subplot、axes等
  • 绘制:plot()作用在最近使用的图形区上,可能来自subplot、axes等

参考文档:

matplotlib.pyplot.figure — Matplotlib 3.5.3 documentation

matplotlib.pyplot.subplot — Matplotlib 3.7.1 documentation

【matplotlib】图解pyplot figure、subplot、axes、axis的区别

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuleo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值