【发布时间】:2020-09-20 22:18:04
【问题描述】:
我正在尝试使用 pyplot 画一个圆圈。但是,在情节中看起来像一个椭圆。
变量 r 可以有任何值。
theta = np.linspace(0, 2*np.pi, 100)
r= r/2
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.plot(x,y)
【问题讨论】:
标签: python matplotlib geometry
我正在尝试使用 pyplot 画一个圆圈。但是,在情节中看起来像一个椭圆。
变量 r 可以有任何值。
theta = np.linspace(0, 2*np.pi, 100)
r= r/2
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.plot(x,y)
【问题讨论】:
标签: python matplotlib geometry
使用pyplot.axis('equal') 方法(documentation)。这将告诉 matplotlib 自动保持 x 和 y 轴缩放相等,即使您更改轴限制也将起作用:
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(0, 2*np.pi, 100)
r= 2
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.plot(x,y)
plt.axis('equal')
plt.show()
如您所见,即使 x 和 y 轴有不同的限制,这也会导致圆成为圆。如果将其他项目添加到绘图中,它还允许自动缩放,并且当通过添加轴标签或绘图标题修改绘图区域时,它将保持纵横比。
Matplotlib 文档中还有其他示例:Axis Equal Demo。
另一个选项是使用pyplot.axis('scaled'),它会更改绘图框的尺寸以使轴缩放相等。不同的是,此选项在设置后会阻止进一步的自动缩放。
例如,对于“缩放”轴,matplotlib 将尊重您为 x 轴和 y 轴范围指定的值:
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(0, 2*np.pi, 100)
r= 2
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.plot(x,y)
plt.axis('scaled')
plt.ylim(-3, 3)
plt.xlim(-3, 3)
plt.show()
【讨论】: