1. Фон
Я рисую квадратную c функциональную кривую (ax ^ 2 + bx + c, a> 0), которая имеет минимальное значение, и я использую повторяющийся метод для поиска этого значения. После каждого шага генерируется точка. Я хочу динамически нарисовать эту точку.
2. Псевдокод
f(x)=ax^2+bx+c, a>0
g(t) is the mentioned method which is used to search the minimum value
plot f(x)
plot initial point (x0,y0)
for t in range(10000):
new_x,new_y = g(t)
move (x0,y0) to new position (new_x,new_y)
3. Решение
3.1 интерактивный график
3.1.1 Пример
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
matplotlib.use("TkAgg")
plt.figure()
plt.grid(True)
plt.ion()
ft = np.linspace(0, 100, 1000)
plt.plot(ft, ft ** 2 + 1, c='r')
for t in range(100):
plt.scatter(t, t ** 2 + 1, marker='.', c='b')
plt.pause(1e-6)
plt.ioff()
plt.show()
3.1.2 Примечание
- Он работает, но работает медленно.
- Этот метод генерирует дублирующую дорожку.
3.2 Анимация
3.2.1 Пример
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
matplotlib.use("TkAgg")
def update_points(num):
point_ani.set_data(x[num], y[num])
return point_ani,
x = np.linspace(0, 100, 1000)
y = x**2+1
fig = plt.figure(tight_layout=True)
plt.plot(x, y)
point_ani, = plt.plot(x[0], y[0], "ro")
plt.grid(ls="--")
ani = animation.FuncAnimation(fig,
update_points,
interval=1,
blit=True)
plt.show()
print('finish')
3.2.2 Примечание
Этот метод работает без дорожки, но перед рисованием необходимо знать весь путь перемещения точки.
Итак, предположим, что есть художник, он aws каждый раз получает новая точка; он ждет, если балл не получен. Как реализовать?