matplotlib.pyplot使用for循环进行多个子图Subplot的绘制的方法

matplotlib.pyplot使用for循环进行多个子图Subplot的绘制

一、matplotlib.pyplot绘制子图的基本方法

首先我们来了解一下,matplotlib中绘图需要使用到的元素
在这里插入图片描述
首先是figure图片对象,然后是图片对象包含的子图对象axes,再然后是每个子图对象的轴Axis对象。

我们要进行子图的绘制,首先我们要创建图片对象,然后再创建子图对象,在子图对象上进行绘制,可以使用多种方法。

第一种:

plt.figure()
plt.plot([1, 2, 3])

在这里插入图片描述
我们使用plt.figure()创建了一个图片对象,但是没有给这个图片对象指定引用,这里plt.plot()会自动在已经当前正在使用的figure上进行绘制。效果就如上图所示。

第二种:
创建子图对象然后进行绘制。

fig = plt.figure()
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)
ax1.plot([1,2,3])
ax2.scatter(1,1)

在这里插入图片描述
第三种:
同时创建figure和子图对象

fig, axes = plt.subplots(2, 2)
axes[0, 1].plot([1, 2, 3])
axes[1, 1].plot([1, 2, 3])

在这里插入图片描述
这里的axes是一个numpy的高维数组ndarray
在这里插入图片描述
我们不能直接对axes进行操作进行绘图,我们只能访问其中一个元素获得一个ax后然后再进行绘图。

二、使用for循环进行绘图的一种方法

当我们的绘图语句非常多的时候,代码会显得繁琐,我们需要一种方式来进行循环绘图,但是axes是个ndarray这就限制了我们使用for循环直接来迭代这个高维数组,这样的思路是行不通的,那我们换一个思路。既然axes的类型是ndarry,那么axes肯定有shape属性,可以访问axes的行和列数,这正好和我们指定子图的位置一致。

我们使用一个list,来保存axes中的每一个子图对象,这样我们接下来使用时就方便迭代了

fig, axes = plt.subplots(3, 3)
axes_list = []
for i in range(axes.shape[0]):
    for j in range(axes.shape[1]):
        axes_list.append(axes[i, j])
print(axes_list)

在这里插入图片描述

fig, axes = plt.subplots(3, 3)
axes_list = []
for i in range(axes.shape[0]):
    for j in range(axes.shape[1]):
        axes_list.append(axes[i, j])

for ax in axes_list:
    ax.plot([1, 2, 3])

在这里插入图片描述
当然大家也可以自行修改具体的绘图语句,来达到自己的目的。这里仅提供一个思路。

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值