如何画扰动圆?

2024-05-26 04:22:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如何画一个扰动圆?你知道吗

import matplotlib.pyplot as plt

import numpy as np

e=0.3

ylist = np.linspace(0, 2*np.pi, 20)

R=1+e*np.sin(2*ylist)


circle1 = plt.Circle((0, 0),R)

fig, ax = plt.subplots()

ax.add_artist(circle1)

plt.axis([-3, 3, -3, 3])

Tags: importnumpymatplotlibasnppifigplt
1条回答
网友
1楼 · 发布于 2024-05-26 04:22:42

不能将列表作为半径设置为Circle。 可能还有其他方法来绘制“扰动”圆,但我发现使用plt.contour()绘制参数曲线非常直观。你知道吗

半径为R的完美圆的参数曲线是

0 = x**2 + y**2 - R

在这种情况下

0 = x**2 + y**2 - 1 -e*np.sin(2*np.arctan(y/x)) =: f

所以我们可以绘制f(x,y),在对contour(X,Y,Z, levels)的调用中,我们将levels设置为0。你知道吗

import matplotlib.pyplot as plt
import numpy as np

e=0.3

x = np.linspace(-3.0, 3.0, 101)
X, Y = np.meshgrid(x, x)
f = lambda x,y: x**2 + y**2 - 1 -e*np.sin(2*np.arctan(y/x))

fig, ax = plt.subplots(figsize=(3,3))
ax.contour(X,Y, f(X, Y), 0)

plt.axis([-2, 2, -2, 2])
plt.gca().set_aspect("equal")
plt.axis('off')
plt.savefig(__file__+".png")
plt.show()

enter image description here

相关问题 更多 >