from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
X = ["商品A", "商品B", "商品C"]
values = [50,70,90]
# 指定柱子颜色的js代码
color_function = """
function (params) {
if (params.value < 60)
return 'red';
else if (params.value > 50 && params.value < 90)
return 'blue';
else return 'orange';
}
"""
c = (
Bar()
.add_xaxis(X)
.add_yaxis(""
**** values
, category_gap="60%"
, itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function))
)
.set_series_opts(
label_opts=opts.LabelOpts(
position="right",
formatter=JsCode("function (params) {return params.value + '%'}")
)
)
.set_global_opts(title_opts=opts.TitleOpts(title="各个商品销量比较"))
.render("test.html")
)
通过语句print(chart.options['color'])打印出来。
print(bar.options['color'])
"""打印结果:
['#c23531', '#2f4554', '#61a0a8', '#d48265', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3', '#f05b72', '#ef5b9c', '#f47920', '#905a3d', '#fab27b', '#2a5caa', '#444693', '#726930', '#b2d235', '#6d8346', '#ac6767', '#1d953f', '#6950a1', '#918597']
"""
这种方法对于直角坐标系同样适用,可以针对单一数据项进行风格配置,不仅仅只是颜色。
data_pair = []
for k, v, c in zip(x_data, y_data_1, ['red', 'blue', 'black', 'green', 'orange', 'yellow']):
data_pair.append(
opts.BarItem(
name=k,
value=v,
itemstyle_opts=opts.ItemStyleOpts(color=c)
))
bar = Bar()
bar.add_xaxis(
x_data
)
bar.add_yaxis(
'系列1',
data_pair,
itemstyle_opts=opts.ItemStyleOpts(color='red')
)
bar.render_notebook()
默认是渐变配色
bar = Bar()
bar.add_xaxis(
x_data
)
bar.add_yaxis(
'',
y_data_1,
)
bar.add_yaxis(
'',
y_data_2,
)
bar.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
is_show=True,
min_=50,
max_=200,
range_color=['green', 'yellow', 'red'])
)
bar.render_notebook()
颜色分段,譬如我们可以设置当值大于等于100时显示红色,小于100时显示橙色;
bar = Bar()
bar.add_xaxis(
x_data
)
bar.add_yaxis(
'',
y_data_1,
)
bar.add_yaxis(
'',
y_data_2,
)
bar.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
is_show=True,
is_piecewise=True, # 颜色分段
pieces=[
{"min": 100, "color": 'red'},
{"max":100, "color": 'orange'}
]
)
)
bar.render_notebook()