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

Plotly散点图size数组使用疑问及color属性报错问题咨询

问题:Plotly散点图标记颜色与尺寸同步时的报错及解决方法

我正在生成多个子图研究调色板,用Plotly绘制散点图,要求标记颜色随尺寸同步加深。编写的代码如下:

fig3 = go.Scatter(x=[1,2,3,4,5], y=[2,2,2,2,2], mode="markers", marker={"size": [100,125,150,175,200], "color": [1,2,3,4,5], "sizemin":50}, color_continuous_scale=colors)

调色板定义:

Colors = [
    "#FFFFEF",
    "#FFCA8C",
    "#FFA05C",
]

运行后抛出错误:

ValueError: Invalid property specified for object of type plotly.graph_objs.Scatter: 'color'

Did you mean "fill"?

我知道有多种用数组实现需求的方式,但困惑为什么会出现这个错误,以及如果不按当前方式,size参数该如何正确使用?


错误原因

Plotly的go.Scatter对象中,color是顶层属性,不能嵌套在marker字典里。你把color参数写在marker内部,导致Plotly识别为无效属性,因此报错。

修正方案

方法一:将color移到顶层,配合marker的size设置

把颜色数组放到go.Scatter的顶层color参数中,同时保留marker里的size配置,即可实现颜色随尺寸同步变化:

fig3 = go.Scatter(
    x=[1,2,3,4,5],
    y=[2,2,2,2,2],
    mode="markers",
    marker={"size": [100,125,150,175,200], "sizemin":50},
    color=[1,2,3,4,5],
    color_continuous_scale=Colors
)

方法二:直接用尺寸数组作为颜色映射依据

既然颜色要和尺寸同步,也可以直接把size的数组赋值给color,省去额外的颜色数值数组:

size_values = [100,125,150,175,200]
fig3 = go.Scatter(
    x=[1,2,3,4,5],
    y=[2,2,2,2,2],
    mode="markers",
    marker={"size": size_values, "sizemin":50},
    color=size_values,
    color_continuous_scale=Colors
)

size参数的正确使用方式

  • size支持两种赋值形式:单个数值(所有标记统一大小)、数组(每个标记单独设置大小)
  • sizemin是可选参数,用于定义最小标记尺寸的基准,避免过小的标记无法显示
  • 若需要精细控制标记大小的缩放范围,可以搭配sizemode(可选值'diameter'或'area')和sizeref参数,示例:
marker={
    "size": size_values,
    "sizemin":50,
    "sizemode": "area",
    "sizeref": 2.*max(size_values)/(40.**2)  # 控制最大标记的面积对应40像素直径
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:45:03