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

如何避免多序列3D散点图的colormap数据被单独归一化

问题解决方法

问题根源

每次调用ax.scatter()绘制单个序列时,若没有显式指定颜色映射的归一化规则,函数会默认使用当前序列颜色值的局部最值做归一化,和你提前定义的全局vmin/vmax无关,这才导致每个序列的颜色被单独拉伸,出现映射错误。

解决方案

在循环调用ax.scatter()时,将你提前定义好的全局归一化规则传入即可,不需要手动提前做归一化处理,两种可选写法:

  • 直接传入预先定义的norm对象
  • 显式传入全局的vmin和vmax参数

核心修改代码

你只需要修改循环内的ax.scatter行即可,修改后如下:

'Plot different series'
for i in range(len(l_x)):
    ax.scatter(l_x[i], l_y[i], l_z[i], marker=markers[i], c=l_cm[i], cmap=cmap, norm=norm)

或者也可以写成:

ax.scatter(l_x[i], l_y[i], l_z[i], marker=markers[i], c=l_cm[i], cmap=cmap, vmin=vmin, vmax=vmax)

修改后三个序列的颜色就会统一按照0~100的全局区间做映射,序列1的最大值50会对应色条中间色,序列2的固定值50也会显示为中间色,不会再被错误映射为最小值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:18:03