Example #1
0
def base_kline_grid_chart(df, signal_infos=[]):
    """ 最最最基础的 K 线图,传入的 df 只需要有 open high low close volume 即可绘制 """
    # OHLC
    kline_chart = ohlc_kline_chart(df, signal_infos=signal_infos)
    # Volume
    volume_chart = volume_bar_chart(df)
    # 把 ohlc 和 volume 图组合起来
    grid_chart = Grid(init_opts=opts.InitOpts(
        width="1000px",
        height="800px",
        bg_color="#ffffff",
        animation_opts=opts.AnimationOpts(animation=False),
    ))
    grid_chart.add(
        kline_chart,
        grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", height="55%"),
    )
    grid_chart.add(
        volume_chart,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="70%",
                                height="15%"),
    )
    return grid_chart
Example #2
0
def bolling_backtest_grid_chart(df):
    """完整布林线回测图,传入的 df 需要有 open high low close volume upper median lower signal equity_curve 即可绘制 """

    # 布林线的 OHLC 图
    kline_chart = bolling_kline_chart(df, 3)  # 这里要控制3个轴同时缩放
    # Volume
    volume_chart = volume_bar_chart(df)
    # 资金曲线
    equity_chart = equity_line_chart(df)
    # 组合起来
    grid_chart = Grid(init_opts=opts.InitOpts(
        width="1000px",
        height="800px",
        bg_color="#ffffff",
        animation_opts=opts.AnimationOpts(animation=False),
    ))
    grid_chart.add(
        kline_chart,
        grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", height="40%"),
    )
    grid_chart.add(
        volume_chart,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="55%",
                                height="10%"),
    )
    grid_chart.add(
        equity_chart,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="75%",
                                height="10%"),
    )
    return grid_chart
Example #3
0
def get_date_chart(date: str):
    grid_chart = (
        Grid()
        .add(
            get_provinces_daily_bar_chart(date),
            grid_opts=opts.GridOpts(
                pos_left="10", pos_right="45%", pos_top="50%", pos_bottom="5"
            ),
        )
        .add(
            get_China_sum_line_chart(date),
            grid_opts=opts.GridOpts(
                pos_left="65%", pos_right="80", pos_top="5%", pos_bottom="65%"
            ),
        )
        .add(
            get_provinces_daily_pie_chart(date),
            grid_opts=opts.GridOpts(
                pos_left="45%", pos_top="65%"
            )
        )
        .add(
            get_provinces_daily_map_chart(date),
            grid_opts=opts.GridOpts(
                pos_left='10'
            )
        )
    )

    return grid_chart
Example #4
0
def index_bar_every_X():
    ted = pd.read_csv("./static/data/ted_main.csv")
    ted['film_date'] = ted['film_date'].apply(
        lambda x: datetime.datetime.fromtimestamp(int(x)).strftime('%d-%m-%Y'))
    ted['published_date'] = ted['published_date'].apply(
        lambda x: datetime.datetime.fromtimestamp(int(x)).strftime('%d-%m-%Y'))
    month_order = [
        'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
        'Nov', 'Dec'
    ]
    # day_order = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    ted['month'] = ted['film_date'].apply(
        lambda x: month_order[int(x.split('-')[1]) - 1])
    month_df = pd.DataFrame(ted['month'].value_counts()).reset_index()
    month_df.columns = ['month', 'talk_times']
    ted['years'] = ted['published_date'].apply(lambda x: x.split('-')[2])
    year_df = pd.DataFrame(ted['years'].value_counts().reset_index())
    year_df.columns = ['years', 'times']
    bar = (Bar().add_xaxis(month_df.month.values.tolist()).add_yaxis(
        "", month_df.talk_times.values.tolist()).set_global_opts(
            title_opts=opts.TitleOpts()).set_series_opts(
                label_opts=opts.LabelOpts(is_show=True), ))
    bar1 = (Line().add_xaxis(year_df.years.values.tolist()[::-1]).add_yaxis(
        "",
        year_df.times.values.tolist()[::-1]).set_global_opts(
            title_opts=opts.TitleOpts()).set_series_opts(
                label_opts=opts.LabelOpts(is_show=True), ))
    grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")).add(
        bar1, grid_opts=opts.GridOpts(pos_top="60%")))

    return render_template('index.html',
                           myechart=grid.render_embed(),
                           select=list(res.keys()))
Example #5
0
    def draw(self, symbol, fn_render):

        fn = get_dss() +'fut/bar/day_' + symbol + '.csv'
        df = pd.read_csv(fn)
        df1 = df.loc[:,['date','time','close']]

        n = 30
        close_list = df.apply(lambda record: float(record['close']), axis=1).tolist()
        close_list = np.array(close_list)
        ma_arr = talib.SMA(close_list, n)
        df['ma'] = ma_arr
        df['close'] = df['close'] - df['ma']
        df2 = df.loc[:,['date','time','close']]

        line1 = self.gen_line_one(df1, symbol)
        line2 = self.gen_line_two(df2)

        grid_chart = Grid(
            init_opts=opts.InitOpts(
                width="1300px",
                height="700px",
                #animation_opts=opts.AnimationOpts(animation=False),
            )
        )
        grid_chart.add(
            line1,
            grid_opts=opts.GridOpts(pos_left="5%", pos_right="3%", height="39%"),
        )
        grid_chart.add(
            line2,
            grid_opts=opts.GridOpts(
                pos_left="5%", pos_right="3%", pos_top="53%", height="39%" ),
        )

        grid_chart.render(fn_render)
Example #6
0
def index_bar_every_1_tp():
    ted = pd.read_csv("./static/data/ted_main.csv")
    ted['film_date'] = ted['film_date'].apply(
        lambda x: datetime.datetime.fromtimestamp(int(x)).strftime('%d-%m-%Y'))
    ted['published_date'] = ted['published_date'].apply(
        lambda x: datetime.datetime.fromtimestamp(int(x)).strftime('%d-%m-%Y'))
    views_ted = ted[[
        'main_speaker', 'title', 'published_date', 'views', 'comments', 'tags',
        'speaker_occupation', 'num_speaker'
    ]].sort_values(by='views', ascending=False)

    views_ted_1 = ted[[
        'main_speaker', 'title', 'published_date', 'views', 'comments', 'tags',
        'speaker_occupation', 'num_speaker'
    ]].sort_values(by='comments', ascending=False)
    bar = (Bar().add_xaxis(
        views_ted.head(10).main_speaker.values.tolist()).add_yaxis(
            "top10",
            views_ted.head(10).views.values.tolist()).set_global_opts(
                title_opts=opts.TitleOpts(
                    title="浏览量和评论数TOP10视频")).set_series_opts(
                        label_opts=opts.LabelOpts(is_show=True), ))
    bar1 = (Bar().add_xaxis(
        views_ted_1.head(10).main_speaker.values.tolist()).add_yaxis(
            "top10",
            views_ted_1.head(10).comments.values.tolist()).set_global_opts(
                title_opts=opts.TitleOpts(
                    title="浏览量和评论数TOP10视频")).set_series_opts(
                        label_opts=opts.LabelOpts(is_show=True), ))
    grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")).add(
        bar1, grid_opts=opts.GridOpts(pos_top="60%")))

    return render_template('index.html',
                           myechart=grid.render_embed(),
                           select=list(res.keys()))
def grid_vertical():
    bar = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
    )
    line = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
            legend_opts=opts.LegendOpts(pos_top="48%"),
        )
    )

    grid = (
        Grid()
        .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
        .add(line, grid_opts=opts.GridOpts(pos_top="60%"))
    )
    return grid
Example #8
0
def get_chart_of_date(date):
    #  一个只标注出对应年份,其他是空字符串的list
    date_mark = [0] * len(date_list)
    date_mark[date_list.index(date)] = dayly_count_list[date_list.index(date)]
    # print(date_mark)
    line_chart = (Line().add_xaxis(date_list).add_yaxis(
        "", dayly_count_list,
        linestyle_opts=opts.LineStyleOpts(width=3)).add_yaxis(
            "",
            date_mark,
            markpoint_opts=opts.MarkPointOpts(
                data=[opts.MarkPointItem(type_='max')])).set_series_opts(
                    label_opts=opts.LabelOpts(is_show=False)).set_global_opts(
                        title_opts=opts.TitleOpts(
                            title='2017年海口市5至10月正常天气滴滴每日出行总量', pos_top='50%')))

    bar_chart = (Bar().add_xaxis(xaxis_data=hour_24_list).add_yaxis(
        series_name='',
        yaxis_data=hourly_count_list[date_list.index(date)],
        label_opts=opts.LabelOpts(is_show=True,
                                  position='top',
                                  formatter='{c}'),
    ).set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=True)),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=True)),
        title_opts=opts.TitleOpts(title=date + '各时段出行量  天气:' +
                                  weather_list[date_list.index(date)] + ', ' +
                                  weekday_list[date_list.index(date)])))

    grid = (Grid().add(bar_chart,
                       grid_opts=opts.GridOpts(pos_bottom="60%")).add(
                           line_chart, grid_opts=opts.GridOpts(pos_top="60%")))

    return grid
Example #9
0
def pie_base() -> 'html':
    df = pd.read_csv('data3.csv', encoding='utf8')
    bar = (
        Bar()
            .add_xaxis(['不限', '3-5年', '1-3年', '5-10年', '无经验', '一年以下', '10年以上'])
            .add_yaxis("职位数量", [6183, 5164, 4842, 1516, 366, 111, 34])

            .set_global_opts(title_opts=opts.TitleOpts(title="工作经验-职位分布数量"))
    )

    line = (
        Line()
            .add_xaxis(['本科', '大专', '不限', '硕士', '博士', '中专'])
            .add_yaxis("职位数量", [9954, 3704, 3205, 1137, 88, 31])

            .set_global_opts(
            title_opts=opts.TitleOpts(title="最低要求学历-职位分布数量", pos_top="50%"),
            legend_opts=opts.LegendOpts(pos_top="50%"),
        )
    )

    grid = (
        Grid()
            .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%", pos_right="0", height="30%"))
            .add(line, grid_opts=opts.GridOpts(pos_top="60%", pos_right="0", height="30%"))
    )
    bar,line,grid.render("./templates/pie_base.html")
    with open("./templates/pie_base.html", encoding="utf8", mode="r") as f:
        pie_base = "".join(f.readlines())
        return render_template('python_pie_base.html',
                               the_pie_base=pie_base,
                               )
Example #10
0
def create_grid_bar_and_bar(title, x_list, data_list, data_list_2, data_unit_list):
    #   1.先生成上方的柱状图
    bar1 = Bar()
    bar1.add_xaxis(x_list)
    for key in data_list.keys():
        bar1.add_yaxis(key, data_list[key])
    bar1.set_global_opts(title_opts=opts.TitleOpts(title=title),
                        legend_opts=opts.LegendOpts(pos_left="25%", pos_top="5%"),
                        yaxis_opts=opts.AxisOpts(name="单位:" + data_unit_list[0]
                                                 , is_scale=True))

    #   2.下方柱状图
    bar2 = Bar()
    bar2.add_xaxis(x_list)
    for key in data_list_2.keys():
        bar2.add_yaxis(key, data_list_2[key])
    bar2.set_global_opts(title_opts=opts.TitleOpts(title=title),
                        legend_opts=opts.LegendOpts(pos_left="25%", pos_top="55%"),
                        yaxis_opts=opts.AxisOpts(name="单位:" + data_unit_list[1],
                                                 is_scale=True))

    # 3.生成最终的组合图
    c = (
            Grid(init_opts=opts.InitOpts(theme=THEME_TYPE,height="700px"))
                .add(bar1, grid_opts=opts.GridOpts(pos_bottom="60%"))
                .add(bar2, grid_opts=opts.GridOpts(pos_top="60%"))
        )

    src_path = "./指标-年度-图片生成/"
    html_file_name = src_path + title + ".html"
    img_file_name = src_path + title + ".png"
    make_snapshot(snapshot, c.render(html_file_name), img_file_name)
    print(img_file_name+"生成完毕...")
Example #11
0
    def grid_graph(self, grid_graph=None):
        # 创建组合图表画布对象
        self.grid_chart = Grid(
            init_opts=opts.InitOpts(width="1900px", height="900px"))

        bar_data = [[
            row["open_price"], row["close_price"], row["low_price"],
            row["high_price"]
        ] for ix, row in self.bar_data.iterrows()]
        self.grid_chart.add_js_funcs("var barData = {}".format(bar_data))

        self.grid_chart.add(
            chart=self.kline_chart,
            grid_index=0,
            grid_opts=opts.GridOpts(pos_left="5%",
                                    pos_right="5%",
                                    pos_top="10%",
                                    height="60%"),
        )
        self.grid_chart.add(
            chart=grid_graph,
            grid_index=1,
            grid_opts=opts.GridOpts(pos_left="5%",
                                    pos_right="5%",
                                    pos_top="75%",
                                    height="20%"),
        )

        return self.grid_chart
Example #12
0
def create_result_chart(data):

    instrulist = list(set(d.instrument for d in data))
    # x = ["{} P{}".format(localtime(d.upload_time).strftime("%Y-%m-%d %X"), d.platenum) for d in data]
    x = ["{} P{}".format(d.upload_time.strftime("%Y-%m-%d %X"), d.platenum) for d in data]

    # 均值直方图
    b = Bar(init_opts=opts.InitOpts(width='1900px'))
    b.add_xaxis(x)
    for instru in instrulist:
        mean = get_mean(data, instru)
        b.add_yaxis(instru, mean)
    b.set_global_opts(title_opts=opts.TitleOpts(title="结果mean图"))

    # sd折线图
    l = Line(init_opts=opts.InitOpts(width='1900px'))
    l.add_xaxis(x)
    for instru in instrulist:
        sd = get_sd(data, instru)
        l.add_yaxis(instru, sd, is_connect_nones=True)
    l.set_global_opts(title_opts=opts.TitleOpts(title="结果sd图", pos_top='48%'))

    grid = Grid(init_opts=opts.InitOpts(width='1900px'))
    grid.add(b, grid_opts=opts.GridOpts(pos_bottom='60%'))
    grid.add(l, grid_opts=opts.GridOpts(pos_top='60%'))
    
    return grid
Example #13
0
def test_liquid_grid(fake_writer):
    l1 = (
        Liquid()
        .add("lq", [0.6, 0.7], center=["60%", "50%"])
        .set_global_opts(title_opts=opts.TitleOpts(title="多个 Liquid 显示"))
    )

    l2 = Liquid().add(
        "lq",
        [0.3254],
        center=["25%", "50%"],
        label_opts=opts.LabelOpts(
            font_size=50,
            formatter=JsCode(
                """function (param) {
                        return (Math.floor(param.value * 10000) / 100) + '%';
                    }"""
            ),
            position="inside",
        ),
    )

    c = Grid().add(l1, grid_opts=opts.GridOpts()).add(l2, grid_opts=opts.GridOpts())
    c.render()
    _, content = fake_writer.call_args[0]
    assert_in("center", content)
Example #14
0
def grid_chart(dataframe) -> Grid:
    grid = (
        Grid(init_opts=opts.InitOpts(
            width="1200px",
            height="800px",
            #设置动画
            animation_opts=opts.AnimationOpts(animation_delay=1000,
                                              animation_easing="elasticOut"),
        )).add(
            line_datazoom_CO2(dataframe),  # 图表实例,仅 `Chart` 类或者其子类

            # grid 组件离容器右侧的距离。
            # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
            grid_opts=opts.GridOpts(pos_top="4%", height="24%")).
        add(
            line_datazoom_temp(dataframe),  # 图表实例,仅 `Chart` 类或者其子类

            # grid 组件离容器右侧的距离。
            # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
            grid_opts=opts.GridOpts(pos_bottom="39%", height="24%")
        ).add(
            bar_datazoom_rh(dataframe),  # 图表实例,仅 `Chart` 类或者其子类

            # grid 组件离容器右侧的距离。
            # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
            grid_opts=opts.GridOpts(pos_bottom="6%",
                                    height="24%")).dump_options_with_quotes())

    return grid
Example #15
0
def index_bar_every_4():
    df2 = pd.read_csv(r'./static/data/house_price.csv')
    df = pd.read_csv(r'./static/data/divorce.csv')
    bar = (Bar().add_xaxis(df.province.values.tolist()).add_yaxis(
        "离婚年均增长率", df.dir.values.tolist()).set_global_opts(
            title_opts=opts.TitleOpts(title="中国分省离婚年均增长率情况"),
            xaxis_opts=opts.AxisOpts(name_rotate=60,
                                     name="省份",
                                     axislabel_opts={"rotate": 45})))
    line = (Line().add_xaxis(df2.province.values.tolist()).add_yaxis(
        "房价年均增长率", df2.increase.values.tolist()).set_global_opts(
            title_opts=opts.TitleOpts(title="中国分省住宅商品房价格年均增长率情况",
                                      pos_top="48%"),
            legend_opts=opts.LegendOpts(pos_top="48%"),
            xaxis_opts=opts.AxisOpts(name_rotate=60,
                                     name="省份",
                                     axislabel_opts={"rotate": 45})))

    grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")).add(
        line, grid_opts=opts.GridOpts(pos_top="60%")))
    return render_template('index.html',
                           myechart=grid.render_embed(),
                           text1='''离婚年均增长率相对较低的省份:北京、上海、新疆、黑龙江、吉林、内蒙古;
                                但其实,北京、上海的房价年均增长率是非常高的,且新疆、黑龙江这些省份的房价年均增长率也是处于中游水平;
                            可以很明显地从整个图中看出,离婚年均增长率和房价年均增长率之间的关联性不大。''')
Example #16
0
    def draw(self, symbol, fn_render):
        fn = get_dss() + 'fut/bar/day_' + symbol + '.csv'
        df1 = pd.read_csv(fn)
        # print(df1.head())
        price_min = int(df1.close.min() * 0.99)
        price_max = df1.close.max()

        kline = self.gen_kline(df1, symbol)
        line_cci = self.gen_cci(df1, 100)

        grid_chart = Grid(init_opts=opts.InitOpts(
            width="1390px",
            height="700px",
            animation_opts=opts.AnimationOpts(animation=False),
        ))
        grid_chart.add(
            kline,
            grid_opts=opts.GridOpts(pos_left="10%",
                                    pos_right="8%",
                                    height="60%"),
        )
        grid_chart.add(
            line_cci,
            grid_opts=opts.GridOpts(pos_left="10%",
                                    pos_right="8%",
                                    pos_top="75%",
                                    height="17%"),
        )

        grid_chart.render(fn_render)
def grid_horizontal():
    scatter = (
        Scatter()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(
            toolbox_opts=opts.ToolboxOpts(is_show=True),
            title_opts=opts.TitleOpts(title="Grid-Scatter"),
            legend_opts=opts.LegendOpts(pos_left="20%"),
        )
    )
    line = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(
            toolbox_opts=opts.ToolboxOpts(is_show=True),
            title_opts=opts.TitleOpts(title="Grid-Line", pos_right="5%"),
            legend_opts=opts.LegendOpts(pos_right="20%"),
        )
    )
    grid = (
        Grid()
        .add(scatter, grid_opts=opts.GridOpts(pos_left="55%"))
        .add(line, grid_opts=opts.GridOpts(pos_right="55%")))
    return grid
Example #18
0
def draw_charts(fn1, fn2):
    df1 = pd.read_csv(fn1)
    df1['datetime'] = df1['date'] + ' ' + df1['time']
    #print(df1.head())
    kline1 = gen_kline_one(df1)

    df2 = pd.read_csv(fn2)
    df2['datetime'] = df2['date'] + ' ' + df2['time']
    #print(df1.head())
    kline2 = gen_kline_two(df2)

    grid_chart = Grid(
        init_opts=opts.InitOpts(
            width="1300px",
            height="700px",
            #animation_opts=opts.AnimationOpts(animation=False),
        )
    )
    grid_chart.add(
        kline1,
        grid_opts=opts.GridOpts(pos_left="5%", pos_right="3%", height="39%"),
    )
    grid_chart.add(
        kline2,
        grid_opts=opts.GridOpts(
            pos_left="3%", pos_right="5%", pos_top="53%", height="39%" ),
    )

    fn = get_dss( ) + 'backtest/render/bar2.html'
    grid_chart.render(fn)
def overlap_line_scatter(day_data, week_data) -> Bar:
    # 处理日数据
    x_day = list(day_data[16:-7].index)
    for i in range(0, len(x_day)):
        x_day[i] = datetime.datetime.strftime(x_day[i], "%H:%M")
    Y_day = list(day_data[16:-7])
    for i in range(0, len(Y_day)):
        Y_day[i] = round(Y_day[i])

    # 处理周数据
    print(week_data)
    x_week = list(week_data.index)
    Y_week = list(week_data['counts'])
    print(Y_week)

    bar = (Bar().add_xaxis(x_day).add_yaxis(
        "未来一天",
        Y_day).set_global_opts(title_opts=opts.TitleOpts(title="咨询量预测统计")))
    line = (Line().add_xaxis(x_week).add_yaxis(
        "未来一周", Y_week, symbol="triangle", symbol_size=20).set_global_opts(
            legend_opts=opts.LegendOpts(pos_top="48%")))

    grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")).add(
        line, grid_opts=opts.GridOpts(pos_top="60%")))
    return grid
Example #20
0
def grid(factor, factor2, instrument):
    gridchart = Grid(init_opts=opts.InitOpts(width="100vw",
                                             height="50vh",
                                             animation_opts=opts.AnimationOpts(
                                                 animation=True)))
    gridchart.add(  #左边画最新数据
        getplot(factor,
                factor2,
                kdata_part,
                nnv,
                new_p,
                instrument,
                xaxis_index=[0, 1]),
        grid_opts=opts.GridOpts(pos_left="5%", pos_right="68%"))
    gridchart.add(  # 右边画全样本数据
        getplot(factor,
                factor2,
                kdata_all,
                nv,
                new_a,
                instrument,
                xaxis_index=None),
        grid_opts=opts.GridOpts(pos_left="40%", pos_right="5%"))

    return gridchart
Example #21
0
def grid_liquid_favorate_rate() -> Grid:
    l1 = (Liquid().add(
        "好评率",
        [favorate_rate],
        center=["60%", "50%"],
        label_opts=opts.LabelOpts(
            font_size=50,
            formatter=JsCode("""function (param) {
                        return (Math.floor(param.value * 10000) / 100) + '%';
                    }"""),
            position="inside",
        ),
    ).set_global_opts(title_opts=opts.TitleOpts(title="好评率和差评率")))

    l2 = (Liquid().add(
        "差评率",
        [poor_rate],
        center=["25%", "50%"],
        label_opts=opts.LabelOpts(
            font_size=50,
            formatter=JsCode("""function (param) {
                        return (Math.floor(param.value * 10000) / 100) + '%';
                    }"""),
            position="inside",
        ),
    ))

    grid = Grid().add(l2,
                      grid_opts=opts.GridOpts()).add(l1,
                                                     grid_opts=opts.GridOpts())
    return grid
Example #22
0
def get_year_chart(time,data):
    map_chart=get_Map(time,data)
    bar_chart=get_Bar(time,data)
    g=(
        Grid(init_opts=opts.InitOpts(width='1440px',height='600px'))
        .add(bar_chart,grid_opts=opts.GridOpts(pos_left="10", pos_right="45%", pos_top="50%", pos_bottom="10"))
        .add(map_chart,grid_opts=opts.GridOpts())
    )
    return g
def grid_like(data,user_id):
    bar = draw_bar_like(data, user_id)
    pie = draw_pie_like(data, user_id)
    grid = (
        Grid(init_opts=opts.InitOpts(width="1400px",height="500px"))
            .add(bar, grid_opts=opts.GridOpts(pos_left="55%"))
            .add(pie, grid_opts=opts.GridOpts(pos_right="55%"))

    )
    return grid
def draw():
    # 饼图
    pie = (Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add(
        "疫情接口可视化", pageData).set_colors([
            "blue", "green", "yellow", "red", "pink", "orange", "purple"
        ]).set_global_opts(
            visualmap_opts=opts.VisualMapOpts(is_show=True, min_=0, max_=2000))
           )
    map = (Map(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add(
        "疫情接口可视化", pageData, "china").set_global_opts(
            visualmap_opts=opts.VisualMapOpts(is_show=True, min_=0, max_=2000))
           )
    bar = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        # 只取省份
        .add_xaxis([item[0] for item in pageData])
        # 只取人数
        .add_yaxis(series_name="", y_axis=[item[1] for item in pageData])
        # 设置全局配置项
        .set_global_opts(
            # 设置视觉配置项
            visualmap_opts=opts.VisualMapOpts(
                is_show=True,
                min_=0,
                max_=10000,
                dimension=0,
                # 翻转坐标之后,视觉映射不生效可以添加dimension=0
                # pos_right=10, # pos_top=0
            ),
            # x坐标轴默认标注去除
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
                is_show=True)),
            # y坐标轴默认标注去除
            yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
                is_show=True)))
        # 去除柱状图上的数字标注
        .set_series_opts(label_opts=opts.LabelOpts(
            is_show=False)).reversal_axis()  # x轴y轴
    )
    # grid = (
    #     # 初始化配置项,参考 `global_options.InitOpts`
    #     Grid(init_opts=opts.InitOpts(theme=ThemeType.DARK))
    #         .add(pie, grid_opts=opts.GridOpts())
    #         .add(map, grid_opts=opts.GridOpts())
    #         .add(bar, grid_opts=opts.GridOpts())
    #         .render("疫情接口数据组合图形.html")
    # )

    # 组合图形
    grid = (
        Grid(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add(
            bar, grid_opts=opts.GridOpts())
        # 柱状图放在组合图形的第一个
        .add(map, grid_opts=opts.GridOpts()).add(
            pie, grid_opts=opts.GridOpts()).render("全国疫情数据可视化组合图形展示.html"))
def draw_charts():

    pz = 'CF'
    vtSymbol = 'CF'

    fn = get_dss() + 'backtest/fut/' + pz + '/day_' + vtSymbol + '.csv'
    df1 = pd.read_csv(fn)
    # df1 = df1[df1.date >= '2019-01-20']
    #df1['datetime'] = df1['date'] + ' ' + df1['time']
    df1['datetime'] = df1['date']
    price_min = int(df1.close.min() * 0.99)
    price_max = df1.close.max()

    #fn  = get_dss( )+ 'fut/engine/aberration_raw/signal_aberration_raw_duo_deal_CF.csv'
    #fn  = get_dss( )+ 'fut/engine/aberration_raw/signal_aberration_raw_kong_deal_CF.csv'

    fn = get_dss(
    ) + 'fut/engine/aberration_enhance/signal_aberration_enhance_duo_deal_CF.csv'
    #fn  = get_dss( )+ 'fut/engine/aberration_enhance/signal_aberration_enhance_kong_deal_CF.csv'

    df2 = pd.read_csv(fn)
    dt_list = df2['datetime'].tolist()
    dt_list = [dt[:10] for dt in dt_list]
    # print(dt_list)
    df2['datetime'] = dt_list

    line = gen_line(df1, vtSymbol, price_min, price_max)
    line_atr = gen_atr(df1, 10)
    line_boll = gen_boll(df1, 10, 2)
    line = line.overlap(line_boll)

    scatter_open = gen_poit_open(df2)
    scatter_close = gen_poit_close(df2)
    line = line.overlap(scatter_open)
    line = line.overlap(scatter_close)

    grid_chart = Grid(init_opts=opts.InitOpts(
        width="1300px",
        height="700px",
        animation_opts=opts.AnimationOpts(animation=False),
    ))
    grid_chart.add(
        line,
        grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", height="60%"),
    )
    grid_chart.add(
        line_atr,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="76%",
                                height="17%"),
    )

    fn = get_dss() + 'backtest/render/k_deal_aberration_' + vtSymbol + '.html'
    grid_chart.render(fn)
Example #26
0
def get_line_charts():
    line_chart_1 = (
        Line(init_opts=opts.InitOpts(width='500px', height='250px'))
            .add_xaxis(time_list)
            .add_yaxis(series_name="迁出指数",
                       y_axis=hubei_out_data,
                       # symbol="emptyCircle",
                       is_symbol_show=True,
                       is_smooth=True, )
            .add_yaxis(series_name="迁入指数",
                       y_axis=hubei_in_data,
                       # symbol="emptyCircle",
                       is_symbol_show=True,
                       is_smooth=True, )
            .set_global_opts(
            title_opts=opts.TitleOpts(title='01-01至03-10湖北省迁徙指数',
                                      pos_left='72%', pos_top='15%'),
            tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type='shadow'),
            legend_opts=opts.LegendOpts(is_show=True ,orient='horizontal', pos_left='75%', pos_top='20%'),
            yaxis_opts=opts.AxisOpts(
                name='迁徙指数',
                type_='value',
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
            )
        )
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=True))

    )

    wordcloud = (
        WordCloud()
        .add(series_name="城市", data_pair=get_out_cities(), word_size_range=[10, 66],
             pos_left='-8%', pos_top='10%', shape='triangle-forward')
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="1-21湖北省迁出热门城市", pos_left='20%', pos_top='15%'
            ),
            tooltip_opts=opts.TooltipOpts(is_show=True),
        )
    )

    grid_chart = (
        Grid(init_opts=opts.InitOpts(width='1500px', height='700px'))
            .add(
            line_chart_1,
            grid_opts=opts.GridOpts(
                pos_left='65%', pos_right='80', pos_top='30%', pos_bottom='30%'
            )
    )
            .add(wordcloud, grid_opts=opts.GridOpts(pos_left="20%", pos_top="10%"))
    )
    return grid_chart
def plot_grid():
    """
    使用Grid来绘制组合图
    子图的宽高是自适应画板(Grid)的宽高
    子图的位置用grid_opts中pos选项来调节:
        当两个子图为pos_left与pos_right时,此时为左右排列
        当两个子图为pos_top与pos_bottom时,此时为上下排列
    :return: html
    """
    # 1.首先绘制一个柱状图
    # 初始化数据来源
    x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"]
    y1 = [5, 20, 36, 10, 75]
    y2 = [10, 25, 8, 60, 20]

    #  初始化柱状图
    bar = Bar(init_opts=opts.InitOpts(width='200px', height='100px'))

    # x轴数据
    bar.add_xaxis(xaxis_data=x)
    # y轴数据
    bar.add_yaxis(series_name="商家A", y_axis=y1)
    bar.add_yaxis(series_name="商家B", y_axis=y2)

    # 设置配置
    bar.set_global_opts(title_opts=opts.TitleOpts(title='柱状图:商家货物销量'))

    # 2.绘制一个折线图
    # 初始化数据来源
    x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"]
    y1 = [5, 20, 36, 10, 75]
    y2 = [10, 25, 8, 60, 20]

    # 初始化折线图
    line = Line(init_opts=opts.InitOpts(width="100px", height="100px"))

    # x轴数据
    line.add_xaxis(xaxis_data=x)

    # y轴数据
    line.add_yaxis(series_name='商家A', y_axis=y1)
    line.add_yaxis(series_name='商家B', y_axis=y2)

    # 设置配置
    line.set_global_opts(
        title_opts=opts.TitleOpts(title='折线图:商家货物销量', pos_top='50%'))

    # 初始化组合图:Grid
    grid = Grid(init_opts=opts.InitOpts(width='600px', height='400px'))
    # 利用grid_bottom,grid_top,grid_left,grid_right四个参数控制子图的相对位置
    grid.add(bar, grid_opts=opts.GridOpts(pos_right='60%'))
    grid.add(line, grid_opts=opts.GridOpts(pos_left='60%'))
    grid.render('组合图Grid示范图.html')
Example #28
0
def draw_charts():

    # #fn = get_dss() +'backtest/fut/m/' + 'm_01_05.csv'
    # fn = get_dss() +'backtest/fut/m/' + 'day_m.csv'
    # df1 = pd.read_csv(fn)
    # df1['datetime'] = df1['date'] + ' ' + df1['time']
    # #print(df1.head())
    # kline1 = gen_kline_one(df1)
    #
    # fn = get_dss() +'backtest/fut/y/' + 'day_y.csv'
    # df2 = pd.read_csv(fn)
    # df2['datetime'] = df2['date'] + ' ' + df2['time']
    # #print(df1.head())
    # kline2 = gen_kline_two(df2)

#--------------------------------------------------------------------------

    fn = 'bar_kamaresid_raw_duo_CF.csv'
    fn = 'bar_kamaresid_raw_duo_m.csv'

    df = pd.read_csv(fn)
    df.columns = ['date','time','close','q1','q2','resid']
    df1 = df.loc[:,['date','time','close']]
    df2 = df.loc[:,['date','time','resid']]
    df2['close'] = df2['resid']
    print(df1.head(3))
    print(df2.head(3))
    s1 = 'close'
    s2 = 'resid'

    line1 = gen_line_one(df1)
    line2 = gen_line_two(df2)


    grid_chart = Grid(
        init_opts=opts.InitOpts(
            width="1300px",
            height="700px",
            #animation_opts=opts.AnimationOpts(animation=False),
        )
    )
    grid_chart.add(
        line1,
        grid_opts=opts.GridOpts(pos_left="5%", pos_right="3%", height="39%"),
    )
    grid_chart.add(
        line2,
        grid_opts=opts.GridOpts(
            pos_left="5%", pos_right="3%", pos_top="53%", height="39%" ),
    )

    fn = get_dss( )+ 'backtest/render/k_k_' + s1 + '_' + s2 + '.html'
    grid_chart.render(fn)
Example #29
0
def ice_ga_shrinkage_chart(df):
    """ice ga shrinkage"""

    os_ma = pyecharts_float_values_data(df, 'os_ma', 6)
    # 信号信息
    signal_infos = bolling_signals_data(df)

    # k 线
    ohlc_chart = ohlc_kline_chart(df,
                                  x_axis_count=3,
                                  signal_infos=signal_infos)
    # os_ma
    os_ma_line = Line().add_xaxis(
        xaxis_data=pyecharts_time_data(df)).add_yaxis(
            y_axis=os_ma,
            series_name='os_ma',
            is_symbol_show=False,
            label_opts=None,
            is_smooth=True,
        )
    # 资金曲线
    equity_chart = equity_line_chart(df)

    grid_chart = Grid(init_opts=opts.InitOpts(
        width="1000px",
        height="600px",
        bg_color="#ffffff",
        animation_opts=opts.AnimationOpts(animation=False),
    ))
    grid_chart.add(
        ohlc_chart,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="5%",
                                height="30%"),
    )
    grid_chart.add(
        os_ma_line,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="40%",
                                height="20%"),
    )
    grid_chart.add(
        equity_chart,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="70%",
                                height="18%"),
    )
    return grid_chart
Example #30
0
def draw_charts():

    vtSymbol = 'CF005'

    fn = get_dss() + 'fut/bar/min5_' + vtSymbol + '.csv'
    df1 = pd.read_csv(fn)
    df1 = df1[df1.date >= '2019-11-20']
    df1['datetime'] = df1['date'] + ' ' + df1['time']
    # print(df1.head())

    fn = get_dss() + 'fut/engine/rsiboll/signal_rsiboll_duo_deal_CF.csv'
    df2 = pd.read_csv(fn)

    kline = gen_kline(df1)
    line_rsi = gen_rsi(df1)
    line_atr = gen_atr(df1)
    scatter_deal_one = gen_poit_one(df2)
    scatter_deal_two = gen_poit_two(df2)
    scatter_deal_three = gen_poit_three(df2)

    kline_scatter = kline.overlap(scatter_deal_one)
    kline_scatter = kline_scatter.overlap(scatter_deal_two)
    kline_scatter = kline_scatter.overlap(scatter_deal_three)

    grid_chart = Grid(init_opts=opts.InitOpts(
        width="1000px",
        height="700px",
        animation_opts=opts.AnimationOpts(animation=False),
    ))
    grid_chart.add(
        kline_scatter,
        grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", height="45%"),
    )
    grid_chart.add(
        line_rsi,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="57%",
                                height="17%"),
    )

    grid_chart.add(
        line_atr,
        grid_opts=opts.GridOpts(pos_left="10%",
                                pos_right="8%",
                                pos_top="76%",
                                height="17%"),
    )

    grid_chart.render("k_deal_rsi_atr.html")