예제 #1
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
def enroll():
    global wid, hei
    data = analysis_data.enroll_rate()
    data['true_rate'] = data['true_rate'].apply(lambda x: float(x) * 10)
    print(data['year'].values)
    c = (Line(init_opts=opts.InitOpts(width=wid, height=hei)).add_xaxis(
        [x for x in data['year'].values]).add_yaxis(
            '报名人数',
            data['num_people'].values,
            is_smooth=True,
            markpoint_opts=opts.MarkPointOpts(
                data=[opts.MarkPointItem(type_="max")])).add_yaxis(
                    "实际录取人数",
                    data['true_num'].values,
                    is_smooth=True,
                    markpoint_opts=opts.MarkPointOpts(
                        data=[opts.MarkPointItem(type_="max")]),
                ).add_yaxis(
                    "实际录取率",
                    [round(x, 2) for x in data['true_rate'].values],
                    is_smooth=True,
                    markpoint_opts=opts.MarkPointOpts(
                        data=[opts.MarkPointItem(type_="max")]),
                ).set_global_opts(title_opts=opts.TitleOpts(title="全国高考走势图")))

    return c
예제 #3
0
def three_lines_base():
    c = (
        Line().add_xaxis(genre).add_yaxis(
            'viewing',
            view,
            #设置标签指出最高值
            markpoint_opts=opts.MarkPointOpts(
                data=[opts.MarkPointItem(type_="max")]),
        ).add_yaxis(
            'coins',
            coin,
            # 设置标签指出最高值
            markpoint_opts=opts.MarkPointOpts(
                data=[opts.MarkPointItem(type_="max")]),
        ).add_yaxis(
            'favorite',
            favorite,
            # 设置标签指出最高值
            markpoint_opts=opts.MarkPointOpts(
                data=[opts.MarkPointItem(type_="max")]),
        ).set_global_opts(
            title_opts=opts.TitleOpts(
                title='viewing amount grouped by categories'),
            #将分区名旋转45度来保证所有分区都能显示
            xaxis_opts=opts.AxisOpts(
                axislabel_opts={'rotate': 45})).dump_options_with_quotes())
    return c
예제 #4
0
    def line_base(l1, l2) -> Line:

        lh_list = [y["total_box"] for y in l2]
        lh_list.extend([0 for _ in range(3)])  # 前面三天为0

        c = (Line(
            init_opts=opts.InitOpts(bg_color="", page_title="总票房")).add_xaxis(
                [y["date"] for y in reversed(l1)]).add_yaxis(
                    "哪吒之魔童降世", [y["total_box"] for y in reversed(l1)],
                    is_smooth=True,
                    markpoint_opts=opts.MarkPointOpts(
                        data=[opts.MarkPointItem(type_="max")])).add_yaxis(
                            "烈火英雄",
                            reversed(lh_list),
                            is_smooth=True,
                            markpoint_opts=opts.MarkPointOpts(
                                data=[opts.MarkPointItem(
                                    type_="max")])).set_global_opts(
                                        title_opts=opts.TitleOpts(
                                            title="总票房",
                                            subtitle_textstyle_opts={
                                                "color": "red"
                                            },
                                            subtitle="单位: 万元"),
                                        toolbox_opts=opts.ToolboxOpts()))
        return c.render("line.html")
예제 #5
0
def line_markpoint():
    obj_l = Line()
    obj_l.add_xaxis(Faker.choose())
    obj_l.add_yaxis("商家A",
                    Faker.values(),
                    markpoint_opts=opts.MarkPointOpts(
                        data=[opts.MarkPointItem(type_="min"),opts.MarkPointItem(type_="max")],

                        )
                    )
    obj_l.add_yaxis("商家B",
                    Faker.values(),
                    markpoint_opts=opts.MarkPointOpts(
                        data=[opts.MarkPointItem(type_="min"),opts.MarkPointItem(type_="max")]
                    )
                    )
    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-MarkPoint(最大最小值)", 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
예제 #6
0
def line_markpoint(data) -> Line:
    level = data[2]
    city = data[0]
    # s=data[1]
    # print(s)
    title = "北成上广深折线图-个数"
    c = (Line().add_xaxis(level).add_yaxis(
        city[0],
        data[1][0],
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(type_="max")])).add_yaxis(
                city[1],
                data[1][1],
                markpoint_opts=opts.MarkPointOpts(
                    data=[opts.MarkPointItem(type_="max")])).add_yaxis(
                        city[2],
                        data[1][2],
                        markpoint_opts=opts.MarkPointOpts(
                            data=[opts.MarkPointItem(type_="min")])).add_yaxis(
                                city[3],
                                data[1][3],
                                markpoint_opts=opts.MarkPointOpts(
                                    data=[opts.MarkPointItem(type_="max")])).
         add_yaxis(
             city[4],
             data[1][4],
             markpoint_opts=opts.MarkPointOpts(
                 data=[opts.MarkPointItem(type_="max")])).set_global_opts(
                     title_opts=opts.TitleOpts(title="北成上广深-折线图")))
    return c
 def sentiment_analysis(self):
     with open(r'./用户影评相关数据/' + self.filmname + '用户影评相关信息.json',
               'r',
               encoding='UTF-8') as f:
         t1 = json.load(f, strict=False)
     self.textBrowser.append("开始生成" + self.filmname + "的情感分析图......")
     QApplication.processEvents()
     # 取出里面的数据
     comment_list = []
     for each in t1:
         comment_list.append(each['用户评论'])
     # 存储情感数据
     sentimentslist = []
     for i in comment_list:
         s = round(SnowNLP(i).sentiments, 2)
         sentimentslist.append(s)
     # 对数据进行处理,计算出各个得分的个数
     result = {}
     for i in set(sentimentslist):
         result[i] = sentimentslist.count(i)
     info = sorted(result.items(), key=lambda x: x[0],
                   reverse=False)  # dict的排序方法
     attr, val = [], []
     for each in info[:-1]:
         attr.append(str(each[0]))
         val.append(each[1])
     e = (Line(init_opts=opts.InitOpts(
         width="665px", height="500px")).add_xaxis(attr).add_yaxis(
             "评论情感分析折线图",
             val,
             markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem()]),
             is_smooth=True,
         ).set_global_opts(
             tooltip_opts=opts.TooltipOpts(is_show=True),
             toolbox_opts=opts.ToolboxOpts(
                 is_show=True,
                 pos_right="30%",
             ),
             title_opts=opts.TitleOpts(title="评论情感分析折线图")).render(
                 "./爬虫数据关联可视化/" + self.filmname +
                 "影评可视化数据/line_markpoint_custom.html"))
     QApplication.processEvents()
     self.emotion_pic = (Line(init_opts=opts.InitOpts(
         width="665px", height="500px")).add_xaxis(attr).add_yaxis(
             "评论情感分析折线图",
             val,
             markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem()]),
             is_smooth=True,
         ).set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True),
                           toolbox_opts=opts.ToolboxOpts(
                               is_show=True,
                               pos_right="30%",
                           ),
                           title_opts=opts.TitleOpts(title="评论情感分析折线图")))
     self.saveflag = '3'
     self.textBrowser.append(self.filmname + "的情感分析图生成完毕!")
     QApplication.processEvents()
     self.show_sentiment_analysis()
     QApplication.processEvents()
예제 #8
0
def render_lines(country_name):
    #-------------------------------------------------------------------------------------
    # 第一步:读取数据
    #-------------------------------------------------------------------------------------
    n = "dataSets\\countrydata.csv"
    data = pd.read_csv(n)
    data = data[data['countryName'] == country_name]
    date_list = list(data['dateId'])
    date_list = list(map(lambda x:str(x),date_list))
    confirm_list = list(data['confirmedCount'])
    current_list = list(data['currentConfirmedCount'])
    dead_list = list(data['deadCount'])
    heal_list = list(data['curedCount'])
    print(len(date_list))    
    #print(date_list)                        # 日期
    #print(confirm_list)                     # 确诊数据
    #print(current_list)                     # 疑似数据
    #print(dead_list)                        # 死亡数据
    #print(heal_list)                        # 治愈数据


    #-------------------------------------------------------------------------------------
    # 第二步:绘制折线面积图
    #-------------------------------------------------------------------------------------
    line = (
            Line()
        .add_xaxis(date_list)
        # 平均线 最大值 最小值
        .add_yaxis('确诊数据', confirm_list, is_smooth=True,
                markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"),
                                                        opts.MarkPointItem(type_="min")]))
        .add_yaxis('现存确诊数据', current_list, is_smooth=True,
                markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"),
                                                        opts.MarkPointItem(type_="min")]))
        .add_yaxis('死亡数据', dead_list, is_smooth=True,
                markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"),
                                                        opts.MarkPointItem(type_="min")]))
        .add_yaxis('治愈数据', heal_list, is_smooth=True,
                markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"),
                                                        opts.MarkPointItem(type_="min")]))
        # 隐藏数字 设置面积
        .set_series_opts(
            areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
            label_opts=opts.LabelOpts(is_show=False))
        # 设置x轴标签旋转角度
        .set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), 
                        yaxis_opts=opts.AxisOpts(name='人数', min_=3), 
                        title_opts=opts.TitleOpts(title='2019-nCoV'+country_name+'疫情数据曲线图'))          
        )


    return line
예제 #9
0
def line_markpoint() -> Line:
    c = (Line().add_xaxis(Faker.choose()).add_yaxis(
        "商家A",
        Faker.values(),
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(type_="min")]),
    ).add_yaxis(
        "商家B",
        Faker.values(),
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(type_="max")]),
    ).set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkPoint")))
    return c
예제 #10
0
    def line_three_html(self, title, key, val_min, val_max, val_avg):
        line = Line(init_opts=opts.InitOpts(width="100%", height="300px"))
        line.set_global_opts(
            title_opts=opts.TitleOpts(
                title=title,
                title_textstyle_opts=opts.TextStyleOpts(color="black", font_size=14),
                pos_left="left",
            ),
            # 增添x,y轴以及内部的缩放
            datazoom_opts=[opts.DataZoomOpts(range_start=0, range_end=100)],
            yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True))
        )
        line.add_xaxis(key)
        line.add_yaxis(
            "最小值",
            val_min,
            is_smooth=True,
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="min", name="最小值"),
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="average", name="平均值"),
                ]
            ),
        )
        line.add_yaxis(
            "最大值",
            val_max,
            is_smooth=True,
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="min", name="最小值"),
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="average", name="平均值"),
                ]
            ),
        )
        line.add_yaxis(
            "平均值",
            val_avg,
            is_smooth=True,
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="min", name="最小值"),
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="average", name="平均值"),
                ]
            ),
        )

        return line.render_embed()
예제 #11
0
def bar_border_radius():
    c = (
        Bar(init_opts=opts.InitOpts(
            animation_opts=opts.AnimationOpts(  # 柱状图显示效果动画控制代码
                animation_delay=500,
                animation_easing="cubicOut"),
            theme=ThemeType.MACARONS,  # 柱状图显示主题
            page_title="Bar Learn",  # 设置html页面标题
        ))
        # .reversal_axis()  # 翻转XY轴
        .add_xaxis(["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]).add_yaxis(
            "A",
            Faker.values(),
            category_gap="50%",  # 柱间距对应的控制代码
            markpoint_opts=opts.MarkPointOpts(),
            is_selected=True  # A系列柱子是否显示对应的控制代码
        ).set_global_opts(
            title_opts=opts.TitleOpts(  # 标题
                title="Bar-参数使用例子", subtitle="副标题"),
            toolbox_opts=opts.ToolboxOpts(),  # toolbox 工具箱配置
            yaxis_opts=opts.AxisOpts(position="right", name="Y轴"),  # Y轴右侧控制
            datazoom_opts=opts.DataZoomOpts(),  # 数据区域放大缩小设置
        ).set_series_opts(
            itemstyle_opts={  # A系列柱子颜色渐变对应的控制代码
                "normal": {
                    "color":
                    JsCode("""
                        new echarts.graphic.LinearGradient(
                        0, 0, 0, 1, [{
                        offset: 0,
                        color: 'rgba(0, 244, 255, 1)'}, {
                        offset: 1,
                        color: 'rgba(0, 77, 167, 1)'}], false)"""),
                    "barBorderRadius": [6, 6, 6, 6],
                    "shadowColor":
                    'rgb(0, 160, 221)',
                }
            },
            # A系列柱子最大和最小值标记点对应的控制代码
            markpoint_opts=opts.MarkPointOpts(data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]),
            # A系列柱子最大和最小值标记线对应的控制代码
            markline_opts=opts.MarkLineOpts(data=[
                opts.MarkLineItem(type_="min", name="最小值"),
                opts.MarkLineItem(type_="max", name="最大值")
            ])))

    return c
예제 #12
0
def line_u() -> Line:
    c = (
        Line(opts.InitOpts(
            bg_color='#FFFFFF', width='800px',
            height='500px')).add_xaxis(arr).add_yaxis(
                "Ua(V)",
                val[0],
                color='orangered',
                is_symbol_show=False,
                markpoint_opts=opts.MarkPointOpts(data=[
                    opts.MarkPointItem(type_="max"),
                    opts.MarkPointItem(type_="min")
                ])).add_yaxis(
                    "Ub(V)",
                    val[1],
                    color='mediumseagreen',
                    is_symbol_show=False,
                    markpoint_opts=opts.MarkPointOpts(data=[
                        opts.MarkPointItem(type_="max"),
                        opts.MarkPointItem(type_="min")
                    ])).add_yaxis(
                        "Uc(V)",
                        val[2],
                        color='orange',
                        is_symbol_show=False,
                        markpoint_opts=opts.MarkPointOpts(data=[
                            opts.MarkPointItem(type_="max"),
                            opts.MarkPointItem(type_="min")
                        ])).add_yaxis(
                            "上限",
                            paras[0],
                            linestyle_opts=opts.LineStyleOpts(width=1.5,
                                                              type_='dashed'),
                            is_symbol_show=False).add_yaxis(
                                "下限",
                                paras[1],
                                linestyle_opts=opts.LineStyleOpts(
                                    width=1.5, type_='dashed'),
                                is_symbol_show=False).set_global_opts(
                                    title_opts=opts.TitleOpts(
                                        title='电压趋势图',
                                        subtitle='日期:' + df.Date.iloc[0] +
                                        ' to ' + df.Date.iloc[-1],
                                    ),
                                    yaxis_opts=opts.AxisOpts(min_=190,
                                                             max_=250))
        # title_textstyle_opts=opts.series_options.TextStyleOpts(color='#fff'),
        # subtitle_textstyle_opts=opts.series_options.TextStyleOpts(color='#fff')
    )
    return c
예제 #13
0
def foregin_history_all():


    path = readPath + '/各国历史疫情信息'

    path2 = savaPath + '/各国历史疫情信息'
    dwf.createFile(path2)

    Filelist = []  # 将当前文件夹内的所有表名存放此列表
    for home, dirs, files in os.walk(path):
        for filename in files:
            Filelist.append(filename)

    for i in Filelist:
        data = pd.read_excel(readPath + '/各国历史疫情信息/%s' % (i), index=False)
        n = i[:-5]  # 只提取国家名,不要后缀(.xlsx)
        y1_confirm = data['confirm']
        y2_confirm_add = data['confirm_add']
        y3_heal = data['heal']
        y4_dead = data['dead']

        date_list = []
        for j in data['date']:
            date_list.append(j)

        x = date_list

        lines = (
            Line()
                .add_xaxis(xaxis_data=x)
                .add_yaxis(series_name='确诊人数', y_axis=y1_confirm, is_symbol_show=True,
                           label_opts=opts.LabelOpts(is_show=False),
                           markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]))
                .add_yaxis(series_name='增加确诊人数', y_axis=y2_confirm_add, is_symbol_show=True,
                           label_opts=opts.LabelOpts(is_show=False),
                           markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]))
                .add_yaxis(series_name='治愈人数', y_axis=y3_heal, is_symbol_show=True,
                           label_opts=opts.LabelOpts(is_show=False),
                           markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]))
                .add_yaxis(series_name='死亡人数', y_axis=y4_dead, is_symbol_show=True,
                           label_opts=opts.LabelOpts(is_show=False),
                           markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]))
                .set_global_opts(title_opts=opts.TitleOpts(title="%s" % (n) + "疫情走势", subtitle="数据来源:腾讯新闻"),
                                 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=10, interval=3)))
        )
        # lines.render(savaPath + '\\daliy_changes_view\\各国历史疫情信息\\%s.html' % (n), index=False)
        if flag:
            dwf.write_to_file(savaPath + '/各国历史疫情信息/%s.txt' % (n),str(lines.dump_options_with_quotes()))
        page.add(lines)
예제 #14
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
예제 #15
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
예제 #16
0
파일: app2.py 프로젝트: TANTG/pyqm
def base_select() -> 'html':
    the_region = request.form["the_region_selected"]
    dfs_base = df_base.query("region=='{}'".format(the_region))

    c = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))
            .add_xaxis(dfs_base['地区'].tolist())
            .add_yaxis(the_region, dfs_base['count'].tolist())
            .set_global_opts(title_opts=opts.TitleOpts(title=the_region, subtitle=""),
                             xaxis_opts=opts.AxisOpts(name="地区", axislabel_opts={"rotate": 45}),
                             datazoom_opts=[opts.DataZoomOpts()])
            .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="min", name="最小值"), ])
        )
    )

    c.render("./static/tmp/echarts_2018bar.html")
    with open("./static/tmp/echarts_2018bar.html", encoding="utf8", mode="r") as f:
        plot_all = "".join(f.readlines())

    data_str = dfs_base.to_html()
    return render_template('pyecharts.html',
                           myechart=plot_all,
                           the_res=data_str,
                           the_select_region=regions_available_base,
                           bottom_title="分析:柱状图",
                           mark="base",
                           )
예제 #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 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
예제 #19
0
def line_base():
    chinaLine = (
        Line()
            .add_xaxis(date_list)
            .add_yaxis('确诊', china_confirm, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False),
                       markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]))
            .add_yaxis('死亡', china_dead, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False),
                       markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
            .add_yaxis('治愈', china_heal, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False),
                       markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
            .add_yaxis('输入病例', china_importedCase, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False),
                       markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
            .set_global_opts(title_opts=opts.TitleOpts(title="国内疫情走势", subtitle="数据来源:腾讯新闻"),
                             yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=10, interval=3)))
    )
    return chinaLine
예제 #20
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()
예제 #21
0
def other_line() -> Line:
    url = 'https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/cases_time/FeatureServer/0/query?f=json&where=Report_Date%3C%3D%272020-02-01%2015%3A59%3A59%27&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=Report_Date%20asc&resultOffset=0&resultRecordCount=2000&cacheHint=true'
    r_data = json.loads(requests.get(url).text)
    data = r_data['features']  #初始化json数据,为dict ['chinaTotal']

    dates = []
    numbers = []
    for i in data:
        date = time.strftime(
            "%m.%d", time.localtime(i['attributes']['Report_Date'] / 1000))
        dates.append(date)
        numbers.append(i['attributes']['Other_Locations'])

    c = (
        Line(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))  #设置主题
        .add_xaxis(dates)  #直接列表
        .add_yaxis('确诊', numbers).set_global_opts(
            title_opts=opts.TitleOpts(title="2019-nCov 海外国家疫情分析", subtitle=""),
            toolbox_opts=opts.ToolboxOpts(is_show=True),  # 
        ).set_series_opts(
            # 设置系列配置
            markpoint_opts=opts.MarkPointOpts(data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]),
            areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
            label_opts=opts.LabelOpts(is_show=False),
        ))
    return c
예제 #22
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()
예제 #23
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
예제 #24
0
def set_process() -> Bar:
    """
    进程调度比较图
    :return:
    """
    index = ['时间片轮转调度', '短进程优先调度', '非剥夺优先级调度']
    data = [217, 459, 324]
    bar = (
        Bar()
            .add_xaxis(index)
            .add_yaxis(series_name='三大调度算法', yaxis_data=data)
            .set_global_opts(title_opts=opts.TitleOpts(title='三大算法调度性能分析'),
                             xaxis_opts=opts.AxisOpts(type_='category', name='算法名称'),
                             yaxis_opts=opts.AxisOpts(type_='value', name='获胜次数',
                                                      axislabel_opts=opts.LabelOpts(formatter='{value}/次')),
                             toolbox_opts=opts.ToolboxOpts(),
                             tooltip_opts=opts.TooltipOpts(axis_pointer_type='cross')
                             )
            .set_series_opts(markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name='最大值', type_='min'),
                                                                     opts.MarkPointItem(name='最大值', type_='max')]),
                             itemstyle_opts={
                                 "normal": {
                                     "color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                             offset: 0,
                                             color: 'rgba(0, 244, 255, 1)'
                                         }, {
                                             offset: 1,
                                             color: 'rgba(0, 77, 167, 1)'
                                         }], false)"""),
                                     "barBorderRadius": [30, 30, 30, 30],
                                     "shadowColor": 'rgb(0, 160, 221)',
                                 }}
                             )
    )
    return bar
예제 #25
0
def bar_datazoom_inside() -> Timeline:
    tl = Timeline()
    for i in range(2014, 2020):
        c = (
            Bar(
            init_opts=opts.InitOpts(
                    animation_opts=opts.AnimationOpts(
                        animation_delay=1000, animation_easing="elasticOut"
                    )
                )
            )
            .add_xaxis(list(zip(list(data总.set_index('类别').index))))
            .add_yaxis("显示",list(data总["{}".format(i)]))
            .set_global_opts(
                title_opts=opts.TitleOpts(title="纵横小说月票榜"),
                datazoom_opts=opts.DataZoomOpts(type_="inside"),
                visualmap_opts=opts.VisualMapOpts(type_="color", max_=250000, min_=200,pos_right='20',pos_top='middle'),
                toolbox_opts=opts.ToolboxOpts(),
            )
            .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="min", name="最小值"),
                ]
            ),
        )
    )
        tl.add(c, "{}年".format(i))
    return tl
예제 #26
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
예제 #27
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
예제 #28
0
def line_markpoint_custom():
    x, y = Faker.choose(), Faker.values()
    obj_l = Line()
    obj_l.add_xaxis(x)
    obj_l.add_yaxis("商家A",
                    y,
                    markpoint_opts=opts.MarkPointOpts(
                        data=[opts.MarkPointItem(name="自定义标记点", coord=[x[2], y[2]], value=y[2])]
                    )
    )
    obj_l.set_series_opts(
        # 设置该参数,则x对应的y值会显示出来,该参数默认为True
        label_opts=opts.LabelOpts(is_show=False),
    )
    obj_l.set_global_opts(
        title_opts=opts.TitleOpts(title="Line-MarkPoint(自定义)",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
예제 #29
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
예제 #30
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"))