目录
  • 最最简单的操作
  • Animation类
    • FuncAnimation
  • ArtistAnimation
    • 动画保存
      • .save()函数

    最最简单的操作

    import numpy as np
    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax = fig.subplots()
     
    x = np.linspace(0,10,100)
    y = np.sin(x)
     
    while True:
        ax.plot(x,y)
        plt.pause(1)
        ax.cla()      
        x += np.pi/30    
        y = np.sin(x)

    有人会问,为什么不能直接 用 plot 替代 ax 呢?

    好问题,你可以一试,会发现这玩意没法关掉 。。 当然  ctrl + C等暴力手段是任何时候都ok的

    Animation类

    FuncAnimation

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation

    Python matplotlib 动画绘制详情

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    fig = plt.figure()
    ax = fig.subplots()
     
    x = np.linspace(0,10,100)
    y = np.sin(x)
    ax.set_aspect(3)
    ax.plot(x,y,'-.',c='red',label="the old one")
    line = ax.plot(x,y,c='green')
    plt.legend()
     
    def fun(i):  
        global x    
        x += 0.1
        y = np.sin(x)
        line[0].set_ydata(y)
        return line
     
     
    animation = FuncAnimation(fig,fun,interval=100) 
    plt.show() 

    这就有两个问题需要解决一下

    第一个:line到底是什么类型的东西

    type(line)
    <class 'list'>

    明显,这就是。。列表。

    第二个:set_data;set_xdata;set_ydata

    你可以自己更改一下试试看,结果是显而易见的

    ArtistAnimation

    它的好处是你不要费尽心机去想一个可能 勾八 的函数了

    它的坏处是 :

    一个能用函数表示的动画 为什么要在新增一个列表才能表达呢?

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import ArtistAnimation
    fig = plt.figure()
    ax = fig.subplots()
     
    frames = []
    x = np.linspace(0,np.pi*2,10)
    for i in range(20):
        x += np.pi*2/20
        y = np.sin(x)
        frames.append(ax.plot(y,'-.',c='red'))
     
    animation = ArtistAnimation(fig,frames,interval=100)
    plt.show() 

    很好!现在只需要保存动画就圆满了

    动画保存

    .save()函数

    filename 画文件名+后缀
    fps 动画每秒的帧数   默认值为 原动画的帧数
    dpi 动画每英寸的点数 默认值为 原动画的点数
    codec 编码格式 默认值为’h264’

    filename画文件名+后缀fps动画每秒的帧数   默认值为 原动画的帧数dpi动画每英寸的点数 默认值为 原动画的点数codec编码格式 默认值为’h264’

    animation.save("1.gif")

    Python matplotlib 动画绘制详情

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。