使用Flask & Plotly 做股票k线图交互式可视化处理(一)

版权声明:本文为博主原创文章,如若转载请注明出处 https://blog.csdn.net/tonydz0523/article/details/82668057

这里想结合mysql 、flask、plotly做一个在网页上展示的股票k线图,而且具有查找的更能,键入股票代码出现该股票的K线图。
可以先试一下成果:https://stock-graph-app.herokuapp.com/

使用Plotly 画股票k线图

plotly有集成的k线图方法,使用起来很方便:
这里随机选取一只股票使用plotly离线方法画图并保存在本地

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
import pandas as pd
import random
import plotly.offline as po
import plotly.graph_objs as go


def get_graph():
    # 创建基础类
    engine = create_engine('mysql+pymysql://ffzs:666@localhost:3306/stock')
    
    BaseModel = declarative_base()

    # 获取database 的 所有table
    BaseModel.metadata.reflect(engine)
    tables = BaseModel.metadata.tables
    # 获取所有table名称
    tables_names = list(tables.keys())
    con = engine.connect()
    # 随机选取1个股票
    stock_name = random.choice(tables_names)
	# 获取股票数据
    df = pd.read_sql('select *  from `{}`'.format(stock_name), con=con)

    trace = go.Candlestick(x=df['日期'],
                           open=df['开盘价'],
                           high=df['最高价'],
                           low=df['最低价'],
                           close=df['收盘价'])
    data = [trace]
    layout = {
        'title': stock_name}
    fig = dict(data=data, layout=layout)
    po.plot(fig, filename='templates/stock.html')

get_graph()

结果如下:

这里写图片描述

使用Flask建立网站

实验阶段现在本地使用,之后会部署到docker上或者vps上。
先建立一个Flask的文件夹,结构类似这样:
这里写图片描述
在文件夹下建立stockapp,在app目录下分别创建 init.py 、run.pyview.py
init.py:

from stockapp.view import app

run.py

from stockapp.view import app

if __name__ == '__main__':

    app.run(debug=True, host='0.0.0.0')

view.py

from flask import render_template, Flask

app = Flask(__name__)
# 创建路由
@app.route('/')
def homepage():
    return render_template("stock.html")  #templates文件夹下的stock.html


这是运行run.py文件:

 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 483-266-118

在浏览器上访问 http://0.0.0.0:5000/,就会展示使用Plotly画的K线图:
这里写图片描述

下一篇实现搜索功能。。。。。。。。

猜你喜欢

转载自blog.csdn.net/tonydz0523/article/details/82668057