def stat_floors_distribution(): df = load_data() summary = df.groupby('层数').count() min_date = min(df['发证日期']) max_date = max(df['发证日期']) chart = (PictorialBar().add_xaxis(summary.index.tolist()).add_yaxis( "层数", summary['序号'].tolist(), symbol_repeat="fixed", symbol_offset=[0, -5], is_symbol_clip=True, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title="长沙预售房屋层数分布", subtitle="统计日期:{}至{},数据来源:{}".format( min_date, max_date, DATA_SOURCE)), legend_opts=opts.LegendOpts(is_show=False), toolbox_opts=opts.ToolboxOpts(is_show=True), yaxis_opts=opts.AxisOpts(name="层数", is_show=True, name_location='center', name_gap=30)).set_series_opts( label_opts=opts.LabelOpts(is_show=False))) filename = os.path.join('..', 'assets', '01_changsha_zhufangyushou_层数分布.html') chart.render(filename)
def pyechart_PictorialBar_plot(self, filedata, para): from pyecharts.charts import PictorialBar file_name = '象形条形图.html' path_plotly = self.path_dir_plotly_html + os.sep + file_name # 文件路径,前面是文件夹后面是文件名 costumeTheme = self.themedict[para['theme']] # ----------------------------------------------------------------------- PictorialBar = ( PictorialBar(init_opts=opts.InitOpts( theme=costumeTheme, width=para['width'], height=para['height'])) # ThemeType.LIGHT para['theme'] ) chart = PictorialBar df = pd.read_excel(filedata, sheet_name='Sheet1') columns = df.columns.values.tolist() xlabel = columns[0] xdata = df[xlabel].values.tolist() chart.add_xaxis(xaxis_data=xdata) for i in range(1, len(columns)): ylabel = columns[i] ydata = df[ylabel].values.tolist() chart.add_yaxis(series_name=ylabel, y_axis=ydata, symbol=para['Tsymbol'], symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0]) if para['x2y']: chart.reversal_axis() self.Common_code(chart, path_plotly, para) print('成功绘制象形条形图') return path_plotly # 返回该HTML文件路径
def pictorialbar_base() -> PictorialBar: c = ( PictorialBar() .add_xaxis(location) .add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="PictorialBar-各省份人口数量(虚假数据)"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0) ), ), ) ) return c
def pictorialbar_custom_symbol() -> PictorialBar: c = ( PictorialBar() .add_xaxis(location) .add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="fixed", symbol_offset=[0, -5], is_symbol_clip=True, symbol=symbols["boy"], ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="PictorialBar-自定义 Symbol"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0) ), ), ) ) return c
def pictorialbar_base(self, x_data, y_data): c = ( PictorialBar() .add_xaxis(x_data) .add_yaxis( "", y_data, label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="fixed", symbol_offset=[0, -5], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="各学院人数占比"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0) ), ), ) ) return c
def drawPictorialBar(location,values,name): c = ( PictorialBar() .add_xaxis(location) .add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="10000", symbol_offset=[0, -5], is_symbol_clip=True, # symbol='image://https://github.githubassets.com/images/spinners/octocat-spinner-32.gif' symbol='image://http://weizhendong.top/images/1.png' ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title=name), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0) ), ), ) .render("{0}.html".format(name)) )
def test_pictorialbar_base(fake_writer): c = (PictorialBar().add_xaxis(["山西", "四川", "西藏", "北京", "上海", "内蒙古"]).add_yaxis( "", [13, 42, 67, 81, 86, 94, 166], symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, ).reversal_axis()) c.render() _, content = fake_writer.call_args[0] eq_(c.theme, "white") eq_(c.renderer, "canvas")
def pictorialbar_multi_custom_symbols() -> PictorialBar: c = ( PictorialBar() .add_xaxis(["reindeer", "ship", "plane", "train", "car"]) .add_yaxis( "2015", [ {"value": 157, "symbol": symbols["reindeer"]}, {"value": 21, "symbol": symbols["ship"]}, {"value": 66, "symbol": symbols["plane"]}, {"value": 78, "symbol": symbols["train"]}, {"value": 123, "symbol": symbols["car"]}, ], label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="fixed", symbol_offset=[0, 5], is_symbol_clip=True, ) .add_yaxis( "2016", [ {"value": 184, "symbol": symbols["reindeer"]}, {"value": 29, "symbol": symbols["ship"]}, {"value": 73, "symbol": symbols["plane"]}, {"value": 91, "symbol": symbols["train"]}, {"value": 95, "symbol": symbols["car"]}, ], label_opts=opts.LabelOpts(is_show=False), symbol_size=22, symbol_repeat="fixed", symbol_offset=[0, -25], is_symbol_clip=True, ) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="PictorialBar-Vehicles in X City"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0) ), ), ) ) return c
def draw(self, indexs, values, filename): c = (PictorialBar().add_xaxis(indexs).add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title="报道香港新闻热门博主前十名"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0)), ), )) c.render(filename)
def place_top(self): print('正在生成销售地Top10...') group_count = self.collection.aggregate([{ '$group': { '_id': '$店铺地址', 'count': { '$sum': 1 } } }]) addr = [] count = [] sorted_list = sorted([list(item.values()) for item in group_count], key=lambda x: x[-1], reverse=True) for item in sorted_list[:10][::-1]: addr.append(item[0]) count.append(item[1]) c = (PictorialBar().add_xaxis(addr).add_yaxis( '', count, label_opts=opts.LabelOpts(is_show=False), symbol_size=16, symbol_repeat='fixed', symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title='销售地Top10'), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0)), ), ).render("销售地Top10.html")) print('生成完成') return c
def field(self): sql = 'select industryField from jobs' results = self.query(sql) rows = [] for row in results: r = row[0].replace(',', ' ').replace('丨', ' ').replace('、', ' ') rows.extend(r.split(' ')) sum = {} for r in rows: num = sum.get(r, 0) + 1 sum[r] = num tup = sorted(sum.items(), key=lambda kv: (kv[1], kv[0]), reverse=True) sum = {} for k, v in tup[0:20]: sum[k + str(v)] = v location = list(sum.keys()) values = list(sum.values()) c = (PictorialBar().add_xaxis(location).add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title="热门行业"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0)), ), ).render("拉勾行业.html"))
def pic_bar_microchip(values, label): pictorialbar = PictorialBar( init_opts=opts.InitOpts(width='480px', height='700px')) pictorialbar.add_xaxis(label) pictorialbar.add_yaxis("", values[0], symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#F95DBA', gap='-100%', symbol_margin=10, label_opts=opts.LabelOpts(is_show=False)) pictorialbar.add_yaxis("高通骁龙", values[1], symbol_size=18, label_opts=opts.LabelOpts(is_show=False), symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#FFCE2B', gap='-100%', symbol_margin=10) pictorialbar.add_yaxis("联发科天玑/MT", values[2], label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#009688', gap='-100%', symbol_margin=10) pictorialbar.add_yaxis("华为麒麟", values[3], yaxis_index=0, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#1720D1', gap='-100%', symbol_margin=10) pictorialbar.add_yaxis("三星Exynos", values[4], yaxis_index=0, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='white', gap='-100%', symbol_margin=10) pictorialbar.set_global_opts( xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( is_show=True, axistick_opts=opts.AxisTickOpts(is_show=False)), legend_opts=opts.LegendOpts(pos_bottom='9%', pos_right='10%', orient='vertical', item_width=18, item_height=18), title_opts=opts.TitleOpts(title='各品牌5G手机芯片比较', pos_left='center', pos_top='2%')) pictorialbar.reversal_axis() pictorialbar.render('各品牌5G手机芯片比较.html')
def pic_bar_price(values, label): """ 5G手机价位比较 """ # 初始化,设置图表大小 pictorialbar = PictorialBar( init_opts=opts.InitOpts(width='480px', height='700px')) # x轴标签信息 pictorialbar.add_xaxis(label) # 添加象形图 pictorialbar.add_yaxis("", values[0], symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#FCA46A', gap='-100%', symbol_margin=10, label_opts=opts.LabelOpts(is_show=False)) pictorialbar.add_yaxis("5000元及以上", values[1], symbol_size=18, label_opts=opts.LabelOpts(is_show=False), symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#F95DBA', gap='-100%', symbol_margin=10) pictorialbar.add_yaxis("3000-4999元", values[2], label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#4E70F0', gap='-100%', symbol_margin=10) pictorialbar.add_yaxis("1000-2999元", values[3], yaxis_index=0, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='#1720D1', gap='-100%', symbol_margin=10) pictorialbar.add_yaxis("999元及以下", values[4], yaxis_index=0, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat='20', symbol_offset=[0, 0], is_symbol_clip=True, symbol='rect', color='white', gap='-100%', symbol_margin=10) pictorialbar.set_global_opts( # 隐藏x坐标轴 xaxis_opts=opts.AxisOpts(is_show=False), # 显示y坐标轴,隐藏刻度线 yaxis_opts=opts.AxisOpts( is_show=True, axistick_opts=opts.AxisTickOpts(is_show=False)), # 显示图例,设置图例位置 legend_opts=opts.LegendOpts(pos_bottom='9%', pos_right='10%', orient='vertical', item_width=18, item_height=18), # 添加标题,设置标题位置 title_opts=opts.TitleOpts(title='各品牌5G手机价位比较', pos_left='center', pos_top='2%')) pictorialbar.reversal_axis() pictorialbar.render('各品牌5G手机价位比较.html')
wea = weather_dict['cloud'] elif wea[-1:] == '雨': wea = weather_dict['rain'] elif wea[-1:] == '阴': wea = weather_dict['overcast'] return wea # 获取降水和温度信息 weather_data = map(check_weather, zhongqiu['wea'].values.tolist()) weather_data = list(weather_data) tem_data = map(trans_tem, zhongqiu['tem'].values.tolist()) tem_data = list(tem_data) # 降水和温度柱状图 pictorialbar = PictorialBar() pictorialbar.add_xaxis(zhongqiu_city) pictorialbar.add_yaxis( "weather", weather_data, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT ) pictorialbar.add_yaxis( "temperature", tem_data, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed",
def showData(request): data = {} # 数据类型 float SuccessRate = 1.0 c1 = (Liquid(init_opts=opts.InitOpts(width="350px", height="350px")).add( series_name="平均成功率", data=[SuccessRate, SuccessRate], tooltip_opts=liquid_format(SuccessRate), )) # 数据类型 hours.minute timeCost = 5.45 c2 = (Gauge(init_opts=opts.InitOpts(width="300px", height="300px")).add( series_name="平均成功耗时", data_pair=[("耗时", timeCost)], min_=0, max_=24, split_number=12, title_label_opts=opts.LabelOpts(font_size=20, color="#C23531", font_family="Microsoft YaHei"), detail_label_opts=opts.GaugeDetailOpts(offset_center=[0, "30%"], formatter="{value}h"), ).set_global_opts( legend_opts=opts.LegendOpts(is_show=False), tooltip_opts=opts.TooltipOpts(is_show=True, formatter=gauge_format(timeCost)), )) # 数据类型:考点+排队人数 location = ["山西", "四川", "山东"] values = [13, 42, 2] c3 = (PictorialBar(init_opts=opts.InitOpts( height="500px")).add_xaxis(location).add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=40, symbol_repeat="fixed", symbol_offset=[0, -5], is_symbol_clip=True, symbol="image://../../static/img/wait_people.svg", category_gap="10px", gap="10px", ).reversal_axis().set_global_opts( xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(opacity=0)), ), )) points = ["四川大学", "成都理工大学", "湖南大学"] counts = [4, 5, 1] # 时.分 cost = [4.20, 0.32, 7.40] c4 = (Bar().add_xaxis(xaxis_data=points).add_yaxis( series_name="总人数", y_axis=counts, yaxis_index=0, label_opts=opts.LabelOpts(is_show=False), ).add_yaxis( series_name="时耗", y_axis=cost, yaxis_index=1, label_opts=opts.LabelOpts(is_show=False), ).extend_axis(yaxis=opts.AxisOpts( name="时耗", type_="value", min_=0, max_=24, interval=4, axislabel_opts=opts.LabelOpts(formatter="{value}h"), )).set_global_opts( tooltip_opts=opts.TooltipOpts( is_show=True, trigger="axis", formatter="{b}<br>{a0}: {c0}<br>{a1}: {c1}h"), xaxis_opts=opts.AxisOpts( type_="category", axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"), ), )) data['averageRate'] = c1.render_embed() data['averageCost'] = c2.render_embed() data['pointCurrent'] = c3.render_embed() data['pointDetail'] = c4.render_embed() return render(request, 'showEcharts.html', { 'active_menu': 'charts', 'data': data })
print('生成结果文件:' + out_filename) ##象形柱状图 pictorialbar = (PictorialBar().add_xaxis(key_words).add_yaxis( "", words_freq, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title="时间简史词频象形柱状图", subtitle="仅统计前40个关键词"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts( opacity=0)), ), toolbox_opts=opts.ToolboxOpts(), visualmap_opts=opts.VisualMapOpts(min_=30, max_=700, orient="vertical", dimension=0), datazoom_opts=opts.DataZoomOpts(range_start=20, range_end=50, orient="vertical", pos_left="right"))) out_filename = './output/pictorialbar_keywords.html' pictorialbar.render(out_filename) print('生成结果文件:' + out_filename)
# 按人口数排序,从高到低 test = sorted(test, key=(lambda x: x[1]), reverse=True) print(test) area_test = [i[0] for i in test] popu_test = [i[1] for i in test] # area = area_test[4:] # popu = popu_test[4:] # 总人口图 xValues = area_test[4:] yValues_total = popu_test[4:] a = (PictorialBar().add_xaxis(xValues[::-1]).add_yaxis( "", yValues_total[::-1], label_opts=opts.LabelOpts(is_show=False), symbol_size=10, symbol_repeat="fixed", symbol_offset=[2, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title="中国各地区人口数", subtitle="第六次人口普查"), xaxis_opts=opts.AxisOpts(is_show=True, name="人口数"), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts( opacity=0.5)), ), )) a.render("各省份人口数.html")
from pyecharts.charts import PictorialBar from pyecharts.globals import SymbolType location = t4["analyze_t4.saledesc"][10:0:-1].values.tolist() values = t4["analyze_t4.sales"][10:0:-1].values.tolist() c = (PictorialBar(init_opts=opts.InitOpts( width="1600px", height="400px")).add_xaxis(location).add_yaxis( "", values, label_opts=opts.LabelOpts(is_show=False), symbol_size=18, symbol_repeat="fixed", symbol_offset=[0, 0], is_symbol_clip=True, symbol=SymbolType.ROUND_RECT, ).reversal_axis().set_global_opts( title_opts=opts.TitleOpts(title="客户公司订单金额排行"), xaxis_opts=opts.AxisOpts(is_show=False), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=False), axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts( opacity=0)), ), ).render("analyzed_pic5.html")) #c.render_notebook() # ## 六、购买次数最高的用户词云 # In[13]: