IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【现学现用】matplotlib画图(plt与ax的关系add_subplot与subplots等) -> 正文阅读

[Python知识库]【现学现用】matplotlib画图(plt与ax的关系add_subplot与subplots等)

学习python画图是必需掌握的技能,不能每当画图便寻求搜索引擎的帮助,还是自己梳理一遍吧!本篇文章还是围绕如何快速应用而展开,当然也要知晓一些所以然。

1 疑惑

1.1 plt还是ax

看了许多书本中的画图示例,有直接在plt上画的,也有用ax画的,这两者究竟是什么,又有哪些区别呢。

从下面这一行代码进行解读:

fig,ax=plt.subplots()
  • 什么是fig?

在任何绘图之前,我们需要一个Figure对象,至少要有这一层才可以画。.plt 对应的就是最高层 scripting layer。这就是为什么它简单上手,但要调细节就不灵了。即:

fig=plt.figure()
  • 什么是ax,axes?

axis 指的就是 x 坐标轴,y 坐标轴等,代表的是一根坐标轴。而 axes 在英文里是 axis 的复数形式,也就是说,axes 代表的其实是 figure 当中的一套坐标轴。之所以说一套而不是两个坐标轴,是因为如果你画三维的图,axes 就代表 3 根坐标轴了。所以,在一个 figure 当中,每添加一次 subplot ,其实就是添加了一套坐标轴,也就是添加了一个 axes,放在二维坐标里就是你添加了两根坐标轴,分别是 x 轴和 y 轴。

ax.plot 是在 artist layer 上操作。基本上可以实现任何细节的调试。

[以上源自第一个参考链接的评论区]

ax=fig.add_subplot(1,1,1) # 前两个参数代表子图的行数和列数,第三个参数表示代表第1个子图

在这里插入图片描述

以上便是对fig,ax=plt.subplots()的详细分解。

2 add_subplot()与subplots()

2.1 add_subplot()

这两者的主要区别是前者返回一个对象,后者可以返回一个对象数组即多个对象,具体参见下方示例。

  • add_subplot(nrows, ncols, index)

通过自己创建的几个示例,大致搞懂了add_subplot(),相当于在我们创建的figure画布上通过添加ax堆叠。

示例1:创建折线图

在(5,4)大小的画布上画折线图,只添加一个ax的情形

x=[1,2,3,4,5]
y=[3,1,4,5,2]
fig=plt.figure(figsize=(5,4))
ax=fig.add_subplot(1,1,1)
ax.plot(x,y)
plt.show()

在这里插入图片描述

示例2:两张图表情形

x1=[1,2,3,4,5]
y1=[3,1,4,5,2]
x2=[1,2,3,4,5]
y2=[3,1,4,5,2]
fig=plt.figure(figsize=(5,4))
ax1=fig.add_subplot(1,2,1) #将原先的figsize的尺寸切分成1行,两列的大小,选择第一个区域
ax2=fig.add_subplot(1,2,2) #选择第二个区域
ax1.plot(x,y)
ax2.scatter(x,y) #画散点图
plt.show()

效果:
在这里插入图片描述

示例3:添加subplot时做不同的切分

x1=[1,2,3,4,5]
y1=[3,1,4,5,2]
x2=[1,2,3,4,5]
y2=[3,1,4,5,2]
fig=plt.figure(figsize=(5,4))
ax1=fig.add_subplot(1,2,1)
ax2=fig.add_subplot(1,3,2) #代码与上方区别,在于这里切分为1行3列
ax1.plot(x,y)
ax2.scatter(x,y)
plt.show()

效果:
在这里插入图片描述

通过最终呈现效果可以发现,后添加的ax2挡在了ax1的上方,相信通过上方的3个示例对fig.add_subplot方法会有清晰的认识。

2.2 subplots()

示例1:单行或单列

x1=[1,2,3,4,5]
y1=[3,1,4,5,2]
x2=[1,2,3,4,5]
y2=[3,1,4,5,2]
fig=plt.figure(figsize=(5,4))
axes=fig.subplots(2,1) #将原有fig切分为两行一列,返回数组
axes[0].plot(x1,y1) #对第一个ax进行操作
axes[1].scatter(x2,y2)
plt.show()

效果:
在这里插入图片描述

示例2:多行多列(按照二维数组来表示)

2X2,总共有4个子图,选择其中两个作图。

x1=[1,2,3,4,5]
y1=[3,1,4,5,2]
x2=[1,2,3,4,5]
y2=[3,1,4,5,2]
fig=plt.figure(figsize=(5,4))
axes=fig.subplots(2,2)
axes[0,1].plot(x1,y1) #第0行,第一列,确定方位
axes[1,1].scatter(x2,y2) # 第1行,第1列
plt.show()

效果:
在这里插入图片描述

3 基本使用

如果能把下面这张图搞懂应用,大概就入门了吧!方法里还有诸如颜色等很多参数,这个边用边学找到自己常用的功能即可。
在这里插入图片描述

3.1 坐标轴标签、标题

以单图为例,许多常用参数(坐标轴、标题)的设置都是在ax.set()中进行

x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set(xlabel='this is x_lable',title='This is a example')
plt.show()

在这里插入图片描述

3.2 设置图例legend

x1 = np.linspace(0, 2 * np.pi, 200)
y1 = np.sin(x)
x2=[1,2,3,4,5]
y2=[3,1,4,5,2]
fig, ax = plt.subplots()
ax.plot(x1,y1,label='sin')
ax.plot(x2,y2,label='line')
ax.set(xlabel='x_lable',ylabel='y_label',title='This is a example')
ax.legend(loc='best') #这里可以设置legend位置,有很多设置哦!
# 等价于loc=0
plt.show()

效果:
在这里插入图片描述

3.3 在图表中添加中文

# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

通过搜索发现上面两行代码一般都会加在前面,自行验证下效果吧!

总结

写到这儿,还有许多方法、参数并未介绍,少即是多吧!边学边用再补充,可参考第4个参考链接了解更多基本用法。

References

1:matplotlib:先搞明白plt. /ax./ fig再画 - 知乎 (zhihu.com)

2:fig, ax = plt.subplots(figsize = (a, b))解析(最清晰的解释)_我是管小亮的博客-CSDN博客_figsize

3:Basic Usage — Matplotlib 3.5.1 documentation

4:Python–Matplotlib(基本用法)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:06:36  更:2022-04-04 12:06:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:37:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码