matplotlib库的使用!☃️

matplotlib库的使用

1.导入

1
import matplotlib.pyplot as plt

2.启用

在matplotlib中,plt.ion()是一个函数调用,用于启用交互式模式(interactive mode)。交互式模式允许在图形窗口打开时动态更新和修改图形,而不需要重新绘制整个图形。这对于实时数据可视化和动画非常有用。

在调用plt.ion()之后,使用plt.plot()或其他绘图函数创建的图形将在窗口中立即显示,而不需要等到整个图形创建完成。此外,可以通过修改已创建的图形对象的属性或添加新的绘图元素来动态更新图形,而不必重新绘制整个图形。

1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt

# 启用交互式模式
plt.ion()

# 创建一个空图形窗口
plt.figure()

# 添加一些数据点并实时更新
for i in range(10):
plt.plot([i], [i], 'ro') # 添加一个红色的点
plt.pause(0.5) # 暂停0.5秒,允许图形更新

在这个例子中,plt.ion()使得每次调用plt.plot()都会立即更新图形窗口,而不必等到所有点都添加完成。

3.窗口

1
fig = plt.figure(1)

这行代码创建了一个新的图形窗口,并将其存储在变量 fig 中。在这个例子中,数字参数 1 是一个可选的参数,表示创建的图形的标识符或编号。如果没有提供这个参数,matplotlib会自动为图形分配一个编号。

这行代码的效果类似于在交互式模式下调用 plt.figure() 函数来创建一个新的图形窗口,但是它将返回的图形对象存储在变量 fig 中,以便之后可以方便地引用和操作它。

在创建图形之后,你可以使用 fig 对象进行各种操作,例如添加子图、设置图形属性、保存图形等。示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import matplotlib.pyplot as plt

# 创建一个新的图形窗口
fig = plt.figure(1)

# 添加一个子图
ax = fig.add_subplot(111)
ax.plot([1, 2, 3], [4, 5, 6])

# 设置图形标题
fig.suptitle('My First Figure')

# 显示图形
plt.show()

在这个示例中,fig 对象用于添加子图、设置标题,并最后显示图形。

4.窗口方法

1.add_subplot()

具体来说,add_subplot() 方法接受三个参数:行数、列数和子图编号。

例如:参数(223)表示图形窗口将被分割成一个 2x2 的网格,并且当前子图是这个网格中的第三个子图。

1
2
3
4
5
6
7
8
9
mport matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建一个新的图形窗口
fig = plt.figure()

# 添加两个 3D 投影的子图
ax = fig.add_subplot(223, projection='3d')
ax1 = fig.add_subplot(222, projection='3d')

效果:

2.scatter()

窗口使用:

1
2
3
4
5
6
7
8
9
10
11
import matplotlib.pyplot as plt

# 创建一个新的图形窗口
plt.figure()

# 创建一些数据
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]

# 绘制二维散点图
plt.scatter(x, y)

子图使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建一个新的图形窗口
fig = plt.figure()

# 添加一个 3D 投影的子图
ax = fig.add_subplot(223, projection='3d')
ax1 = fig.add_subplot(222, projection='3d')

# 绘制三维散点图
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
z = [1, 2, 3, 4, 5]
ax.scatter(x, y, z)

效果:

3.plot()

plot 函数用于绘制线图,它可以在二维或三维空间中显示数据点之间的连接关系。线图通常用于显示数据随某个变量(通常是 x 轴变量)的变化情况,例如时间序列数据或者变量之间的函数关系。

窗口使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import matplotlib.pyplot as plt

# 创建一个新的图形窗口
plt.figure()

# 创建一些数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 绘制二维线图
plt.plot(x, y)

# 设置图形标题和坐标轴标签
plt.title('2D Line Plot')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图形
plt.show()

子图使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建一个新的图形窗口
fig = plt.figure()

# 添加一个 3D 投影的子图
ax = fig.add_subplot(111, projection='3d')

# 绘制三维散点图
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
z = [1, 2, 3, 4, 5]
ax.plot(x, y, z)

# 设置图形标题和坐标轴标签
ax.set_title('3D Scatter Plot')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 显示图形
plt.show()

效果:

5.清除

1
plt.clf()

plt.clf() 是 matplotlib 中的一个函数,用于清除当前图形窗口中的所有绘图元素,使得窗口变为空白。其作用类似于清除画布上的所有内容,相当于 “clear figure”。

具体而言,plt.clf() 会清除当前活动的图形(active figure),这是通过最近创建或获取的图形来识别的。调用 plt.clf() 后,图形窗口仍然保持打开状态,但其中的内容被清除。

这在需要更新图形内容或者需要重新绘制时非常有用,而不必关闭窗口并再次创建新的图形。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import matplotlib.pyplot as plt

# 创建一个新的图形窗口
plt.figure()

# 绘制一些数据
plt.plot([1, 2, 3], [4, 5, 6])

# 显示图形
plt.show()

# 等待用户交互后清除图形内容
plt.pause(3) # 等待3秒钟
plt.clf() # 清除图形内容

# 绘制新的数据
plt.plot([4, 5, 6], [7, 8, 9])

# 显示更新后的图形
plt.show()

6.暂停

plt.pause(1) 是一个 matplotlib 函数调用,用于暂停程序执行指定的时间(以秒为单位)。在这段时间内,程序会暂停执行,并且图形窗口将保持显示状态,以便用户有足够的时间观察图形。

通常,plt.pause() 函数用于交互式图形显示中,特别是在需要动态更新图形或在图形窗口中显示一段时间后等待用户交互时。在这段暂停期间,用户可以浏览图形,然后程序会在指定的时间后继续执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import matplotlib.pyplot as plt

# 创建一个新的图形窗口
plt.figure()

# 绘制一些数据
plt.plot([1, 2, 3], [4, 5, 6])

# 显示图形
plt.show()

# 等待1秒钟
plt.pause(1)

# 继续执行后续代码
print("Continuing execution...")

7.设置

1
2
3
4
# 设置图形标题和坐标轴标签
plt.title('Simple Plot')
plt.xlabel('X')
plt.ylabel('Y')

8.显示

1
2
# 显示图形
plt.show()

matplotlib库的使用!☃️
https://yangchuanzhi20.github.io/2024/04/11/算法/python/python库的使用/python中matplotlib库的使用/
作者
白色很哇塞
发布于
2024年4月11日
许可协议