def bar_datazoom_slider_vertical() -> Bar: c = (Bar().add_xaxis(Faker.days_attrs).add_yaxis( "商家A", Faker.days_values, color=Faker.rand_color()).set_global_opts( title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-垂直)"), datazoom_opts=opts.DataZoomOpts(orient="vertical"), )) return c
def bar_datazoom_inside() -> Bar: c = (Bar().add_xaxis(Faker.days_attrs).add_yaxis( "商家A", Faker.days_values, color=Faker.rand_color()).set_global_opts( title_opts=opts.TitleOpts(title="Bar-DataZoom(inside)"), datazoom_opts=opts.DataZoomOpts(type_="inside"), )) return c
def draw_bar_plays(data,user_id,title="听歌方式"): """ 两种听歌方式 :param plays: :param user_id: :param title: :return: """ file_name = "user_data/" + str(user_id) + "_bar_plays.html" x = ["片段播放", "完整播放"] color = ["#749f83", "#d48265"] xlen = len(x) y = [] for idx, item in enumerate(x): y.append( opts.BarItem( name=item, value=data[idx], itemstyle_opts=opts.ItemStyleOpts(color=color[idx]), ) ) c = ( Bar() .add_xaxis(x) .add_yaxis("用户:"+str(user_id), y,color=Faker.rand_color()) .set_global_opts(title_opts=opts.TitleOpts(title=title),toolbox_opts=opts.ToolboxOpts()) #.render(file_name) ) return c
def draw_bar_recoder(data,user_id,title = "用户行为统计"): """ 用户行为统计 :param data: :param user_id: :param title: :return: """ file_name = "user_data/" + str(user_id) + "_bar_recoder.html" x = ["循环播放","片段播放","查看评论","点赞评论","收藏歌曲"] color = ["#F79709","#749f83", "#d48265","#33CCCC","#82C182"] xlen = len(x) y = [] for idx, item in enumerate(x): y.append( opts.BarItem( name=item, value=data[idx][1], itemstyle_opts=opts.ItemStyleOpts(color=color[idx]), ) ) c = ( Bar() .add_xaxis(x) .add_yaxis("" , y, color=Faker.rand_color()) .set_global_opts(title_opts=opts.TitleOpts(title=title), toolbox_opts=opts.ToolboxOpts() ) # .render(file_name) ) return c
def draw_bar_like(data,user_id,title="偏爱曲风统计"): """ 柱状图 偏爱统计 :param data: :param user_id: :param title: :return: """ file_name = "user_data/" + str(user_id) + "_bar_like.html" x = ["古风", "古典", "电子", "民谣", "流行", "说唱", "摇滚"] color = ["#C43C3C", "#7D573E", "#E6E65D", "#69DA69", "#70D4D4", "#9B7CC7", "#A2A2A2"] xlen = len(x) y = [] for idx, item in enumerate(x): y.append( opts.BarItem( name=item, value=data[idx][1], itemstyle_opts=opts.ItemStyleOpts(color=color[idx]), ) ) c = ( Bar() .add_xaxis(x) .add_yaxis("", y, color=Faker.rand_color()) .set_global_opts(title_opts=opts.TitleOpts(title=title), toolbox_opts=opts.ToolboxOpts() ) #.render(file_name) ) return c
def bar_histogram_color() -> Bar: x = Faker.dogs + Faker.animal xlen = len(x) y = [] for idx, item in enumerate(x): if idx <= xlen / 2: y.append( opts.BarItem( name=item, value=(idx + 1) * 10, itemstyle_opts=opts.ItemStyleOpts(color="#749f83"), )) else: y.append( opts.BarItem( name=item, value=(xlen + 1 - idx) * 10, itemstyle_opts=opts.ItemStyleOpts(color="#d48265"), )) c = (Bar().add_xaxis(x).add_yaxis( "series0", y, category_gap=0, color=Faker.rand_color()).set_global_opts(title_opts=opts.TitleOpts( title="Bar-直方图(颜色区分)"))) return c
def map_base() -> Map: c = ( Map() .add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china") .set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例")) ) return c
def geoHeatMap(self,area=None,data=None,maptype='china',title='热力图示例',subtitle='副标题'): ''' 热力图 param area: 省份的列表 type list 例如 ['吉林', '辽宁', '河北', '河南'] param data: 对应的值 type list 例如 [63,10,2,30] 应用场景 省份或者城市排行榜 # ['黑龙江', '吉林', '辽宁', '河北', '河南', '山东', '山西', '安徽', '江西', '江苏', '浙江', '福建', '台湾', '广东', # '湖南', '湖北', '海南', '云南', '贵州', '四川', '青海', '甘肃', '陕西', '内蒙古', '新疆', '广西', '宁夏', '西藏', # '北京','天津','上海','重庆','香港','澳门'] ''' area = area or Faker.provinces data = data or Faker.values() c = ( Geo() .add_schema(maptype=maptype) .add( "geo", [list(z) for z in zip(area, data)], type_=ChartType.HEATMAP, ) # .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title=title,subtitle=subtitle), ) ) chart_name = f'static/chart{self.index}_heatmap' make_snapshot(snapshot,c.render(f'{chart_name}.html'),f'{chart_name}.png',is_remove_html=True) self.index += 1
def bar_histogram(): x = Faker.dogs + Faker.animal xlen = len(x) y = [] for idx, item in enumerate(x): if idx <= xlen / 2: bar_item = opts.BarItem( name=item, value=(idx + 1) * 10, itemstyle_opts=opts.ItemStyleOpts(color="#749f83") ) else: bar_item = opts.BarItem( name=item, value=(xlen + 1 - idx) * 10, itemstyle_opts=opts.ItemStyleOpts(color="#d48265"), ) y.append(bar_item) obj_bar = Bar() obj_bar.add_xaxis(x) #直方图就是紧挨着的系列柱category_gap=0调节系列柱之间距离, # color=Faker.rand_color()因为上面设置了柱的颜色,这里只对图例legend的颜色起作用 obj_bar.add_yaxis("series0", y, category_gap=0,color=Faker.rand_color()) obj_bar.set_global_opts( title_opts=opts.TitleOpts(title="Bar-直方图(颜色区分)", subtitle="副标题") ) return obj_bar
def map_without_label() -> Map: c = (Map().add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china").set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Map-不显示Label"))) return c
def test_map3d_schema(fake_writer): c = (Map3D().add_schema( itemstyle_opts=opts.ItemStyleOpts(), map3d_label=opts.Map3DLabelOpts(), light_opts=opts.Map3DLightOpts(), view_control_opts=opts.Map3DViewControlOpts(), post_effect_opts=opts.Map3DPostEffectOpts(), realistic_material_opts=opts.Map3DRealisticMaterialOpts(), lambert_material_opts=opts.Map3DLambertMaterialOpts(), color_material_opts=opts.Map3DColorMaterialOpts(), ).add( series_name="商家A", data_pair=[list(z) for z in zip(Faker.provinces, Faker.values())], maptype="china", type_=ChartType.LINES3D, effect=opts.Lines3DEffectOpts(), )) c.render() _, content = fake_writer.call_args[0] assert_in("itemStyle", content) assert_in("label", content) assert_in("light", content) assert_in("viewControl", content) assert_in("postEffect", content) assert_in("realisticMaterial", content) assert_in("lambertMaterial", content) assert_in("colorMaterial", content)
def bar_base_with_animation(): c = ( Bar( init_opts=opts.InitOpts( animation_opts=opts.AnimationOpts( animation_delay=1000, animation_easing="elasticOut" ) ) ) .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( title_opts=opts.TitleOpts(title="Bar-动画配置基本示例", subtitle="我是副标题") ) ) return c
def map_guangdong() -> Map: c = (Map().add( "商家A", [list(z) for z in zip(Faker.guangdong_city, Faker.values())], "广东").set_global_opts( title_opts=opts.TitleOpts(title="Map-广东地图"), visualmap_opts=opts.VisualMapOpts(), )) return c
def map_visualmap() -> Map: c = (Map().add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china").set_global_opts( title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"), visualmap_opts=opts.VisualMapOpts(max_=200), )) return c
def bmap_base() -> BMap: c = (BMap().add_schema( baidu_ak=BAIDU_MAP_AK, center=[120.13066322374, 30.240018034923]).add( "bmap", [list(z) for z in zip(Faker.provinces, Faker.values())], label_opts=opts.LabelOpts(formatter="{b}"), ).set_global_opts(title_opts=opts.TitleOpts(title="BMap-基本示例"))) return c
def test_map_base(fake_writer): c = Map().add( "商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china" ) c.render() _, content = fake_writer.call_args[0] assert_equal(c.theme, "white") assert_equal(c.renderer, "canvas")
def line_markline() -> Line: c = ( Line() .add_xaxis(Faker.choose()) .add_yaxis( "商家A", Faker.values(), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]), ) .add_yaxis( "商家B", Faker.values(), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]), ) .set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkLine")) ) return c
def line_itemstyle() -> Line: c = ( Line() .add_xaxis(xaxis_data=Faker.choose()) .add_yaxis( "商家A", Faker.values(), symbol="triangle", symbol_size=20, linestyle_opts=opts.LineStyleOpts(color="green", width=4, type_="dashed"), itemstyle_opts=opts.ItemStyleOpts( border_width=3, border_color="yellow", color="blue" ), ) .set_global_opts(title_opts=opts.TitleOpts(title="Line-ItemStyle")) ) return c
def map_base() -> Map: c = (Map().add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china", name_map=ENGLISH_PROVINCE_NAMES).set_global_opts( title_opts=opts.TitleOpts(title="Map-基本示例")).render()) return c
def pie_with_custom_label(): pie = Pie(init_opts=opts.InitOpts(theme='light', width='1000px', height='600px')) pie.add("", [list(z) for z in zip(Faker.choose(), Faker.values())]) pie.set_series_opts( label_opts=opts.LabelOpts(position='top', color='red', font_family='Arial', font_size=12, font_style='italic', interval=1, formatter='{b}:{d}%' ) ) return pie
def map_visualmap_piecewise(): obj_map = Map() obj_map.add("中国", [list(z) for z in zip(Faker.provinces, Faker.values())], "china") obj_map.set_global_opts( title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)",subtitle ="副标题"), visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True), ) return obj_map
def bar_markline_type(): obj_bar = Bar() obj_bar.add_xaxis(Faker.choose()) obj_bar.add_yaxis("商家A",Faker.values()) obj_bar.add_yaxis("商家B",Faker.values()) obj_bar.set_series_opts( label_opts=opts.LabelOpts(is_show = False), markline_opts=opts.MarkPointOpts( data = [ opts.MarkLineItem(type_="min", name="最小值"), opts.MarkLineItem(type_="max", name="最大值"), opts.MarkLineItem(type_="average", name="平均值"), ] ) ) obj_bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(指定类型)", subtitle="平均值的线")) return obj_bar
def line_markpoint() -> Line: c = ( Line() .add_xaxis(Faker.choose()) .add_yaxis( "商家A", Faker.values(), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]), ) .add_yaxis( "商家B", Faker.values(), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]), ) .set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkPoint")) ) return c
def pie_rosetype() -> Pie: v = Faker.choose() c = (Pie().add( "", [list(z) for z in zip(v, Faker.values())], radius=["30%", "75%"], center=["25%", "50%"], rosetype="radius", label_opts=opts.LabelOpts(is_show=False), ).add( "", [list(z) for z in zip(v, Faker.values())], radius=["30%", "75%"], center=["75%", "50%"], rosetype="area", ).set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))) return c
def ie_rich_label(): 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-富文本示例"))) return c
def bar_with_guide_line(): bar = Bar(init_opts=opts.InitOpts(theme='light', width='1000px', height='600px')) bar.add_xaxis(Faker.choose()) bar.add_yaxis('A', Faker.values()) bar.add_yaxis('B', Faker.values()) bar.set_series_opts( markline_opts=opts.MarkLineOpts( data=[ opts.MarkLineItem(type_="min", name="最小值"), opts.MarkLineItem(type_="max", name="最大值"), opts.MarkLineItem(type_="average", name="平均值"), ] ) ) return bar
def render_filter_legend(): with st.echo("below"): c = ( Bar( init_opts=opts.InitOpts( animation_opts=opts.AnimationOpts( animation_delay=1000, animation_easing="elasticOut" ) ) ) .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( title_opts=opts.TitleOpts(title="Bar-动画配置基本示例", subtitle="我是副标题") ) ) st_pyecharts(c)
def timeline_bar(timestamp, data1, data2) -> Timeline: formatTimeList = [] for i in timestamp: formatTimeList.append( time.strftime("%H:%M", time.localtime(int(i) // 1000))) tl = Timeline(init_opts=opts.InitOpts(width="900px", height="500px")) for i in range(2015, 2020): bar = (Bar().add_xaxis(formatTimeList).add_yaxis( "商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("某商店{}年营业额".format(i)))) (tl.add(bar, "{}年".format(i)).add_schema(orient="horizontal", play_interval=500, symbol="circle", symbol_size=2, pos_bottom="-5px", height="37px")) return tl
def map_world() -> Map: c = (Map().add("商家A", [list(z) for z in zip(Faker.country, Faker.values())], "world").set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Map-世界地图"), visualmap_opts=opts.VisualMapOpts(max_=200), )) return c
def geo_effectscatter() -> Geo: c = (Geo().add_schema(maptype="china").add( "geo", [list(z) for z in zip(Faker.provinces, Faker.values())], type_=ChartType.EFFECT_SCATTER, ).set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts(title_opts=opts.TitleOpts( title="Geo-EffectScatter"))) return c