如何使用烧瓶将mplfinance蜡烛图发送到前端?

问题描述

我正在处理烧瓶项目,我使用 mplfinance 库创建烛台图表,我需要将此图表传递给前端。

@app.route('/chartdata',methods =['POST'])
def chart_data():
    if request.method == 'POST':
        
        body = request.json
        df = pd.read_csv('test_data.csv',index_col=0,parse_dates=True)
        df.index.name = 'Date'
        mplfinance.plot(df,type = 'candle',style ='yahoo',savefig ="sample.png")
        
        return "image to transferred" 

我尝试了这种保存图像并将其传递到前面的方法,但在这里我无法避免图表图打开,有没有人知道将这些图表传输到此烧瓶项目中的前端 Html 页面的更好方法

解决方法

您可以将图形保存到 io.BytesIO 对象并将其发送到前端,例如 https://mellowd.dev/python/using-io-bytesio/

mplfinance.plot(...) 有一个 savefig 参数,参见 https://github.com/matplotlib/mplfinance/blob/master/src/mplfinance/plotting.py#L171

像下面这样的东西,需要测试,因为 mplfinance.plot() 没有图像格式的关键字。

import io

@app.route('/chartdata',methods =['POST'])
def chart_data():
    if request.method == 'POST':
        
        body = request.json
        df = pd.read_csv('test_data.csv',index_col=0,parse_dates=True)
        df.index.name = 'Date'
        b = io.BytesIO()
        mplfinance.plot(df,type = 'candle',style ='yahoo',savefig=b)
        return b