def get_bar(): poets = Poet.query.order_by(Poet.num.desc()).limit(10) attr_poet = [] num_poet = [] for poet in poets: attr_poet.append(poet.name) num_poet.append(poet.num) bar = Bar("作诗数前十名诗人") bar.add("", attr_poet, num_poet, is_label_show=True, center=[50,50]) return bar
def plot(t_list, sensor1_list, sensor2_list, title_str, htmlName): from pyecharts.charts.basic_charts.bar import Bar #导入相应包 from pyecharts import options as opts from pyecharts.options import DataZoomOpts bar = Bar() #生成对象,title为柱状图标题 #is_stack=True表示将数据堆叠,is_label_show=True表示显示对应数值 bar.add_xaxis(t_list) bar.add_yaxis("sensor1触发次数", sensor1_list) bar.add_yaxis("sensor2触发次数", sensor2_list) bar.set_global_opts( title_opts=opts.TitleOpts(title=title_str), datazoom_opts=[DataZoomOpts(is_show=True, type_="slider")]) bar.render(htmlName)
def plot_pages(): """ Pages可以将多张图表按顺序展示在一张网页中,适合制作图形化报表。 Pages中的图表可以是Grid,Overlap或Timeline. 使用Pages来绘制组合图 子图是自己本身的宽高 :return:html """ # 1.首先绘制一个柱状图 # 初始化数据来源 x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"] y1 = [5, 20, 36, 10, 75] y2 = [10, 25, 8, 60, 20] # 初始化柱状图 bar = Bar(init_opts=opts.InitOpts(width='600px', height='400px')) # x轴数据 bar.add_xaxis(xaxis_data=x) # y轴数据 bar.add_yaxis(series_name="商家A", y_axis=y1) bar.add_yaxis(series_name="商家B", y_axis=y2) # 设置配置 bar.set_global_opts(title_opts=opts.TitleOpts(title='柱状图:商家货物销量')) # 2.绘制一个折线图 # 初始化数据来源 x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"] y1 = [5, 20, 36, 10, 75] y2 = [10, 25, 8, 60, 20] # 初始化折线图 line = Line(init_opts=opts.InitOpts(width="500px", height="200px")) # x轴数据 line.add_xaxis(xaxis_data=x) # y轴数据 line.add_yaxis(series_name='商家A', y_axis=y1) line.add_yaxis(series_name='商家B', y_axis=y2) # 设置配置 line.set_global_opts(title_opts=opts.TitleOpts(title='折线图:商家货物销量')) # 初始化pages pages = Page(page_title='多图', layout=opts.PageLayoutOpts()) # 添加图形系列 pages.add(bar, line, line) # 输出pages pages.render('组合图pages示范图.html')
def plot_grid(): """ 使用Grid来绘制组合图 子图的宽高是自适应画板(Grid)的宽高 子图的位置用grid_opts中pos选项来调节: 当两个子图为pos_left与pos_right时,此时为左右排列 当两个子图为pos_top与pos_bottom时,此时为上下排列 :return: html """ # 1.首先绘制一个柱状图 # 初始化数据来源 x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"] y1 = [5, 20, 36, 10, 75] y2 = [10, 25, 8, 60, 20] # 初始化柱状图 bar = Bar(init_opts=opts.InitOpts(width='200px', height='100px')) # x轴数据 bar.add_xaxis(xaxis_data=x) # y轴数据 bar.add_yaxis(series_name="商家A", y_axis=y1) bar.add_yaxis(series_name="商家B", y_axis=y2) # 设置配置 bar.set_global_opts(title_opts=opts.TitleOpts(title='柱状图:商家货物销量')) # 2.绘制一个折线图 # 初始化数据来源 x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"] y1 = [5, 20, 36, 10, 75] y2 = [10, 25, 8, 60, 20] # 初始化折线图 line = Line(init_opts=opts.InitOpts(width="100px", height="100px")) # x轴数据 line.add_xaxis(xaxis_data=x) # y轴数据 line.add_yaxis(series_name='商家A', y_axis=y1) line.add_yaxis(series_name='商家B', y_axis=y2) # 设置配置 line.set_global_opts( title_opts=opts.TitleOpts(title='折线图:商家货物销量', pos_top='50%')) # 初始化组合图:Grid grid = Grid(init_opts=opts.InitOpts(width='600px', height='400px')) # 利用grid_bottom,grid_top,grid_left,grid_right四个参数控制子图的相对位置 grid.add(bar, grid_opts=opts.GridOpts(pos_right='60%')) grid.add(line, grid_opts=opts.GridOpts(pos_left='60%')) grid.render('组合图Grid示范图.html')
def plot_timeline(): """ Timeline可以将多个图表制作成动画。 :return: """ # 初始化多组数据 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] year = 5 start_year = 2018 num = len(attr) # 初始化时间线图形 timeline = Timeline(init_opts=opts.InitOpts(width='600px', height='400px')) # 时间轴添加配置项 timeline.add_schema(is_auto_play=False, is_loop_play=True, is_timeline_show=True, control_position='right', itemstyle_opts=opts.ItemStyleOpts(color='blue', opacity=0.8), play_interval=1000) for i in range(5): year_sales1 = [randint(10, 100) for _ in range(num)] year_sales2 = [randint(200, 500) for _ in range(num)] # 初始化 bar_temp = Bar(init_opts=opts.InitOpts()) # 加载数据 bar_temp.add_xaxis(xaxis_data=attr) bar_temp.add_yaxis(series_name=f'{start_year+i}年净销售额', y_axis=year_sales1) bar_temp.add_yaxis(series_name=f'{start_year+i}年实际销售额', y_axis=year_sales2) # bar配置项 bar_temp.set_global_opts(title_opts=opts.TitleOpts( title=f'{start_year + i} 销售额情况')) # 时间轮播图添加图形 timeline.add(bar_temp, f'{start_year + i}年营业额') # 输出时间线轮播图 timeline.render('组合图时间线轮播图.html')
def plot_bar(): """ 绘制柱状图: Bar :return: """ # 初始化数据来源 x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"] y1 = [5, 20, 36, 10, 75] y2 = [10, 25, 8, 60, 20] # 初始化柱状图 bar = Bar(init_opts=opts.InitOpts(width='1000px', height='600px')) # x轴数据 bar.add_xaxis(xaxis_data=x) # y轴数据 bar.add_yaxis(series_name="商家A", y_axis=y1) bar.add_yaxis(series_name="商家B", y_axis=y2) # 导出绘图html文件,可直接用浏览器打开 bar.render('柱状图示范.html')
df = df[df.price == '暂无'] # # 去除重复行 # df = df.drop_duplicates() print("have value row number is {0}".format(len(df.index))) #################################################### # 最贵的小区排名 #################################################### df.sort_values("price", ascending=False, inplace=True) num = 5 print(df.head(num)) # city = df["city_ch"][0] city = 'Shanghai' xqs = df["xiaoqu"][0:num] prices = df["price"][0:num] bar = Bar("{0}小区均价".format(city)) bar.add("小区均价前{0}名".format(num), xqs, prices, is_stack=True, is_label_show=True, xaxis_interval=0, xaxis_rotate=45) bar.render(path="xiaoqu.html") #################################################### # 区县均价排名 #################################################### district_df = df.groupby('district').mean() district_df = district_df.round(0) district_df.sort_values("price", ascending=False, inplace=True)
}, { '>=85分,<90分': [85, 90] }, { '>=90分,<95分': [90, 95] }, { '>=95分,<100分': [95, 100] }] score_range = { k: sum(i[1] for i in score_counter if not isinstance(i[0], str) and i[0] < j[1] and i[0] >= j[0]) for kv in step_range for k, j in kv.items() } page = Page() bar_company = (Bar(init_opts=opts.InitOpts( theme=ThemeType.LIGHT)).add_xaxis(list(cc.keys())).add_yaxis( "人数", list(cc.values())).set_global_opts(title_opts=opts.TitleOpts( title="紧缺人才名单公司分布柱状图", subtitle="company", ))) page.add(bar_company) pie_company = (Pie().add("", comp_counter).set_colors( ["blue", "green", "yellow", "red", "pink", "orange", "purple"]).set_global_opts( title_opts=opts.TitleOpts(title="紧缺人才名单公司分布饼图", ), legend_opts=opts.LegendOpts(pos_top="bottom")).set_series_opts( label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"))) page.add(pie_company) bar_area = (Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)).add_xaxis( list(dd.keys())).add_yaxis("人数", list( dd.values())).set_global_opts(title_opts=opts.TitleOpts( title="紧缺人才名单区域分布柱状图",