Есть возможность, чтобы программа рисовала положение точки в разные моменты времени одно за другим?

Чтобы было моделирование, надо не этот график показывать, а чтобы программа рисовала положение точки в разные моменты времени одно за другим

код:

from numpy import linspace 
import matplotlib.pyplot as plt
v0 = 5
g = 9.81
t = linspace(0, 1, 1001)
y = v0 * t - 0.5 * g * t **2
plt.plot(t,y)
plt.xlabel('t(s)')
plt.ylabel('y(m)')
plt.show()

Ответы (2 шт):

Автор решения: passant

Анимирование графика можно делать по-разному. Самый "ломовой" способ - последовательная отрисовка ваших графиков, например вот так:

v0 = 5
g = 9.81
t = linspace(0, 1, 1001)
y = v0 * t - 0.5 * g * t **2
x=[]
z=[]
fig,ax=plt.subplots() 
for i in range(len(y)):
    ax.cla()
    ax.axis([0, 1, 0, 1.5])        
    x.append(t[i])
    z.append(y[i])
    ax.plot(x,z)
    plt.pause(0.01)

Но если делать все "по-взрослому", то советую смотреть в сторону применения функции FuncAnimation из модуля matplotlib.animation.

→ Ссылка
Автор решения: Pak Uula

В matplotlib есть поддержка анимации.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

v0 = 5.0
g = 9.81
t = np.linspace(0, 1, 1001)
y = v0 * t - 0.5 * g * t **2

# Готовим чертёж
fig, ax = plt.subplots()

ax.set_xlim(-0.1,max(t)*1.05)
ax.set_ylim(-0.1, max(y)*1.05)
ax.set_xlabel('t(s)')
ax.set_ylabel('y(m)')
ax.grid()

# Рисуем анимацию
# Тип графика - точки. 
# Первый кадр - точка в начальной позиции
scatter = ax.scatter(t[0], y[0])

# Возвращаем набор графических объектов для очередного кадра
def draw_frame(frame_num):
    # обновляем положение точки
    scatter.set_offsets((t[frame_num], y[frame_num]))
    # возвращаем список объектов кадра
    return [scatter]

ani = animation.FuncAnimation(
    fig, # объект Figure, на котором рисуем
    draw_frame, # функция рисования кадра
    interval=3, # 3 мс между кадрами
    frames=len(t), # число кадров
    blit=True # перерисовывать только изменившуюся часть кадра
)

plt.show()

Если хотите, чтобы рисовало быстрее, установите меньше значение interval

Если же вам нужно просто график в виде последовательности точек, не соединенных прямыми, то в вашем коде надо заменить plt.plot на plt.scatter: plt.scatter(t,y)

Но так как у вас точки идут очень густо, то получится обыкновенный график, разве что жирной линией нарисованный.

→ Ссылка