Plotly go.Bar()如何按分类标签手动指定柱状图柱条颜色
Plotly 按分类名给柱状图指定专属颜色实现方案
在plotly.graph_objects中无需通过数值映射颜色,直接给go.Bar组件传入与x轴分类顺序一一对应的marker_color参数,即可为每个分类的柱条单独设置颜色。
实现代码
先定义分类与目标颜色的映射关系,再按照x轴的分类顺序生成对应颜色列表传入即可,修改后的完整可运行代码如下:
import plotly.graph_objects as go tensions = { 'Supportive': 39, 'Neutral': 27, 'Resistant': 34 } # 配置每个分类对应的专属颜色 color_map = { 'Supportive': 'green', 'Neutral': 'gold', # 若需要纯黄色可替换为'yellow' 'Resistant': 'red' } items = tensions.items() x = [item[0] for item in items] y = [item[1] for item in items] # 按x轴分类顺序匹配对应颜色 bar_colors = [color_map[category] for category in x] fig = go.Figure() fig.add_trace( go.Bar( x=x, y=y, width=0.2, marker_color=bar_colors ) ) fig.update_layout( template='simple_white', paper_bgcolor='#F9F9FA', plot_bgcolor='#F9F9FA', height=200, margin=dict( t=20, b=20, l=60, r=40 ), ) fig.update_yaxes( tickformat=',.0%', ) fig.show()
注意事项
- 传入
marker_color的颜色列表顺序必须和x轴分类顺序完全一致,即可精准匹配对应柱条,不受柱条数值大小影响 - 颜色参数支持多种格式:内置颜色名、十六进制色值、rgb/rgba色值都可以正常识别,可根据视觉需求替换
- Python 3.7及以上版本字典默认保留插入顺序,只要分类和颜色映射关系配置正确,即使后续调整分类顺序,代码也会自动匹配对应颜色,无需手动调整颜色顺序
内容的提问来源于stack exchange,提问作者Waleed Alfaris
相关产品推荐
相关产品推荐

