簡體   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