Skip to content

Commit f0c7995

Browse files
committed
scatter3d error bar with log axes dealt with as a special case
1 parent dda2983 commit f0c7995

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/traces/scatter3d/calc_errors.js

+16-9
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, axis, calendar) {
13+
function calculateAxisErrors(data, params, scaleFactor, axis) {
1414
if(!params || !params.visible) return null;
1515

1616
var computeError = Registry.getComponentMethod('errorbars', 'makeComputeError')(params);
@@ -19,11 +19,18 @@ function calculateAxisErrors(data, params, scaleFactor, axis, calendar) {
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
23-
result[i] = [
24-
(axis.d2l(data[i] - errors[0], 0, calendar) * scaleFactor) - point || -point,
25-
(axis.d2l(data[i] + errors[1], 0, calendar) * scaleFactor) - point || -point
26-
];
22+
if(axis.type === 'log') {
23+
var point = axis.c2l(data[i]);
24+
result[i] = [
25+
(axis.c2l(data[i] - errors[0]) - point || -point) * scaleFactor,
26+
(axis.c2l(data[i] + errors[1]) - point) * scaleFactor
27+
];
28+
} else {
29+
result[i] = [
30+
-errors[0] * scaleFactor,
31+
errors[1] * scaleFactor
32+
];
33+
}
2734
}
2835

2936
return result;
@@ -38,9 +45,9 @@ function dataLength(array) {
3845

3946
function calculateErrors(data, scaleFactor, sceneLayout) {
4047
var errors = [
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)
48+
calculateAxisErrors(data.x, data.error_x, scaleFactor[0], sceneLayout.xaxis),
49+
calculateAxisErrors(data.y, data.error_y, scaleFactor[1], sceneLayout.yaxis),
50+
calculateAxisErrors(data.z, data.error_z, scaleFactor[2], sceneLayout.zaxis)
4451
];
4552

4653
var n = dataLength(errors);

0 commit comments

Comments
 (0)