Matplotlib 刻度范围函数
刻度范围指的是坐标轴的取值区间,包括 x 轴和 y 轴的取值区间。刻度范围是否合理,会直接影响图表展示的效果。
在 Matplotlib 中,我们可以使用 xlim() 函数来定义 x 轴的范围,也可以使用 ylim() 函数来定义 y 轴的范围。
语法:
plt.xlim(left=None, right=None)
plt.ylim(bottom=None, top=None)说明:
xlim() 和 ylim() 函数用于设置或获取当前坐标轴的范围。
- 设置范围:当传入 left 和 right 参数时,xlim() 函数会将 x 轴的范围设置为 [left, right],这个范围包括 left 也包括 right。同样地,当传入 bottom 和 top 参数时,ylim() 函数会将 y 轴的范围设置为 [bottom, top]。left、right、bottom 和 top 可以是数值,也可以是 None,如果设置为 None,则表示保持当前的下限或上限。
- 获取范围:当不传入任何参数时,xlim() 函数会返回一个包含当前 x 轴范围的元组 (left, right)。ylim() 函数也会返回一个包含当前 y 轴范围的元组 (bottom, top)。
注意: Matplotlib 默认会根据绘制的数据自动调整坐标轴的范围(自动缩放)。使用 xlim() 和 ylim() 函数会覆盖这种自动缩放的行为。
Matplotlib 刻度范围示例
接下来,我们通过几个简单的例子来讲解一下 Matplotlib 是如何设置刻度范围的。
示例 1:Matplotlib 改变刻度范围
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = range(1, 16)
y = [36.0, 36.1, 36.6, 36.2, 36.4, 36.5, 36.0, 36.2, 36.4, 36.8, 36.7, 36.1, 36.6, 36.5, 36.7]
plt.plot(x, y, marker='o', markerfacecolor='white') # 节点为空心圆
# 定义标题
plt.title('15日体温变化')
plt.xlabel('日期')
plt.ylabel('体温')
# 刻度范围
plt.xlim(1, 14)
plt.ylim(35, 45)
# 显示
plt.show()运行之后,效果如下图所示。

分析:
“刻度标签” 和 “刻度范围” 是不一样的,“刻度标签” 是一一对应到坐标轴上的。而 “刻度范围” 仅仅是定义一个范围,然后刻度是由 Matplotlib 自动调整或手动调整。对于这两个,小伙伴们应该多多对比一下,其实并不难理解。
示例 2:刻度范围使用逆序排列
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = range(1, 16)
y = [36.0, 36.1, 36.6, 36.2, 36.4, 36.5, 36.0, 36.2, 36.4, 36.8, 36.7, 36.1, 36.6, 36.5, 36.7]
plt.plot(x, y, marker='o', markerfacecolor='white') # 节点为空心圆
# 定义标题
plt.title('15日体温变化')
plt.xlabel('日期')
plt.ylabel('体温')
# 逆序排列
plt.xlim(15, 1)
# 显示
plt.show()运行之后,效果如下图所示。

分析:
在这个例子中,我们使用 xlim() 函数来将 “日期” 的刻度标签值按降序排列。实现方式很简单,只需要将原来 xlim(left, right) 中的 left 和 right 这两个调换位置就可以了。同样的方法也适用于 ylim() 函数,调换 bottom 和 top 的位置可以实现 y 轴的逆序排列。
除了使用 plt.xlim() 和 plt.ylim() 函数,我们还可以通过获取当前的 Axes 对象,然后调用其 set_xlim() 和 set_ylim() 方法来设置刻度范围,比如下面这个例子。
示例 3:其他设置刻度范围的方法
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = range(1, 16)
y = [36.0, 36.1, 36.6, 36.2, 36.4, 36.5, 36.0, 36.2, 36.4, 36.8, 36.7, 36.1, 36.6, 36.5, 36.7]
plt.plot(x, y, marker='o', markerfacecolor='white') # 节点为空心圆
# 定义标题
plt.title('15日体温变化')
plt.xlabel('日期')
plt.ylabel('体温')
# 获取当前的 Axes 对象并设置刻度范围
ax = plt.gca()
ax.set_xlim(1, 14)
ax.set_ylim(35, 45)
# 显示
plt.show()运行之后,效果如下图所示。

分析:
在这个例子中,我们首先使用 plt.gca() 获取了当前的 Axes 对象。然后,分别使用 ax.set_xlim(1, 14) 和 ax.set_ylim(35, 45) 来设置 x 轴和 y 轴的刻度范围。这种方法在需要对坐标轴进行更复杂的操作时是非常有用的。
