You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Plotly地图中用颜色区分正负值并以大小表示销量差异

解决Plotly地图正负销量差异的颜色与大小设置问题

我懂你的需求啦——要让地图上的圆点用颜色区分正负销量差异,同时圆点大小只看差异的绝对值,不用管正负,这样负值的点就不会因为数值为负而显得过小了。咱们一步步来调整你的代码:

核心修改思路

  • 圆点大小优化:把size参数替换为差异值的绝对值,这样正负值的大小都对应实际差异的量级,彻底解决负值点偏小的问题;
  • 正负颜色区分:自定义一个双色刻度(colorscale),让负值对应一种色系(比如蓝色),正值对应另一种色系(比如红色),以0为分界点实现清晰区分;
  • 颜色刻度对称:将cmin和cmax设置为正负差异的最大绝对值,让颜色映射更对称,视觉上更平衡直观。

修改后的完整代码

import plotly.plotly as py
from plotly.graph_objs import *
mapbox_access_token = '**Mapbox API**'

# 计算差异的绝对值,用于设置圆点大小
size_values = abs(part1_loc['diff2018'])
# 获取最大的差异绝对值,让颜色刻度对称
max_abs_diff = max(size_values)

data = Data([
    Scattermapbox(
        lat=part1_loc['Latitude'],
        lon=part1_loc['Longitude'],
        text=part1_loc['diff2018'],
        mode='markers',
        marker=Marker(
            showscale=True,
            cmax=max_abs_diff,  # 对称的正向最大值
            cmin=-max_abs_diff, # 对称的负向最小值
            size=size_values,   # 用绝对值控制圆点大小
            color=part1_loc['diff2018'], # 基于原始正负值映射颜色
            # 自定义双色刻度:负值蓝色,0处白色,正值红色
            colorscale=[[0, 'rgb(0, 0, 255)'], [0.5, 'rgb(255,255,255)'], [1, 'rgb(255, 0, 0)']],
            opacity=0.6,
            symbol='circle',
            # 给颜色条添加标题和自定义刻度,提升可读性
            colorbar=dict(
                title="销量差异",
                tickvals=[-max_abs_diff, 0, max_abs_diff],
                ticktext=["负向最大", "无差异", "正向最大"]
            )
        ),
    )
])
layout = Layout(
    autosize=True,
    hovermode='closest',
    width=1450,
    margin=go.Margin(
        l=10,
        r=100,
        b=10,
        t=10
    ),
    height=650,
    mapbox=dict(
        accesstoken=mapbox_access_token,
        bearing=0,
        pitch=0,
        zoom=8.9,
        style='light',
    ),
)
fig = dict(data=data, layout=layout)
py.iplot(fig, filename='Sales_diff')

效果说明

  • 所有圆点的大小仅与销量差异的绝对值相关,负值点不会再因数值为负而被缩小;
  • 负值区域显示为蓝色,正值区域显示为红色,0附近的点为白色,颜色条清晰标注了正负方向的差异量级;
  • 颜色刻度对称,正负方向的颜色映射范围一致,视觉呈现更平衡。

如果想要调整配色,直接修改colorscale里的RGB值即可,比如把蓝色换成深灰色、红色换成橙色,都能灵活适配你的需求。

内容的提问来源于stack exchange,提问作者Axis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:35:07