from pyecharts import options as opts # 导入模块 from pyecharts.charts import Pie # 导入theme from pyecharts.globals import ThemeType import pandas as pd # 加载数据 data = pd.read_excel('./Python地区分校人数.xlsx') print('data:\n', data) # 绘制饼图 pie = Pie() pie.add( series_name='分校人数', data_pair=data.values.tolist(), # radius=[ '50%', '75%' # 内外半径 内径 外径 ]) # 添加全局配置 pie.set_global_opts( title_opts=opts.TitleOpts(title='分校占比图', pos_left='center'), legend_opts=opts.LegendOpts(is_show=False), ) # 添加系列配置
# 建立柱状图 bar_3 = ( Bar() .add_xaxis(x) .add_yaxis('', y) .set_global_opts( title_opts=opts.TitleOpts(title='用户一周内各天领卷数量累计'), # title ) ) ###################### # 优惠卷类型比例 v1=['折扣','满减'] v2=list(offline[offline['Date_received'].notnull()]['is_manjian'].value_counts(True)) pie_1=( Pie() .add("",[list(v) for v in zip(v1,v2)]) .set_global_opts(title_opts={"text":"各类优惠卷数量占比饼图"}) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) ) path = './tmp/task2_output' if not os.path.exists(path): os.makedirs(path) # render会生成本地HTML文件,默认在当前目录生成render.html文件 bar_1.render(path + '/bar_1.html') bar_2.render(path + '/bar_2.html') bar_3.render(path + '/bar_3.html') pie_1.render(path + '/pie_1.html')
def grid_test(): Mode_pie = ( Pie() .add("Mode", df_mode.values.tolist(), center=["12%", "35%"], radius=["40%", "55%"], label_opts=opts.LabelOpts(is_show=False, position="center") ) .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"]) .set_global_opts(title_opts=opts.TitleOpts(title="Mode", pos_left="10%", pos_top="30%"), legend_opts=opts.LegendOpts(orient="vertical", pos_left="0%", pos_top="10%") ) .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)") ) ) Language_pie = ( Pie() .add("Language", df_Language.values.tolist(), center=["32%", "35%"], radius=["40%", "55%"], label_opts=opts.LabelOpts(is_show=False, position="center") ) .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"]) .set_global_opts(title_opts=opts.TitleOpts(title="Language", pos_left="28.7%", pos_top="30%"), legend_opts=opts.LegendOpts(orient="vertical", pos_left="20%", pos_top="10%") ) .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)") ) ) Genre_pie = ( Pie() .add("Genre", df_genre.values.tolist(), center=["52%", "35%"], radius=["40%", "55%"], label_opts=opts.LabelOpts(is_show=False, position="center") ) .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"]) .set_global_opts(title_opts=opts.TitleOpts(title="Genre", pos_left="50%", pos_top="30%"), legend_opts=opts.LegendOpts(orient="vertical", pos_left="40%", pos_top="10%") ) .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)") ) ) Length_pie = ( Pie() .add("Length", df_length.values.tolist(), center=["72%", "35%"], radius=["40%", "55%"], label_opts=opts.LabelOpts(is_show=False, position="center") ) .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"]) .set_global_opts(title_opts=opts.TitleOpts(title="Length", pos_left="69.6%", pos_top="30%"), legend_opts=opts.LegendOpts(orient="vertical", pos_left="60%", pos_top="10%") ) .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)") ) ) Star_Rating_pie=( Pie() .add("Star Rating", df_star.values.tolist(), center=["92%", "35%"], radius=["40%", "55%"], label_opts=opts.LabelOpts(is_show=False, position="center") ) .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"]) .set_global_opts(title_opts=opts.TitleOpts(title="Star Rating", pos_left="88.4%", pos_top="30%"), legend_opts=opts.LegendOpts(orient="vertical", pos_left="80%", pos_top="10%") ) .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)") ) ) return Grid(init_opts=opts.InitOpts(width="1500px", height="250px")).add(Mode_pie, grid_opts=opts.GridOpts()).add(Language_pie, grid_opts=opts.GridOpts()).add(Genre_pie, grid_opts=opts.GridOpts()).add(Length_pie, grid_opts=opts.GridOpts()).add(Star_Rating_pie, grid_opts=opts.GridOpts())
def analyse_worldhistory(self): world=pd.DataFrame(pd.read_excel(self.file+'\\data\\世界总体疫情信息\\世界总体疫情信息.xlsx')) confirmAdd=int(world['confirmAdd'].sum()) confirm=int(world['confirm'].sum()) confirmAddCut=int(world['confirmAddCut'].sum()) suspect=int(world['suspect'].sum()) dead=int(world['dead'].sum()) heal=int(world['heal'].sum()) nowConfirm=int(world['nowConfirm'].sum()) confirmCompare=int(world['confirmCompare'].sum()) nowConfirmCompare=int(world['nowConfirmCompare'].sum()) healCompare=int(world['healCompare'].sum()) deadCompare=int(world['deadCompare'].sum()) healRate=round(heal/confirm*100,2) deadRate=round(dead/confirm*100,2) aliveRate=round(100-healRate-deadRate,2) ratedata=[deadRate,healRate,aliveRate] ratecolumns=['死亡率/% ','治愈率/% ','存活率/% '] bar_world=\ ( Bar() .add_xaxis(" ") .add_yaxis('新增确诊',[confirmAdd],color='pink',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('累计确诊',[confirm],color='green',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('疑似病例',[suspect],color='black',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('死亡病例',[dead],color='orange',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('治愈病例',[heal],color='red',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('现有确诊',[nowConfirm],color='grey',label_opts=opts.LabelOpts(is_show=True)) .set_global_opts(title_opts=opts.TitleOpts(title='世界疫情信息'), tooltip_opts=opts.TooltipOpts(is_show=False), xaxis_opts=opts.AxisOpts(name='日期',axislabel_opts={"interval":"0"}), yaxis_opts=opts.AxisOpts(name='人数',splitline_opts=opts.SplitLineOpts(is_show=True),) ) )#柱形图 bar_worldother=\ ( Bar() .add_xaxis(" ") .add_yaxis('confirmAddCut',[confirmAddCut],color='pink',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('confirmCompare',[confirmCompare],color='green',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('nowConfirmCompare',[nowConfirmCompare],color='orange',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('healCompare',[healCompare],color='black',label_opts=opts.LabelOpts(is_show=True)) .add_yaxis('deadCompare',[deadCompare],color='red',label_opts=opts.LabelOpts(is_show=True)) .set_global_opts(title_opts=opts.TitleOpts(title='世界疫情其他信息',pos_left='37%',pos_top='5%'), tooltip_opts=opts.TooltipOpts(is_show=False), xaxis_opts=opts.AxisOpts(name='日期',axislabel_opts={"interval":"0"}), yaxis_opts=opts.AxisOpts(name='人数',splitline_opts=opts.SplitLineOpts(is_show=True),) ) ) #柱形图 pie_worldrate=\ ( Pie() .add("", [list(z) for z in zip(ratecolumns,ratedata)], radius=["20%", "60%"], center=["55%", "50%"], rosetype="area" ) .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=12,formatter="{b}:{c}", font_style="italic",font_weight="bold", font_family="Microsoft YaHei"),) .set_global_opts(title_opts=opts.TitleOpts(title='世界总的死亡率、治疗率、存活率'), tooltip_opts=opts.TooltipOpts(axis_pointer_type= 'cross'), xaxis_opts=opts.AxisOpts(name='日期'), yaxis_opts=opts.AxisOpts(name='百分比')) )#饼图 self.page.add(bar_world)#添加到同一页面 self.page.add(bar_worldother)#添加到同一页面 self.page.add(pie_worldrate)#添加到同一页面 bar_world.render(self.path+'\\world.html')#在analysis生成html文件 bar_worldother.render(self.path+'\\worldother.html')#在analysis生成html文件 pie_worldrate.render(self.path+'\\worldrate.html')#在analysis生成html文件 """
Pie() .add( series_name="访问来源", data_pair=inner_data_pair, radius=[0, "30%"], label_opts=opts.LabelOpts(position="inner"), ) .add( series_name="访问来源", radius=["40%", "55%"], data_pair=outer_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, }, }, ), ) .set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical")) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)" ) ) .render("nested_pies.html")
'max': 99, 'min': 10, 'color': '#f27777' }, { 'max': 9, 'min': 1, 'color': '#f7adad' }, { 'max': 0, 'color': '#f7e4e4' }, ] m = Pie() m.add("累计确诊", [list(z) for z in zip(labels, counts)], center=["50%", "70%"], radius='55%') #m.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"]) m.set_global_opts( title_opts=opts.TitleOpts(title="中国疫情饼图(COVID-19 CHINA)" + today), legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="85%"), visualmap_opts=opts.VisualMapOpts( pieces=pieces, is_piecewise=True, #是否为分段型 is_show=True)) #是否显示视觉映射配置) m.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
def get_year_chart(year: str): map_data = [ [[x["name"], x["value"]] for x in d["data"]] for d in MapData if d["time"] == year ][0] min_data, max_data = (minNum, maxNum) data_mark: List = [] i = 0 for x in time_list: if x == year: data_mark.append(total_num[i]) else: data_mark.append("") i = i + 1 map_chart = ( Map() .add( series_name="", data_pair=map_data, zoom=1, center=[119.5, 34.5], is_map_symbol_show=False, itemstyle_opts={ "normal": {"areaColor": "#323c48", "borderColor": "#404a59"}, "emphasis": { "label": {"show": Timeline}, "areaColor": "rgba(255,255,255, 0.5)", }, }, ) .set_global_opts( title_opts=opts.TitleOpts( title="" + str(year) + "全国各省份NCP实时动态(数据来源:丁香园; 数据仓库:BlankerL/DXY-2019-nCoV-Data)", subtitle="", pos_left="center", pos_top="top", title_textstyle_opts=opts.TextStyleOpts( font_size=25, color="rgba(255,255,255, 0.9)" ), ), tooltip_opts=opts.TooltipOpts( is_show=True, formatter=JsCode( """function(params) { if ('value' in params.data) { return params.data.value[2] + ': ' + params.data.value[0]; } }""" ), ), visualmap_opts=opts.VisualMapOpts( is_calculable=True, dimension=0, pos_left="30", pos_top="center", range_text=["High", "Low"], range_color=["lightskyblue", "yellow", "orangered"], textstyle_opts=opts.TextStyleOpts(color="#ddd"), min_=min_data, max_=max_data, ), ) ) line_chart = ( Line() .add_xaxis(time_list) .add_yaxis("", total_num) .add_yaxis( "", data_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="全国各省份NCP实时动态(单位: 百人)", pos_left="72%", pos_top="5%" ) ) ) bar_x_data = [x[0] for x in map_data] bar_y_data = [{"name": x[0], "value": x[1][0]} for x in map_data] bar = ( Bar() .add_xaxis(xaxis_data=bar_x_data) .add_yaxis( series_name="", yaxis_data=bar_y_data, label_opts=opts.LabelOpts( is_show=True, position="right", formatter="{b} : {c}" ), ) .reversal_axis() .set_global_opts( xaxis_opts=opts.AxisOpts( max_=maxCount, axislabel_opts=opts.LabelOpts(is_show=False) ), yaxis_opts=opts.AxisOpts( axislabel_opts=opts.LabelOpts(is_show=False)), tooltip_opts=opts.TooltipOpts(is_show=False), visualmap_opts=opts.VisualMapOpts( is_calculable=True, dimension=0, pos_left="10", pos_top="top", range_text=["High", "Low"], range_color=["lightskyblue", "yellow", "orangered"], textstyle_opts=opts.TextStyleOpts(color="#ddd"), min_=min_data, max_=max_data, ), ) ) pie_data = [[x[0], x[1][0]] for x in map_data] pie = ( Pie() .add( series_name="", data_pair=pie_data, radius=["15%", "35%"], center=["80%", "82%"], itemstyle_opts=opts.ItemStyleOpts( border_width=1, border_color="rgba(0,0,0,0.5)" ), ) .set_global_opts( tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{b} {d}%"), legend_opts=opts.LegendOpts(is_show=False), ) ) grid_chart = ( Grid() .add( bar, grid_opts=opts.GridOpts( pos_left="10", pos_right="45%", pos_top="50%", pos_bottom="5" ), ) .add( line_chart, grid_opts=opts.GridOpts( pos_left="65%", pos_right="80", pos_top="10%", pos_bottom="50%" ), ) .add(pie, grid_opts=opts.GridOpts(pos_left="45%", pos_top="60%")) .add(map_chart, grid_opts=opts.GridOpts()) ) return grid_chart
sum_price = 0 number = len(price_list) for price in price_list: sum_price += int(price[0].replace('元/㎡', '')) average = sum_price / number average_list.append(format(average, '.2f')) return average_list price_list = select_average_price() print(price_list) # 柱状图 bar_obj = ( Bar(init_opts=options.InitOpts(theme=ThemeType.MACARONS)) \ .add_xaxis((city_list)) \ .add_yaxis("", price_list) \ .set_global_opts(title_opts=options.TitleOpts("买房平均价格元/㎡", subtitle='仅供参考'), toolbox_opts=options.ToolboxOpts(), # 工具栏选项 brush_opts=options.BrushOpts() # 工具刷对象 ) ) # 饼状图 b_list = [list(i) for i in zip(city_list, price_list)] pie_ogj = (Pie().add("", b_list).set_series_opts(label_opts=options.LabelOpts( formatter="{b}: {c}"))) # page对象用于整合地图 p = Page(layout=Page.SimplePageLayout) p.add(pie_ogj, bar_obj) p.render("一线城市买房信息整合.html")
from pyecharts.charts import Pie import pyecharts.options as opts import pandas as pd vote_result = pd.read_csv('vote_result.csv') ''' Pie要求输入的数据格式为 [ [name1, value1], [name2, value2], [name3, value3], ... ] 故需要转换格式 ''' data = [list(z) for z in zip(vote_result['感兴趣的领域'], vote_result['票数'])] pie = Pie() pie.add('', data) pie.set_global_opts(title_opts=opts.TitleOpts(title='饼图示例'), legend_opts=opts.LegendOpts(is_show=False)) pie.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{d}%')) pie.render('pie(1).html')
# 5.绘图 ( Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK)) .add( "", result, radius=["30%","75%"], center=["50%", "50%"], rosetype="area" ) # 全局配置项 .set_global_opts( title_opts=opts.TitleOpts( title="户型分布", pos_left="center", pos_top="20v", title_textstyle_opts=opts.TextStyleOpts(color="#fff"), ), legend_opts=opts.LegendOpts(is_show=False), ) # 系列配置项 .set_series_opts( label_opts=opts.LabelOpts( formatter="{b}:{d}%" ), ) .render("户型分布.html") )
labels1 = [ '0-100', '100-1000', '1000-5000', '5000-10000', '10000-100000', '100000以上' ] sizes1 = [ len(df[(df['粉丝'] <= 100)]), len(df[(df['粉丝'] >= 100) & (df['粉丝'] < 1000)]), len(df[(df['粉丝'] >= 1000) & (df['粉丝'] < 5000)]), len(df[(df['粉丝'] >= 5000) & (df['粉丝'] < 10000)]), len(df[(df['粉丝'] >= 10000) & (df['粉丝'] < 100000)]), len(df[(df['粉丝'] >= 100000)]) ] print(sizes1) c = (Pie(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)).add( "", [list(z) for z in zip(labels1, sizes1)]).set_global_opts( title_opts=opts.TitleOpts(title="知乎用户粉丝数量分布图", pos_bottom='center'), legend_opts=opts.LegendOpts(pos_left="15%"), ).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))) c.render("知乎用户粉丝数量分布图.html") #知乎用户获赞数分布图 labels2 = [ '0-100', '100-1000', '1000-5000', '5000-10000', '10000-100000', '100000以上' ] sizes2 = [ len(df[(df['获赞'] <= 100)]), len(df[(df['获赞'] >= 100) & (df['获赞'] < 1000)]), len(df[(df['获赞'] >= 1000) & (df['获赞'] < 5000)]), len(df[(df['获赞'] >= 5000) & (df['获赞'] < 10000)]), len(df[(df['获赞'] >= 10000) & (df['获赞'] < 100000)]), len(df[(df['获赞'] >= 100000)])
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Faker c = ( Pie() .add( "", [ list(z) for z in zip( Faker.choose() + Faker.choose() + Faker.choose(), Faker.values() + Faker.values() + Faker.values(), ) ], center=["40%", "50%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="Pie-Legend 滚动"), legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) .render("pie_scroll_legend.html") )
Pie(init_opts=opts.InitOpts( bg_color='#031f2d', )) .set_global_opts( title_opts=opts.TitleOpts( title="%d年\n\n不同空军机型统计" % (years[i],), pos_left='center', pos_top='40%', padding=[24, 0], title_textstyle_opts=opts.TextStyleOpts( color='#fff', font_size=18, align='center' ) ), legend_opts=opts.LegendOpts( type_="scroll", pos_left="80%", orient="vertical", textstyle_opts=opts.TextStyleOpts( color='#fff', font_size=16, rich=rich ), ) ) .add( "xilie1", datalist[i], radius=['42%', '50%'], label_opts=opts.LabelOpts( position="outside", rich=rich, formatter="{white|{b}} \n{hr|}\n{yellow|{c}}\n{blue|{d}%}" # 参数说明:{a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比) ) )
def WriteImgTxt(IPdata,filename): alivehosts = len(IPdata) openports = 0 weburls = 0 portdict = {} servicedict = {} for i in IPdata: weburls += (len(i.get('urls'))) openports += (len(i.get('ports'))) service = (i.get('services')) for k, v in service.items(): portdict[k] = 0 servicedict[v.upper()] = 0 for i in IPdata: service = (i.get('services')) for k, v in service.items(): portdict[k] = portdict[k] + 1 servicedict[v.upper()] = servicedict[v.upper()] + 1 inner_x_data = ["存活主机", "开放端口", "部署网站"] inner_y_data = [alivehosts, openports, weburls] inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)] mid_data_pair = list(portdict.items()) outer_data_pair = list(servicedict.items()) c=( Pie(init_opts=opts.InitOpts(width="2200px", height="900px")) .add( series_name="总体资产", data_pair=inner_data_pair, radius=[0, "20%"], label_opts=opts.LabelOpts(position="inner",formatter="{b}:{c}个"), ) .add( series_name="开放端口", data_pair=mid_data_pair, radius=["25%", "50%"], label_opts=opts.LabelOpts(position="inner",formatter="端口:{b}|总数:{c}"), ) .add( series_name="部署服务", radius=["55%", "80%"], data_pair=outer_data_pair, label_opts=opts.LabelOpts(formatter="{a}:{b}|占比:{d}%"), ) .set_global_opts(legend_opts=opts.LegendOpts(pos_left="mid", orient="vertical")) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)" ) ) .render(filename) ) # words = mid_data_pair + outer_data_pair # c = ( # WordCloud(init_opts=opts.InitOpts(width="1200px", height="800px")) # .add("", words, word_size_range=[30, 80]) # # .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例")) # ).render('test.txt') if os.path.exists(filename): with open(filename, 'r', encoding='utf-8')as a: res1 = re.search('(<body>.*?</body>)', a.read(), re.S | re.I).group(1) os.remove(filename) return res1 # with open('test.txt', 'r', encoding='utf-8')as a: # res2 = re.search('(<body>.*?</body>)', a.read(), re.S | re.I).group(1) # os.remove('test.txt') # res3 = '<div class="col-sm-6">{}</div><div class="col-sm-6">{}</div>'.format(res1,res2) # return res3 else: Log('生成效果图失败')
def drawpie(attr,value,name): list1 = [list(z) for z in zip(attr,value)] # 图表初始化配置 init_opts = opts.InitOpts(page_title=name) pie = Pie(init_opts=init_opts) # 标题配置 title = opts.TitleOpts(title=name, pos_left='center') # 图例配置 legend_opts = opts.LegendOpts(orient="vertical", pos_top="20%", pos_left="15%") # 工具箱配置 # feature = opts.ToolBoxFeatureOpts(save_as_image=True, restore=True, data_view=True, data_zoom=True) # 工具箱配置 toolbox_opts = opts.ToolboxOpts(orient="vertical", pos_top="25%", pos_right="15%" ) pie.set_global_opts(title_opts=title, legend_opts=legend_opts, toolbox_opts=toolbox_opts ) # 标签配置项 pie.add("", list1, radius=[30, 75], center=['50%', '70%'], rosetype="area", label_opts=opts.LabelOpts( position="outside", formatter="{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, }, }, ), ) pie.render('{0}.html'.format(name))
# !/usr/bin/env python # -*- coding: utf-8 -*- # Author: yanghuizhi # Time: 2020/3/15 6:59 下午 # // 导入饼图Pie # // 设置主标题与副标题,标题设置居中,设置宽度为900 from pyecharts.charts import Pie pie = Pie() # // 加入数据,设置坐标位置为【25,50】,上方的colums选项取消显示 # pie.add("降水量", data_pair= /center=[25, 50] ) # // 加入数据,设置坐标位置为【75,50】,上方的colums选项取消显示,显示label标签 # pie.add("蒸发量", columns, data2, center=[75, 50], is_legend_show=False, is_label_show=True) # # // 保存图表 pie.render()
df = pd.DataFrame(color, columns=['color']) analyse_color = df['color'].value_counts() # 颜色可视化 bar = Bar() bar.add_xaxis(analyse_color.index.values.tolist()) bar.add_yaxis("", analyse_color.values.tolist()) bar.set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), title_opts=opts.TitleOpts(title="颜色分布"), # datazoom_opts=opts.DataZoomOpts(), ) bar.render_notebook() pie = Pie() pie.add("", [ list(z) for z in zip(analyse_color.index.values.tolist(), analyse_color.values.tolist()) ], radius=["30%", "75%"], center=["50%", "50%"], rosetype="area") pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")) pie.set_global_opts(title_opts=opts.TitleOpts(title="各颜色占比"), legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical")) pie.render_notebook() # 尺寸可视化
def Pie1(): pie = (Pie().add("", newdata).set_global_opts( title_opts=opts.TitleOpts(title="Pie-演员"), legend_opts=opts.LegendOpts(pos_left=160)).set_series_opts( label_opts=opts.LabelOpts(formatter="{b}: {c}"))) return pie
# 此处不可以用索引访问:row[0] dataX.append(row["category_name"]) dataY.append(row["电影类型"]) return dataX, dataY except: print("错误:数据查询操作失败") finally: connection.close() # 执行主函数 if __name__ == '__main__': print(order_category_sum_query()) dataX, dataY = order_category_sum_query() data_pair = [list(z) for z in zip(dataX, dataY)] pie = Pie() pie.add("", data_pair) pie.set_global_opts( title_opts=opts.TitleOpts(title="商品类型构成图"), legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_right="-4.5%"), ) pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"), position="outside", background_color="#eee", border_color="#aaa", border_width=1, border_radius=4) pie.render('pie.html')
1、迷之颜色映射的问题 """ x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"] y_data = [335, 310, 274, 235, 400] data_pair = [list(z) for z in zip(x_data, y_data)] data_pair.sort(key=lambda x: x[1]) (Pie(init_opts=opts.InitOpts( width="1600px", height="800px", bg_color="#2c343c")).add( series_name="访问来源", data_pair=data_pair, rosetype="radius", radius="55%", center=["50%", "50%"], label_opts=opts.LabelOpts(is_show=False, position="center"), ).set_global_opts( title_opts=opts.TitleOpts( title="Customized Pie", pos_left="center", pos_top="20", title_textstyle_opts=opts.TextStyleOpts(color="#fff"), ), legend_opts=opts.LegendOpts(is_show=False), ).set_series_opts( tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"), label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"), ).render("customized_pie.html"))
# In[11]: risk = ['01 위험회피형','02 위험중립형','03 위험감수형'] color = ['#fc6472', '#f4b2a6', '#eccdb3', '#bcefd0', '#a1e8e4', '#23c8b2', '#7f5a7c'] label = label_opts=opts.LabelOpts(color=["black"], formatter="{b}:\n{d}% \n ", font_size = 11) h_20 = list(high_20.risk.value_counts().sort_index()) m_20 = list(middle_20.risk.value_counts().sort_index()) l_20 = list(low_20.risk.value_counts().sort_index()) h_30 = list(high_30.risk.value_counts().sort_index()) m_30 = list(middle_30.risk.value_counts().sort_index()) l_30 = list(low_30.risk.value_counts().sort_index()) tl = Timeline() pie_0 = (Pie().add("", [list(z) for z in zip(risk, l_20)], rosetype="radius",radius=["30%", "55%"]) .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 20대")).set_series_opts(label)) tl.add(pie_0, "20대 자산 하위그룹") pie_1 = (Pie().add("", [list(z) for z in zip(risk, m_20)], rosetype="radius",radius=["30%", "55%"]) .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 20대")).set_series_opts(label)) tl.add(pie_1, "20대 자산 중위그룹") pie_2 = (Pie().add("", [list(z) for z in zip(risk, h_20)], rosetype="radius",radius=["30%", "55%"]) .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 20대")).set_series_opts(label)) tl.add(pie_2, "20대 자산 상위그룹") tl2 = Timeline() pie_0 = (Pie().add("", [list(z) for z in zip(risk, l_30)], rosetype="radius",radius=["30%", "55%"]) .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 30대")).set_series_opts(label)) tl2.add(pie_0, "30대 자산 하위그룹") pie_1 = (Pie().add("", [list(z) for z in zip(risk, m_30)], rosetype="radius",radius=["30%", "55%"]) .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 30대")).set_series_opts(label)) tl2.add(pie_1, "30대 자산 중위그룹")
def paint_confirmed_distributed_chart(country): date = get.get_today() result = get.get_confirmed_distribution(country, date) if result: charts = (Pie().add("", result, radius=[60, 160]).set_global_opts( title_opts=opts.TitleOpts(title="累计确诊分布", pos_left="3%", pos_top="10", title_textstyle_opts=opts.TextStyleOpts( font_size=22, )), legend_opts=opts.LegendOpts(type_="scroll", pos_left='80%', pos_top='20%', orient="vertical"), ).set_series_opts(label_opts=opts.LabelOpts( formatter="{b}: {c} ({d}%)", font_size=15, ))) return charts else: data = get.get_word_epidemic(date)[2] flag = False for index in range(0, len(data)): if data[index][0] == country: data = data[index][1][0] flag = True break if not flag: title_charts = (Pie().add( "", [[country, -1]], radius=[0, 0], center=['100%', '100%']).set_global_opts( title_opts=opts.TitleOpts( title="暂无数据", pos_left="40%%", pos_top="44%", title_textstyle_opts=opts.TextStyleOpts( font_size=30, )), legend_opts=opts.LegendOpts(is_show=False), ).set_series_opts(label_opts=opts.LabelOpts(is_show=False))) return title_charts draw_data = [[country, data]] empty_charts = ( Pie().add( "", draw_data, radius=[60, 160], # center=['50%', '65%'] ).set_global_opts( title_opts=opts.TitleOpts( title="确诊人数", pos_left="3%", pos_top="10", title_textstyle_opts=opts.TextStyleOpts(font_size=22, )), legend_opts=opts.LegendOpts(type_="scroll", pos_left='80%', pos_top='20%', orient="vertical"), ).set_series_opts(label_opts=opts.LabelOpts( formatter="{b}: {c} ({d}%)", font_size=15, ))) return empty_charts
.add_xaxis(Faker.choose()) .add_yaxis("商家C", Faker.values(), stack="stack2") .add_yaxis("商家D", Faker.values(), stack="stack2") .set_global_opts( title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"), legend_opts=opts.LegendOpts(pos_top="48%"), ) ) c = ( Pie() .add( "", [list(z) for z in zip(Faker.choose(), Faker.values())], radius=["40%", "75%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="Pie-Radius"), legend_opts=opts.LegendOpts( orient="vertical", pos_top="15%", pos_left="2%" ), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) ) grid = ( Grid() .add(bar1, grid_opts=opts.GridOpts(pos_bottom="60%")) .add(c, grid_opts=opts.GridOpts(pos_top="60%")) ) grid.render('grid.html')
# # json_personnal_information = personnal_information1(uid) # text = personnal_information2(uid) # birthday = re.findall('<p id="J_birthday" style="display:none;">(.*?)</p></div>', text) # location = re.findall('<p id="J_location" class="J_label"[^>]*>([^<]*)</p>', text) # name = re.findall('<p id="J_name" class="J_label" isCompany="">(.*?)</p></div>', text) # agender = re.findall('<span class="L-selected-select">(.*?)</span></div>', text) # else: # print('登陆失败') """""" # if os.path.exists('weibo.csv'): # os.remove('weibo.csv') # for i in range(1000): # time.sleep(random.random() * 3) # print('第%d页' % (i + 1)) # spider_weibo() """""" dic = read_csv_to_dict(2) # 生成二维数组 gender_count_list = [list(z) for z in zip(dic.keys(), dic.values())] print(gender_count_list) pie = ( Pie() .add('', gender_count_list) .set_colors(['red', 'blue']) .set_global_opts(title_opts=options.TitleOpts(title='性别分析')) .set_series_opts(label_opts=options.LabelOpts(formatter='{b}: {c}')) ) pie.render('gender.html')
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Faker c = (Pie().add( "", [list(z) for z in zip(Faker.choose(), Faker.values())], center=["35%", "50%"], ).set_global_opts( title_opts=opts.TitleOpts(title="Pie-调整位置"), legend_opts=opts.LegendOpts(pos_left="15%"), ).set_series_opts(label_opts=opts.LabelOpts( formatter="{b}: {c}")).render("Pie_position.html"))
c = (Pie().add( "", [list(z) for z in zip(["剧情", "其他"], [25, 75])], center=["20%", "30%"], radius=[60, 80], label_opts=new_label_opts(), ).add( "", [list(z) for z in zip(["奇幻", "其他"], [24, 76])], center=["55%", "30%"], radius=[60, 80], label_opts=new_label_opts(), ).add( "", [list(z) for z in zip(["爱情", "其他"], [14, 86])], center=["20%", "70%"], radius=[60, 80], label_opts=new_label_opts(), ).add( "", [list(z) for z in zip(["惊悚", "其他"], [11, 89])], center=["55%", "70%"], radius=[60, 80], label_opts=new_label_opts(), ).set_global_opts( title_opts=opts.TitleOpts(title="Pie-多饼图基本示例"), legend_opts=opts.LegendOpts(type_="scroll", pos_top="20%", pos_left="80%", orient="vertical"), ).render("Mutiple_pie.html"))
c = (Pie().add( "", [list(z) for z in zip(Faker.choose(), Faker.values())], radius=["40%", "55%"], 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, }, }, ), ).set_global_opts(title_opts=opts.TitleOpts( title="Pie-富文本示例")).render("pie_rich_label.html"))
from pyecharts import options as opts from pyecharts.charts import Pie, Line, Bar, Liquid engine = create_engine( 'mysql://*****:*****@172.16.122.25:3306/test?charset=utf8') # PU 占比 sql = """ select sum(case when pay_price > 0 then 1 else 0 end) as `付费用户`, sum(case when pay_price > 0 then 0 else 1 end) as `非付费用户` from age_of_barbarians """ data = pd.read_sql(con=engine, sql=sql) c1 = (Pie().add( "", [list(z) for z in zip(data.columns, data.values[0])], ).set_series_opts(label_opts=opts.LabelOpts( formatter="{b}: {c} 占比: {d}%")).render("pie_pu.html")) os.system("pie_pu.html") # DNU 柱形图 sql = """ select cast(register_time as date) as day, count(1) as dnu from age_of_barbarians group by cast(register_time as date) order by day; """ data = pd.read_sql(con=engine, sql=sql) c2 = (Bar().add_xaxis(list(data['day'])).add_yaxis("新增用户数", list(
from pyecharts.charts import Pie from pyecharts import options as ops f = open('PF.txt', 'r', encoding='utf8') l = [] for i in f.readlines(): l.append(i.strip('\n')) print(l) data = [] for s in l: data.append(s.replace("%", '').split('\t')) data = [[d[0], float(d[1])] for d in data] print(data) c = (Pie().add("", [z for z in data], radius=[ '30', '200' ]).set_global_opts(title_opts=ops.TitleOpts(title='评分')).set_series_opts( label_opts=ops.LabelOpts(formatter='{b}:{c}')).render('./pf.html'))
# 3、生成饼状图 cut_words = jieba.cut(' '.join(short_comments.Comment)) keywords_count_list = [] for i in reversed(keywords_count_list_TR[:20]): keywords_count_list.append(i[0]) print(keywords_count_list) keywords_count_result = [0 for x in range(20)] for word in cut_words: for j in range(20): if word == keywords_count_list[j]: keywords_count_result[j] = keywords_count_result[j] + 1 print(keywords_count_result) keywords_count_pie = (Pie().add( "", [list(z) for z in zip(keywords_count_list, keywords_count_result) ]).set_global_opts(title_opts=opts.TitleOpts( title="上海堡垒短评热词TOP20")).set_series_opts(label_opts=opts.LabelOpts( formatter="{b}: {c}"))) keywords_count_pie.render('comment-word-count-pie.html') # 4、评星统计 rating = [0 for x in range(5)] for result in short_comments.Rating: if result == '很差': rating[0] += 1 elif result == '较差': rating[1] += 1 elif result == '还行': rating[2] += 1 elif result == '推荐': rating[3] += 1