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
相关产品推荐
相关产品推荐

