/ / Jak narysować zakłócone koło? - python, numpy, matplotlib

Jak narysować zniekształcone koło? - python, numpy, matplotlib

Jak narysować Koło Przerażone?

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])

Odpowiedzi:

1 dla odpowiedzi № 1

Nie możesz ustawić listy jako promienia do a Circle. Mogą istnieć inne metody rysowania „zakłóconego” koła, ale bardzo intuicyjne jest rysowanie krzywej parametrycznej za pomocą plt.contour().

Krzywa parametryczna dla idealnego okręgu o promieniu R byłoby

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

podczas gdy w tym przypadku jest to

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

Więc możemy spiskować f(x,y) iw wezwaniu do contour(X,Y,Z, levels) ustawiamy levels do 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()

wprowadź opis obrazu tutaj