matplotlib中axes/subplot和axis的用法

一、前言

本文介绍使用 Python 的 Matplotlib 工具实现数据可视化的方法。Matplotlib 是建立 在 NumPy 数组基础上的多平台数据可视化程序库,最初被设计用于完善 SciPy 的生态环境。

二、基本原理

在任何绘图之前,我们需要一个Figure对象, figure 相当于绘画用的画板,而 axes/subplot 则相当于铺在画板上的画布。我们将图像绘制在画布上.而axes和subplot的用法有所不同下面开始介绍。

三、主要用法

1.axes

说明:

这个函数的默认配置是创建一个标准的坐标轴,填满整张图。它还有一个可选参数,由图形坐标系统的四个值构成。这四个值分别表示图形坐标系统的 [bottom, left, width, height](底坐标、左坐标、宽度、高度)数值的取值范围是左下角(原点)为 0,右上角为 1。
用法一:
代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)    #生成数据
fig=plt.figure()          #新建画板
ax1=plt.axes()            #默认坐标系
ax2=plt.axes([0.65,0.65,0.2,0.2])
ax1.plot(x,-x**2)
ax2.plot(x,x**3)

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

注释:
首先将 x 与 y 设置为 0.65(就是坐标轴原点 位于图形高度 65% 和宽度 65% 的位置),然后将 x 与 y 扩展到 0.2(也就是将坐标轴的宽 度与高度设置为图形的 20%)

用法二:

代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)               #生成数据
fig=plt.figure()                     #新建画板
ax1=fig.add_axes([0.1,0.1,0.8,0.8])  #新建画布
ax2=fig.add_axes([0.2,0.5,0.4,0.3])
x=np.linspace(0,10)
ax1.plot(x,x**2)
ax2.plot(x,x**3)

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

这个是使用了add_axes()方法
快速了解 np.linspace()
通过定义均匀间隔创建数值序列。其实,需要指定间隔起始点、终止端,以及指定分隔值总数(包括起始点和终止点);最终函数返回间隔类均匀分布的数值序列
np.linspace(start = 0, stop = 100, num = 5)

则返回
结果如下:array([ 0., 25., 50., 75., 100.])

2. Subplot

说明:

若干彼此对齐的行列子图是常见的可视化任务, plt.subplot() 在一个网格中创建一个子图。这个命令有三个整型参数——将要创建的网格子图行数、列数和索引值,索引值从 1 开始,从左上角到 右下角依次增大。
用法一:
代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)        #生成数据
fig=plt.figure()              #新建画板
plt.subplot(2,2,1)            #(行、列、子图编号) 
plt.plot(x,x)
plt.subplot(2,2,2)
plt.plot(x,2*x)
plt.subplot(2,2,3)
plt.plot(x,x**2)
plt.subplot(2,2,4)
plt.plot(x,x**3)

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

注释:生成2行2列4个图形,编号分别为1,2,3,4.
用法二

代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)        #生成数据
fig=plt.figure()              #新建画板
ax1=fig.add_subplot(1,2,1)    #新建画布(行、列、子图编号)
ax2=fig.add_subplot(1,2,2)   
ax1.plot(x,np.sin(x))
ax2.plot(x,np.cos(x))

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

注释:
这个是使用了add_subplot()方法
如图是建立1行2列的2个图形,索引分别为1和2.

用法三:
代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)         #生成数据
fig=plt.figure()
fig,axes=plt.subplots(1,2)     #(行、列)
axes[0].plot(x,x**2)
axes[1].plot(x,x**3)

结果:
在这里插入图片描述
注释:
生成1行2列2个图形.

3. axis

axis在英文里是坐标轴的意思,通过传入[xmin, xmax, ymin, ymax] 对应的值,plt.axis() 方法可以让你用一行代码设置 x 和 y 的限值,它还可以按照图形的内容自动收紧坐标轴,不留空白区域 .
用法一:
代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)
plt.plot(x,np.sin(x))
plt.axis([-1,11,-1.5,1.5])

结果:
在这里插入图片描述
注释:本次设置了x和y的限值。
用法二:
代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)
plt.plot(x,np.sin(x))
plt.axis("tight")

结果:
在这里插入图片描述
注释:本次使图形内容自动收紧坐标轴。

### axis axes 在编程与数据可视化中的具体含义 #### 定义与基本概念 在 IT 领域,尤其是涉及编程数据可视化时,“axisaxes” 是两个常见的术语。它们主要用于描述坐标系以及图形对象的组成部分。 - **Axis** 表示单一轴线,在二维空间中通常是 X 轴或 Y 轴;而在三维空间中则可能还包括 Z 轴[^1]。 - **Axes** 则表示一组或多条轴线构成的整体结构,通常指代整个图表区域内的坐标系统及其关联元素[^3]。 #### 数据可视化中的应用实例 当使用 Python 进行数据可视化时(例如通过 Matplotlib 或 Seaborn 库),这两个词频繁出现: - `ax` 对象代表的是 Axes 实例,它包含了所有的绘图细节如标签、刻度线等,并且允许开发者对其进行高度定制化操作[^2]。 ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() # 创建一个 figure 一个 axes 对象 ax.plot([1, 2, 3], [4, 5, 6]) # 使用该 axes 来绘制一条简单的折线图 plt.show() ``` 上述代码片段展示了如何创建并利用一个单独的 Axes 对象来完成基础绘图任务。 #### 编程环境下的技术实现 对于某些高级功能来说,区分两者尤为重要。比如调整某个特定方向上的参数设置就需要明确指定对应的 Axis: ```python from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 设置各个 axis 的范围 ax.set_xlim(-10, 10) ax.set_ylim(-10, 10) ax.set_zlim(-10, 10) # 更改 x-axis 上的文字大小 for tick in ax.xaxis.get_major_ticks(): tick.label.set_fontsize(14) plt.show() ``` 此段脚本进一步说明了在一个更复杂的场景——即三维立体图像渲染过程中,怎样分别控制不同维度 (X,Y,Z) 下的具体表现形式。 综上所述,虽然二者仅一字之差却各自承担着截然不同的角色定位:前者聚焦于单个维度的操作管理;后者则是整体布局规划的核心载体之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值