内容目录
绘制多个折线¶
In [1]:
import matplotlib.pyplot as plt
# 数据准备
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 18, 20]
y2 = [5, 8, 9, 12, 15]
y3 = [8, 12, 10, 16, 18]
# 创建图形和子图
plt.figure(figsize=(8, 6))
plt.plot(x, y1, marker='o', color='b', label='Line 1')
plt.plot(x, y2, marker='s', color='r', label='Line 2')
plt.plot(x, y3, marker='^', color='g', label='Line 3')
# 添加图例、标签和标题
plt.legend()
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Multiple Lines Plot')
# 显示网格
plt.grid(True)
# 显示图形
plt.show()
绘制多个子图¶
绘制多个子图时,需要借助plt.subplot或者plt.subplots函数来实现
使用plt.subplot的方法¶
In [6]:
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.linspace(0, 10, 100)
y1 = x
y2 = np.sin(x)
y3 = np.exp(x)
y4 = np.random.normal(0, 1, 100).cumsum()
# 设置画布大小
plt.figure(figsize=(12, 8))
# 创建第一个子图:线性提升的线段,2,2,1代表2行2列第1个子图
plt.subplot(2, 2, 1)
plt.plot(x, y1, color='b')
plt.title('Linear Increase')
# 创建第二个子图:正弦波图
plt.subplot(2, 2, 2)
plt.plot(x, y2, color='r')
plt.title('Sine Wave')
# 创建第三个子图:指数图
plt.subplot(2, 2, 3)
plt.plot(x, y3, color='g')
plt.title('Exponential Growth')
# 创建第四个子图:股票上下波动的图
plt.subplot(2, 2, 4)
plt.plot(x, y4, color='purple')
plt.title('Stock Fluctuations')
# 调整子图布局
plt.tight_layout()
# 显示图形
plt.show()
使用plt.subplots的方法¶
In [15]:
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.linspace(0, 10, 100)
y1 = x
y2 = np.sin(x)
y3 = np.exp(x)
y4 = np.random.normal(0, 1, 100).cumsum()
# 设置画布的显示风格为seaborn-v0_8-dark
plt.style.use('seaborn-v0_8-dark')
# 创建图形和子图
fig, axs = plt.subplots(2, 2, figsize=(12, 8), sharex=True)
# 第一个子图:线性提升的线段
axs[0, 0].plot(x, y1, color='b')
axs[0, 0].set_title('Linear Increase')
axs[0, 0].grid(True)
# 第二个子图:正弦波图
axs[0, 1].plot(x, y2, color='r')
axs[0, 1].set_title('Sine Wave')
axs[0, 1].grid(True)
# 第三个子图:指数图
axs[1, 0].plot(x, y3, color='g')
axs[1, 0].set_title('Exponential Growth')
axs[1, 0].grid(True)
# 第四个子图:股票上下波动的图
axs[1, 1].plot(x, y4, color='purple')
axs[1, 1].set_title('Stock Fluctuations')
axs[1, 1].grid(True)
# 调整子图间距
plt.tight_layout()
# 显示图形
plt.show()
注意事项:
- 1、如果要在一张图上画多个折线,可以直接调用plt.plot传递多个x和y
- 2、如果要在一张图上画多个子图(axes对象),可以使用plt.subplot和plt.subplots方法
- 3、plt.subplot(2, 2, 1) 中数字代表的意义是:第一个数字是2行,第二个数字是2列,第三个数字代表当前是第几个子图。
- 4、plt.subplots是一次性把所有子图都绘制了,但是子图上没有任何内容,需要通过返回值axs来分别设置显示的内容
- 5、plt.style.use(‘seaborn-v0_8-dark’)可以给画图设置显示风格,style的候选项可以查看plot官网说明https://kapeli.com/dash_share?docset_file=Matplotlib&docset_name=Matplotlib&path=matplotlib.org/3.8.4/api/style_api.html%23matplotlib.style.available&platform=matplotlib&repo=Main&source=matplotlib.org/3.8.4/api/style_api.html&version=3.8.4