import pandas as pd from pyecharts.charts import Bar from pyecharts.commons.utils import JsCode data = pd.DataFrame({ "區域": ["A區", "B區", "C區"], "總銷量": [23, 32, 14], "上衣銷量": [3, 5, 10], "褲子銷量": [15, 5, 1], "鞋襪銷量": [5, 22, 3] }) color_js = """new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 1, color: '#9400D3'}, {offset: 0, color: '#B8860B'}], false)""" stack_bar = ( Bar(init_opts=opts.InitOpts(width="900px", height="500px",theme=ThemeType.INFOGRAPHIC)) .add_xaxis(data["區域"].tolist()) .add_yaxis("上衣銷量", data["上衣銷量"].tolist(), stack="stack1", color="Turquoise") .add_yaxis("褲子銷量", data["褲子銷量"].tolist(), stack="stack2", color="LightSeaGreen") .add_yaxis("鞋襪銷量", data["鞋襪銷量"].tolist(), stack="stack3", color="DarkCyan") .set_series_opts( label_opts=opts.LabelOpts(position="inside", color="white", font_size=15), itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js)), # markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="min",name="最小值"), # opts.MarkLineItem(type_="max",name="最大值"), # opts.MarkLineItem(type_="average", name="平均值")]), # markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min",name="最小值"), # opts.MarkPointItem(type_="max", name="最da值")]) ) ) stack_bar.render("render_notebook.html")