РЕДАКТИРОВАТЬ
Я постараюсь быть более точным (вышеупомянутые детали были удалены за ненадобностью):
Я хочу сделать анимацию, в которой (красный) мяч отходит от (0,0) и рисует функцию sin(x). Функция должна быть нарисована синим цветом, а ведущая точка должна быть красной (как показано на рисунке выше).
Я нашел способ рисовать (анимировать) функцию:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'bo')
def init():
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)
return ln,
def update(frame):
xdata.append(frame)
ydata.append(np.sin(frame))
ln.set_data(xdata, ydata)
return ln,
ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
init_func=init, blit=True)
plt.show()
Теперь моя проблема заключается в том, как сделать ведущую точку красной.
Мне сказали, что я должен создать пустой список элементов строки и использовать метод "append()" для добавления новых элементов строки, но я до сих пор не понимаю, как это сделать.
Ссылка https://www.physicsforums.com/threads/how-to-make-an-animation-in-sympy-using-python.969906/
Спасибо за помощь.
@ Дэвид, я так и сделал. Что-нибудь еще я могу сделать?
Определенно, есть лучшие способы:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
points = 50
x = np.linspace(0, 2 * np.pi, points)
y = np.sin(x)
fig, ax = plt.subplots()
ax.set_xlim(-0.3, 2 * np.pi + 0.3)
ax.set_ylim(-1.2, 1.2)
def animate(i):
if i == 0:
# fig.clear()
ax.plot(x[i], y[i], 'ro')
else:
# fig.clear()
ax.plot(x[i-1], y[i-1], 'bo')
ax.plot(x[i], y[i], 'ro')
anim = FuncAnimation(fig, animate, frames=points, repeat=False, interval=150)
plt.show()
Добавляйте код вместо изображений, чтобы было проще воспроизвести то, что вы показали (и улучшить это).