【问题标题】:How to assign multiple variables in a loop for graphs in Python 3如何在 Python 3 中为图形循环分配多个变量
【发布时间】:2020-07-10 19:30:33
【问题描述】:

我对编码比较陌生,但有一些问题我不太明白如何解决。我正在尝试构建代码,该代码将生成从股票代码列表生成的图表,数据从雅虎财经下载。暂时不考虑手动分配 stock1(等等)一个股票代码......

我想弄清楚如何将数据循环到运行图表中,因此我的代码中有 TSLA 和 MSFT。到目前为止,我有下面的代码,我已经更改了 dfs 和 stock。我只是不明白如何制作循环。如果有人也有一些好的循环资源,请告诉我。

稍后,我想将图表保存为 png,其文件名对应于从 yahoo 中提取的股票,所以如果有人知道如何更改此代码 (savefig = dict(fname="tsla.png", bbox_inches= "tight"),它在 style = 'default' 之后,请加分。感谢您的帮助!

import matplotlib.pyplot as plt 
import numpy as np
import pandas as pd 
import datetime as dt
import mplfinance as mpf 
import yfinance as yf

#yahoo info
start = "2020-01-01"
end = dt.datetime.now()
stock1 = 'TSLA'
stock2 = 'MSFT'
df1 = yf.download(stock1, start, end)
df2 = yf.download(stock2, start, end)

stocks = [[stock1],[stock2]]
dfs = [[df1],[df2]]
changingvars = [[stocks],[dfs]]

#graph1
short_sma = 20
long_sma = 50
SMAs = [short_sma, long_sma]

for i in SMAs:
dfs["SMA_"+ str(i)] = dfs.iloc[:,4].rolling(window=i).mean() 

graph1 = mpf.plot(dfs, type = 'candlestick',figratio=(16,6), 
 mav=(short_sma,long_sma), 
 volume=True, title= str(stocks), 
 style='default')
plt.show()

【问题讨论】:

    标签: loops matplotlib computational-finance mplfinance


    【解决方案1】:

    如果您的目标只是创建多个图(每只股票一个),则不确定您为什么要计算自己的 SMA,并对股票和数据框进行分组。此外,如果您使用的是mplfinance,则不需要 导入和/或使用 matplotlib.pyplot(也不需要调用 plt.show();mplfinance 会为您执行此操作)。 p>

    也就是说,这是对您的代码的建议。我为 Apple 和 Alphabet (Google) 添加了代码,只是为了演示如何扩展。

    stocklist = ['TSLA','MSFT','AAPL','GOOGL']
    start = "2020-01-01"
    end = dt.datetime.now()
    short_sma = 20
    long_sma = 50
    
    for stock in stocklist:
        df = yf.download(stock, start, end)
        filename = stock.lower() + '.png'
        mpf.plot(df,type='candlestick',figratio=(16,6), 
                 mav=(short_sma,long_sma), 
                 volume=True, title=stock,style='default',
                 savefig=dict(fname=filename,bbox_inches="tight")
                )
    

    上面的代码将显示每只股票的图表,但会将每只股票保存在自己的.png文件中本地(其中你运行脚本)供你以后查看。

    另请注意,它不会保存实际数据;只绘制数据然后移动到下一只股票,重新分配数据框变量(它会自动删除上一只股票的数据)。如果您想将每只股票的数据保存在单独的 csv 文件中,使用 Pandas 的 .to_csv() 方法也很容易。

    另外,我假设您正确调用yf.download()。我对那个 API 不熟悉,所以我只保留了你所拥有的那部分代码。

    HTH。让我知道。 --丹尼尔

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多