Skip to content

Commit 4ea9de6

Browse files
committed
scatter3d now performs axis transformation on error bars
1 parent 2a667d0 commit 4ea9de6

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

src/traces/scatter3d/calc_errors.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
var Registry = require('../../registry');
1212

13-
function calculateAxisErrors(data, params, scaleFactor) {
13+
function calculateAxisErrors(data, params, scaleFactor, axis, calendar) {
1414
if(!params || !params.visible) return null;
1515

1616
var computeError = Registry.getComponentMethod('errorbars', 'makeComputeError')(params);
@@ -19,9 +19,10 @@ function calculateAxisErrors(data, params, scaleFactor) {
1919
for(var i = 0; i < data.length; i++) {
2020
var errors = computeError(+data[i], i);
2121

22+
var point = axis.d2l(data[i], 0, calendar) * scaleFactor; // A bit wasteful
2223
result[i] = [
23-
-errors[0] * scaleFactor,
24-
errors[1] * scaleFactor
24+
(axis.d2l(data[i] - errors[0], 0, calendar) * scaleFactor) - point || -point,
25+
(axis.d2l(data[i] + errors[1], 0, calendar) * scaleFactor) - point || -point
2526
];
2627
}
2728

@@ -35,11 +36,11 @@ function dataLength(array) {
3536
return 0;
3637
}
3738

38-
function calculateErrors(data, scaleFactor) {
39+
function calculateErrors(data, scaleFactor, sceneLayout) {
3940
var errors = [
40-
calculateAxisErrors(data.x, data.error_x, scaleFactor[0]),
41-
calculateAxisErrors(data.y, data.error_y, scaleFactor[1]),
42-
calculateAxisErrors(data.z, data.error_z, scaleFactor[2])
41+
calculateAxisErrors(data.x, data.error_x, scaleFactor[0], sceneLayout.xaxis, data.xcalendar),
42+
calculateAxisErrors(data.y, data.error_y, scaleFactor[1], sceneLayout.yaxis, data.ycalendar),
43+
calculateAxisErrors(data.z, data.error_z, scaleFactor[2], sceneLayout.zaxis, data.zcalendar)
4344
];
4445

4546
var n = dataLength(errors);

src/traces/scatter3d/convert.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ function convertPlotlyOptions(scene, data) {
252252
}
253253
}
254254

255-
params.errorBounds = calculateError(data, scaleFactor);
255+
params.errorBounds = calculateError(data, scaleFactor, sceneLayout, points);
256256

257257
var errorParams = calculateErrorParams([data.error_x, data.error_y, data.error_z]);
258258
params.errorColor = errorParams.color;
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"data": [{
3+
"x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
4+
"y": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
5+
"z": [1e+00, 1e+01, 1e+02, 1e+03, 1e+04,
6+
1e+05, 1e+06, 1e+07, 1e+08, 1e+09
7+
],
8+
"type": "scatter3d",
9+
"error_z": {
10+
"array": [1e-01, 2e+01, 1e+1, 9e+03, 5e+03,
11+
0.9e+05, 1e+05, 1e+07, 9e+08, 1e+09
12+
],
13+
"type": "data",
14+
"visible": true
15+
}
16+
}],
17+
"layout": {
18+
"scene": {
19+
"zaxis": {
20+
"type": "log"
21+
}
22+
},
23+
"width": 800,
24+
"height": 800
25+
}
26+
}

0 commit comments

Comments
 (0)