绘制不同类型的线条
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3])
y = np.array([2, 4, 6])
# 不同线型的示例
plt.plot(y, marker='*', linestyle='-') # 实线
plt.plot(y + 1, marker='o', linestyle='--') # 虚线
plt.plot(y + 2, marker='x', linestyle='-.') # 点划线
plt.plot(y + 3, marker='d', linestyle=':') # 点线
# 自定义线型
plt.plot(y + 4, marker='s', linestyle=(0, (5, 10))) # 自定义:5个单位实线,10个单位空格
plt.show()
添加中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
创建多个子图
import matplotlib.pyplot as plt
import numpy as np
# 生成从 0 到 10 的 100 个均匀间隔的数值,用于 x 轴
x = np.linspace(0, 10, 100)
# 创建一个新的图形对象,设置图形的大小为 10x8 英寸
plt.figure(figsize=(10, 8))
# 创建第一个子图,设置为 2 行 2 列的网格中的第 1 个子图
plt.subplot(2, 2, 1) # 参数解释:2 行,2 列,第 1 个位置
plt.plot(x, np.sin(x)) # 绘制 sin(x) 函数的曲线
plt.title('Sin(x)') # 设置第一个子图的标题为 "Sin(x)"
# 创建第二个子图,设置为 2 行 2 列的网格中的第 2 个子图
plt.subplot(2, 2, 2) # 参数解释:2 行,2 列,第 2 个位置
plt.plot(x, np.cos(x)) # 绘制 cos(x) 函数的曲线
plt.title('Cos(x)') # 设置第二个子图的标题为 "Cos(x)"
# 创建第三个子图,设置为 2 行 2 列的网格中的第 3 个子图
plt.subplot(2, 2, 3) # 参数解释:2 行,2 列,第 3 个位置
plt.plot(x, np.tan(x)) # 绘制 tan(x) 函数的曲线
plt.title('Tan(x)') # 设置第三个子图的标题为 "Tan(x)"
# 创建第四个子图,设置为 2 行 2 列的网格中的第 4 个子图
plt.subplot(2, 2, 4) # 参数解释:2 行,2 列,第 4 个位置
plt.plot(x, -np.sin(x)) # 绘制 -sin(x) 函数的曲线
plt.title('-Sin(x)') # 设置第四个子图的标题为 "-Sin(x)"
# 自动调整子图之间的空隙,避免标题、轴标签等元素重叠
plt.tight_layout()
# 显示图形
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# 设置字体和负号显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 定义第一个数据集
x = np.array([1, 2, 3])
y = np.array([3, 5, 7])
# 创建 1 行 2 列的子图布局,并选择第一个子图
plt.subplot(1, 2, 1)
plt.title('line1') # 设置第一个子图的标题
plt.xlabel('中文') # 设置 x 轴标签,支持中文
plt.ylabel('值') # 设置 y 轴标签
plt.grid(True) # 显示网格
plt.plot(x, y, linestyle='dotted') # 绘制点线样式的曲线
# 定义第二个数据集
x = np.array([1, 2, 3])
y = np.array([3, 5, 70])
# 创建 1 行 2 列的子图布局,并选择第二个子图
plt.subplot(1, 2, 2)
plt.plot(x, y, marker='o') # 绘制带有圆形标记的曲线
plt.title('line2') # 设置第二个子图的标题
plt.xlabel('x') # 设置 x 轴标签
plt.ylabel('y') # 设置 y 轴标签
plt.grid(True) # 显示网格
# 自动调整子图之间的空隙,避免重叠
plt.tight_layout()
# 显示图形
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# 生成 x 的数值,从 0 到 10,包含 100 个均匀间隔的点
x = np.linspace(0, 10, 100)
# 计算 y1 为 sin(x) 函数的值
y1 = np.sin(x)
# 计算 y2 为 cos(x) 函数的值
y2 = np.cos(x)
# 创建一个新的图形对象,设置图形大小为 10x6 英寸
plt.figure(figsize=(10, 6))
# 使用 subplot2grid 创建子图
# (2, 2) 定义一个 2 行 2 列的网格布局
# (0, 0) 指定子图从第 1 行第 1 列开始
# colspan=2 表示该子图横跨两列
ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2) # 占据顶部的两列位置
# 使用 subplot2grid 创建第二个子图
# (2, 2) 定义一个 2 行 2 列的网格布局
# (1, 0) 指定子图位于第 2 行第 1 列
ax2 = plt.subplot2grid((2, 2), (1, 0)) # 左下角的子图
# 使用 subplot2grid 创建第三个子图
# (2, 2) 定义一个 2 行 2 列的网格布局
# (1, 1) 指定子图位于第 2 行第 2 列
ax3 = plt.subplot2grid((2, 2), (1, 1)) # 右下角的子图
# 在第一个子图 ax1 中绘制 sin(x) 的曲线
ax1.plot(x, y1, label='Sin(x)') # 绘制 sin(x) 曲线,并添加标签 'Sin(x)'
ax1.set_title('Sine Function') # 设置第一个子图的标题
ax1.grid(True) # 显示网格线
ax1.legend() # 显示图例
# 在第二个子图 ax2 中绘制 cos(x) 的曲线
ax2.plot(x, y2, color='r', label='Cos(x)') # 绘制 cos(x) 曲线,颜色为红色,标签为 'Cos(x)'
ax2.set_title('Cosine Function') # 设置第二个子图的标题
ax2.grid(True) # 显示网格线
ax2.legend() # 显示图例
# 在第三个子图 ax3 中绘制 -sin(x) 的曲线
ax3.plot(x, -y1, linestyle='--', label='-Sin(x)') # 绘制 -sin(x) 曲线,样式为虚线,标签为 '-Sin(x)'
ax3.set_title('Negative Sine Function') # 设置第三个子图的标题
ax3.grid(True) # 显示网格线
ax3.legend() # 显示图例
# 自动调整子图之间的空隙,避免内容重叠
plt.tight_layout()
# 显示所有绘制的图形
plt.show()
x = np.linspace(0, 10, 100)用于生成随机均匀的数。
import matplotlib.pyplot as plt
import numpy as np
# 生成 x 轴的数值,从 0 到 10,共 100 个等间隔的点
x = np.linspace(0, 10, 100)
# 计算 y 轴的数值,这里是 sin(x) 函数的值
y = np.sin(x)
# 绘制 sin(x) 曲线
plt.plot(x, y, label='Sin(x)')
# 设置图形标题和标签
plt.title('Sine Function Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图例
plt.legend()
# 显示网格线,便于观察数据
plt.grid(True)
# 显示绘图
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# 生成 x 的数值,从 0 到 10,共 100 个等间隔的点
x = np.linspace(0, 10, 100)
y1 = x * x
# 设置图像大小,宽度为 12 英寸,高度为 8 英寸
plt.figure(figsize=(12, 8))
# 创建第一个子图,占据网格的 (0, 0) 位置,即第一行第一列
ax1 = plt.subplot2grid((2, 2), (0, 0))
ax1.plot(x, y1, label='function')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('x and y')
ax1.grid(True)
# 创建第二个子图,占据网格的 (0, 1) 位置,即第一行第二列
y2 = -y1
ax2 = plt.subplot2grid((2, 2), (0, 1))
ax2.plot(x, y2, label='function')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('x and -y')
ax2.grid(True)
# 创建第三个子图,占据网格的 (1, 0) 位置,并跨越两列
y3 = np.sin(x)
ax3 = plt.subplot2grid((2, 2), (1, 0), colspan=2)
ax3.plot(x, y3, label='sin(x)')
ax3.set_xlabel('x')
ax3.set_ylabel('sin(x)')
ax3.set_title('Sine Function')
ax3.grid(True)
# 自动调整子图之间的空隙,防止重叠
plt.tight_layout()
# 显示图形
plt.show()
-
plt.subplot2grid((2, 2), (0, 0))
:创建一个子图在 2x2 的网格中,位于第一行第一列的位置。 -
plt.subplot2grid((2, 2), (0, 1))
:创建另一个子图在同一行的第二列。 -
plt.subplot2grid((2, 2), (1, 0), colspan=2)
:创建一个子图占据第二行的所有列(跨两列),从而在底部形成一个宽的子图。
ax1
的常见用法:
- 设置标题:
ax1.set_title('Title')
用于设置该子图的标题。 - 设置轴标签:
ax1.set_xlabel('x')
和ax1.set_ylabel('y')
用于设置 x 轴和 y 轴的标签。 - 绘制数据:
ax1.plot(x, y)
在ax1
这个子图上绘制数据。 - 显示网格线:
ax1.grid(True)
在该子图中显示网格线。
# 创建第一个子图,并将它的引用赋值给 ax1
ax1 = plt.subplot2grid((2, 2), (0, 0))
ax1.plot(x, y1, label='function') # 在 ax1 子图上绘制数据
ax1.set_xlabel('x') # 设置 x 轴标签
ax1.set_ylabel('y') # 设置 y 轴标签
ax1.set_title('x and y') # 设置标题
ax1.grid(True) # 显示网格线
在一幅图中绘制两种曲线