Я хотел бы анимировать трехмерную диаграмму рассеяния, где каждая точка данных имеет текстовую метку, которая перемещается вместе с ней.
Прямо сейчас текстовые метки do следуют за точками данных, как я хочу, но они сохраняются в каждом кадре;текст не исчезает из последнего обновления анимации.Смотрите изображение ниже.Сами точки данных перемещаются просто отлично.
2 Вопросы, ответы на которые могут мне помочь>
- Есть ли способ очистки текста без очистки точек данных?
- Моя реализация кажется немного неуклюжей.Есть ли скрытая функция, похожая на _offset3d , которая работает для текстовых объектов.
Вот графическая функция :
def graph(data, update_cnt):
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
dots = ax.scatter(data[0][0][:], data[1][0][:], data[2][0][:])
dot_txt = nmp.ones(nmp.size(data,2), dtype=str)
for n in range(0,nmp.size(data, 2)):
dot_txt[n] = ax.text(data[0][0][n], data[1][0][n], data[2][0][n],'%s'%(n))
ani = animation.FuncAnimation(fig, update, update_cnt, fargs=(dots, data, dot_txt, ax), interval=300)
plt.show()
и функция обновления анимации :
def update(num, dots, data, dot_txt, ax):
y = data[0][num][:]
x = data[1][num][:]
z = data[2][num][:]
dots._offsets3d = (x, y, z)
#dot_txt._something_to_update_text_here()
dot_txt = nmp.ones(nmp.size(data,2), dtype=str)
for n in range(0,nmp.size(data, 2)):
dot_txt[n] = ax.text(data[1][num][n], data[0][num][n], data[2][num][n],'%s'%(n))
и текущий график вывода : 