Plotly绘制Treemap如何按百分比区间设置指定自定义颜色
Plotly Treemap 按数值区间指定固定配色实现方案
核心实现逻辑:放弃默认的连续色阶映射规则,先对percentage列做离散分档打标签,再通过离散颜色映射参数把每个档位和指定色值一一绑定,最终图表只会出现要求的三种颜色,不会生成过渡杂色。
具体实现步骤
- 基于给定的配色规则,给原始DataFrame新增分档列,标记每个区域对应的颜色档位
- 绘图时将
color参数传入新增的分档列,而非原始的连续百分比数值 - 通过
color_discrete_map参数显式指定每个档位对应的十六进制色值,覆盖默认离散色板
完整可运行代码
import pandas as pd import numpy as np import plotly.express as px # 原始测试数据集 data_frame = pd.DataFrame({'region':['AA','AB','AC','AD','AE'], 'number':[2,12,6,11,30], 'percentage':[94.03,91.23,95.66,97.99,99.22]}) # 按规则给数据打颜色分档标签,逻辑完全匹配给定阈值,无边界歧义 data_frame['color_tag'] = np.where( data_frame['percentage'] > 98, 'green', np.where( data_frame['percentage'] >= 95, 'amber', 'red' ) ) # 绘图,指定离散颜色映射 fig = px.treemap( data_frame, path=[data_frame['region']], values=data_frame['number'], color=data_frame['color_tag'], color_discrete_map={ 'red': '#ff0000', 'amber': '#ffbf00', 'green': '#00ff00' } ) fig.show()
效果验证
运行代码后各区块颜色完全匹配规则:
- AE区域百分比99.22>98,填充绿色#00ff00
- AC(95.66)、AD(97.99)处于95~98区间,填充琥珀色#ffbf00
- AA(94.03)、AB(91.23)<95,填充红色#ff0000
全程无额外过渡色生成。
注意:如果后续需要调整区间阈值,只需要修改分档判断里的数值和对应标签映射即可,不需要调整绘图核心逻辑。
内容的提问来源于stack exchange,提问作者Whiteflames
相关产品推荐
相关产品推荐

