что означает [0 ,:] в matplotlib.animation - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь отладить этот код из моей лекции, чтобы он работал на моем компьютере (Win10).При запуске в терминале я получаю первое изображение, которое определено секцией plt.figure(), но часть анимации никогда не запускается.Вместо этого я получаю код ошибки, связанный с подушками.

Я скачал ffmep, используя pip, а также обновил свой файл matplotlib.

Вот код:

if plot_flag == True:
    res = []
    for i in range(N):
        res.append(np.array(list_particles[i].pos))

if plot_flag == True:
    ### display one trajectory
    pos = res[0]
    plt.plot(pos[:,0],pos[:,1],'k-')
    plt.show()

    ###produce an animation 
    fig = plt.figure()
    ax = fig.add_subplot(111, autoscale_on=False, xlim=(0, L), ylim=(0, L))
    ax.grid()

    patch=[]
    for i in range(N):
        patch.append(plt.Circle(res[i][0,:],list_particles[i].radius,fc="r"))
        ax.add_patch(patch[i])


    def animate(i):
        for j in range(N):
            x,y=res[j][i,:]
            patch[j].center= (x,y)


    def init():
        line.set_data([], [])
        time_text.set_text('')
        return line, time_text

    ani = animation.FuncAnimation(fig, animate, np.arange(0, Niter),
                            interval=25, blit=False)
    ani.save("gas.mp4",fps=25)

Мне нужно получить анимацию после закрытия окна рисунка, но вместо этого я получаю сообщения об ошибках:

MovieWriter ffmpeg unavailable. Trying to use pillow instead.

, что ничего не значит ни для меня, ни для Интернета.Большую часть этого кода я могу понять, кроме res[i][0,:] (строка 16), который не имеет никакого смысла для меня, сначала я подумал, что запятой не должно быть, но тот же синтаксис повторяется в строке 21: x,y=res[j][i,:],

Я также не могу запустить этот код в spyder, так как я получаю ошибку deprecated (), которая пытается заблокировать даже полезную отладку.

Может кто-нибудь помочь мне понять, что происходит, потому что я совершеннопотерян, спасибо большое.

1 Ответ

0 голосов
/ 24 декабря 2018

Первый вывод означает, что он не может найти ffmpeg (или его части).Таким образом, вы либо неправильно установили его, либо вы должны указать, где его найти (я не знаю, как, в Windows).

pillow - это библиотека для работы с изображениями (это вставная замена для PIL , библиотеки изображений Python), которую он пытается использовать вместо этого.


Второй синтаксис: numpy Slicing , как вы можете индексировать многомерный массив.Срезы работают так же, как в обычном Python, за исключением того, что срезы для каждого измерения разделяются запятыми.

Итак, x[0,:] означает, что берется первая запись по первому измерению (которое является строкой, поскольку объект кажетсяиметь два измерения в общей сложности), а затем взять все записи по второму измерению (таким образом, всю первую строку).

И pos[:,1] означает взять все записи по первому измерению (таким образом, все строки), но для каждогострока принимает только вторую запись по второму измерению (поэтому она выбирает весь второй столбец).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...