微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用matplotlib.pyplot画一个圆

如何解决如何用matplotlib.pyplot画一个圆

我正在尝试使用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)

解决方法

您的代码正确。您的图形的长宽比很可能不相等。将figsize设置为相等的参数应该可以解决此问题

theta = np.linspace(0,2*np.pi,100)
r= r/2
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.figure(figsize=(10,10))
plt.plot(x,y)

figure of circle

,

使用pyplot.axis('equal')方法(documentation)。这将告诉matplotlib自动保持x和y轴缩放比例相等,并且即使您更改轴限制也可以使用:

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0,100)
r= 2
x = r*np.cos(theta)
y = r*np.sin(theta)
plt.plot(x,y)
plt.axis('equal')
plt.show()

Plot of a circle that looks circular

如您所见,即使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,y)
plt.axis('scaled')
plt.ylim(-3,3)
plt.xlim(-3,3)
plt.show()

Plot of circle with equal limits on the x and y axes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。