如何设置Plotly Express choropleth地图颜色图例仅显示整数值
解决方法
方案1:强制连续色阶的图例显示整数
Plotly的颜色条支持自定义刻度格式,你只需要在原有代码的update_layout配置中新增coloraxis相关参数即可,修改后的代码片段如下:
fig.update_layout( margin={"r":0,"t":0,"l":0,"b":0}, # 新增颜色图例配置 coloraxis={ "colorbar": { "tickformat": "d", # 格式符d表示强制显示十进制整数,自动过滤小数位 # 可选:手动指定刻度值,完全匹配你的count取值范围,显示效果更可控 "tickvals": [0, 1, 2, 3, 4] } } )
该方案不需要修改原有数据和色阶逻辑,仅调整显示格式,适配所有整数数值的显示需求。
方案2:改用离散色阶(更适配离散计数场景)
你的count取值本身是0-4的离散整数,也可以直接改用离散色阶映射,从根本上避免连续色阶自动生成小数刻度的问题,修改逻辑如下:
- 先将数据中的
counts列转为字符串类型,作为离散分类 - 绘制时指定离散色阶映射,可和原有Magma色阶的视觉效果保持一致
# 转换为离散分类 df['counts'] = df['counts'].astype(str) fig = px.choropleth(data_frame=df, geojson=italy_regions_geo, locations='regions', featureidkey='properties.NOME_REG', color='counts', # 匹配Magma色阶的离散颜色配置 color_discrete_map={ "0": "#FCFDBF", "1": "#FDB28A", "2": "#E65B69", "3": "#AB257F", "4": "#440A67" }, scope="europe", )
原由说明
默认情况下Plotly的连续色阶会根据数值范围自动拆分刻度,当数值范围较小时(比如0-4),自动计算的刻度步长会小于1,因此出现小数刻度;当数值范围≥5时,自动步长≥1,就不会显示小数。两种方案都可以彻底解决该问题。
内容的提问来源于stack exchange,提问作者massimopinto
相关产品推荐
相关产品推荐

