def theme_wonderland() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-wonderland"))) return c
def theme_infographic() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-infographic"))) return c
def theme_walden() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-walden"))) return c
def theme_westeros() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.WESTEROS)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-westeros"))) return c
def line_areastyle(): obj_l = Line() obj_l.add_xaxis(Faker.choose()) obj_l.add_yaxis("商家A", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5)) obj_l.add_yaxis("商家B", Faker.values(), areastyle_opts=opts.AreaStyleOpts(opacity=0.5)) obj_l.set_global_opts(title_opts=opts.TitleOpts(title="Line-面积图", subtitle="副标题")) return obj_l
def theme_vintage() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-vintage"))) return c
def genMultiPie(self, left_x_list=None,left_y_list=None, right_x_list=None, right_y_list=None, title='多玫瑰示例'): ''' 多个玫瑰图 param left_x_list 标注 type list param right_x_list 标注 type list datas ''' left_x_list = left_x_list or Faker.choose() left_y_list = left_y_list or Faker.values() right_x_list = right_x_list or Faker.choose() right_y_list = right_y_list or Faker.values() c = ( Pie() .add( "", [list(z) for z in zip(left_x_list, left_y_list)], radius=["30%", "75%"], center=["25%", "50%"], rosetype="radius", label_opts=opts.LabelOpts(is_show=False), ) .add( "", [list(z) for z in zip(right_x_list, right_y_list)], radius=["30%", "75%"], center=["75%", "50%"], rosetype="area", ) .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例")) ) chart_name = f'static/chart{self.index}_multipie' make_snapshot(snapshot,c.render(f'{chart_name}.html'),f'{chart_name}.png',is_remove_html=True) self.index += 1
def theme_roma() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.ROMA)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-roma"))) return c
def bar(request,**kwargs): popu = ( Bar() .add_xaxis([p[0] for p in POPULATION[1:]]) .add_yaxis('国家',['%.2f' % (p[1]/100000) for p in POPULATION[1:]]) .set_global_opts( title_opts=opts.TitleOpts(title="世界人口(十万)"), yaxis_opts=opts.AxisOpts(offset=-10), datazoom_opts=opts.DataZoomOpts(is_show=True,range_start=0,range_end=1) ) ) bar = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"), ) ) if kwargs: return render(request,'echarts_example/bar_detail.html',{ 'myEchart':locals()[kwargs['detail']].dump_options(), }) return render(request,'echarts_example/bar.html',{ 'myEchart':bar.dump_options(), 'population': popu.dump_options, })
def render_js_py(): with st.echo("below"): st.markdown("""Overwrite chart colors with JS. Under 50 : red. Between 50 - 100 : blue. Over 100 : green""") color_function = """ function (params) { if (params.value > 0 && params.value < 50) { return 'red'; } else if (params.value > 50 && params.value < 100) { return 'blue'; } return 'green'; } """ c = (Bar().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)), ).add_yaxis( "商家B", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)), ).add_yaxis( "商家C", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)), ).set_global_opts(title_opts=opts.TitleOpts(title="Bar-自定义柱状颜色"))) st_pyecharts(c)
def overlap_bar_line(): bar = ( Bar() .add_xaxis(Faker.months) .add_yaxis("蒸发量", Faker.values()) .add_yaxis("降水量", Faker.values()) .extend_axis( yaxis=opts.AxisOpts( axislabel_opts=opts.LabelOpts(formatter="{value} °C"), interval=5 ) ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), title_opts=opts.TitleOpts(title="Overlap-bar+line(双 Y 轴)"), yaxis_opts=opts.AxisOpts( axislabel_opts=opts.LabelOpts(formatter="{value} m1") ), ) ) line = ( Line() .add_xaxis(Faker.months) .add_yaxis("平均温度", Faker.values(), yaxis_index=1) ) bar.overlap(line) return bar
def tab_fun(): line = Line().add_xaxis(Faker.choose()).add_yaxis( series_name="xx1", y_axis=Faker.values(1, 100), itemstyle_opts=opts.ItemStyleOpts(color=Faker.rand_color())).add_yaxis( series_name="xx2", y_axis=Faker.values(1, 100), itemstyle_opts=opts.ItemStyleOpts( color=Faker.rand_color())).set_global_opts( title_opts=opts.TitleOpts(title="主标题", subtitle="副标题", pos_left="10%"), legend_opts=opts.LegendOpts(pos_left="40%"), ) bar = Bar().add_xaxis(Faker.choose()).add_yaxis( series_name="柱1", y_axis=Faker.values(1, 100), itemstyle_opts=opts.ItemStyleOpts(color=Faker.rand_color())).add_yaxis( series_name="柱2", y_axis=Faker.values(1, 100), itemstyle_opts=opts.ItemStyleOpts( color=Faker.rand_color())).set_global_opts( title_opts=opts.TitleOpts(title="主标题", subtitle="副标题", pos_left="10%"), legend_opts=opts.LegendOpts(pos_left="40%"), ) Tab().add(chart=line, tab_name="选项卡一").add( chart=bar, tab_name="选项卡二").render(path="D:/temp/pyecharts_tab.html")
def line_base(): c = (Line().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), title_opts=opts.TitleOpts(title="Line-基本示例"))) return c
def bar_base_with_custom_background_image(): obj_bar = Bar( init_opts=opts.InitOpts( bg_color={ "type":"pattern", "image":JsCode("img"), "repeat":"no-repeat" } ) ) obj_bar.add_xaxis(Faker.choose()) obj_bar.add_yaxis("A", Faker.values()) obj_bar.add_yaxis("B", Faker.values()) obj_bar.set_global_opts( title_opts = opts.TitleOpts( title = "Bar-背景图基本示例", subtitle = "副标题", # 设置标题为白色 title_textstyle_opts=opts.TextStyleOpts(color="white") ) ) obj_bar.add_js_funcs( "var img = new Image(); img.src = 'https://s2.ax1x.com/2019/07/08/ZsS0fK.jpg';" ) return obj_bar
def pyplot_bar(): # 指定字体,可解决中文乱码问题 # plt.rcParams['font.sans-serif'] = ['SimHei']; plt.rcParams["font.family"] = "STSong" x_labels = Faker.choose() x = np.arange(len(x_labels)) # x轴刻度标签位置 width = 0.25 # 柱子的宽度 # 计算每个柱子在x轴上的位置,保证 x 轴刻度标签居中 # 三组数据 x - width,x, x + width # 四组数据 x - 1.5*width,x - 0.5*width, x + 0.5*width, x + 1.5*width plt.bar(x - width / 2, Faker.values(1, 100), color='r', label="label_1", width=width) plt.bar(x + width / 2, Faker.values(1, 100), color='g', label="label_2", width=width) # x 轴数据为数字,须和 labels 标签绑定 plt.xticks(x, labels=x_labels) # 指定标题以及 x、y 轴标签 plt.title("我是标题") plt.xlabel("X Label") plt.ylabel("Y Label") # 指定图例显示位置,label_1、label_2 # ['upper left' , 'upper center', 'upper right', 'center left', 'center', 'center right', 'lower left', 'lower center', 'lower right'] plt.legend(loc='upper left') plt.show()
def theme_default() -> Bar: c = (Bar().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).add_yaxis("商家B", Faker.values()).add_yaxis( "商家C", Faker.values()).add_yaxis("商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-default"))) return c
def timeline_sankey() -> Timeline: tl = Timeline() names = ("商家A", "商家B", "商家C") nodes = [{"name": name} for name in names] for i in range(2015, 2020): links = [ {"source": names[0], "target": names[1], "value": Faker.values()[0]}, {"source": names[1], "target": names[2], "value": Faker.values()[0]}, ] sankey = ( Sankey() .add( "sankey", nodes, links, linestyle_opt=opts.LineStyleOpts( opacity=0.2, curve=0.5, color="source" ), label_opts=opts.LabelOpts(position="right"), ) .set_global_opts( title_opts=opts.TitleOpts(title="{}年商店(A, B, C)营业额差".format(i)) ) ) tl.add(sankey, "{}年".format(i)) return tl
def line_markline(): obj_l = Line() obj_l.add_xaxis(Faker.choose()) obj_l.add_yaxis("商家A", Faker.values(), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]), # 该参数设置在这里只对商家A起作用 label_opts=opts.LabelOpts(is_show=False) ) obj_l.add_yaxis("商家B", Faker.values(), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]), ) obj_l.set_series_opts( # 该参数设置在这里对商家A,商家B都起作用 # 设置该参数,则x对应的y值会显示出来,该参数默认为True label_opts=opts.LabelOpts(is_show=False), ) obj_l.set_global_opts( title_opts=opts.TitleOpts(title="Line-MarkLine", subtitle="平均值的线"), xaxis_opts=opts.AxisOpts( name="x轴", # 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样,可设置x轴刻度顶格 boundary_gap=True, # 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。 axistick_opts=opts.AxisTickOpts(is_align_with_label=True) ), ) return obj_l
def theme_macarons() -> Bar: c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)).add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).add_yaxis("商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-macarons"))) return c
def bar_base(): 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_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) return obj_bar
def bar_reversal_axis() -> Bar(): c = (Bar().add_xaxis( Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).reversal_axis().set_series_opts( label_opts=opts.LabelOpts(position="right")).set_global_opts( title_opts=opts.TitleOpts(title="Bar-翻转 XY轴"))) return c
def bar_stack0() -> Bar: c = (Bar().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values(), stack="stack1").add_yaxis( "商家B", Faker.values(), stack="stack1").set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))) return c
def grid_vertical(): bar = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar")) ) line = ( Line() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"), legend_opts=opts.LegendOpts(pos_top="48%"), ) ) grid = ( Grid() .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")) .add(line, grid_opts=opts.GridOpts(pos_top="60%")) ) return grid
def bar_base() -> Bar: c = ( Bar({ "theme": ThemeType.MACARONS }).add_xaxis([ "老许开锁", "培良锁行", "昌昌刻印", "赵建华", "高跟鞋", "袜子" ]).add_yaxis("满意", [randrange(0, 100) for _ in range(6)]).add_yaxis( "表扬", [randrange(0, 100) for _ in range(6)]).add_yaxis( "批评", [randrange(0, 100) for _ in range(6)]).set_global_opts( title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"), # 显示工具栏toolbox # toolbox_opts=opts.ToolboxOpts(), # 数据缩放栏 datazoom_opts=opts.DataZoomOpts())) c2 = ( Bar() # Faker.choose() 测试数据 Faker是pyecharts内置的一个类 .add_xaxis(Faker.choose()).add_yaxis( "满意", Faker.values(), stack="stack1").add_yaxis( "表扬", Faker.values(), stack="stack1").add_yaxis( "批评", Faker.values(), stack="stack1").set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"), datazoom_opts=opts.DataZoomOpts())) return c2
def grid_horizontal(): scatter = ( Scatter() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), title_opts=opts.TitleOpts(title="Grid-Scatter"), legend_opts=opts.LegendOpts(pos_left="20%"), ) ) line = ( Line() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), title_opts=opts.TitleOpts(title="Grid-Line", pos_right="5%"), legend_opts=opts.LegendOpts(pos_right="20%"), ) ) grid = ( Grid() .add(scatter, grid_opts=opts.GridOpts(pos_left="55%")) .add(line, grid_opts=opts.GridOpts(pos_right="55%"))) return grid
def bar_custom_bar_color() -> Bar: color_function = """ function (params) { if (params.value > 0 && params.value < 50) { return 'red'; } else if (params.value > 50 && params.value < 100) { return 'blue'; } return 'green'; } """ c = (Bar().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)), ).add_yaxis( "商家B", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)), ).add_yaxis( "商家C", Faker.values(), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)), ).set_global_opts(title_opts=opts.TitleOpts(title="Bar-自定义柱状颜色"))) return c
def theme_purple_passion() -> Bar: c = (Bar(init_opts=opts.InitOpts( theme=ThemeType.PURPLE_PASSION)).add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).add_yaxis("商家B", Faker.values()).add_yaxis( "商家C", Faker.values()).add_yaxis( "商家D", Faker.values()).set_global_opts( title_opts=opts.TitleOpts("Theme-purple-passion"))) return c
def bar_base_with_animation() -> Bar: 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 bar_with_brush() -> Bar: c = (Bar().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts( title_opts=opts.TitleOpts(title="Bar-Brush示例", subtitle="我是副标题"), brush_opts=opts.BrushOpts(), )) return c
def line_with_smooth_connect(): line = Line( init_opts=opts.InitOpts(theme='light', width='1000px', height='600px')) line.add_xaxis(Faker.choose()) line.add_yaxis('平滑曲线', Faker.values(), is_smooth=True) line.add_yaxis('直线', Faker.values(), is_smooth=False) return line