• ghhhhhh


    from pyecharts import options as opts  # 全局、系列配置
    from pyecharts.charts import Bar, Grid, Line  # 柱形图
    from pyecharts.globals import ThemeType  # 主题风格
    from pyecharts.charts import Kline, Line, Bar, Gauge, Pie, Scatter, TreeMap  # K线图、线形图、柱状图、仪表盘、饼图、散点图、矩形树图
    from pyecharts.charts import Grid, Tab  # 组合组件、分页组件
    from pyecharts.components import Table  # 表格组件
    import time  # 时间模块
    import pandas as pd  # Pandas模块
    import numpy as np  # Numpy模块
    from sqlalchemy import create_engine  # 数据引擎模块
    
    conn = create_engine('mysql+pymysql://root:test@127.0.0.1:3306/quant_db?charset=utf8')  # 创建引擎
    
    
    #################################################################################################################################
    class Module:
        '''
        1、上证指数、涨跌幅
        2、深证指数、涨跌幅
        3、创业板指数、涨跌幅
        '''
    
        def __init__(self, sql):
            self.sql = sql
            self.data = pd.read_sql(self.sql, conn)
    
        def func_kline(self, x, y, series, title,title_link,pos_left,**kwargs):
            # 数据处理部分
            x = self.data['trade_date'].tolist()
            y = []
    
            for index, row in self.data.iterrows():
                list = [row['open'], row['close'], row['low'], row['high']]
                y.append(list)
    
            # K线图绘制
            kline = (
                Kline(init_opts=opts.InitOpts(theme=ThemeType.DARK))
                    .add_xaxis(x)
                    .add_yaxis(series, y)
                    .set_global_opts(
                        xaxis_opts=opts.AxisOpts(is_scale=True),
                        yaxis_opts=opts.AxisOpts(
                            is_scale=True,
                            splitarea_opts=opts.SplitAreaOpts(
                                is_show=True,
                                areastyle_opts=opts.AreaStyleOpts(opacity=1)
                            ),
                        ),
                        # 标题组件配置项
                        title_opts=opts.TitleOpts(
                            title=title, # 主标题文本
                            title_link=title_link,   # 主标题跳转url链接,可以为None
                            pos_left='',  # 标题组件离容器左侧的距离,可以为None,具体值,百分比,‘left、right、center’
                            pos_right='',
                            pos_top = '',
                            pos_bottom=''
                        ),
    
                        # 图例组件配置项
                        legend_opts=opts.LegendOpts(
                            pos_left='',  # 图例组件离容器左侧的距离,可以为None,具体值,百分比,‘left、right、center’
                            pos_right='',
                            pos_top='',
                            pos_bottom='',
                            orient='',   #  图例列表的布局朝向。可选:'horizontal', 'vertical'
                            legend_icon='' #  图例项的 icon。标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
                        ),
    
                        # 工具箱组件配置项
                        toolbox_opts=opts.ToolBoxFeatureSaveAsImagesOpts(
                            type_='',     # 保存的图片格式。支持 'png' 和 'jpeg'。
                            is_show='', # 是否显示该工具。
                            title= "保存为图片", # 提示语
                        ),
    
                        # 系列提示框配置项
                        tooltip_opts=opts.TooltipOpts(
                            
                        )
    
            )
                )
            )
    
        def func_bar(self, x, y, series, title):
            # 柱形图绘制
            bar = (
                Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
                    .add_xaxis(x)
                    .add_yaxis(series, y)
                    .set_global_opts(
                    title_opts=opts.TitleOpts(title=title, pos_top="48%"),
                    legend_opts=opts.LegendOpts(pos_top="48%")
                )
            )
    
            grid = (
                Grid()
                    .add(kline, grid_opts=opts.GridOpts(pos_bottom="60%", pos_right='50%'))
                    .add(bar, grid_opts=opts.GridOpts(pos_top="60%"))
                # .render("grid_vertical.html")
            )
    
            return grid
    
        def func02(self):
            # 1、近90日深证指数走势及涨跌幅
    
            data = pd.read_sql(sql, conn)
    
            x = data['trade_date'].tolist()
            y1 = []
            y2 = data['pct_chg'].tolist()
    
            for index, row in data.iterrows():
                list = [row['open'], row['close'], row['low'], row['high']]
                print(list)
                y1.append(list)
    
            kline = (
                Kline()
                    .add_xaxis(x)
                    .add_yaxis("深证指数", y1)
                    .set_global_opts(
                    xaxis_opts=opts.AxisOpts(is_scale=True),
                    yaxis_opts=opts.AxisOpts(
                        is_scale=True,
                        splitarea_opts=opts.SplitAreaOpts(
                            is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                        ),
                    ),
                    title_opts=opts.TitleOpts(title="近90日深证指数走势图"),
                )
            )
    
            bar = (
                Bar()
                    .add_xaxis(x)
                    .add_yaxis("深证涨跌幅", y2)
                    .set_global_opts(
                    title_opts=opts.TitleOpts(title="Bar-Brush示例", subtitle="我是副标题", pos_top="48%"),
                    legend_opts=opts.LegendOpts(pos_top="48%")
                )
            )
    
            grid = (
                Grid()
                    .add(kline, grid_opts=opts.GridOpts(pos_bottom="60%", pos_right='50%'))
                    .add(bar, grid_opts=opts.GridOpts(pos_top="60%"))
                # .render("grid_vertical.html")
            )
    
            return grid
    
        def func03(self):
            # 1、近90日创业板指数走势及涨跌幅
    
            data = pd.read_sql(sql, conn)
    
            x = data['trade_date'].tolist()
            y1 = []
            y2 = data['pct_chg'].tolist()
    
            for index, row in data.iterrows():
                list = [row['open'], row['close'], row['low'], row['high']]
                print(list)
                y1.append(list)
    
            kline = (
                Kline()
                    .add_xaxis(x)
                    .add_yaxis("创业板指数", y1)
                    .set_global_opts(
                    xaxis_opts=opts.AxisOpts(is_scale=True),
                    yaxis_opts=opts.AxisOpts(
                        is_scale=True,
                        splitarea_opts=opts.SplitAreaOpts(
                            is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                        ),
                    ),
                    title_opts=opts.TitleOpts(title="近90日创业板指数走势图"),
                )
            )
    
            bar = (
                Bar()
                    .add_xaxis(x)
                    .add_yaxis("创业板涨跌幅", y2)
                    .set_global_opts(
                    title_opts=opts.TitleOpts(title="Bar-Brush示例", subtitle="我是副标题", pos_top="48%"),
                    legend_opts=opts.LegendOpts(pos_top="48%")
                )
            )
    
        def func_grid(self):
            grid = (
                Grid()
                    .add(kline, grid_opts=opts.GridOpts(pos_bottom="60%", pos_right='50%'))
                    .add(bar, grid_opts=opts.GridOpts(pos_top="60%"))
                # .render("grid_vertical.html")
            )
    
            return grid
    
    
    def main():
        # 上证指数
        sql1 = '''
                    SELECT
                        trade_date,     -- 交易日期
                        `open`,         -- 开盘价
                        high,           -- 最高价
                        low,            -- 最低价
                        `close`,        -- 收盘价
                        pct_chg         -- 涨跌幅
                    FROM
                        stock_daily 
                    WHERE
                        ts_code = '000001.SH'
        '''
    
        # 深证指数
        sql2 = '''
                    SELECT
                        trade_date,     -- 交易日期
                        `open`,         -- 开盘价
                        high,           -- 最高价
                        low,            -- 最低价
                        `close`,        -- 收盘价
                        pct_chg         -- 涨跌幅
                    FROM
                        stock_daily 
                    WHERE
                        ts_code = '399001.SH'
        '''
    
        # 创业板指数
        sql3 = '''
                    SELECT
                        trade_date,     -- 交易日期
                        `open`,         -- 开盘价
                        high,           -- 最高价
                        low,            -- 最低价
                        `close`,        -- 收盘价
                        pct_chg         -- 涨跌幅
                    FROM
                        stock_daily 
                    WHERE
                        ts_code = '399006.SH'
        '''
    
    
    if __name__ == '__main__':
        grid01 = func01()
        grid02
        tab = Tab()
        tab.add(grid01, "bar-example")
        # tab.add(line_markpoint(), "line-example")
        # tab.add(pie_rosetype(), "pie-example")
        # tab.add(grid_mutil_yaxis(), "grid-example")
        tab.render("tab_base.html")
    
        print("完成")
  • 相关阅读:
    第五次实验作业
    第四次作业
    java三
    java作业二
    java作业一
    作业11
    作业10
    作业9
    作业8
    作业7
  • 原文地址:https://www.cnblogs.com/Iceredtea/p/13326790.html
Copyright © 2020-2023  润新知