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

如何在Plotly中分离两个散点子图的颜色比例尺

解决Plotly子图中颜色比例尺重叠问题

我用Plotly的graph_objects模块,通过append_trace创建了两个散点图的子图,但两个散点图的颜色比例尺重叠了。改成两行排列也没解决,怎么分离这两个颜色比例尺?

原代码如下:

fig = make_subplots(rows=1, cols=2)
fig.append_trace(go.Scatter(x=X1, y=Y1, mode='markers', marker=dict(
    color=C1,
    colorscale='Viridis',
    showscale=True
)), row=1, col=1)
fig.append_trace(go.Scatter(x=X, y=Y2, mode='markers', marker=dict(
    color=C2,
    colorscale='Viridis',
    showscale=True
)), row=1, col=2)
fig.show()

解决方案

问题根源是两个散点图的颜色比例尺默认使用相同的位置布局,导致重叠。只需给每个颜色比例尺指定独立的位置参数即可分离它们,具体通过marker.colorbar的坐标参数调整:

横向子图(1行2列)示例

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

fig = make_subplots(rows=1, cols=2)

# 第一个子图的颜色比例尺调整到子图右侧、第二个子图左侧的中间位置
fig.append_trace(go.Scatter(x=X1, y=Y1, mode='markers', marker=dict(
    color=C1,
    colorscale='Viridis',
    showscale=True,
    colorbar=dict(
        x=0.45,
        xanchor='left'
    )
)), row=1, col=1)

# 第二个子图的颜色比例尺固定在图表最右侧
fig.append_trace(go.Scatter(x=X, y=Y2, mode='markers', marker=dict(
    color=C2,
    colorscale='Viridis',
    showscale=True,
    colorbar=dict(
        x=1.05,
        xanchor='left'
    )
)), row=1, col=2)

fig.show()

纵向子图(2行1列)示例

如果是两行排列的子图,调整垂直方向的位置参数:

fig = make_subplots(rows=2, cols=1)

fig.append_trace(go.Scatter(x=X1, y=Y1, mode='markers', marker=dict(
    color=C1,
    colorscale='Viridis',
    showscale=True,
    colorbar=dict(
        y=0.75,
        yanchor='top'
    )
)), row=1, col=1)

fig.append_trace(go.Scatter(x=X, y=Y2, mode='markers', marker=dict(
    color=C2,
    colorscale='Viridis',
    showscale=True,
    colorbar=dict(
        y=0.25,
        yanchor='bottom'
    )
)), row=2, col=1)

fig.show()

说明

  • colorbar的x/y参数取值范围为0-1,对应整个图表的相对坐标系,可根据子图布局微调数值,确保色条不重叠。
  • xanchor/yanchor用于定义色条坐标的锚点,保证位置调整的准确性。

内容的提问来源于stack exchange,提问作者optimistic-orange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 06:47:24