Example #1
0
def create_gender(data):
    df = data.copy()
    # 修改数值
    df.loc[df.gender == '0', 'gender'] = '未知'
    df.loc[df.gender == '1', 'gender'] = '男性'
    df.loc[df.gender == '2', 'gender'] = '女性'
    # 根据性别分组
    gender_message = df.groupby(['gender'])
    # 对分组后的结果进行计数
    gender_com = gender_message['gender'].agg(['count'])
    gender_com.reset_index(inplace=True)

    # 饼图数据
    attr = gender_com['gender']
    v1 = gender_com['count']

    # 初始化配置
    pie = Pie(init_opts=opts.InitOpts(width="800px", height="400px"))
    # 添加数据,设置半径
    pie.add("", [list(z) for z in zip(attr, v1)], radius=["40%", "75%"])
    # 设置全局配置项,标题、图例、工具箱(下载图片)
    pie.set_global_opts(title_opts=opts.TitleOpts(title="抖音大V性别分布情况",
                                                  pos_left="center"),
                        legend_opts=opts.LegendOpts(orient="vertical",
                                                    pos_left="left"),
                        toolbox_opts=opts.ToolboxOpts(
                            is_show=True, feature={"saveAsImage": {}}))
    # 设置系列配置项,标签样式
    pie.set_series_opts(
        label_opts=opts.LabelOpts(is_show=True, formatter="{b}:{d}%"))
    pie.render("抖音大V性别分布情况.html")
Example #2
0
def get_pie(city, center1, center2):
    data = df.loc[df['City'] == city, ['Date', 'AQI_Bucket']]

    rank_message = data.groupby(['AQI_Bucket'])
    rank_com = rank_message['AQI_Bucket'].agg(['count'])
    rank_com.reset_index(inplace=True)
    rank_com_last = rank_com.sort_values('count', ascending=False)

    x = rank_com_last['AQI_Bucket']
    y = rank_com_last['count']

    pie = Pie(init_opts=opts.InitOpts(width='400px', height='300px'))

    input_data = [list(z) for z in zip(x, y)]
    pie.add(city, input_data, center=center1, radius=['15%', '30%'])

    pie.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{d}%'))

    pie.set_global_opts(title_opts=opts.TitleOpts(
        title=city,
        pos_left=center2[0],
        pos_top=center2[1],
    ),
                        legend_opts=opts.LegendOpts(is_show=False))

    return pie
Example #3
0
def order_chart():
    # 今日各状态订单总金额
    pie2 = Pie()
    pie2.add("", list(order_status_total.items()))
    pie2.set_global_opts(title_opts=opts.TitleOpts(title="今日各状态订单总金额"))
    pie2.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    return pie2.dump_options_with_quotes()
Example #4
0
def draw_pie_chart(groupby_gpu, GPU_count=7) -> Pie:
    global pie, data
    base_radius = int(250 // GPU_count * 1.5)
    loc_x = 10  #起始位置
    step = 10  #调整饼图的间距
    loc_y = 20
    pie = Pie(init_opts=opts.InitOpts(
        width="1600px", height="900px", theme=ThemeType.ROMA))
    all_gpu_info = groupby_gpu['MEM'].sum()
    for i in range(GPU_count):
        if i in all_gpu_info.keys():
            current_gpu_list = groupby_gpu.get_group(i)[["PID_PATH", "MEM"
                                                         ]].values.tolist()
            aval_mem = round(11 - all_gpu_info[i], 2)
            data = [['可用', aval_mem]]
            data.extend(current_gpu_list)
        else:
            aval_mem = 11
            data = [['可用', aval_mem]]

        pie.add(
            "GPU:%s" % i,
            data,
            radius='%s' % base_radius,
            center=[str(loc_x + step * i) + '%',
                    str(loc_y) + '%'],
            rosetype=None,
            label_opts=opts.LabelOpts(position='inside',
                                      font_size=10,
                                      is_show=False),
        )
    pie = pie.set_global_opts(title_opts=opts.TitleOpts(title="GPU Stat"))
    return pie
Example #5
0
def Pie_base(sql, titl) -> Pie:
    pie = Pie()
    # engine = create_engine("mysql+pymysql://root:root@localhost:3306/mysql", encoding="utf-8")
    # session = sessionmaker(bind=engine)
    # # sql= "select gzlx as 故障类型,count(1) as 数量 from b_epos where rq BETWEEN '%s' and '%s' group by gzlx"% (rq1, rq2)
    # df = pd.read_sql(sql, engine)
    # rows=df.values.tolist()
    # headers=df.columns.tolist()
    with SQLPoll() as db:
        students = db.fetch_all(sql, None)
    headers = []
    for student in students:
        headers = list(student.keys())
        break
    c = []
    rows = []
    for student in students:
        c = list(student.values())
        rows += [c]
    if len(rows) == 0:
        rows = [['无', 0]]
    pie.add("", rows)
    pie.set_global_opts(title_opts=opts.TitleOpts(title=titl))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
    return pie
Example #6
0
    def v_positions(self, date=yesterdayobj(), rendered=True):
        """
        pie chart visualization of positions ratio in combination
        """
        sdata = sorted(
            [
                (fob.name, fob.briefdailyreport(date).get("currentvalue", 0))
                for fob in self.fundtradeobj
            ],
            key=lambda x: x[1],
            reverse=True,
        )
        pie = Pie()
        pie.add(
            series_name="总值占比",
            data_pair=sdata,
            label_opts=opts.LabelOpts(is_show=False, position="center"),
        ).set_global_opts(
            legend_opts=opts.LegendOpts(
                pos_left="left", type_="scroll", orient="vertical"
            )
        ).set_series_opts(
            tooltip_opts=opts.TooltipOpts(
                trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
            ),
        )

        if rendered:
            return pie.render_notebook()
        else:
            return pie
Example #7
0
def MutiplePieCharts(datas):
    height_i = '450'
    if len(datas) > 3:
        height_i = height_i + (350 * (len(datas) // 3))
    height = str(height_i) + 'px'
    pie = Pie(init_opts=opts.InitOpts(width="100%", height=height))
    left_i = 1
    right_i = 1
    for data in datas:
        right = str(300 * right_i) + 'px'
        if left_i == 1:
            left = '20%'
            left_i = 2
        elif left_i == 2:
            left = '50%'
            left_i = 3
        else:
            left = '80%'
            right_i += 1
            left_i = 1
        pie.add(
            data[0],
            data[1],
            center=[left, right],
            radius=120,
        )
    pie.set_global_opts(title_opts=opts.TitleOpts(title="磁盘使用率"), )
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"), )
    return pie.render_embed()
Example #8
0
def statistics_friends():
    # 初始化
    unknown, known_male, known_female, known_other = 0, 0, 0, 0

    # 遍历
    for user in friends:
        # 备注不为空
        if ((user.remark_name).strip()):
            if (user.sex == 1):
                known_male += 1
            elif (user.sex == 2):
                known_female += 1
            else:
                known_other += 1
        else:
            unknown += 1

    name_list = ['未设置备注的好友', '设置备注的男性好友', '设置备注的女性好友', '设置备注的其他好友']
    num_list = [unknown, known_male, known_female, known_other]

    pie = Pie()
    pie.add("你认识的好友比例", [list(z) for z in zip(name_list, num_list)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="你认识的好友比例"))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    pie.render('data/你认识的好友比例.html')
Example #9
0
def analyze_remark_name():
    close_partner_dict = {
        '宝宝,糙糙,仙女,亲爱,老婆': 0,
        '老公': 0,
        '父亲,爸': 0,
        '母亲,妈': 0,
        '闺蜜,死党,基友': 0
    }

    # 遍历好友数据
    for user in friends:
        for key in close_partner_dict.keys():
            # 判断该好友备注名是否包含close_partner_dict中的任意一个key
            name = key.split(',')
            for sub_name in name:
                if (sub_name in user.remark_name):
                    close_partner_dict[key] += 1
                    break

    name_list = ['最重要的她', '最重要的他', '爸爸', '妈妈', '死党']
    num_list = [x for x in close_partner_dict.values()]

    pie = Pie()
    pie.add("可能是你最亲密的人", [list(z) for z in zip(name_list, num_list)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="可能是你最亲密的人"))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    pie.render('data/你最亲密的人.html')
def analyze_remark_name():
    close_partner_dict = {
        '宝宝,猪,仙女,亲爱,老婆': 0,
        '老公': 0,
        '父亲,爸': 0,
        '母亲,妈': 0,
        '闺蜜,死党,基友': 0
    }

    # 遍历好友数据
    for user in friends:
        for key in close_partner_dict.keys():
            # 判断该好友备注名是否包含close_partner_dict中的任意一个key
            name = key.split(',')
            for sub_name in name:
                if (sub_name in user.remark_name):
                    close_partner_dict[key] += 1
                    break

    name_list = ['最重要的她', '最重要的他', '爸爸', '妈妈', '死党']
    num_list = [x for x in close_partner_dict.values()]

    pie = Pie("可能是你最亲密的人")
    pie.add("", name_list, num_list, is_label_show=True, is_legend_show=False)
    pie.render('data/你最亲密的人.html')
Example #11
0
def draw_usage_pie(payout, budget, title) -> Pie:
    """
    list [(title1, num1), (title2, num2)]
    :param payout: 消费
    :param budget: 预算
    :param title:  标题
    :return: Pie
    """
    pie = Pie()
    pie.add(
        series_name=title,
        data_pair=budget,
        radius=["0%", "40%"],
        label_opts=opts.LabelOpts(position="inner"),
    )
    pie.add(
        series_name=title,
        radius=["40%", "50%"],
        data_pair=payout,
        label_opts=opts.LabelOpts(
            position="outside",
            formatter="{b}:\n{c}({d}%)",
            border_width=1,
            border_radius=4,
        ),
    )

    # pie.set_global_opts(
    #     legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"), )
    # pie.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item",
    #                                                 formatter="{a} <br/>{b}: {c} ({d}%)"))

    return pie
def statistics_friends():
    # 初始化
    unknown, known_male, known_female, known_other = 0, 0, 0, 0

    # 遍历
    for user in friends:
        # 备注不为空
        if ((user.remark_name).strip()):
            if (user.sex == 1):
                known_male += 1
            elif (user.sex == 2):
                known_female += 1
            else:
                known_other += 1
        else:
            unknown += 1

    name_list = ['未设置备注的好友', '设置备注的男性好友', '设置备注的女性好友', '设置备注的其他好友']
    num_list = [unknown, known_male, known_female, known_other]

    pie = Pie("你认识的好友比例", title_pos='center')
    pie.add("",
            name_list,
            num_list,
            is_label_show=True,
            legend_orient="vertical",
            legend_pos="left")
    pie.render('data/你认识的好友比例.html')
Example #13
0
def draw_multiple_pie(month, day):
    max_width, max_height = 1400, 3000
    pie = Pie(init_opts=opts.InitOpts(width='{}px'.format(max_width),
                                      height='{}px'.format(max_height)))
    pie.set_global_opts(legend_opts=opts.LegendOpts(is_show=False),
                        title_opts=opts.TitleOpts(
                            title='2020-%02d-%d 全国各省份城市确诊病例' % (month, day)))

    h_center, v_center = 10, 40
    horizontal_step, vertical_step = 350, 320
    for p in get_province_data(month, day):
        title = '%s-%d例' % (p['provinceShortName'], p['confirmedCount'])
        labels = [city['cityName'] for city in p['cities']]
        counts = [city['confirmedCount'] for city in p['cities']]
        if len(labels) == 0:
            continue
        pie.add(title, [list(z) for z in zip(labels, counts)],
                radius=[5, 80],
                center=[h_center + 150, v_center + 110]).set_series_opts(
                    label_opts=opts.LabelOpts(formatter="{b}: {c}"),
                    tooltip_opts=opts.TooltipOpts())

        h_center += horizontal_step
        if h_center + 200 > max_width:
            h_center = 10
            v_center += vertical_step

    root = 'html-charts/%d%d' % (month, day)
    create_dir(root)
    pie.render('%s/省份信息.html' % root)
Example #14
0
def draw_category_pie(inner,
                      outside,
                      inner_title="分类报表",
                      outer_title='小类报表',
                      width=2000) -> Pie:
    pie = Pie()

    inner_radius = "70%"
    outer_radius = "80%"

    pie.add(
        series_name=inner_title,
        data_pair=inner,
        radius=["0%", inner_radius],
        label_opts=opts.LabelOpts(position="inner"),
    )
    pie.add(
        series_name=outer_title,
        radius=[inner_radius, outer_radius],
        data_pair=outside,
        label_opts=opts.LabelOpts(
            position="outside",
            formatter="{b}:\n{c}({d}%)",
            border_width=1,
            border_radius=4,
        ),
    )

    pie.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left",
                                                    orient="vertical"), )
    pie.set_series_opts(tooltip_opts=opts.TooltipOpts(
        trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"))

    return pie
Example #15
0
    def pie_two_html(self, chart_id, title, sub_title1, sub_title2, key1, key2, val1, val2):
        # 实例化饼状图
        pie = Pie(init_opts=opts.InitOpts(width="100%", height="300px"))
        pie.set_global_opts(
            title_opts=opts.TitleOpts(
                title="{}-{}".format(self.dt, title),
                title_textstyle_opts=opts.TextStyleOpts(color="white", font_size=14),
                pos_left="center"
            ),
            legend_opts=opts.LegendOpts(is_show=False),
        )
        pie.chart_id = chart_id
        # print("key1: %s" % key1)
        # print("val1: %s" % val1)
        pie.add(
            sub_title1,
            [list(z1) for z1 in zip(key1, val1)],
            center=[300, 160],
            radius=[30, 75],
        )
        pie.add(
            sub_title2,
            [list(z2) for z2 in zip(key2, val2)],
            center=[1100, 160],
            radius=[30, 75],
        )

        return pie.render_embed()
Example #16
0
def mkhtml2(name1):
    """
    饼图
    :return:生成豆瓣top250电影产源国家数量占比分析图html文件
    """

    # ORM查询
    myresult = Test.objects.values('address').annotate(
        count=Count('name')).order_by('-count')[:10]
    # fetchall() 获取所有记录
    namelist = []
    # 将变量存在列表里
    numlist = []
    for name in myresult:
        namelist.append(name['address'])
        numlist.append(name['count'])

    pie = Pie()
    pie.add(
        "占比",
        [list(z) for z in zip(namelist, numlist)],
        center=["40%", "60%"],
    )
    pie.set_global_opts(
        title_opts=opts.TitleOpts(title="豆瓣top250电影产源国家数量占比"),
        legend_opts=opts.LegendOpts(pos_left="35%"),
    )
    # 设置显示的样子,加入了百分比
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"))
    pie.render(f'{name1}')
    print(f'{name1}已生成')
Example #17
0
def data_visualized(user_id):
    project = Project.query.filter_by(user_id=user_id).first()
    duration = (project.expected_end_date - project.start_date).days
    tasks = Task.query.filter_by(project_id=project.project_id).all()
    task_name = []
    task_duration = []
    for task in tasks:
        task_name.append("task " + str(task.task_id))
        # start_date = datetime.datetime(task.start_date)
        # end_date = datetime.datetime(task.end_date)
        interval = (task.end_date - task.start_date).days
        duration -= interval
        task_duration.append(interval)
    task_name.append('Unused time')
    task_duration.append(duration)
    time_usage_chart = Pie({
        'width': '400px',
        'height': '400px',
        'chart_id': project.project_name + '_usage_chart'
    })
    # time_usage_chart.add_xaxis(task_name)
    # time_usage_chart.add_yaxis('duration', task_duration)
    time_usage_chart.add(
        project.project_name,
        [list(z) for z in zip(task_name, task_duration)],
        radius=["30%", "55%"],
    )
    return render_template('data_visualized.html',
                           time_usage=time_usage_chart.render_embed())
Example #18
0
    def get_github_id_sum(self):
        select_sql = "select github_id,sum(zh_sum) as total from zh_trans  where flag = " \
                     + str(self.flag) + " and  merge_time between '" + self.begin_time + "' and  '" + \
                     self.end_time + "'  group by  github_id   order by total desc"
        # 连接数据库
        conn = sqlite3.connect(self.db)
        # 创建一个 cursor
        cursor = conn.cursor()
        cursor.execute(select_sql)
        data = cursor.fetchall()
        all_data = []
        all_author = []
        all_value = []
        total = 0
        for zh in data:
            all_author.append(zh[0])
            all_value.append((zh[1]))
            all_data.append([zh[0], zh[1]])
            total += zh[1]
        if self.flag == 0:
            series_name = "开始时间:" + self.begin_time + "  结束时间:" + self.end_time + "\n istio.io 新增中文翻译字数统计 总参与人数为:" + str(
                len(all_data)) + "\n istio.io 新增中文翻译字数统计 总翻译字数为:" + str(total)
        else:
            series_name = "开始时间:" + self.begin_time + "  结束时间:" + self.end_time + "\n istio.io 更新中文翻译字数统计 总参与人数为:" + str(
                len(all_data)) + "\n istio.io 更新中文翻译字数统计 总翻译字数为:" + str(total)

        generated_log(series_name, self.flag)
        # 饼图
        pie = Pie()
        pie.add(
            "",
            data_pair=all_data,
            center=["40%", "62%"],
            radius=["0%", "45%"],
            rosetype='radius').set_global_opts(
                title_opts=opts.TitleOpts(title=""),
                legend_opts=opts.LegendOpts(
                    orient="vertical", pos_top="5%",
                    pos_right="6%")).set_series_opts(label_opts=opts.LabelOpts(
                        horizontal_align=True, formatter="{b}: {c}"))
        html_time = str(time.strftime('%Y-%m-%d',
                                      time.localtime(time.time()))).replace(
                                          "-", "")
        if self.flag == 0:
            pie.render(html_time + "page_pie_add.html")
        else:
            pie.render(html_time + "page_pie_update.html")

        # 柱状图
        bar = (Bar().add_xaxis(all_author).add_yaxis(
            "github账户", all_value).set_global_opts(title_opts=opts.TitleOpts(
                title="翻译统计")))
        if self.flag == 0:
            bar.render(html_time + "page_bar_add.html")
        else:
            bar.render(html_time + "page_bar_update.html")

        cursor.close()
        conn.commit()
        conn.close()
Example #19
0
def bingtu(shopNames, nums):
    attr = shopNames
    v1 = nums
    pie = Pie("笔记本店铺饼图展示")
    pie.add("", attr, v1, is_label_show=True)
    pie.show_config()
    pie.render("D:\\scrapy\\jingdong\\shops.html")
Example #20
0
def show_pie_charts(df):
    score_perc = df['star'].value_counts() / df['star'].value_counts().sum(
    )  # 评分占比 = 评分1-5的个数(分别) / 评分总个数
    score_perc = np.round(score_perc * 100, 2)
    score_perc = score_perc.sort_index()  # Series也可以排序
    # 聚合后类型为Series,转成Dataframe
    # df_score = pd.DataFrame(list(zip(score_perc.index, score_perc.values)), columns=['score', 'percentage']).sort_values('score')

    pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px'))
    pie1.add(
        series_name='评分占比',
        data_pair=[*zip(score_perc.index, score_perc.values)
                   ],  # Series: zip打包为一个元组对象,用*解压成元组,再[]转成列表
        # data_pair=[*zip(df_score['score'], df_score['percentage'])],  # Dataframe
        label_opts=opts.LabelOpts(formatter='{c}%'),  # formatter='{c}%'百分比
        radius=['35%', '70%']  # 是什么意思
    )
    pie1.set_global_opts(
        title_opts=opts.TitleOpts(title='总体评分分布'),
        legend_opts=opts.LegendOpts(orient='vertical',
                                    pos_top='15%',
                                    pos_left='2%'),  # 图例的位置:水平/垂直
        toolbox_opts=opts.ToolboxOpts())  # 右上角的工具栏,保存图片等等
    pie1.set_colors(['#D7655A', '#FFAF34', '#3B7BA9', '#EF9050', '#6FB27C'])
    pie1.render('charts/pie_chart.html')
Example #21
0
def pie_set_colors():
    obj_pie = Pie()
    obj_pie.add("",[list(z) for z in zip(Faker.choose(), Faker.values())])
    obj_pie.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
    obj_pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    obj_pie.set_global_opts(title_opts=opts.TitleOpts(title="Pie-设置颜色",subtitle ="副标题"))
    return obj_pie
def pie_echart():
    keys = ['男性', '女性']
    values = [7322452, 7438028]
    data = zip(keys, values)
    c = Pie()
    c.add("饼状图", list(data))
    c.set_global_opts(title_opts=opts.TitleOpts(title='男女比例情况'))
    return c
Example #23
0
def sexAnalyse(itemname_, itemnamelist_, itemnumlist_):
    totle = itemnumlist_[0] + itemnumlist_[1] + itemnumlist_[2]
    subtitle = "共有:%d个好友" % totle
    pie = Pie()#新建饼图对象
    pie.add("",[list(z) for z in zip(itemnamelist_,itemnumlist_)],center=["35%", "50%"])#饼图对象数据添加
    pie.set_global_opts(title_opts=opts.TitleOpts(title=subtitle),legend_opts=opts.LegendOpts(pos_left="15%"),)
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    outFileName = itemname_+ '.html'
    pie.render(outFileName)#保存饼图对象
Example #24
0
 def render_html(self) -> str:
     """渲染html"""
     pie = Pie(init_opts=InitOpts(theme=ThemeType.LIGHT))
     pie.add('KeyWords', self.result.items())
     # pie.set_global_opts(title_opts=TitleOpts(title='主标题', subtitle='附标题'))
     html = CacheModule.create_cache_path('html')
     pie.render(html)
     self.htmlpath = html
     return html
Example #25
0
def get_pie(labels, counts, title, size):
    pie = Pie(init_opts=opts.InitOpts(width=size[0], height=size[1]))
    pie.set_global_opts(legend_opts=opts.LegendOpts(is_show=False), title_opts=opts.TitleOpts(title))
    pie.add(
        title,
        [list(z) for z in zip(labels, counts)],
        radius=[5, 80],
    ).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"), tooltip_opts=opts.TooltipOpts())
    return pie
Example #26
0
 def pie_render_air(self):
     """
         * 实心圆一个,仅支持一份参数;
     """
     # c = Pie(init_opts=opts.InitOpts(width="1600px", height="800px"))
     c = Pie()
     c.add(
         series_name=self.y_name,
         # radius=["40%", "55%"], # 半圆的尺寸;
         radius=[0, "55%"],
         data_pair=self.inner_data_pair,
         label_opts=opts.LabelOpts(
             position="outside",
             formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
             background_color="#eee",
             border_color="#aaa",
             border_width=1,
             border_radius=4,
             rich={
                 "a": {
                     "color": "#999",
                     "lineHeight": 22,
                     "align": "center"
                 },
                 "abg": {
                     "backgroundColor": "#e3e3e3",
                     "width": "100%",
                     "align": "right",
                     "height": 22,
                     "borderRadius": [4, 4, 0, 0],
                 },
                 "hr": {
                     "borderColor": "#aaa",
                     "width": "100%",
                     "borderWidth": 0.5,
                     "height": 0,
                 },
                 "b": {
                     "fontSize": 16,
                     "lineHeight": 33
                 },
                 "per": {
                     "color": "#eee",
                     "backgroundColor": "#334455",
                     "padding": [2, 4],
                     "borderRadius": 2,
                 },
             },
         ),
     )
     c.set_global_opts(title_opts=opts.TitleOpts(title=self.title),
                       legend_opts=opts.LegendOpts(pos_left=self.pos_left,
                                                   orient="vertical"))
     c.set_series_opts(tooltip_opts=opts.TooltipOpts(
         trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"))
     return c
def search():
    page = Pie()
    bar = get_bar()
    page.add(bar)
    keyword = request.args.get('keyword').replace(' ', '')  # 获得前端传回的keyword
    print(keyword)
    if ':' in keyword:  # 判断是否是高级搜索
        key = keyword.split(':')[0]  # 获取传回的高级搜索关键字,如"诗人:李白",此时获取‘诗人’
        value = keyword.split(':')[1]  # 获取‘李白’
        if key == '诗人' and value:  # 判断高级搜索为‘诗人’,并且搜索内容不为空
            poet = Poet.query.filter_by(
                name=value).first()  # 在数据库中查询姓名为”李白“的诗人数据
            if poet:  # 如果查询到
                context = {
                    'poet': poet,  # 诗人字段信息
                    'poem': poet.poems  # 诗人的是诗的字段信息
                }
                return render_template('search.html',
                                       **context,
                                       chart=page.render_embed())
            else:  # 如果没有查询到
                context = {
                    'message': '没有找到相关内容'  # 返回信息
                }
                return render_template('search.html', **context)  # 渲染页面
        elif key == '诗句' and value:  # 判断高级搜索为‘诗句’,并且搜索内容不为空 如”诗句:清明“
            poem = Poem.query.filter(
                Poem.content.contains(value)).all()  # 获取全部诗句内容中包含”清明“诗句
            if poem:  # 如果查询到
                context = {
                    'poem': poem  # 诗的字段信息
                }
                return render_template(
                    'search.html',
                    **context,
                    chart=page.render_embed(),
                    host='/static/js',
                    script_list=page.get_js_dependencies())  # 渲染页面
            else:  # 如果没有查询到
                context = {'message': '没有找到相关内容'}
                return render_template('search.html', **context)  # 渲染页面
    else:  # 普通搜索,直接搜索诗的名字 如:‘江南’
        poem = Poem.query.filter_by(title=keyword).all()  # 获取所有诗的名字为‘江南’的数据
        if poem:  # 如果查询的到
            context = {
                'poem': poem  # 所有诗的名字为‘江南’字段信息
            }
            return render_template(
                'search.html',
                **context,
                chart=page.render_embed(),
                host='/static/js',
                script_list=page.get_js_dependencies())  # 渲染页面
        else:  # 如果没有查询的到
            context = {'message': '没有找到相关内容'}
            return render_template('search.html', **context)  #渲染页面
Example #28
0
def show_pie(id):
    attr = ["成功(含熔断)", "失败", "限流"]
    counts = [len(sync.success), len(sync.fail), sync.limit]
    c = Pie(init_opts=opts.InitOpts(
        width='1200px', height='800px', page_title='page'))
    c.add("", [list(attr) for attr in zip(attr, counts)])
    c.set_colors(["green", "red", "blue"])
    c.set_global_opts(title_opts=opts.TitleOpts(title="成功失败数量饼图"))
    c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    c.render('成功失败数量饼图{}.html'.format(id + 1))
Example #29
0
 def pie_render_genre(self):
     c = Pie()
     c.add(self.y_name, self.inner_data_pair, center=["35%", "50%"])
     c.set_global_opts(title_opts=opts.TitleOpts(title=self.title),
                       legend_opts=opts.LegendOpts(pos_left=self.pos_left,
                                                   orient="vertical"))
     c.set_series_opts(tooltip_opts=opts.TooltipOpts(
         trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"),
                       label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
     return c
Example #30
0
def sex_chart(data, movie_id):
    list = []
    data = data['gender'].value_counts()
    for key, v in enumerate(data):
        list.append([sex[key], v])
    pie = Pie()
    pie.add("", list)
    pie.set_global_opts(title_opts=opts.TitleOpts(title="评论用户性别分布饼图"))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    pie.render('user_sex_' + movie_id + '.html')