我正在做flask项目,我使用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"
我尝试了这种保存图像并将其传递到前面的方法,但在这里我无法避免图表绘图打开,有没有人知道更好的方法将这些图表转移到这个 flask 项目的前端HTML页面
2条答案
按热度按时间lnlaulya1#
我相信这个问题已经解决了,但在这里为子孙后代。
重要的部分是设置后端使用非gui方法。同时确保使用
send_file
处理发回缓冲区和文件名。对于普通matplotlib,这些策略相同,只需将文件名替换为io.BytesIO
,它就会自动处理它。似乎python的趋势是让它接受文件名,或某种流接口。这应该是一个粗略的近似值。
eyh26e7m2#
您可以将图形保存到
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()没有图像格式的关键字。