Python Web 开发 Flask结合pyecharts进行图表展示实践

256 阅读3分钟

春潮带雨晚来急,野渡无人舟自横。

1 前言

在前文中已经分享了Python web 开发 flask 实践,在最近的业务开发中,遇到了 web 项目绘图的需求,经过调研了解到了 pyecharts 类库,这个和前端 echarts.js 异曲同工,但是在后台使用和前端使用总体类似,但是在具体的语法上有一点区别,本文将结合图形展示实践操作说明pyecharts的用法。

2 环境准备

首先需要使用 python 搭建一个 Flask 项目,引入对应的依赖,如下所示:

pip install pyecharts
# 需要计算均线数据,这里使用的是 talib.SMA 进行计算
sma5 = talib.SMA(df["Close"], 5)
# macd 数据计算
# macd         dif 快线
# macd_signal  dea 慢线
# macd_hist    macd  能量柱
df["macd"], df["macd_signal"], df["macd_hist"] = \
    talib.MACD(df['Close'], fastperiod=12, slowperiod=26, signalperiod=9)

此外可以在 echarts 中查看K线图的相关的配置。在实际的操作中,会遇到很多配置问题,如下图所示,可以通过全局配置设置,标题信息,图例配置信息,工具箱配置信息,以及提示框选项。

1746279454169.png

3 代码编写

首先我们需要获取数据的 k 线数据,这里使用的是东方财富的 api 获取k 线数据,这里的接口不仅可以查询股票的数据,也可以查询ETF 的数据信息。

1746280636652.png

在准备好数据之后,我们需要构建展示的数据,以及计算均线和macd 数据。

1746281764424.png

在计算好数据之后,需要先构建蜡烛线数据,之前已经计算好了每天的数据(开盘价、最高价、最低价、收盘价)。这里标记了在视图框内的最高价以及最低价配置信息,以及设置图形的标题,图例,工具框,提示框的位置配置信息。在数据的蜡烛线数据中,可以使用 overlap 加入先前计算好的日均线数据。

1746283009028.png

在加入数据后,可以在k线图先添加技术指标 macd 的指标,其配置如下所示, 最后使用 GridOpts 配置设置其图标显示的位置以及高度信息。

1746284010032.png

在使用 pyecharts 时,主要的配置在于 klineLine 数据展示的线型,以及对应的位置,颜色,字体的配置,这样编程的方式相对于 js 来说比较繁琐一点。 我们已经通过工具类方法计算好了其展示数据,最后返回的方法是一个 Grid 数据,res.dump_options_with_quotes()

1746285387191.png

4 结果展示

在完成后端代码编写后,前端的代码编写比较简单,如下图所示,这里的配置相对于js配置来说,就比较简单了,因为后台已经完成了项目配置和项目数据的配置。

1746285475206.png

如下图所示,即完成如上代码后,运行后展示出的图形如下图所示:

1746268382028.png

5 总结

本文分享了 pythonweb 开发,使用 pyecharts 展示股票或者基金的k线数据,在展示数据的过程中,需要注意数据的配置项以及数据图表的多图展示问题。相关代码已经上传至 github, 欢迎大家 star, 项目地址 fund_python