Plotly 3dscatter 和色阶
Plotly 3dscatter and colorscale
我正在使用 Plotly.js 通过它的 JavaScript API 来绘制一些 3D 散点图。看起来棒极了:
在此图中,点的颜色基于点的 z 值。如果我将其更改为 x 或 y 值(通过更改 data[0].marker.color 数组)并重新绘制,就会出错:
我希望看到类似的内容:
无论我再次使用redraw还是newPlot。看起来一旦根据数据计算出色标,它就会保持从数据到颜色的相同映射函数。所以我的问题是如何 "invalidate" 色标,以便在使用新颜色数组重绘时重新计算。
更新
在 etpinard 的回答中(谢谢!)有一个简单的完整示例。然而,这个版本已经将所有 x、y 和 z 数据很好地缩放在 0 和 1 之间。即它有:
function randomArray() {
var out = new Array(N);
for(var i = 0; i < N; i++) {
out[i] = Math.random();
}
return out;
}
var x = randomArray(),
y = randomArray(),
z = randomArray();
我的数据的 x、y 和 z 单位不同。我可以模拟这个:
function randomArray(lo,up) {
var out = new Array(N);
for(var i = 0; i < N; i++) {
out[i] = lo+(up-lo)*Math.random();
}
return out;
}
var x = randomArray(0,1),
y = randomArray(0,1),
z = randomArray(0,1000);
这个版本的第一个情节看起来不错:
我们根据点的 z 值给点上色。但是当我点击 'x' 按钮时,我看到:
我希望这有助于重现问题。
您应该尝试使用 Plotly.restyle
进行排序操作。
我正在使用 Plotly.js 通过它的 JavaScript API 来绘制一些 3D 散点图。看起来棒极了:
在此图中,点的颜色基于点的 z 值。如果我将其更改为 x 或 y 值(通过更改 data[0].marker.color 数组)并重新绘制,就会出错:
我希望看到类似的内容:
无论我再次使用redraw还是newPlot。看起来一旦根据数据计算出色标,它就会保持从数据到颜色的相同映射函数。所以我的问题是如何 "invalidate" 色标,以便在使用新颜色数组重绘时重新计算。
更新
在 etpinard 的回答中(谢谢!)有一个简单的完整示例。然而,这个版本已经将所有 x、y 和 z 数据很好地缩放在 0 和 1 之间。即它有:
function randomArray() {
var out = new Array(N);
for(var i = 0; i < N; i++) {
out[i] = Math.random();
}
return out;
}
var x = randomArray(),
y = randomArray(),
z = randomArray();
我的数据的 x、y 和 z 单位不同。我可以模拟这个:
function randomArray(lo,up) {
var out = new Array(N);
for(var i = 0; i < N; i++) {
out[i] = lo+(up-lo)*Math.random();
}
return out;
}
var x = randomArray(0,1),
y = randomArray(0,1),
z = randomArray(0,1000);
这个版本的第一个情节看起来不错:
我们根据点的 z 值给点上色。但是当我点击 'x' 按钮时,我看到:
我希望这有助于重现问题。
您应该尝试使用 Plotly.restyle
进行排序操作。