Пример #1
0
def line_markline():
    obj_l = Line()
    obj_l.add_xaxis(Faker.choose())
    obj_l.add_yaxis("商家A",
                    Faker.values(),
                    markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
                    # 该参数设置在这里只对商家A起作用
                    label_opts=opts.LabelOpts(is_show=False)
                    )
    obj_l.add_yaxis("商家B",
                    Faker.values(),
                    markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
                    )

    obj_l.set_series_opts(
        # 该参数设置在这里对商家A,商家B都起作用
        # 设置该参数,则x对应的y值会显示出来,该参数默认为True
        label_opts=opts.LabelOpts(is_show=False),
    )
    obj_l.set_global_opts(
        title_opts=opts.TitleOpts(title="Line-MarkLine", subtitle="平均值的线"),
        xaxis_opts=opts.AxisOpts(
            name="x轴",

            # 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样,可设置x轴刻度顶格
            boundary_gap=True,
            # 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。
            axistick_opts=opts.AxisTickOpts(is_align_with_label=True)
        ),
    )
    return obj_l
Пример #2
0
def setrose():
    x1 = ['2016年', '2017年', '2018年', '2019年', '2020年']
    y1 = ['文学', 350.0, 345.0, 345.0, 355.0, 355.0]
    y2 = ['理学', 285.0, 290.0, 280.0, 290.0, 288.0]

    c = (Line(init_opts=opts.InitOpts(
        width="1600px", height="800px")).add_xaxis(xaxis_data=x1).add_yaxis(
            series_name="文学",
            y_axis=y1,
            markpoint_opts=opts.MarkPointOpts(data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]),
            markline_opts=opts.MarkLineOpts(
                data=[opts.MarkLineItem(type_="average", name="平均值")]),
        ).add_yaxis(
            series_name="理学",
            y_axis=y2,
            markpoint_opts=opts.MarkPointOpts(data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]),
            markline_opts=opts.MarkLineOpts(data=[
                opts.MarkLineItem(type_="average", name="平均值"),
                opts.MarkLineItem(symbol="none", x="90%", y="max"),
                opts.MarkLineItem(symbol="circle", type_="max", name="最高点"),
            ]),
        ).set_global_opts(
            title_opts=opts.TitleOpts(title="近5年理学/文学国家线趋势"),
            tooltip_opts=opts.TooltipOpts(trigger="axis"),
            toolbox_opts=opts.ToolboxOpts(is_show=True),
            xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
        ))

    return c
Пример #3
0
 def line_markline() -> Line:
     the_region = request.form["the_Race_selected"]
     yy1 = []
     yy2 = []
     times = []
     for t in list(time):
         times.append(str(t))
     for t in time:
         df5 = dfs[dfs.Year == t]
         yy1.append(sum(df5['Deaths'][(df['Sex'] == 'Female')]))
         yy2.append(sum(df5['Deaths'][(df['Sex'] == 'Male')]))
     c = (
         Line()
             .add_xaxis(times)
             .add_yaxis(
             "女性",
             yy1,
             markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
         )
             .add_yaxis(
             "男性",
             yy2,
             markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
         )
             .set_global_opts(title_opts=opts.TitleOpts(title="1999-2017年{}的死亡人数".format(the_region)))
     )
     return c
Пример #4
0
def draw_charts(product_name, case_name, total_secs, qps, latency):

    secs = range(0, int(total_secs), int(total_secs / 100))
    secs.append(int(total_secs))

    c = (Line(
        init_opts=opts.InitOpts(width="1600px", height="800px")
    ).add_xaxis(xaxis_data=secs).add_yaxis(
        series_name="QPS",
        y_axis=qps,
        markpoint_opts=opts.MarkPointOpts(data=[
            opts.MarkPointItem(type_="max", name="Max Value"),
            opts.MarkPointItem(type_="min", name="Min Value"),
        ]),
        markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="average", name="Average QPS")]),
    ).add_yaxis(
        series_name="Latency",
        y_axis=latency,
        markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="average", name="Average Latency")]),
    ).set_global_opts(
        title_opts=opts.TitleOpts(title="QPS", subtitle="DML only"),
        tooltip_opts=opts.TooltipOpts(trigger="axis"),
        toolbox_opts=opts.ToolboxOpts(is_show=True),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
    ).render("sysbench-" + product_name + '-' + case_name + ".html"))
Пример #5
0
def kline_base(mydate, data, name) -> Kline:
    kline = (
        Kline()
        .add_xaxis(mydate)
        .add_yaxis("%s" % name, data, markpoint_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="max", value_dim="close")]
        ), markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="max", value_dim="close")]
        ),
                   itemstyle_opts=opts.ItemStyleOpts(
                       color="#ec0000",
                       color0="#00da3c",
                       border_color="#8A0000",
                       border_color0="#008F28",
                   ),
                   )
        .set_global_opts(
            yaxis_opts=opts.AxisOpts(is_scale=True,
                                    splitarea_opts=opts.SplitAreaOpts(
                    is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                ),
            ),
            xaxis_opts=opts.AxisOpts(is_scale=True,
                                    axislabel_opts=opts.LabelOpts(rotate=-30)),
            title_opts=opts.TitleOpts(title="股票走势"),
            datazoom_opts=[opts.DataZoomOpts()],
            toolbox_opts=opts.ToolboxOpts(is_show=True),
        )
    )
    return kline
Пример #6
0
def line_markline() -> Line:
    c = (Line().add_xaxis(Faker.choose()).add_yaxis(
        "商家A",
        Faker.values(),
        markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="average")]),
    ).add_yaxis(
        "商家B",
        Faker.values(),
        markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(type_="average")]),
    ).set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkLine")))
    return c
Пример #7
0
def line_markpoint() -> Line:
    c = (
        Line().add_xaxis(Faker.choose()).add_yaxis(
            "商家A",
            Faker.values(),
            is_smooth=True,
            # linestyle_opts=opts.LineStyleOpts(width=3),
            markline_opts=opts.MarkLineOpts(
                data=[
                    opts.MarkLineItem(type_="min"),
                    opts.MarkLineItem(type_="max")
                ],
                label_opts=opts.LabelOpts(
                    is_show=True,
                    position="end",
                ),
            ),
        ).add_yaxis(
            "商家B",
            Faker.values(),
            is_smooth=True,
            # linestyle_opts=opts.LineStyleOpts(width=3),
            markline_opts=opts.MarkLineOpts(
                data=[
                    opts.MarkLineItem(type_="min"),
                    opts.MarkLineItem(type_="max")
                ],
                label_opts=opts.LabelOpts(
                    is_show=True,
                    position="end",
                ),
            ),
        ).set_series_opts(
            areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
            label_opts=opts.LabelOpts(is_show=False),
        ).set_global_opts(
            title_opts=opts.TitleOpts(
                title="Line-面积图(紧贴 Y 轴)",
                pos_left="center",
            ),
            xaxis_opts=opts.AxisOpts(
                axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
                is_scale=False,
                boundary_gap=False,
            ),
            tooltip_opts=opts.TooltipOpts(trigger="axis",
                                          axis_pointer_type="cross"),
        ))
    return c
Пример #8
0
 def barSpeed(data) -> Bar:
     """
     -- 按列车类型统计运行速度
     :param data:list:[[X轴-类型名称], [Y轴-速度]]
     :return: Bar
     """
     speed_bar = (
         Bar(init_opts=opts.InitOpts(width='1000px',
                                     height='500px')).add_xaxis(data[0]).
         add_yaxis("车次数量", data[1], color='#8c4356').set_global_opts(
             legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
             xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
                 rotate=0)),  # 横坐标标签倾斜
             yaxis_opts=opts.AxisOpts(name='公里/小时'),
             title_opts=opts.TitleOpts(
                 title='按列车类型统计运行速度',
                 title_textstyle_opts=opts.TextStyleOpts(
                     font_size=20))).set_series_opts(
                         label_opts=opts.LabelOpts(is_show=False),
                         markline_opts=opts.MarkLineOpts(
                             symbol='circle',
                             precision=0,
                             data=[
                                 opts.MarkLineItem(name='平均',
                                                   type_='average')
                             ]),  # 平均值线
                         markpoint_opts=opts.MarkPointOpts(data=[
                             opts.MarkPointItem(type_="max", name="Max"),
                             opts.MarkPointItem(type_="min", name="Min")
                         ]),
                     ))
     return speed_bar
Пример #9
0
 def barDistance(data) -> Bar:
     """
     -- 按运行里程区间统计车次数量
     :param data:list:[[X轴-里程区间], [Y轴-车次数量]]
     :return: Bar
     """
     distance_bar = (
         Bar(init_opts=opts.InitOpts(width='1000px',
                                     height='500px')).add_xaxis(data[0]).
         add_yaxis("车次数量", data[1], color='#425066').set_global_opts(
             legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
             xaxis_opts=opts.AxisOpts(
                 axislabel_opts=opts.LabelOpts(rotate=30),
                 name='公里'),  # 横坐标标签倾斜
             yaxis_opts=opts.AxisOpts(name='次'),
             title_opts=opts.TitleOpts(
                 title='按运行里程区间统计车次数量',
                 title_textstyle_opts=opts.TextStyleOpts(
                     font_size=20))).set_series_opts(
                         label_opts=opts.LabelOpts(is_show=False),
                         markline_opts=opts.MarkLineOpts(
                             symbol='circle',
                             precision=0,
                             data=[
                                 opts.MarkLineItem(name='平均',
                                                   type_='average')
                             ]),  # 平均值线
                         markpoint_opts=opts.MarkPointOpts(data=[
                             opts.MarkPointItem(type_="max", name="Max"),
                             opts.MarkPointItem(type_="min", name="Min")
                         ]),
                     ))
     return distance_bar
Пример #10
0
 def genLine(self,x_list=None,y_orderdicts=None,title='线形示例',subtitle='副标题示例',is_smooth=True,average = None):
     '''
     折线图  平滑曲线
     应用场景 趋势图
     param x_list x轴的值   type  list
     param y_dicts key是类别,value是y轴的值  type orderdict
     param title 图表的题目    type  str
     param is_smooth 是否平滑   默认是  type bool 
     param average 平均数的基准标记线  type number 
     '''
     x_list = x_list or Faker.choose()
     y_orderdicts = y_orderdicts or {i: Faker.values() for i in range(1, 3)}
     c = (
         Line()
         .add_xaxis(x_list)
         .set_global_opts(title_opts=opts.TitleOpts(title=title,subtitle =subtitle))
     )
     for key, value in y_orderdicts.items():
         if average:
             # c.add_yaxis(key, value,is_smooth=True,markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
             c.add_yaxis(key, value,is_smooth=True,markline_opts=opts.MarkLineOpts(data=average))
         else:
             c.add_yaxis(key, value,is_smooth=True)
     chart_name = f'static/chart{self.index}_line'
     make_snapshot(snapshot,c.render(f'{chart_name}.html'),f'{chart_name}.png',is_remove_html=True)
     self.index += 1
Пример #11
0
def get_line(x, y, y_name, x_name):
    print(y_name)
    new_bar = (Bar().add_xaxis(x))
    for y_label in y:
        new_bar.add_yaxis(
            y_label,
            y[y_label],
            color="#409EFF",
            label_opts=opt.LabelOpts(),
            # is_smooth=True,
            markline_opts=opt.MarkLineOpts(
                data=[opt.MarkLineItem(type_="average")]),
            markpoint_opts=opt.MarkPointOpts(
                data=[opt.MarkPointItem(type_='max', name="最大值")]))
    new_bar.set_series_opts(areastyle_opts=opt.AreaStyleOpts(opacity=0.5),
                            label_opts=opt.LabelOpts(is_show=False))
    new_bar.set_global_opts(
        datazoom_opts=opt.DataZoomOpts(type_='inside'),
        legend_opts=opt.LegendOpts(is_show=True),
        yaxis_opts=opt.AxisOpts(
            name=y_name, name_textstyle_opts=opt.TextStyleOpts(color="black")),
        xaxis_opts=opt.AxisOpts(
            name=x_name,
            name_textstyle_opts=opt.TextStyleOpts(color="black"),
            type_="category",
        )),
    return new_bar.dump_options_with_quotes()
Пример #12
0
def report(request):
    """返回慢SQL历史趋势"""
    checksum = request.GET.get('checksum')
    cnt_data = ChartDao().slow_query_review_history_by_cnt(checksum)
    pct_data = ChartDao().slow_query_review_history_by_pct_95_time(checksum)
    cnt_x_data = [row[1] for row in cnt_data['rows']]
    cnt_y_data = [int(row[0]) for row in cnt_data['rows']]
    pct_y_data = [str(row[0]) for row in pct_data['rows']]
    line = Line(init_opts=opts.InitOpts(width='800', height='380px'))
    line.add_xaxis(cnt_x_data)
    line.add_yaxis("慢查次数",
                   cnt_y_data,
                   is_smooth=True,
                   markline_opts=opts.MarkLineOpts(data=[
                       opts.MarkLineItem(type_="max", name='最大值'),
                       opts.MarkLineItem(type_="average", name='平均值')
                   ]))
    line.add_yaxis("慢查时长(95%)",
                   pct_y_data,
                   is_smooth=True,
                   is_symbol_show=False)
    line.set_series_opts(areastyle_opts=opts.AreaStyleOpts(opacity=0.5, ))
    line.set_global_opts(
        title_opts=opts.TitleOpts(title='SQL历史趋势'),
        legend_opts=opts.LegendOpts(selected_mode='single'),
        xaxis_opts=opts.AxisOpts(
            axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
            is_scale=False,
            boundary_gap=False,
        ),
    )

    result = {"status": 0, "msg": '', "data": line.render_embed()}
    return HttpResponse(json.dumps(result), content_type='application/json')
Пример #13
0
def show_bar():
    bar = (Bar().add_xaxis(bar_city).add_yaxis(
        "Average Income",
        bar_income).add_yaxis("Employed People", bar_employ).add_yaxis(
            "Covid Pos",
            bar_co_p, stack="stack1").add_yaxis("Covid Neg",
                                                bar_co_n,
                                                stack="stack1").add_yaxis(
                                                    "Crime Pos",
                                                    bar_cr_p,
                                                    stack="stack2").
           add_yaxis("Crime Neg", bar_cr_n, stack="stack2").set_global_opts(
               title_opts=opts.TitleOpts(title="City Income"),
               yaxis_opts=opts.AxisOpts(name="Income(k)/Employ(10k)/PosVSNeg"),
               xaxis_opts=opts.AxisOpts(name="City"),
               datazoom_opts=opts.DataZoomOpts(orient="horizontal",
                                               range_start=0,
                                               range_end=100),
               toolbox_opts=opts.ToolboxOpts(),
           ).set_series_opts(
               label_opts=opts.LabelOpts(is_show=False),
               markline_opts=opts.MarkLineOpts(data=[
                   opts.MarkLineItem(type_="average", name="Average Value"),
               ]),
           ))
    return bar
Пример #14
0
Файл: app2.py Проект: TANTG/pyqm
def develop_select() -> 'html':
    the_region = request.form["the_region_selected"]
    dfs_develop = df_develop.query("region=='{}'".format(the_region))

    c = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
            .add_xaxis(dfs_develop['年'].tolist())
            .add_yaxis("", dfs_develop['count'].tolist())
            .set_global_opts(title_opts=opts.TitleOpts(title=the_region, subtitle=""))
            .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markline_opts=opts.MarkLineOpts(
                data=[
                    opts.MarkLineItem(type_="average", name="平均值"),
                ]
            ),
        )
    )
    c.render("./static/tmp/echarts_develop.html")
    with open("./static/tmp/echarts_develop.html", encoding="utf8", mode="r") as f:
        plot_all = "".join(f.readlines())

    data_str = dfs_develop.to_html()
    return render_template('pyecharts.html',
                           myechart=plot_all,
                           the_res=data_str,
                           the_select_region=regions_available_develop,
                           bottom_title="分析:柱状图",
                           mark="develop",
                           )
Пример #15
0
 def line_base(self, date: list, price: list) -> Line:
     line = (
         Line()
             .add_xaxis(xaxis_data=date)
             .add_yaxis(
             series_name="价格",
             y_axis=price,
             markpoint_opts=opts.MarkPointOpts(
                 data=[
                     opts.MarkPointItem(type_="max", name="最大值"),
                     opts.MarkPointItem(type_="min", name="最小值"),
                 ]
             ),
             markline_opts=opts.MarkLineOpts(
                 data=[opts.MarkLineItem(type_="average", name="平均值")]
             ),
         )
             .set_global_opts(
             title_opts=opts.TitleOpts(title="历史价格记录"),
             tooltip_opts=opts.TooltipOpts(trigger="axis"),
             toolbox_opts=opts.ToolboxOpts(is_show=False),
             xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
         )
     )
     return line
Пример #16
0
def draw_balance_line(xaxis,
                      yaxis,
                      title="消费统计",
                      markline=None,
                      width=2000) -> Line:
    """
        x = [月_日, 月_日, 月_日, ....]
        y = [(title1, [num1, num2, num3, num4, ...]), (title2, [num1, num2, num3, num4, ...])]
        :param xaxis: x轴
        :param yaxis: y轴
        :param title: 标题
        :param markline: 标记辅助线
        :param width: 宽
        :return: Line
        """
    line = Line()
    line.add_xaxis(xaxis)
    for name, axis in yaxis:
        line.add_yaxis(name, axis, is_symbol_show=True)
    line.set_global_opts(title_opts=opts.TitleOpts(title=title, ),
                         datazoom_opts=[
                             opts.DataZoomOpts(range_start=0, range_end=100),
                             opts.DataZoomOpts(type_="inside")
                         ],
                         tooltip_opts=opts.TooltipOpts(
                             trigger='axis', axis_pointer_type='shadow'))
    line.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

    if markline is not None:
        line.set_series_opts(markline_opts=opts.MarkLineOpts(
            data=[opts.MarkLineItem(y=markline, name='预算')]))

    return line
Пример #17
0
def plot_one_y(df, title: str):
    df.index = pd.to_datetime(df['date'])
    df.sort_index(inplace=True)
    df = df.drop(['date'], axis=1)
    return (Line(
        init_opts=opts.InitOpts(width="1200px", height="400px")).add_xaxis(
            xaxis_data=df.index.strftime(
                '%Y-%m-%d').values.tolist()).add_yaxis(
                    series_name=title.upper(),
                    y_axis=np.round(df['r2'].values, 2).tolist(),
                    is_smooth=True,
                    label_opts=opts.LabelOpts(is_show=False),
                    linestyle_opts=opts.LineStyleOpts(width=2),
                    markline_opts=opts.MarkLineOpts(
                        data=[opts.MarkLineItem(type_="average")]),
                ).set_global_opts(
                    datazoom_opts=opts.DataZoomOpts(),
                    legend_opts=opts.LegendOpts(pos_bottom="0%",
                                                pos_right='45%'),
                    title_opts=opts.TitleOpts(
                        title=title.upper(),
                        pos_left='0%',
                    ),
                    tooltip_opts=opts.TooltipOpts(trigger="axis",
                                                  axis_pointer_type="cross"),
                    toolbox_opts=opts.ToolboxOpts(is_show=True),
                    xaxis_opts=opts.AxisOpts(boundary_gap=False),
                    yaxis_opts=opts.AxisOpts(
                        axislabel_opts=opts.LabelOpts(formatter="{value}"),
                        splitline_opts=opts.SplitLineOpts(is_show=True),
                    ),
                ).set_series_opts(markpoint_opts=opts.MarkPointOpts(data=[
                    opts.MarkPointItem(type_='max', name='Max'),
                    opts.MarkPointItem(type_='min', name='Min')
                ]), ))
Пример #18
0
def student_history_ranking(student_id: int) -> dict:
    result = {}
    result_chart = {}
    grades = StudentGrade.query.filter_by(
        student_ID=student_id, subject='理科').order_by(StudentGrade.test_time).all()
    test_names = [t.test_name for t in Test.query.order_by(Test.test_time).all()]
    print(test_names)
    for subject in Subject.li_all_subject():
        result[subject] = []
        for grade in grades:
            grade: StudentGrade
            result[subject].append(grade.__dict__[subject + '_ranking'])
    for subject in Subject.li_all_subject():
        line = (
            Line()
                .add_xaxis(test_names)
                .add_yaxis(
                '排名',
                result[subject],
                markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]), )
                .set_global_opts(
                title_opts=opts.TitleOpts(
                    title=Subject.en2cn(subject) + '科历次成绩走势',
                    subtitle='虚线为平均排名'
                ),
            )
        )
        result_chart[subject] = line
    return result_chart
Пример #19
0
def displayECLine(request, t_inner_id):
    query_type, inner_code = t_inner_id[0], t_inner_id[1:]
    if query_type=='P':
        sql_query_1 = f'''SELECT mall_name, goods_name, prescription FROM pdd_rep_goods WHERE pdd_inner_code='{inner_code}';'''
        sql_query_2 = f'''SELECT update_time, price FROM pdd_rep_price WHERE pdd_inner_code='{inner_code}';'''
    else:
        sql_query_1 = f'''SELECT shop_name, goods_name, three_cat FROM jd_rep_goods WHERE jd_inner_code='{inner_code}';'''
        sql_query_2 = f'''SELECT update_time, price FROM jd_rep_price WHERE jd_inner_code='{inner_code}';'''
    supplier, mds_name, mds_spec = query_mysql_reptile(sql_query_1)[0]
    list_temp = DataFrame(list(query_mysql_reptile(sql_query_2)))
    date_list, pric_list = list_temp[0].tolist(), list_temp[1].tolist()
    c = (
        Line()
            .add_xaxis(date_list)
            .add_yaxis(supplier, pric_list,
                linestyle_opts=opts.LineStyleOpts(color="#6699cc"),
                label_opts=opts.LabelOpts(is_show=True, position="bottom", color="#aabcfe", rotate = '-20'),
                markline_opts=opts.MarkLineOpts(data=[
                                                      opts.MarkLineItem(type_="average", name="平均 Average")
                                                      # opts.MarkLineItem(type_="min", name="最小 Min Value"),
                                                      # opts.MarkLineItem(type_="max", name="最大 Max Value")
                                                      ],
                                                linestyle_opts=opts.LineStyleOpts(type_='dashed', color="rgba(235,85,128,0.87)"), is_silent=True))
            .set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-20)),
                             title_opts=opts.TitleOpts(title='\n' + mds_name , pos_left='10%', subtitle=mds_spec)
        )
    )
    return HttpResponse(c.render_embed())
Пример #20
0
def displayAnaLine(request, gid):
    # 功能 获取信息显示在折线图上方
    # 返回 supplier:供应商名称层 mds_name:商品名称 mds_spec:商品规格
    sql_query_1 = f'''SELECT search_app_tb_supplier.supp_name, search_app_tb_goods.goods_name, search_app_tb_goods.goods_spec FROM (search_app_tb_supplier INNER JOIN search_app_tb_goods ON search_app_tb_supplier.supp_id = search_app_tb_goods.supp_id) WHERE search_app_tb_goods.goods_id={gid}'''
    supplier, mds_name, mds_spec = query_mysql_analyze(sql_query_1)[0]
    # 功能 获取折线图的 x轴数据(日期) y轴数据(价格)
    # 返回 日期列表 价格列表
    sql_query_2 = f'''SELECT search_app_tb_price.update_time, search_app_tb_price.tax_cost FROM (search_app_tb_supplier INNER JOIN search_app_tb_price ON search_app_tb_supplier.supp_id = search_app_tb_price.supp_id) INNER JOIN search_app_tb_goods ON (search_app_tb_goods.goods_id = search_app_tb_price.goods_id) AND (search_app_tb_supplier.supp_id=search_app_tb_goods.supp_id) WHERE search_app_tb_goods.goods_id={gid} ORDER BY search_app_tb_price.update_time ASC'''
    list_temp = DataFrame(list(query_mysql_analyze(sql_query_2)))
    date_list, pric_list = list_temp[0].tolist(), list_temp[1].tolist()
    # 获取所有数据集 开始渲染
    c = (
        Line()
            .add_xaxis(date_list)
            .add_yaxis(supplier, pric_list,
                linestyle_opts=opts.LineStyleOpts(color="#6699cc"),
                label_opts=opts.LabelOpts(is_show=True, position="bottom", color="#aabcfe", rotate = '-20'),
                markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="平均 Average")
                                                      # opts.MarkLineItem(type_="min", name="最小 Min Value"),
                                                      # opts.MarkLineItem(type_="max", name="最大 Max Value")
                                                      ],
                                                linestyle_opts=opts.LineStyleOpts(type_='dashed', color="rgba(235,85,128,0.87)"), is_silent=True))
            .set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-20)),
                             title_opts=opts.TitleOpts(title=mds_name , pos_left='80%', subtitle=mds_spec)
        )
    )
    return HttpResponse(c.render_embed())
Пример #21
0
def valuation_report():
    """
    股票池估值报告
    :return:
    """
    df = db.read("valuation_report")
    x, y = df['name'].values.tolist(), df['rate'].values.tolist()
    series_name = "高估比例"
    title = "股票池估值报告"
    subtitle = datetime.now().strftime("%Y%m%d")
    bar = (
        Bar(init_opts={"height": "700px", "bg_color": "white", "theme": ThemeType.LIGHT})
            .add_xaxis(x)
            .add_yaxis(series_name, y)
            .set_series_opts(
            label_opts=opts.LabelOpts(position="right"),
            markline_opts=opts.MarkLineOpts(
                data=[opts.MarkLineItem(x=9, name=""), opts.MarkLineItem(x=-9, name="")],
                linestyle_opts={'color': 'rgb(220, 20, 60)'}
            )
        )
            .set_global_opts(title_opts=opts.TitleOpts(title=title, subtitle=subtitle))
            .reversal_axis()
    )
    # make_snapshot(snapshot, bar.render(), output_path)
    return bar
Пример #22
0
def account_article_num():
    account = db.session.query(WechatArticle.account, func.count(WechatArticle.id)) \
        .filter(extract('year', WechatArticle.publish_time) == '2019').group_by(
        WechatArticle.account).order_by(desc(func.count(WechatArticle.id))).all()
    keys = []
    values = []
    for key, value in account:
        keys.append(key)
        values.append(value)
    print('文章公众号总数', len(keys), sum(values), values)
    bar = (Bar({
        "width": "1500px",
        "height": "700px"
    }).add_xaxis(keys).add_yaxis(
        series_name="文章数量(/篇)", yaxis_data=values,
        category_gap='10%').set_global_opts(
            title_opts=opts.TitleOpts(title="2019年公众号收录文章数",
                                      pos_top='10%',
                                      pos_left='43%'),
            xaxis_opts=opts.AxisOpts(name='公众号名称',
                                     name_rotate=-90,
                                     axislabel_opts={'rotate': -45}),
            yaxis_opts=opts.AxisOpts(name="文章数量(/篇)"),
            legend_opts=opts.LegendOpts(is_show=False),
            datazoom_opts=[opts.DataZoomOpts(type_="inside")],
        ).set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markline_opts=opts.MarkLineOpts(data=[
                opts.MarkLineItem(type_="average", name="平均值"),
            ]),
        ))
    # bar.render(path='./static/year/account_article_num.html')
    print('生成公众号收录文章数')
    return bar
Пример #23
0
Файл: app2.py Проект: TANTG/pyqm
def bar_select() -> 'html':
    # 获取用户输入的选项
    the_region = request.form["the_region_selected"]
    # 根据用户输入选项提取 对应数据
    dfs_bar = df_bar.query("region=='{}'".format(the_region))
    # 创建图表对象并配置参数

    c = (
        Bar()
            .add_xaxis(dfs_bar['年'].tolist()) # 配置x轴数据
            .add_yaxis(the_region, dfs_bar['count'].tolist())# 配置y轴数据
            .set_global_opts(title_opts=opts.TitleOpts(title=the_region, subtitle=""))# 配置标题
            .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markline_opts=opts.MarkLineOpts(
                data=[
                    opts.MarkLineItem(type_="average", name="平均值"),
                ]
            ),
     )
    )
    # 生成图表html文件
    c.render("./static/tmp/echarts_bar.html")
    # 读取生成好的图表
    with open("./static/tmp/echarts_bar.html", encoding="utf8", mode="r") as f:
        plot_all = "".join(f.readlines())
    # 准备模板显示用的 表格数据
    data_str = dfs_bar.to_html()
    return render_template('pyecharts.html',
                           myechart=plot_all,# 图表
                           the_res=data_str, # 表格数据
                           the_select_region=regions_available_bar,#下拉框数据
                           bottom_title="分析:柱状图",# 图表下标题数据
                           mark="bar",# 用于给模板html识别显示柱状图对应的from标签
                           )
Пример #24
0
def createPlotLine(df, xAxisTitle, yAxisTitle, title=None):
    line = Line()
    line.add_xaxis(df[xAxisTitle].tolist())
    line.add_yaxis(yAxisTitle, df[yAxisTitle].tolist())
    
    if not title:
        title = ""
    line.set_global_opts(
        tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross'),
        title_opts=opts.TitleOpts(title=title)
    )

    ptg75 = df[yAxisTitle].quantile(.75)
    ptg50 = df[yAxisTitle].quantile(.5)
    ptg25 = df[yAxisTitle].quantile(.25)
    line.set_series_opts(
        markline_opts=opts.MarkLineOpts(
            data=[
                opts.MarkLineItem(y=ptg75, name="75%"),
                opts.MarkLineItem(y=ptg50, name="50%"),
                opts.MarkLineItem(y=ptg25, name="25%")
            ]
        ),
    )

    return line
Пример #25
0
def line_pf() -> Line:
    c = (Line(opts.InitOpts(
        bg_color='#FFFFFF', width='800px',
        height='500px')).add_xaxis(arr).add_yaxis(
            "功率因数",
            val[13],
            color='LightSkyBlue',
            is_symbol_show=False,
            markline_opts=opts.MarkLineOpts(
                data=[opts.MarkLineItem(type_="average")]),
            areastyle_opts=opts.AreaStyleOpts(opacity=0.4),
            markpoint_opts=opts.MarkPointOpts(data=[
                opts.MarkPointItem(type_="max"),
                opts.MarkPointItem(type_="min")
            ])).add_yaxis(
                "下限(0.9)",
                paras[5],
                linestyle_opts=opts.LineStyleOpts(width=1.5, type_='dashed'),
                is_symbol_show=False).set_series_opts(
                    label_opts=opts.LabelOpts(is_show=False)).set_global_opts(
                        title_opts=opts.TitleOpts(
                            title='功率因数趋势图',
                            subtitle='日期:' + df.Date.iloc[0] + ' to ' +
                            df.Date.iloc[-1],
                        )))
    return c
Пример #26
0
 def barCompanyOut(data) -> Bar:
     # 全国民航机场进出港航班数量(TOP 15)
     company_out_bar = (
         Bar(init_opts=opts.InitOpts(width='1000px',
                                     height='500px')).add_xaxis(data[0]).
         add_yaxis("航空公司", data[1], color='#574266').set_global_opts(
             legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
             datazoom_opts=[
                 opts.DataZoomOpts(),
                 opts.DataZoomOpts(type_="inside")
             ],  # DataZoom类型
             title_opts=opts.TitleOpts(
                 title='本周航空公司出港航班数量统计',
                 title_textstyle_opts=opts.TextStyleOpts(
                     font_size=20),  # 设置标题大小
                 subtitle='{}-{},本周发送航班最多的航空公司是:{},{},{}。[数据来源:ctrip.com]'.
                 format(
                     data[2], data[3], data[4], data[5],
                     data[6]))).set_series_opts(
                         label_opts=opts.LabelOpts(is_show=False),  # 不显示标签值
                         markpoint_opts=opts.MarkPointOpts(data=[
                             opts.MarkPointItem(type_="max", name="Max"),
                             opts.MarkPointItem(type_="min", name="Min"),
                         ]),  # 最大值,最小值
                         markline_opts=opts.MarkLineOpts(
                             symbol='circle',
                             precision=0,
                             data=[
                                 opts.MarkLineItem(name='平均',
                                                   type_='average')
                             ])  # 平均值线
                     ))
     return company_out_bar
Пример #27
0
def Getline(dataX, dataY, n=[0], T=""):
    chinaLine = (
        Line(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC))
        .add_xaxis(dataX)

        .set_global_opts(
            title_opts=opts.TitleOpts(title="{}月情感变化{}".format(n[0], T)),
            toolbox_opts=opts.ToolboxOpts(is_show=True),

        )
        .set_series_opts(

            label_opts=opts.LabelOpts(is_show=False),
        )
    )
    for i in range(len(dataY)):
        chinaLine.add_yaxis('{}月情感变化'.format(n[i]), dataY[i], is_symbol_show=False, label_opts=opts.LabelOpts(is_show=True),
                            markline_opts=opts.MarkLineOpts(
                                data=[
                                    opts.MarkLineItem(type_="average", name="平均值"),
                                    opts.MarkLineItem(symbol="none", x="90%", y="max"),
                                    # opts.MarkLineItem(symbol="circle", type_="max", name="最高点"),
                                ]
                            ),
                        markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]), is_smooth=True)
    #
    chinaLine.render()
    return chinaLine.render_embed()
Пример #28
0
 def barAirPort(self, data) -> Bar:
     # 全国民航机场进出港航班数量(TOP 15)
     airport_bar = (
         Bar(init_opts=opts.InitOpts(
             width='1000px', height='500px')).add_xaxis(
                 data[0][0][:15]).add_yaxis("%s" % data[2],
                                            data[0][1][:15],
                                            color='#425066').
         set_global_opts(
             legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
             xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
                 rotate=30)),  # 横坐标标签倾斜
             title_opts=opts.TitleOpts(
                 title='全国民航机场%s航班数量(TOP 15)' % data[2],
                 title_textstyle_opts=opts.TextStyleOpts(
                     font_size=20),  # 设置标题大小
                 subtitle='{},全国共{}航班{}架次,{},{},{}是数量最多的三个。[数据来源:ctrip.com]'
                 .format(self.today_ymd, data[2], data[1], data[0][0][0],
                         data[0][0][1], data[0][0][2]))
         ).set_series_opts(markline_opts=opts.MarkLineOpts(
             symbol='circle',
             precision=0,
             data=[opts.MarkLineItem(name='平均', type_='average')])  # 平均值线
                           ))
     return airport_bar
Пример #29
0
def get_month_overlap_chart(month: int) -> Bar:
    bar = (Bar().add_xaxis(xaxis_data=name_list).add_yaxis(
        series_name="销量",
        y_axis=total_data[month],
        label_opts=opts.LabelOpts(is_show=True),
    ).set_global_opts(
        title_opts=opts.TitleOpts(title="2020年{}月各尺寸销量".format(month)),
        tooltip_opts=opts.TooltipOpts(is_show=True,
                                      trigger="axis",
                                      axis_pointer_type="shadow"),
        xaxis_opts=opts.AxisOpts(name='单位: 英寸'),
        yaxis_opts=opts.AxisOpts(name='销量: 台')).set_series_opts(
            label_opts=opts.LabelOpts(is_show=True),
            markline_opts=opts.MarkLineOpts(data=[
                opts.MarkLineItem(type_="average", name="平均值"),
            ]),
        ))
    pie = (Pie().add(
        series_name="销售占比",
        data_pair=[["小屏(<=38寸)", classified_data[month][0]],
                   ["中等大小屏幕", classified_data[month][1]],
                   ["大屏(>=65寸)", classified_data[month][2]]],
        center=["25%", "35%"],
        radius="28%",
    ).set_series_opts(
        tooltip_opts=opts.TooltipOpts(is_show=True, trigger="item")))
    return bar.overlap(pie)
Пример #30
0
 def barTime(self, data) -> Bar:
     # 进出港航班数量按小时统计
     time_bar = (
         Bar(init_opts=opts.InitOpts(width='1000px', height='500px')).
         add_xaxis(data[0][0]).add_yaxis(
             "{}航班数量".format(data[2]), data[0][1],
             color='#1685a9').set_series_opts(
                 label_opts=opts.LabelOpts(is_show=False),
                 markpoint_opts=opts.MarkPointOpts(data=[
                     opts.MarkPointItem(type_="max", name="Max"),
                     opts.MarkPointItem(type_="min", name="Min"),
                 ]),
                 markline_opts=opts.MarkLineOpts(
                     symbol='circle',
                     precision=0,
                     data=[opts.MarkLineItem(name='平均', type_='average')])).
         set_global_opts(
             legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
             xaxis_opts=opts.AxisOpts(name_rotate=30),  # 【【【X坐标轴标签倾斜,不好使】】】
             title_opts=opts.TitleOpts(
                 title='{}航班数量按小时统计'.format(data[2]),
                 title_textstyle_opts=opts.TextStyleOpts(
                     font_size=20),  # 设置标题大小
                 subtitle='{},全国共{}航班{}架次。[数据来源:ctrip.com]'.format(
                     self.today_ymd, data[2], data[1]))))
     return time_bar