繁体   English   中英

Plot 来自许多 yFinance 股票代码的多个图表

[英]Plot multiple charts from a number of yFinance tickers

下面的代码用于从 Yfinance 的“stock1”创建一个图表。 我现在正在尝试使用“myTickers”plot 多个图表从 YFinance 收集一组代码。 我可以获取数据,但我无法将数据获取到 plot 到多个图表。

我希望它们共享 x 轴并垂直对齐(如果 window 不适合屏幕,则可以滚动)。 到目前为止,任何尝试都导致了我无法解决的空图表或 dataframe 错误。

我试图使其适应 Daniel Goldfarb 在此链接Plot 共享 x 轴的多个 mplfinance 地块中的建议,但迄今为止未能取得任何成功。 matplotlib 的 github 信息也没有给我足够的信息来解决 dataframe 错误。

 import pandas as pd import numpy as np import yfinance as yf import datetime as dt import mplfinance as mpf import matplotlib.pyplot as plt from pandas_datareader import data as pdr yf.pdr_override() # Activate Yahoo Finance Workaround stock1 = 'M6A=F' # Gets individual ticker # collect many tickers instead of one myTickers = ['M6A=F','M6B=F','M6C=F','M6E=F','MBT=F','MGC=F','SIL=F','MCL=F','MES=F','MNQ=F','MYM=F','M2K=F'] startDay = 1 # Day to start gathering data startMonth = 1 # Month to start gathering data startYear = 2022 # Year to start gathering data startDate = dt.datetime(startYear, startMonth, startDay) # Date to start gathering data endDate = dt.datetime.now() # Today's date df = pdr.get_data_yahoo(stock1, startDate, endDate) # Get data for selected stock1, from start date until today print(df.tail()) # get data for all myTickers #myData = pdr.get_data_yahoo(myTickers, startDate, endDate) #print(myData.tail()) # Create custom chart style, based on Yahoo style, with black outline chartColors = mpf.make_marketcolors(base_mpf_style="yahoo", edge="#505050", wick="#505050") chartStyle = mpf.make_mpf_style(base_mpf_style="yahoo", marketcolors=chartColors) # Plot custom candlestick chart for chosen stock mpf.plot(df, type="candle", volume=True, show_nontrading=True, style=chartStyle, title="{} Daily Chart".format(stock1)) # original single chart code method #

使用问题中链接的答案中的技术需要实现几点:从 mplfinance 的结构,将其他股票代码的图形添加到基础图中,第一个股票代码必须是基础图,并且必须为要添加的库存提供面板编号。 简单来说,一楼是第一张图,然后图一直延续到11楼。 如果您将面板编号视为楼层,您可以理解这一点。 后来,只在基础图上显示音量是没有意义的,所以我禁用了它。 标题 position 不合适,因此我已使用此响应中描述的方法进行了更正。 在此处查看有关其他图表的详细信息

 import pandas as pd import numpy as np import yfinance as yf import datetime as dt import mplfinance as mpf import matplotlib.pyplot as plt from pandas_datareader import data as pdr yf.pdr_override() # Activate Yahoo Finance Workaround stock1 = 'M6A=F' # Gets individual ticker # collect many tickers instead of one myTickers = ['M6A=F','M6B=F','M6C=F','M6E=F','MBT=F','MGC=F','SIL=F','MCL=F','MES=F','MNQ=F','MYM=F','M2K=F'] startDay = 1 # Day to start gathering data startMonth = 1 # Month to start gathering data startYear = 2022 # Year to start gathering data startDate = dt.datetime(startYear, startMonth, startDay) # Date to start gathering data endDate = dt.datetime.now() # Today's date df = pdr.get_data_yahoo(stock1, startDate, endDate) # Get data for selected stock1, from start date until today df1 = pdr.get_data_yahoo(myTickers[1:], startDate, endDate, group_by='ticker') # get data for all myTickers aps = [] for i,t in enumerate(myTickers[1:]): aps.append(mpf.make_addplot(df1.loc[:,t], panel=i+1, ylabel=t, type='candle')) # Create custom chart style, based on Yahoo style, with black outline chartColors = mpf.make_marketcolors(base_mpf_style="yahoo", edge="#505050", wick="#505050") chartStyle = mpf.make_mpf_style(base_mpf_style="yahoo", marketcolors=chartColors) # Plot custom candlestick chart for chosen stock fig,axlist = mpf.plot(df, type="candle", volume=False, show_nontrading=True, style=chartStyle, panel_ratios=(1,1), figratio=(1,1), figscale=3.0, addplot=aps, returnfig=True) fig.suptitle("12 Ticker Daily Chart", y=0.90, x=0.59, fontsize=18)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM