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

Plotly散点标记自定义颜色失效,仅显示最后一个颜色求助

解决Plotly散点颜色不生效及竖线绘制问题

一、散点颜色问题修复

你当前代码的问题是:循环四次添加散点trace,每个trace都包含四个完全重叠的点,最终只有最后一个trace的颜色会显示出来。要给每个点分配自定义颜色,只需要单次添加散点trace,直接将marker.color设为颜色列表即可:

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

Prod=[450000, 500000, 420000,300000]
colors = ['rgb(215,209,209)','rgb(170,170,170)', 'rgb(115,115,115)','rgb(67,67,67)']
fig = make_subplots(rows=1, cols=2, column_widths=[0.85,0.15])

# 单次添加散点,每个点对应colors中的颜色
fig.add_trace(go.Scatter(
    x=[0]*4, 
    y=Prod, 
    name="Total Year", 
    marker=dict(
        color=colors,  # 直接绑定颜色列表
        size=12
    )
), row=1, col=2)

二、竖线绘制方法

Plotly有两种高效的竖线绘制方式,无需用散点模拟:

方法1:用add_shape绘制(推荐)

add_shape是Plotly专门用于绘制几何形状的API,直接指定竖线的x坐标和y轴范围即可:

fig.add_shape(
    type='line',
    x0=0, x1=0,  # 竖线的x轴固定值
    y0=min(Prod)-20000, y1=max(Prod)+20000,  # y轴范围,上下留余量更美观
    line=dict(color='gray', width=2),
    row=1, col=2  # 指定绘制在右侧子图
)

方法2:用Scatter绘制竖线

通过设置mode='lines',用两个点定义竖线的起止位置:

fig.add_trace(go.Scatter(
    x=[0, 0], 
    y=[min(Prod)-20000, max(Prod)+20000],
    mode='lines',
    line=dict(color='gray', width=2),
    showlegend=False  # 不显示在图例中
), row=1, col=2)

完整代码示例

结合颜色设置和竖线绘制的完整代码如下:

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

Prod=[450000, 500000, 420000,300000]
colors = ['rgb(215,209,209)','rgb(170,170,170)', 'rgb(115,115,115)','rgb(67,67,67)']
fig = make_subplots(rows=1, cols=2, column_widths=[0.85,0.15])

# 添加带自定义颜色的散点
fig.add_trace(go.Scatter(
    x=[0]*4, 
    y=Prod, 
    name="Total Year", 
    marker=dict(
        color=colors,
        size=12
    )
), row=1, col=2)

# 添加竖线
fig.add_shape(
    type='line',
    x0=0, x1=0,
    y0=min(Prod)-20000, y1=max(Prod)+20000,
    line=dict(color='gray', width=2),
    row=1, col=2
)

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:34:59