Plotly中如何基于数值更改Scatter Mapbox聚类颜色?
解决方案:让Plotly Scatter Mapbox聚类颜色随簇内字段动态调整
要实现聚类颜色随簇内scaled字段的数值动态调整,你可以利用Plotly Mapbox聚类的聚合表达式功能,直接基于簇内数据的统计值(如均值、中位数)计算颜色,同时复用原始散点的颜色轴保证色系一致。
修改后的代码
import plotly.express as px fig = px.scatter_mapbox( df_clean, lat="lat", lon="long", color="scaled", size="number of reviews", color_continuous_scale="aggrnyl_r" ) # 配置聚类使用簇内scaled字段的均值着色,复用主颜色轴 fig.update_traces( cluster=dict( enabled=True, color='mean(scaled)', # 用簇内scaled的均值计算颜色,可替换为median/scaled等 opacity=0.7, coloraxis='coloraxis' # 绑定到图表的颜色轴,保证颜色刻度一致 ) ) # 可选:手动锁定颜色轴范围,和原始数据匹配,避免聚类颜色偏移 scaled_min = df_clean['scaled'].min() scaled_max = df_clean['scaled'].max() fig.update_layout(coloraxis=dict(range=[scaled_min, scaled_max]))
关键说明
- 聚合表达式支持
mean(field)、median(field)、sum(field)等统计函数,你可以根据需求选择最适合的聚合方式(比如用中位数避免极端值干扰)。 coloraxis='coloraxis'是核心参数,它让聚类的颜色使用和单个散点完全相同的颜色刻度,确保聚类颜色和散点颜色在同一个色系体系内,视觉上保持统一。- 如果不指定
coloraxis,聚类可能会使用独立的颜色范围,导致颜色和原始散点不匹配。
内容的提问来源于stack exchange,提问作者Philip N
相关产品推荐
相关产品推荐

