Matplotlib绘制子图subplot+自定义子图网格布局subplot2grid

本文介绍如何使用Matplotlib的subplot和subplot2grid函数创建子图,详细解释了subplot的参数设定及subplot2grid的网格布局技巧,帮助读者掌握更灵活的绘图布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 subplot绘制子图

使用matplotlib绘图时通常会绘制子图用于清晰展示,我们通过subplot来绘制子图位置即可。
subplot通常用来定位的参数有三个(行数,列数,子图索引),三个参数用‘,’隔开,也可简化不写“,” 实例代码例如:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
def f(x):
    '''定义要绘制的函数'''
    return x**2


plt.figure(figsize=(10,10))#设置画布大小
x= np.linspace(0,2)
# 将画布分成2x1的布局,占用第1个(即第2行第1列的子图)
plt.subplot(211)
plt.plot(x,f(x))
plt.title("第一幅子图")
# 将画布分成2x3的布局,占用第4个(即第2行第1列的子图)
plt.subplot(234)
plt.plot(x,f(x))
plt.title("第二幅子图")
# 将画布分成2x3的布局,占用第5个(即第2行第2列的子图)
plt.subplot(235)
plt.plot(x,f(x))
plt.title("第三幅子图")

在这里插入图片描述
但是这种方法有个缺点,比如我想把上述的第三幅子图占据后面的两个子图的位置,用subplot的三个参数是无法做到的,那么这时我们就需要子图的网格布局

二、自定义网格布局subplot2grid

2.1参数说明

subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)

shape:网格的尺寸
loc:绘制子图位置
rowspan:轴向下跨距的列数。
colspan:轴向右跨距的行数。

2.2示例

为了实现让第三幅子图占两行,我们使用subplot2grid进行网格布局,

plt.figure(figsize=(12,8))

#在2行3列的表格中,第一行第一列的位置绘制一个轴向右跨距为3的子图
plt.subplot2grid((2,3) ,(0, 0), colspan=3)
plt.title("第一幅子图")
plt.plot(x,f(x))

#在2行3列的表格中,第2行第1列的位置绘制一个子图
plt.subplot2grid((2,3), (1, 0))
plt.title("第二幅子图")
plt.plot(x,f(x))

plt.subplot2grid((2,3) ,(1, 1), colspan=2)
plt.title("第三幅子图")
plt.plot(x,f(x))

在这里插入图片描述

更多布局:

fig = plt.figure(figsize=(15,15))
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
ax1.set_title("第一幅子图")
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax2.set_title("第二幅子图")
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax3.set_title("第三幅子图")
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax4.set_title("第四幅子图")
ax5 = plt.subplot2grid((3, 3), (2, 1))
ax5.set_title("第五幅子图")
plt.show()

在这里插入图片描述

数据可视化中,按照自定义布局结构绘制是一个常见的需求。Matplotlib是一个强大的Python库,提供了灵活的方式来创建复杂的布局。以下是如何使用Matplotlib按照自定义布局结构绘制的步骤: 1. **导入必要的库**: 首先,需要导入Matplotlib库。 ```python import matplotlib.pyplot as plt ``` 2. **创建**: 使用`plt.subplot2grid`或`plt.GridSpec`来创建自定义布局。 ```python fig = plt.figure() # 使用subplot2grid创建 ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3) ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2) ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2) ax4 = plt.subplot2grid((3, 3), (2, 0)) ax5 = plt.subplot2grid((3, 3), (2, 1)) ``` 或者使用`GridSpec`: ```python import matplotlib.gridspec as gridspec fig = plt.figure() gs = gridspec.GridSpec(3, 3) ax1 = fig.add_subplot(gs[0, :]) ax2 = fig.add_subplot(gs[1, :2]) ax3 = fig.add_subplot(gs[1:, 2]) ax4 = fig.add_subplot(gs[2, 0]) ax5 = fig.add_subplot(gs[2, 1]) ``` 3. **绘制数据**: 在每个绘制数据。 ```python ax1.plot([1, 2, 3], [1, 2, 3]) ax2.plot([1, 2, 3], [3, 2, 1]) ax3.plot([1, 2, 3], [1, 3, 2]) ax4.plot([1, 2, 3], [2, 1, 3]) ax5.plot([1, 2, 3], [3, 1, 2]) ``` 4. **显示形**: 最后,调用`plt.show()`来显示形。 ```python plt.tight_layout() plt.show() ``` 通过这种方式,你可以根据需要自定义布局结构,并分别绘制不同的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Demonslzh6

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

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

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

打赏作者

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

抵扣说明:

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

余额充值