如何将yfinance的python图形输出直接导入HTML网页?

How to get python graph output from yfinance into HTML webpage directly?

提问人:code_byakko 提问时间:11/16/2023 更新时间:11/16/2023 访问量:23

问:

我正在为这个项目开发 Python Flask。我一直在使用不同的软件包来制作股票图(Plotly 和 Finplot)。我对前端的东西还是陌生的。不知道为什么图形没有输出。我不确定使用 matplotlib 在 HTML 页面中显示图形是否会有更好的结果。

到目前为止,这是我的 python 代码的一部分:

@app.route("/plot", methods=['GET', 'POST'])
def generate_plot():
    yf.pdr_override() # Not sure if I need this for datareader
    if request.method == 'POST':
        form = request.form
        if('ticker' in form):
            ticker = form['ticker'] # When users select a ticker from my dropdown list
            ticker = ticker.upper()

            # Eg. yfinance downloads a table of AAPL period of 1 day and interval of 1 year.
            df = yf.download(tickers=ticker,period='1d',interval='1y') 
            fig = go.Figure()
            fig.add_trace(go.Line(x=df.index,
                open=df['Open'],
                high=df['High'],
                low=df['Low'],
                close=df['Close'], name = 'market data'))
            
            fig.update_layout(
                title= str(stock)+' Live Share Price:',
                yaxis_title='Stock Price (USD per Shares)') 
            
            fig.update_xaxes(
                rangeslider_visible=True,
                rangeselector=dict(
                    buttons=list([
                        dict(count=15, label="15m", step="minute", stepmode="backward"),
                        dict(count=45, label="45m", step="minute", stepmode="backward"),
                        dict(count=1, label="HTD", step="hour", stepmode="todate"),
                        dict(count=3, label="3h", step="hour", stepmode="backward"),
                        dict(step="all")
                    ])
                )
            )
    fig.write_image('static/images/plot.png') # Save the png and then supply the path to the file in the html
    # return base64.b64encode(img.getvalue()) # I was trying encode the img to base64 format.

@app.route("/")
def index():
    # we will use Flask's render_template method to render a website template.
    plot_path = generate_plot()
    return render_template("stock.html", plot_graph=plot_path)

我的HTML代码:

<body>
    <div>
        <img src="static/images/plot.png" alt="Plot">
    </div>
</body>
  • 我尝试直接保存图像。我以为网页会显示图片,但图表不会出现。
  • 我尝试将图形编码为 base64 并将其输出为 HTML 文件。与直接保存图像的结果相同。
  • 我尝试使用finplot屏幕截图功能,但图表没有出现。
python html 图形 web-frontend yfinance

评论


答: 暂无答案