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")
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
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()
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
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
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
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()
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')
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')
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')
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)
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
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()
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}已生成')
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())
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()
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")
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')
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
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)#保存饼图对象
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
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
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) #渲染页面
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))
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
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')