Ejemplo n.º 1
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
Ejemplo n.º 2
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)
Ejemplo n.º 3
0
    def grid_graph(self, grid_graph_1=None, grid_graph_2=None):
        # 创建组合图表画布对象
        self.grid_chart = Grid(init_opts=opts.InitOpts(
            width="1900px", height="900px", chart_id=self.chart_id))

        if self.grid_quantity == 0:
            self.grid_chart.add(chart=self.kline_chart,
                                grid_opts=opts.GridOpts(pos_left="5%",
                                                        pos_right="5%",
                                                        pos_top="10%",
                                                        height="85%"),
                                is_control_axis_index=True)
            return self.grid_chart

        elif self.grid_quantity == 1:
            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_1,
                grid_index=1,
                grid_opts=opts.GridOpts(pos_left="5%",
                                        pos_right="5%",
                                        pos_top="75%",
                                        height="20%"),
            )
            return self.grid_chart

        elif self.grid_quantity == 2:
            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="40%"),
            )
            self.grid_chart.add(
                chart=grid_graph_1,
                grid_index=1,
                grid_opts=opts.GridOpts(pos_left="5%",
                                        pos_right="5%",
                                        pos_top="55%",
                                        height="17.5%"),
            )
            self.grid_chart.add(
                chart=grid_graph_2,
                grid_index=2,
                grid_opts=opts.GridOpts(pos_left="5%",
                                        pos_right="5%",
                                        pos_top="77.5%",
                                        height="17.5%"),
            )
            return self.grid_chart
Ejemplo n.º 4
0
 def grid(self, data=[]):
     grid = Grid(init_opts=opts.InitOpts(**self.chart_opt))
     for d in data:
         grid.add(
             d["chart"],
             grid_opts=opts.GridOpts(**d["setting"]),
         )
     return grid
Ejemplo n.º 5
0
def test_grid_options(fake_writer):
    bar = _chart_for_grid()
    gc = Grid().add(
        bar,
        opts.GridOpts(pos_left="5%", pos_right="20%", is_contain_label=True))
    gc.render()
    _, content = fake_writer.call_args[0]
    assert_in("containLabel", content)
def workarea_salary_chart(df):
    # 转换类型为浮点型
    df.low_salary, df.high_salary = df.low_salary.astype(
        float), df.high_salary.astype(float)
    # 分别求各地区平均最高薪资, 平均最低薪资
    salary = df.groupby('workarea',
                        as_index=False)[['low_salary', 'high_salary'
                                         ]].mean()  # 分别求各地区的岗位数量,并降序排列
    print(salary)
    workarea = df.groupby('workarea',
                          as_index=False)['name'].count().sort_values(
                              'name', ascending=False)
    print(workarea)
    workarea = pd.merge(workarea, salary, how='left', on='workarea')  # 合并数据表
    print(workarea)
    workarea = workarea.head(20)  # 用前20名进行绘图

    grid = Grid()
    bar = Bar()
    grid.theme = themes
    line = Line()
    line1 = Line()

    bar.add_xaxis(workarea.workarea.tolist())
    bar.add_yaxis("岗位需求量", workarea.name.tolist())
    bar.set_global_opts(
        title_opts=opts.TitleOpts(
            title="岗位需求量排名前20地区的平均薪资水平状况",
            title_link='./chart/workarea_salary_chart.html',
            title_target='blank',
            pos_left='left',
        ),
        tooltip_opts=opts.TooltipOpts(trigger="axis",
                                      axis_pointer_type="cross",
                                      is_show=True),  # 交叉指向工具
        legend_opts=opts.LegendOpts(pos_left="80%",
                                    orient="vertical",
                                    pos_top="3%"),
    )
    # bar.set_series_opts(is_show=True, position='rightTop')
    print((workarea.name).tolist())
    print((round(workarea.high_salary * 1000)).tolist())
    # 在bar上增加Y轴,在line图上选择对应的轴向
    line.add_xaxis(workarea.workarea.tolist())
    line.add_yaxis("平均最高薪资", (round(workarea.high_salary * 1000)).tolist(),
                   yaxis_index=0)
    line1.add_xaxis(workarea.workarea.tolist())
    line1.add_yaxis("平均最低薪资", (round(workarea.low_salary * 1000)).tolist(),
                    yaxis_index=0)
    # 把line添加到bar上
    bar.overlap(line)
    bar.overlap(line1)
    # 这里如果不需要grid也可以,直接设置bar的格式,然后显示bar即可
    #bar.render_notebook()
    grid.add(chart=bar, grid_opts=opts.GridOpts(), is_control_axis_index=True)
    # grid.render("./chart/workarea_salary_chart.html")
    return grid
Ejemplo n.º 7
0
 def to_single_html(self):
     if len(self.charts) == 0:
         self.generate_views()
     page = Page()
     self.page = Page()
     for chart in self.charts:
         grid = Grid()
         grid.add(chart,
                  grid_opts=opts.GridOpts(pos_bottom='20%', pos_top='20%'))
         self.page.add(grid)
     self.page.render(self.charts_dir + self.name + '.html')
Ejemplo n.º 8
0
    def bar_base(self) -> Bar:
        start = datetime.datetime.now()

        dispose_unit = []
        done = []
        undo = []
        count_dispose_unit = 30

        event_counts = Event.objects.filter(Q(achieve=1)).values('dispose_unit').annotate(count=Count('dispose_unit')).values('dispose_unit', 'count').order_by('-count')
        event_counts = list(event_counts)
        sum_of_done = 0
        sum_of_undo = 0
        # print(len(event_counts))
        # print(event_counts)
        for i in range(0,count_dispose_unit):
            undo_event = Event.objects.filter(Q(achieve=3) & Q(dispose_unit = event_counts[i]['dispose_unit']))
            undo_event_num = len(undo_event)
            dispose_unit_name = DisposeUnit.objects.filter(id=event_counts[i]['dispose_unit']).values("name")[0]['name']
            dispose_unit.append(dispose_unit_name)
            done.append(event_counts[i]['count'])
            undo.append(undo_event_num)
        for i in range(count_dispose_unit,len(event_counts)):
            undo_event = Event.objects.filter(Q(achieve=3) & Q(dispose_unit=event_counts[i]['dispose_unit']))
            undo_event_num = len(undo_event)
            sum_of_done = sum_of_done + event_counts[i]['count']
            sum_of_undo = sum_of_undo + undo_event_num
        other_unit_num = len(event_counts) - count_dispose_unit
        dispose_unit.append("其他"+str(other_unit_num)+"个部门总和")
        done.append(sum_of_done)
        undo.append(sum_of_undo)
        c = (
            Bar()
                .add_xaxis(dispose_unit)
                .add_yaxis("按期完成", done, stack="stack1",category_gap="60%")
                .add_yaxis("逾期完成", undo, stack="stack1",category_gap="60%")
                .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
                .set_global_opts(
                xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
                title_opts=opts.TitleOpts(title="处理事件最多的部门"),
                datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],

                )
        )

        grid = Grid()

        grid.add(c, grid_opts=opts.GridOpts(pos_bottom="20%"))

        c = grid.dump_options_with_quotes()

        end = datetime.datetime.now()
        print("Bar: " + str(end - start))
        return c
Ejemplo n.º 9
0
def weak_user(title):
    all_day = parse_day(7)
    x_data = [str(i.day) + '日' for i in all_day]
    y_data = [get_long(i) for i in all_day]
    bar = (Bar(init_opts=opts.InitOpts(
        theme=ThemeType.DARK, width="1400px",
        height='1000px')).add_xaxis(x_data).add_yaxis(
            "增长用户",
            [i[1] for i in y_data],
            yaxis_index=0,
            color="#d14a61",
        ).extend_axis(yaxis=opts.AxisOpts(
            type_="value",
            name="活跃用户",
            min_=0,
            max_=max([i[0] for i in y_data]),
            position="left",
            axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(
                color="#675bba")),
            axislabel_opts=opts.LabelOpts(formatter="{value} 人"),
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),
        )).set_global_opts(
            yaxis_opts=opts.AxisOpts(
                name="增长用户",
                type_="value",
                min_=0,
                max_=max([i[1] for i in y_data]),
                position="right",
                offset=80,
                axisline_opts=opts.AxisLineOpts(
                    linestyle_opts=opts.LineStyleOpts(color="#5793f3")),
                axislabel_opts=opts.LabelOpts(formatter="{value} 人"),
            ),
            title_opts=opts.TitleOpts(title=title),
            tooltip_opts=opts.TooltipOpts(trigger="axis",
                                          axis_pointer_type="cross"),
        ))
    line = (Line(init_opts=opts.InitOpts(
        theme=ThemeType.DARK, width="1400px", height='1000px')).add_xaxis(
            x_data).add_yaxis(
                "活跃用户",
                [i[0] for i in y_data],
                yaxis_index=1,
                color="#675bba",
                label_opts=opts.LabelOpts(is_show=False),
            ))
    bar.overlap(line)
    grid = Grid(init_opts=opts.InitOpts(
        theme=ThemeType.DARK, width="1400px", height='1000px'))
    grid.add(bar, opts.GridOpts(), is_control_axis_index=True)
    return grid
Ejemplo n.º 10
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
Ejemplo n.º 11
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)
Ejemplo n.º 12
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)
Ejemplo n.º 13
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")
Ejemplo n.º 14
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)
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
def overlap_line_scatter(day_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="“及时倾听”半点客户量预测"))
        # .set_series_opts(width=900,height=200)
    )
    # 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="5%")))
    return grid
Ejemplo n.º 17
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='''离婚年均增长率相对较低的省份:北京、上海、新疆、黑龙江、吉林、内蒙古;
                                但其实,北京、上海的房价年均增长率是非常高的,且新疆、黑龙江这些省份的房价年均增长率也是处于中游水平;
                            可以很明显地从整个图中看出,离婚年均增长率和房价年均增长率之间的关联性不大。''')
Ejemplo n.º 18
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()))
Ejemplo n.º 19
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
Ejemplo n.º 20
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
Ejemplo n.º 21
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()))
Ejemplo n.º 22
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
Ejemplo n.º 23
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+"生成完毕...")
Ejemplo n.º 24
0
def grid_mutil_yaxis() -> Grid:
    x_data = ["{}月".format(i) for i in range(1, 13)]
    bar = (Bar().add_xaxis(x_data).add_yaxis(
        "蒸发量",
        [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
        yaxis_index=0,
        color="#d14a61",
    ).add_yaxis(
        "降水量",
        [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
        yaxis_index=1,
        color="#5793f3",
    ).extend_axis(yaxis=opts.AxisOpts(
        name="蒸发量",
        type_="value",
        min_=0,
        max_=250,
        position="right",
        axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(
            color="#d14a61")),
        axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
    )).extend_axis(yaxis=opts.AxisOpts(
        type_="value",
        name="温度",
        min_=0,
        max_=25,
        position="left",
        axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(
            color="#675bba")),
        axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
        splitline_opts=opts.SplitLineOpts(
            is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),
    )).set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="降水量",
            min_=0,
            max_=250,
            position="right",
            offset=80,
            axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(
                color="#5793f3")),
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
        ),
        title_opts=opts.TitleOpts(title="Grid-多 Y 轴示例"),
        tooltip_opts=opts.TooltipOpts(trigger="axis",
                                      axis_pointer_type="cross"),
    ))

    line = (Line().add_xaxis(x_data).add_yaxis(
        "平均温度",
        [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
        yaxis_index=2,
        color="#675bba",
        label_opts=opts.LabelOpts(is_show=False),
    ))

    bar.overlap(line)
    return Grid().add(bar,
                      opts.GridOpts(pos_left="5%", pos_right="20%"),
                      is_control_axis_index=True)
Ejemplo n.º 25
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
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
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
Ejemplo n.º 28
0
def test_grid_control_axis_index():
    bar = _chart_for_grid()
    gc = Grid().add(bar,
                    opts.GridOpts(pos_left="5%", pos_right="20%"),
                    is_control_axis_index=True)
    expected_idx = (0, 1, 2)
    for idx, series in enumerate(gc.options.get("series")):
        assert_equal(series.get("yAxisIndex"), expected_idx[idx])
Ejemplo n.º 29
0
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)
Ejemplo n.º 30
0
def show_score_top():
    # 查找上映年份集合
    showtime = select_showtime()
    # 生成时间轴的图
    timeline = Timeline(
        init_opts=opts.InitOpts(page_title="豆瓣电影TOP250-评分TOP10的电影", ))
    for year in showtime:
        film_tuple = select_film(year)
        date_list = select_data(year)
        timeline.add_schema(is_auto_play=True, play_interval=1000)
        # 柱状图初始化
        bar = Bar()
        # 横坐标
        bar.add_xaxis(film_tuple[0])
        # 纵坐标
        bar.add_yaxis(
            "",
            date_list,
            # 数据靠右显示
            label_opts=opts.LabelOpts(is_show=True, position='right'))
        # 横纵坐标翻转
        bar.reversal_axis()
        # 全局配置
        bar.set_global_opts(
            # 标题
            title_opts=opts.TitleOpts(
                title="豆瓣电影TOP250-第{}年评分TOP10的电影".format(year),
                pos_left='center'),
            # 横坐标隐藏
            xaxis_opts=opts.AxisOpts(is_show=False,
                                     max_=select_film(year)[2],
                                     min_=(float(select_film(year)[3]) - 0.1),
                                     split_number=10),
            # 纵坐标
            yaxis_opts=opts.AxisOpts(
                max_=9,
                # 字体大小
                axislabel_opts=opts.LabelOpts(font_size=10),
                # 隐藏坐标轴
                axisline_opts=opts.AxisLineOpts(is_show=False),
                # 隐藏刻度
                axistick_opts=opts.AxisTickOpts(is_show=False)))
        # 组合组件
        grid = (Grid().add(bar,
                           grid_opts=opts.GridOpts(pos_top='8%',
                                                   pos_bottom='12%',
                                                   pos_left='25%')))
        timeline.add(grid, "{}年".format(year))
        timeline.add_schema(is_auto_play=True,
                            play_interval=1000,
                            is_loop_play=False,
                            width='820px',
                            pos_left='60px')
    # 生成HTML
    html = "pages/iframes/score_top.html"
    timeline.render("./templates/" + html)
    return html