创建多个绘图区 | Python 数据可视化库 Matplotlib 快速入门之十一

简介: 本节介绍了面向对象的画图方法,在同一个图的不同坐标系绘制两个城市的同一时段的温度变化情况的步骤。

其他辅助显示层完善折线图 | Python 数据可视化库 Matplotlib 快速入门之十

多个坐标系显示-plt.subplots(面向对象的画图方法)

如果我们想要将上海和北京的天气图显示在同一个图的不同坐标系当中,效果如下:

image.png

可以通过subplots函数实现(旧的版本中有subplot, 使用起来不方便), 推荐subplots函数。

  • matplotlib.pyplot.subplots(nrows=1,ncols=1, **fig_kw) 创建一个带有多个axes(坐标系/绘图区) 的图

现在是1行2列,我们对代码做出修改:

figure, axes = plt.subplots(nrows=1, ncols=2, **fig_kw)
axes[0].方法名()
axes[1].方法名()
Parameters:

nrows, ncols : int, optional, default: 1, Number of rows/coLumns of the subplot grid.
**fig_kw : All additional keyword arguments are passed to the figure() call.

Returns:
fig : 图对象
ax :
    设置标题等方法不同:
    set_xticks
    set_yticks
    set_xlabel
    set_ylabel

关于axes子坐标系的更多方法:参考https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes

  • 注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。

我们来对此需求编写代码:
收集到上海当天的温度变化情况,温度在15度到18度
收集到北京当天的温度变化情况,温度在1度到3度

import random
# 1、准备数据 x,y
x = range(60)
y_shanghai  = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]

# 2、创建画布
figure, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)

# 3、绘制图像
axes[0].plot(x, y_shanghai, color = "r", linestyle = "-.", label = "上海")
axes[1].plot(x, y_beijing, color = "b", label = "北京")

# 显示图例
axes[0].legend()
axes[1].legend()

# 修改x,y刻度
# 准备x的刻度说明
x_lable = ["11点{}分".format(i) for i in x] 
axes[0].set_xticks(x[::5], x_lable[::5])
axes[0].set_yticks(range(0, 40, 5))
axes[1].set_xticks(x[::5], x_lable[::5])
axes[1].set_yticks(range(0, 40, 5))

# 添加网格显示
axes[0].grid(True, linestyle = "--", alpha = 0.5)
axes[1].grid(True, linestyle = "--", alpha = 0.5)

# 添加描述信息
axes[0].set_xlable("时间变化")
axes[0].set_ylable("温度变化")
axes[0].set_title("上海11点到12点每分钟的温度变化状况")
axes[1].set_xlable("时间变化")
axes[1].set_ylable("温度变化")
axes[1].set_title("北京11点到12点每分钟的温度变化状况")
# 4、显示图
plt.show()

执行结果:

image.png

此时可以发现横坐标跟我们原本设置的不一致,此时是因为面向对象方法调用的问题,我们可以查询上面的API文档。
通过文档查询可以发现,set_xticks的第二个参数是bool值,所以我们需要修改,改为axes.set_xticklabels ,可以添加字符串。

image.png
image.png

修改代码:

# 修改x,y刻度
# 准备x的刻度说明
x_lable = ["11点{}分".format(i) for i in x] 
axes[0].set_xticks(x[::5])
axes[0].set_xticklabels(x_lable[::5])
axes[0].set_yticks(range(0, 40, 5))
axes[1].set_xticks(x[::5])
axes[1].set_xticklabels(x_lable[::5])
axes[1].set_yticks(range(0, 40, 5))

执行结果:

image.png

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
4天前
|
数据可视化 数据挖掘 数据处理
Altair:Python数据可视化库的魅力之旅
Altair:Python数据可视化库的魅力之旅
11 0
|
4天前
|
存储 JSON 数据库
Python中列表数据的保存与读取:以txt文件为例
Python中列表数据的保存与读取:以txt文件为例
18 2
|
1天前
|
数据可视化 数据挖掘 数据处理
Python中的数据可视化技术及应用
数据可视化是数据分析中至关重要的一环,而Python作为一种强大的编程语言,提供了丰富的数据可视化工具和库。本文将介绍Python中常用的数据可视化技术及其在实际应用中的案例,帮助读者更好地理解和运用数据可视化技术。
|
1天前
|
人工智能 数据可视化 数据挖掘
Python中的数据可视化技术与应用
随着数据科学和人工智能的迅速发展,数据可视化在Python编程中变得愈发重要。本文将介绍Python中常用的数据可视化库及其应用,以及如何利用这些工具创建各种引人入胜的数据图表。
|
3天前
|
JSON JavaScript 数据格式
利用 python 分析基金,合理分析数据让赚钱赢在起跑线!(1)
利用 python 分析基金,合理分析数据让赚钱赢在起跑线!(1)
|
4天前
|
存储 JSON 数据格式
Python知识点——高维数据的格式化
Python知识点——高维数据的格式化
5 0
|
4天前
|
Python
Python知识点——文件和数据格式化
Python知识点——文件和数据格式化
7 0
|
4天前
|
存储 机器学习/深度学习 数据可视化
基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表
基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表
9 1
|
4天前
|
数据可视化 BI 索引
【Python】—— matplotlib数据可视化
【Python】—— matplotlib数据可视化
11 1
|
4天前
|
数据可视化 Linux API
【Python】—— 如果使用matplotlib做数据可视化
【Python】—— 如果使用matplotlib做数据可视化
7 0