如何在 Matplotlib 中绘制等轴的正方形图
Suraj Joshi
2023年1月30日
我们可以使用 set_aspect()
方法设置绘图的纵横比以使其成为正方形绘图,而 axis()
方法也可以用于在 Matplotlib 中制作具有相等轴的正方形绘图。
set_aspect()
绘制等轴方图
我们可以使用 matplotlib.axes.Axes.set_aspect()
函数设置长宽比。如果在函数中使用等于作为长宽比,则得到的图在 X 轴和 Y 轴上从数据点到绘图单位的缩放比例相同。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 100)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(x, y)
plt.xlim(-3, 3)
plt.ylim(-3, 3)
ax.set_aspect("equal", adjustable="box")
plt.xlabel("x")
plt.ylabel("sinx")
plt.show()
plt.xlim(-3, 3)
plt.ylim(-3, 3)
ax.set_aspect("equal")
它将 X 轴和 Y 轴设置为相同的范围。然后 ax.set_aspect('equal')
将两个轴设置为相等。
当两个轴的范围设置为相同时,上述方法仅产生一个正方形图。要在一般情况下生成正方形图,我们必须使用以下命令手动设置纵横比:
axes.set_aspect(1.0 / axes.get_data_ratio())
axes.get_data_ratio()
获取原始绘图数据的比率。倒数的值传递给 set_aspect()
以使轴相等,而无需手动设置轴的限制。
代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 100)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(x, y)
ax.set_aspect(1.0 / ax.get_data_ratio(), adjustable="box")
plt.xlabel("x")
plt.ylabel("sinx")
plt.show()
使用 axis()
方法生成正方形图
如果我们将 "square"
作为参数传递给 matplotlib.pyplot.axis()
,则会创建一个正方形图其中两个轴所占的范围等于图中的长度。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axis("square")
plt.xlabel("x")
plt.ylabel("sinx")
plt.show()
Warning
此解决方案中的轴范围是自动选择的。它等于
ax.set_aspect('equal', adjustable='datalim')
。不遵守用户设置的明确轴限制。作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn