Форум сайта python.su
0
Столкнулся со следующей проблемой, есть такой код(не мной написанный). Не могу разобраться с функцией анимации, а точнее с тем как именно задать анимацию по нужным мне координатам. Сейчас анимация двигает три точки по прямым я хочу что бы они двигались по массиву координат заранее созданому, как мне это реализовать?
#!/usr/bin/env python # -*- coding:utf-8 -*- import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np def _update_plot(j, fig, scat): # от куда беруться значения переменной j scat.set_offsets(([0,j], [j,50], [j,j])) return scat fig = plt.figure() x = [ ] y = [ ] ax = fig.add_subplot(111) ax.grid(True, linestyle = '-', color = '0.75') ax.set_xlim([-50, 200]) ax.set_ylim([-50, 200]) scat = plt.scatter(x, y, c = x) scat.set_alpha(0.8) # зачем нужен этот альфа? anim = animation.FuncAnimation(fig, _update_plot, fargs = (fig, scat), frames = 100, interval = 20) plt.show()
Отредактировано last_meloman (Май 21, 2015 20:20:29)
Офлайн
103
Офлайн
0
Исправил
Офлайн
103
ну вот к примеру
import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np a = iter([[0,0], [10, 20], [10, 10], [0, 0], [100, 0], [100, 50], [50, 50], [0, 0]]) def _update_plot(j, fig, scat): scat.set_offsets((a.next())) return scat fig = plt.figure() x = [ ] y = [ ] ax = fig.add_subplot(111) ax.grid(True, linestyle = '-', color = '0.75') ax.set_xlim([-50, 200]) ax.set_ylim([-50, 200]) scat = plt.scatter(x, y, c = x) anim = animation.FuncAnimation(fig, _update_plot, fargs = (fig, scat), frames = 100, interval = 200) plt.show()
scat.set_alpha(0.8) # зачем нужен этот альфа?
def _update_plot(j, fig, scat): # от куда беруться значения переменной j
Офлайн
0
Благодарю
Офлайн
0
Еще раз извиняюсь, но я немного не понимаю вас, вчера с телефона всё проверял, а вот сейчас попытался реализваоть то что вы мне дали, во первых я писал что мне нужен код под python 3, оператор next не работает в этой версии, во вторых если уж я использую matplotlib то пытался наверное разобраться и пошёл на форму потому что остались вопромы к документации. если вас не затруднит ответьте: чем можно заменить next что бы в 3 ий версии питона работал данный код + следующий вопрос, а если я хочу закинуть туда вот такой массив
Mercury[i][0] = merc_x0/ae # координаты x Mercury[i][2] = merc_y0/ae # координаты y
Отредактировано last_meloman (Май 22, 2015 12:26:33)
Офлайн
103
last_melomanда, извините, забыл что нужно на третий
под python 3, оператор next не работает в этой версии
scat.set_offsets((a.__next__()))
last_melomanне понял
если я хочу закинуть туда вот такой массив
Офлайн
0
там идет большое количество предрасчетов и нужно по этим предрасчетам проанимировать точку
[Mercury[i][0] for i in range(N)] [Mercury[i][2] for i in range(N)]
Отредактировано last_meloman (Май 22, 2015 14:41:17)
Офлайн
103
вы уже такое спрашиваете…
Mercury = [[1,2,30], [4,5,15], [17,8,9], [10,11,12], [13,14,5]] Mx = iter(Mercury[i][0] for i in range(5)) My = iter(Mercury[i][2] for i in range(5)) def _update_plot(j, fig, scat): scat.set_offsets((Mx.__next__(), My.__next__()))
Офлайн
0
Так отлично, а если рисовать и другие планеты, их координаты храняться в таких же масивах, как тогда оформить update_plot? Можно ли в этот же закинуть их ? Или надо новые созадвать? Продемостритруйте как
Отредактировано last_meloman (Май 22, 2015 22:06:39)
Офлайн