5. Matplotlib一屏多图

个人网站:山海同行
网站地址:https://shanhaigo.cn/
本篇地址:https://shanhaigo.cn/courseContent/1871737843794247680

一、实现方式

Matplotlib的pyplot给了俩种实现方式,subplot() 和 subplots() 方法来绘制多个子图。

1. subplot实现(不推荐)

使用subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。

subplot()给出的API如下:

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1…N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

后续使用subplots()这里不做演示

2. subplots实现

matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw)

参数:

nrows:默认为 1,设置图表的行数。
ncols:默认为 1,设置图表的列数。

返回:
fig : 图对象
axes : 返回相应数量的坐标系

举例:
根据2024北京、深圳平均温度进行绘制俩个图表

# 绘制一行两列图
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 7), dpi=100)

# 北京
# 实心圆、实线、蓝色线条
axes[0].plot(x_data, y_data, 'o-b')

# 深圳
# 下三角、点划线、绿色
axes[1].plot(sz_x_data, sz_y_data, 'v-.g')

# 生成图片
plt.show()

image.png

二、填充子图描述

上篇写了单个图表,如何对图表进行详细描述,接下来进行复习下,填充下子图的描述:

1. 添加刻度

# 北京
# 实心圆、实线、蓝色线条
axes[0].plot(x_data, y_data, 'o-b')

# 月份刻度
x_bj_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_bj_ticks_label = ["{}℃".format(i) for i in y_data]
axes[0].set_xticks(x_data, x_bj_ticks_label)
axes[0].set_yticks(y_data, y_bj_ticks_label)


# 深圳
# 下三角、点划线、绿色
axes[1].plot(sz_x_data, sz_y_data, 'v-.g')

# 月份刻度
x_sz_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_sz_beijing_ticks_label = ["{}℃".format(i) for i in y_data]
axes[1].set_xticks(sz_x_data, x_sz_ticks_label)
axes[1].set_yticks(sz_y_data, y_sz_beijing_ticks_label)

image.png

2. 添加网格

# 添加网格
axes[0].grid()

# 添加网格
axes[1].grid()

image.png

3. 添加轴信息

# 添加轴信息
axes[0].set_xlabel('月份')
axes[0].set_ylabel('温度')


# 添加轴信息
axes[1].set_xlabel('月份')
axes[1].set_ylabel('温度')

image.png

4. 添加标题

# 北京标题
axes[0].set_title('北京2024年平均天气')


# 深圳标题
axes[1].set_title('深圳2024年平均天气')

image.png

完整代码附上:

import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 画图背景切换
plt.switch_backend('TkAgg')

# 北京2024年平均天气
# 十二个月
x_data = [i for i in range(1, 13)]
# 每个月平均温度
y_data = [-4, -4, 5, 10, 18, 23, 25, 25, 20, 10, 2, -4]

# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]

# 画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 7), dpi=100)

# 绘图
# 北京
# 实心圆、实线、蓝色线条
axes[0].plot(x_data, y_data, 'o-b')

# 刻度
# 月份刻度
x_bj_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_bj_ticks_label = ["{}℃".format(i) for i in y_data]
axes[0].set_xticks(x_data, x_bj_ticks_label)
axes[0].set_yticks(y_data, y_bj_ticks_label)

# 添加网格
axes[0].grid()

# 添加轴信息
axes[0].set_xlabel('月份')
axes[0].set_ylabel('温度')

# 北京标题
axes[0].set_title('北京2024年平均天气')

# 深圳
# 下三角、点划线、绿色
axes[1].plot(sz_x_data, sz_y_data, 'v-.g')

# 月份刻度
x_sz_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_sz_beijing_ticks_label = ["{}℃".format(i) for i in y_data]
axes[1].set_xticks(sz_x_data, x_sz_ticks_label)
axes[1].set_yticks(sz_y_data, y_sz_beijing_ticks_label)

# 添加网格
axes[1].grid()

# 添加轴信息
axes[1].set_xlabel('月份')
axes[1].set_ylabel('温度')

# 深圳标题
axes[1].set_title('深圳2024年平均天气')


# 生成图片
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值