У меня есть функция get_3d()
, которая будет возвращать координаты x, y, z объекта. Теперь я хочу построить это динамически в matplotlib. Раньше я писал эту функцию внутри блока while True:
. Однако, поскольку я хочу построить это с помощью функции FuncAnimation()
, я делаю это в самой функции обратного вызова:
from matplotlib import pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d.axes3d as p3
from matplotlib import animation
fig = plt.figure()
ax = p3.Axes3D(fig)
point, = ax.plot([0], [0], [0], 'o')
def update_point(point):
(x, y, z) = get_3d()
point.set_data(np.array([x, y]))
point.set_3d_properties(z[n], 'z')
return point
ani=animation.FuncAnimation(fig, update_point, fargs=point, interval = 10)
plt.show()
Функция get_3d()
(предполагается, что она уже определена) должна быть называется каждые 10 мс. Возвращает 3 отдельных значения координат x, y и z. Однако при выполнении этого кода на Python2 .7 я получаю следующие ошибки:
TypeError: update_point() argument after * must be an iterable, not Line3D
Я новичок в matplotlib, поэтому, если есть какие-то глупые ошибки, пожалуйста, прости меня. Любая помощь будет принята с благодарностью.
Спасибо.