|
2 | 2 |
|
3 | 3 | var Lib = require('../../lib'); |
4 | 4 | var attributes = require('./attributes'); |
| 5 | +var Colorscale = require('../../components/colorscale'); |
| 6 | +var colorscaleDefaults = Colorscale.handleDefaults; |
| 7 | +var hasColorscale = Colorscale.hasColorscale; |
5 | 8 |
|
6 | 9 | module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { |
7 | 10 | // Selection styling - use coerce to set proper defaults |
@@ -61,6 +64,26 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout |
61 | 64 | // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js |
62 | 65 | traceOut.hovertemplate = traceIn.hovertemplate; |
63 | 66 |
|
| 67 | + // Colorscale for magnitude coloring: compute cmin/cmax from |(u,v)| |
| 68 | + var cmin = Infinity; |
| 69 | + var cmax = -Infinity; |
| 70 | + for (var k = 0; k < len; k++) { |
| 71 | + var uu = (traceOut.u && traceOut.u[k]) || (traceIn.u && traceIn.u[k]) || 0; |
| 72 | + var vv = (traceOut.v && traceOut.v[k]) || (traceIn.v && traceIn.v[k]) || 0; |
| 73 | + var nrm = Math.sqrt(uu * uu + vv * vv); |
| 74 | + if (isFinite(nrm)) { |
| 75 | + if (nrm < cmin) cmin = nrm; |
| 76 | + if (nrm > cmax) cmax = nrm; |
| 77 | + } |
| 78 | + } |
| 79 | + if (!isFinite(cmin)) cmin = 0; |
| 80 | + if (!isFinite(cmax)) cmax = 1; |
| 81 | + if (traceIn.cmin === undefined && traceOut.cmin === undefined) traceOut.cmin = cmin; |
| 82 | + if (traceIn.cmax === undefined && traceOut.cmax === undefined) traceOut.cmax = cmax; |
| 83 | + // Flag colorscale and apply defaults (adds colorscale, showscale, colorbar, etc.) |
| 84 | + traceOut._hasColorscale = hasColorscale(traceIn) || true; |
| 85 | + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); |
| 86 | + |
64 | 87 | // Text |
65 | 88 | traceOut.text = traceIn.text; |
66 | 89 | traceOut.textposition = traceIn.textposition || 'middle center'; |
|
0 commit comments