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

Python中Plotly地图colorscale无法随地图移动问题求助

Plotly Mapbox颜色条无法随地图移动的解决方法

问题说明

使用Plotly的make_subplots创建1行2列布局(左侧为Mapbox地图,右侧为表格)时,Scattermapbox标记的颜色条(colorscale)无法随地图交互(平移、缩放)一同移动,始终固定在画布的某个位置。

解决思路

默认情况下,颜色条的坐标系绑定的是全局画布(paper),而非Mapbox所在的子图坐标系。只需将颜色条的坐标系改为对应子图的坐标系,并调整位置参数,就能让颜色条和地图保持相对位置,随地图联动。

修改后的代码

关键修改点是在scattermapbox.Marker中添加colorbar配置,指定坐标系为子图的x1和y1,并调整位置让颜色条紧贴地图右侧:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

# 创建子图布局
fig = make_subplots(
    rows=1,
    cols=2,
    specs=[[{"type": "mapbox"}, {"type": "table"}]],
    horizontal_spacing=0.1,
)

# 添加Mapbox散点轨迹
plt = go.Scattermapbox(
    lat=lats,
    lon=lons,
    mode="markers+text",
    marker=go.scattermapbox.Marker(
        size=10,
        color=scores,
        showscale=True,
        cmin=-1,
        cmax=1,
        # 核心修改:绑定颜色条到Mapbox子图坐标系
        colorbar=dict(
            x=1.02,  # 颜色条在子图右侧的位置
            y=0.5,
            xref="x1",  # 绑定到第一列子图的x轴坐标系
            yref="y1",  # 绑定到第一行子图的y轴坐标系
            len=0.8,    # 颜色条长度
            tickvals=[-1, 0, 1],  # 可选:自定义刻度值
            ticktext=["-1", "0", "1"]
        )
    ),
    text=texts,
    textposition="bottom right",
)
fig.add_trace(plt, row=1, col=1)

# 添加表格轨迹
table = go.Table(
    header=dict(
        values=["NOTAM_REC_ID", "SCORE", "TEXT"],
        fill_color="lightsteelblue",
        align="left",
    ),
    cells=dict(
        values=[matches_df.NOTAM_REC_ID, matches_df.SCORE, matches_df.E_CODE],
        fill_color="white",
        align="left",
    ),
)
fig.add_trace(table, row=1, col=2)

# 更新布局配置
fig.update_layout(
    autosize=True,
    hovermode="closest",
    mapbox=dict(
        accesstoken=mapbox_access_token,
        bearing=0,
        center=dict(lat=lats[3], lon=lons[3]),
        pitch=0,
        zoom=10,
    ),
)

fig.show()

说明

  • xref="x1"和yref="y1":将颜色条的坐标系绑定到第一列第一行的子图(也就是Mapbox所在的子图),确保颜色条和地图保持相对位置。
  • x=1.02:调整颜色条在子图右侧的偏移量,可根据实际布局微调这个值,让颜色条和地图的间距更合理。
  • len=0.8:控制颜色条的高度,避免过长或过短影响视觉效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:15:37