2024-05-26 04:22:42 发布
网友
如何画一个扰动圆?你知道吗
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])
不能将列表作为半径设置为Circle。 可能还有其他方法来绘制“扰动”圆,但我发现使用plt.contour()绘制参数曲线非常直观。你知道吗
Circle
plt.contour()
半径为R的完美圆的参数曲线是
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。你知道吗
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()
不能将列表作为半径设置为
Circle
。 可能还有其他方法来绘制“扰动”圆,但我发现使用plt.contour()
绘制参数曲线非常直观。你知道吗半径为
R
的完美圆的参数曲线是在这种情况下
所以我们可以绘制
f(x,y)
,在对contour(X,Y,Z, levels)
的调用中,我们将levels
设置为0
。你知道吗相关问题 更多 >
编程相关推荐