Matplotlib 如何强制设定坐标轴范围
在使用Matplotlib/pyplot进行数据可视化时,我们经常需要对坐标轴的范围进行设定。一般情况下,Matplotlib/pyplot会自动根据给定数据的范围来自适应地设定坐标轴的范围,但是有时候我们希望强制设定特定的坐标轴范围,以更好地进行可视化分析。
阅读更多:Matplotlib 教程
方法一:使用xlim和ylim函数
Matplotlib/pyplot提供了xlim和ylim函数用于设定x轴和y轴的范围。例如,我们可以使用如下代码将x轴的范围设定在-5到5之间,y轴的范围设定在0到10之间:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.sin(x) / x
plt.plot(x, y, label="y=sin(x)/x")
plt.xlim(-5, 5)
plt.ylim(0, 10)
plt.legend()
plt.show()
需要注意的是,如果数据超出了设定的坐标轴范围,那么超出的部分将不会被显示出来。
方法二:使用plt.axis函数
除了使用xlim和ylim函数来设定坐标轴范围之外,Matplotlib/pyplot还提供了一个更为通用的函数:plt.axis。这个函数可以同时设定x轴和y轴的范围。
plt.axis的一般用法是plt.axis([xmin, xmax, ymin, ymax])。例如,下面的代码将x轴和y轴的范围都设定在-5到5之间:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.sin(x) / x
plt.plot(x, y, label="y=sin(x)/x")
plt.axis([-5, 5, -3, 3]) # 设定坐标轴范围
plt.legend()
plt.show()
需要注意的是,plt.axis([xmin, xmax, ymin, ymax])中的xmin、xmax、ymin、ymax都是数值,而不是坐标轴的名字。
方法三:使用set_xlim和set_ylim方法
除了使用xlim、ylim和plt.axis等函数之外,我们还可以直接调用坐标轴对象的set_xlim和set_ylim方法来设定坐标轴范围。例如,我们可以使用如下代码将x轴的范围设定在-5到5之间,y轴的范围设定在0到10之间:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.sin(x) / x
fig, ax = plt.subplots()
ax.plot(x, y, label="y=sin(x)/x")
ax.set_xlim(-5, 5)
ax.set_ylim(0, 10)
ax.legend()
plt.show()
需要注意的是,set_xlim和set_ylim方法都是直接调用坐标轴对象(即Axes对象)的方法,而不是Matplotlib/pyplot模块的函数。
方法四:使用plt.gca函数
在Matplotlib/pyplot中,我们可以使用plt.gca函数来获得当前的坐标轴对象(即Axes对象)。然后,我们可以直接调用坐标轴对象的set_xlim和set_ylim方法来设定坐标轴范围。例如,下面的代码将x轴和y轴的范围都设定在-5到5之间:
import matplotlib.pyplotas plt
import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.sin(x) / x
plt.plot(x, y, label="y=sin(x)/x")
ax = plt.gca() # 获得当前的坐标轴对象
ax.set_xlim(-5, 5)
ax.set_ylim(0, 10)
plt.legend()
plt.show()
需要注意的是,使用plt.gca函数获得的是当前的坐标轴对象,因此在有多个坐标轴的情况下,需要特别注意选取正确的坐标轴对象。
方法五:使用plt.subplots函数
在Matplotlib/pyplot中,我们可以使用plt.subplots函数来创建一个新的图形,并获得包含所有坐标轴对象的列表。然后,我们可以直接调用坐标轴对象的set_xlim和set_ylim方法来设定坐标轴范围。例如,下面的代码创建了一个具有两个坐标轴的图形,并将x轴和y轴的范围都设定在-5到5之间:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 1000)
y1 = np.sin(x) / x
y2 = np.cos(x) / x
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
axs[0].plot(x, y1, label="y=sin(x)/x")
axs[0].set_xlim(-5, 5)
axs[0].set_ylim(0, 1)
axs[1].plot(x, y2, label="y=cos(x)/x")
axs[1].set_xlim(-5, 5)
axs[1].set_ylim(0, 1)
plt.legend()
plt.show()
需要注意的是,plt.subplots函数可以自动创建多个坐标轴对象,并将它们保存在一个列表中。
总结
Matplotlib/pyplot提供了多种方法来设定坐标轴范围,包括使用xlim、ylim、plt.axis、set_xlim/set_ylim、plt.gca和plt.subplots等函数和方法。不同的方法适用于不同的情况,我们需要根据具体的需求来选择合适的方法。
极客教程