Я хотел сделать анимацию matplotlib тригонометрических функций в единичном круге, пока мне удалось получить неподвижный график.Я сделал то же самое в PyGame, но у него действительно плохое сглаживание, поэтому я перешел на matplotlib.Я думал о достижении эффекта анимации путем увеличения угла в каждом кадре анимации, но я просто не знаю, как заставить его работать в matplotlib.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patheffects import withStroke
fig, ax = plt.subplots(figsize=(8, 8))
angle = np.pi / 6
x = [0, np.cos(angle)]
y = [0, np.sin(angle)]
ax.set_ylim((-1.5, 1.5))
ax.set_xlim((-1.5, 1.5))
def center_origin():
# Getting rid of axis values
plt.gca().axes.get_xaxis().set_visible(False)
plt.gca().axes.get_yaxis().set_visible(False)
# Move left y-axis and bottom x-axis to centre, passing through (0,0)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
# Eliminate upper and right axes
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
def circle(x, y, radius=0.15):
circle = plt.Circle((x, y), radius, clip_on=False, zorder=10, linewidth=1,
edgecolor='black', facecolor=(0, 0, 0, .0125),
path_effects=[withStroke(linewidth=1)])
ax.add_artist(circle)
circle(0, 0, 1)
ax.plot(x, y)
ax.plot([x[1], x[1]], [y[0], y[1]])
ax.plot([x[0], x[1]], [y[1], y[1]])
center_origin()
plt.show()