Skip to content

Commit 5d35b78

Browse files
authored
Merge pull request #4821 from plotly/rangebreaks-heatmap-2d-z-array
Fix rangebreaks on heatmap with 2d z array
2 parents 2a4f20e + a7676bd commit 5d35b78

11 files changed

+2072
-4
lines changed

src/traces/heatmap/calc.js

+33
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var clean2dArray = require('./clean_2d_array');
1919
var interp2d = require('./interp2d');
2020
var findEmpties = require('./find_empties');
2121
var makeBoundArray = require('./make_bound_array');
22+
var BADNUM = require('../../constants/numerical').BADNUM;
2223

2324
module.exports = function calc(gd, trace) {
2425
// prepare the raw data
@@ -71,6 +72,12 @@ module.exports = function calc(gd, trace) {
7172

7273
z = clean2dArray(zIn, trace, xa, ya);
7374

75+
if(xa.rangebreaks || ya.rangebreaks) {
76+
z = dropZonBreaks(z, trace);
77+
x = trace._x = skipBreaks(trace._x);
78+
y = trace._y = skipBreaks(trace._y);
79+
}
80+
7481
if(isContour || trace.connectgaps) {
7582
trace._emptypoints = findEmpties(z);
7683
interp2d(z, trace._emptypoints);
@@ -156,3 +163,29 @@ module.exports = function calc(gd, trace) {
156163

157164
return [cd0];
158165
};
166+
167+
function skipBreaks(a) {
168+
var b = [];
169+
var len = a.length;
170+
for(var i = 0; i < len; i++) {
171+
var v = a[i];
172+
if(v !== BADNUM) b.push(v);
173+
}
174+
return b;
175+
}
176+
177+
function dropZonBreaks(z, trace) {
178+
var newZ = [];
179+
var k = -1;
180+
for(var i = 0; i < z.length; i++) {
181+
if(trace._y[i] === BADNUM) continue;
182+
k++;
183+
newZ[k] = [];
184+
for(var j = 0; j < z[i].length; j++) {
185+
if(trace._x[j] === BADNUM) continue;
186+
187+
newZ[k].push(z[i][j]);
188+
}
189+
}
190+
return newZ;
191+
}

src/traces/heatmap/convert_column_xyz.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,21 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name,
3030
var text;
3131
var hovertext;
3232

33+
var nI = col2vals.length;
34+
var nJ = col1vals.length;
35+
3336
for(i = 0; i < arrayVarNames.length; i++) {
34-
newArrays[i] = Lib.init2dArray(col2vals.length, col1vals.length);
37+
newArrays[i] = Lib.init2dArray(nI, nJ);
3538
}
3639

3740
if(hasColumnText) {
38-
text = Lib.init2dArray(col2vals.length, col1vals.length);
41+
text = Lib.init2dArray(nI, nJ);
3942
}
4043
if(hasColumnHoverText) {
41-
hovertext = Lib.init2dArray(col2vals.length, col1vals.length);
44+
hovertext = Lib.init2dArray(nI, nJ);
4245
}
4346

44-
var after2before = Lib.init2dArray(col2vals.length, col1vals.length);
47+
var after2before = Lib.init2dArray(nI, nJ);
4548

4649
for(i = 0; i < colLen; i++) {
4750
if(col1[i] !== BADNUM && col2[i] !== BADNUM) {
54.7 KB
Loading
54.8 KB
Loading
22.6 KB
Loading
22.8 KB
Loading

0 commit comments

Comments
 (0)