【问题标题】:Matplotlib Animation not completingMatplotlib 动画未完成
【发布时间】:2022-01-26 08:38:06
【问题描述】:

我尝试使用 Matplotlib 创建动画,它的动画似乎正确,但它没有显示数据集中的所有数据点。它是从 2020 年 1 月到 2021 年 12 月的时间序列 - 它似乎现在才动画到 2020-06。

下面是完整的代码

import yfinance as yf
import matplotlib.animation as ani
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# Get data
data = yf.download('TSLA',start='2020-01-01')
df = data['Adj Close'].to_frame()

fig = plt.figure() 
plt.ylabel('Stock Price')
plt.xlabel('Date')

def buildchart(i=int):
        plt.legend(df.columns)
        p = plt.plot(df[:i].index, df[:i].values, color = 'black')

import matplotlib.animation as ani
animator = ani.FuncAnimation(fig, buildchart, interval = 100)

import os
f = os.getcwd() + '/animation.mp4'
writervideo = ani.FFMpegWriter(fps=30) 
animator.save(f, writer=writervideo, dpi= 300)

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    动画的基本形式是设置空图类型和x轴和y轴范围,然后用动画函数更新数据。它以面向对象的方式重写,因为它很容易设置细节。动画设置为在多个帧中重复多个记录。

    import yfinance as yf
    import matplotlib.animation as ani
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    # Get data
    data = yf.download('TSLA',start='2020-01-01')
    df = data['Adj Close'].to_frame()
    
    fig,ax = plt.subplots()
    line, = ax.plot([], [], color='k', lw=3)
    ax.set(xlim=(df.index[0], df.index[-1]), ylim=(df['Adj Close'].min(), df['Adj Close'].max()))
    ax.set_ylabel('Stock Price')
    ax.set_xlabel('Date')
    
    def buildchart(i):
        line.set_data(df[:i].index, df[:i]['Adj Close'])
    
    ax.legend(df.columns)
    
    anim = ani.FuncAnimation(fig, buildchart, frames=len(df), interval=100)
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 2014-09-16
      相关资源
      最近更新 更多