如何在 Matplotlib 中绘制等轴的正方形图

Suraj Joshi 2023年1月30日 2020年6月9日
  1. set_aspect() 绘制等轴方图
  2. 使用 axis() 方法生成正方形图
如何在 Matplotlib 中绘制等轴的正方形图

我们可以使用 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()

使用 set_aspect 等于 equal.png 的等轴正方形图

plt.xlim(-3,3)
plt.ylim(-3,3)

ax.set_aspect('equal')

它将 X 轴和 Y 轴设置为相同的范围。然后 ax.set_aspect('equal') 将两个轴设置为相等。

当两个轴的范围设置为相同时,上述方法仅产生一个正方形图。要在一般情况下生成正方形图,我们必须使用以下命令手动设置纵横比:

axes.set_aspect(1./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()

使用 set_aspect 一般具有相等轴的正方形图

使用 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')。不遵守用户设置的明确轴限制。
Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Matplotlib Axes