为了账号安全,请及时绑定邮箱和手机立即绑定

[0,:] 在 matplotlib.animation 中是什么意思

[0,:] 在 matplotlib.animation 中是什么意思

小怪兽爱吃肉 2021-09-24 14:34:12
我正在尝试从我的讲座中调试此代码,以便它可以在我的计算机(Win10)上运行。在终端中运行时,我得到该plt.figure()部分定义的第一个图像,但动画部分从未运行。我收到了与枕头相关的错误代码。我已经使用 pip 下载了 ffmep 并以同样的方式更新了我的 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 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

第一个输出意味着它找不到 ffmpeg(或它的一部分)。所以你要么没有正确安装它,要么你必须告诉它在哪里找到它(我不知道如何,在 Windows 上)。

pillow是一个图像处理库(它是PIL 的直接替代品,Python 图像库),它尝试使用它。


第二种语法是slicing,这是您如何索引多维数组的方法。切片就像在普通 Python 中一样工作,除了每个维度的切片用逗号分隔。numpy

所以x[0,:]意味着沿第一个维度(这是一行,因为对象似乎总共有两个维度)获取第一个条目,然后沿第二个维度获取所有条目(因此整个第一行)。

并且pos[:,1]意味着沿第一个维度获取所有条目(因此所有行),但对于每一行,仅沿第二个维度获取第二个条目(因此它选择整个第二列)。


查看完整回答
反对 回复 2021-09-24
  • 1 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信