From 58a1a1cf3252af8bc56d9ae5299e05667790ddb6 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Wed, 22 May 2024 09:56:07 -0400 Subject: [PATCH 1/4] init bar3d new trace type --- lib/bar3d.js | 3 +++ lib/index-gl3d.js | 1 + lib/index-strict.js | 1 + lib/index.js | 1 + src/components/legend/style.js | 8 ++++++++ tasks/util/constants.js | 2 ++ 6 files changed, 16 insertions(+) create mode 100644 lib/bar3d.js diff --git a/lib/bar3d.js b/lib/bar3d.js new file mode 100644 index 00000000000..0de7c1c1f5d --- /dev/null +++ b/lib/bar3d.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../src/traces/bar3d'); diff --git a/lib/index-gl3d.js b/lib/index-gl3d.js index a965c91d2d4..0e0a044b8a8 100644 --- a/lib/index-gl3d.js +++ b/lib/index-gl3d.js @@ -8,6 +8,7 @@ Plotly.register([ require('./surface'), require('./isosurface'), require('./volume'), + require('./bar3d'), require('./mesh3d'), require('./cone'), require('./streamtube'), diff --git a/lib/index-strict.js b/lib/index-strict.js index e73072ef9c8..9b0147ccc58 100644 --- a/lib/index-strict.js +++ b/lib/index-strict.js @@ -25,6 +25,7 @@ Plotly.register([ require('./surface'), require('./isosurface'), require('./volume'), + require('./bar3d'), require('./mesh3d'), require('./cone'), require('./streamtube'), diff --git a/lib/index.js b/lib/index.js index d702fd1ba4d..01e83bf14ad 100644 --- a/lib/index.js +++ b/lib/index.js @@ -25,6 +25,7 @@ Plotly.register([ require('./surface'), require('./isosurface'), require('./volume'), + require('./bar3d'), require('./mesh3d'), require('./cone'), require('./streamtube'), diff --git a/src/components/legend/style.js b/src/components/legend/style.js index d821493a5a8..f49e599e357 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -600,6 +600,14 @@ module.exports = function style(s, gd, legend) { ]; useGradient = false; break; + case 'bar3d' : + ptsData = [ // TODO: Fix me! + ['M-6,6H0L-6,-6Z'], + ['M6,6H0L6,-6Z'], + ['M-6,-6H6L0,6Z'] + ]; + useGradient = false; + break; } } diff --git a/tasks/util/constants.js b/tasks/util/constants.js index cc29bd49276..22b72cec416 100644 --- a/tasks/util/constants.js +++ b/tasks/util/constants.js @@ -95,6 +95,7 @@ var partialBundleTraces = { 'splom' ], gl3d: [ + 'bar3d', 'cone', 'isosurface', 'mesh3d', @@ -112,6 +113,7 @@ var partialBundleTraces = { ], strict: [ 'bar', + 'bar3d', 'barpolar', 'box', 'candlestick', From 92c0379f6204cd03b5c4bb58020be5096ba86fe8 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Wed, 22 May 2024 09:58:22 -0400 Subject: [PATCH 2/4] isosurface > bar3d --- src/traces/bar3d/attributes.js | 236 +++++++ src/traces/bar3d/calc.js | 45 ++ src/traces/bar3d/convert.js | 1047 ++++++++++++++++++++++++++++++++ src/traces/bar3d/defaults.js | 110 ++++ src/traces/bar3d/index.js | 25 + 5 files changed, 1463 insertions(+) create mode 100644 src/traces/bar3d/attributes.js create mode 100644 src/traces/bar3d/calc.js create mode 100644 src/traces/bar3d/convert.js create mode 100644 src/traces/bar3d/defaults.js create mode 100644 src/traces/bar3d/index.js diff --git a/src/traces/bar3d/attributes.js b/src/traces/bar3d/attributes.js new file mode 100644 index 00000000000..cb00ecbef76 --- /dev/null +++ b/src/traces/bar3d/attributes.js @@ -0,0 +1,236 @@ +'use strict'; + +var colorScaleAttrs = require('../../components/colorscale/attributes'); +var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; +var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; +var meshAttrs = require('../mesh3d/attributes'); +var baseAttrs = require('../../plots/attributes'); + +var extendFlat = require('../../lib/extend').extendFlat; +var overrideAll = require('../../plot_api/edit_types').overrideAll; + +function makeSliceAttr(axLetter) { + return { + show: { + valType: 'boolean', + dflt: false, + description: [ + 'Determines whether or not slice planes about the', axLetter, + 'dimension are drawn.' + ].join(' ') + }, + locations: { + valType: 'data_array', + dflt: [], + description: [ + 'Specifies the location(s) of slices on the axis.', + 'When not specified slices would be created for', + 'all points of the axis', axLetter, 'except start and end.' + ].join(' ') + }, + fill: { + valType: 'number', + min: 0, + max: 1, + dflt: 1, + description: [ + 'Sets the fill ratio of the `slices`. The default fill value of the', + '`slices` is 1 meaning that they are entirely shaded. On the other hand', + 'Applying a `fill` ratio less than one would allow the creation of', + 'openings parallel to the edges.' + ].join(' ') + } + }; +} + +function makeCapAttr(axLetter) { + return { + show: { + valType: 'boolean', + dflt: true, + description: [ + 'Sets the fill ratio of the `slices`. The default fill value of the', axLetter, + '`slices` is 1 meaning that they are entirely shaded. On the other hand', + 'Applying a `fill` ratio less than one would allow the creation of', + 'openings parallel to the edges.' + ].join(' ') + }, + fill: { + valType: 'number', + min: 0, + max: 1, + dflt: 1, + description: [ + 'Sets the fill ratio of the `caps`. The default fill value of the', + '`caps` is 1 meaning that they are entirely shaded. On the other hand', + 'Applying a `fill` ratio less than one would allow the creation of', + 'openings parallel to the edges.' + ].join(' ') + } + }; +} + +var attrs = module.exports = overrideAll(extendFlat({ + x: { + valType: 'data_array', + description: [ + 'Sets the X coordinates of the vertices on X axis.' + ].join(' ') + }, + y: { + valType: 'data_array', + description: [ + 'Sets the Y coordinates of the vertices on Y axis.' + ].join(' ') + }, + z: { + valType: 'data_array', + description: [ + 'Sets the Z coordinates of the vertices on Z axis.' + ].join(' ') + }, + value: { + valType: 'data_array', + description: [ + 'Sets the 4th dimension (value) of the vertices.' + ].join(' ') + }, + isomin: { + valType: 'number', + description: [ + 'Sets the minimum boundary for iso-surface plot.' + ].join(' ') + }, + isomax: { + valType: 'number', + description: [ + 'Sets the maximum boundary for iso-surface plot.' + ].join(' ') + }, + + surface: { + show: { + valType: 'boolean', + dflt: true, + description: [ + 'Hides/displays surfaces between minimum and maximum iso-values.' + ].join(' ') + }, + count: { + valType: 'integer', + dflt: 2, + min: 1, + description: [ + 'Sets the number of iso-surfaces between minimum and maximum iso-values.', + 'By default this value is 2 meaning that only minimum and maximum surfaces', + 'would be drawn.' + ].join(' ') + }, + fill: { + valType: 'number', + min: 0, + max: 1, + dflt: 1, + description: [ + 'Sets the fill ratio of the iso-surface. The default fill value of the', + 'surface is 1 meaning that they are entirely shaded. On the other hand', + 'Applying a `fill` ratio less than one would allow the creation of', + 'openings parallel to the edges.' + ].join(' ') + }, + pattern: { + valType: 'flaglist', + flags: ['A', 'B', 'C', 'D', 'E'], + extras: ['all', 'odd', 'even'], + dflt: 'all', + description: [ + 'Sets the surface pattern of the iso-surface 3-D sections. The default pattern of', + 'the surface is `all` meaning that the rest of surface elements would be shaded.', + 'The check options (either 1 or 2) could be used to draw half of the squares', + 'on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E`', + 'may also be used to reduce the number of triangles on the iso-surfaces and', + 'creating other patterns of interest.' + ].join(' ') + } + }, + + spaceframe: { + show: { + valType: 'boolean', + dflt: false, + description: [ + 'Displays/hides tetrahedron shapes between minimum and', + 'maximum iso-values. Often useful when either caps or', + 'surfaces are disabled or filled with values less than 1.' + ].join(' ') + }, + fill: { + valType: 'number', + min: 0, + max: 1, + dflt: 0.15, + description: [ + 'Sets the fill ratio of the `spaceframe` elements. The default fill value', + 'is 0.15 meaning that only 15% of the area of every faces of tetras would be', + 'shaded. Applying a greater `fill` ratio would allow the creation of stronger', + 'elements or could be sued to have entirely closed areas (in case of using 1).' + ].join(' ') + } + }, + + slices: { + x: makeSliceAttr('x'), + y: makeSliceAttr('y'), + z: makeSliceAttr('z') + }, + + caps: { + x: makeCapAttr('x'), + y: makeCapAttr('y'), + z: makeCapAttr('z') + }, + + text: { + valType: 'string', + dflt: '', + arrayOk: true, + description: [ + 'Sets the text elements associated with the vertices.', + 'If trace `hoverinfo` contains a *text* flag and *hovertext* is not set,', + 'these elements will be seen in the hover labels.' + ].join(' ') + }, + hovertext: { + valType: 'string', + dflt: '', + arrayOk: true, + description: 'Same as `text`.' + }, + hovertemplate: hovertemplateAttrs(), + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z'), + valuehoverformat: axisHoverFormat('value', 1), + + showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) +}, + +colorScaleAttrs('', { + colorAttr: '`value`', + showScaleDflt: true, + editTypeOverride: 'calc' +}), { + opacity: meshAttrs.opacity, + lightposition: meshAttrs.lightposition, + lighting: meshAttrs.lighting, + flatshading: meshAttrs.flatshading, + contour: meshAttrs.contour, + + hoverinfo: extendFlat({}, baseAttrs.hoverinfo) +}), 'calc', 'nested'); + +// required defaults to speed up surface normal calculations +attrs.flatshading.dflt = true; attrs.lighting.facenormalsepsilon.dflt = 0; + +attrs.x.editType = attrs.y.editType = attrs.z.editType = attrs.value.editType = 'calc+clearAxisTypes'; +attrs.transforms = undefined; diff --git a/src/traces/bar3d/calc.js b/src/traces/bar3d/calc.js new file mode 100644 index 00000000000..8e425d2ab1a --- /dev/null +++ b/src/traces/bar3d/calc.js @@ -0,0 +1,45 @@ +'use strict'; + +var colorscaleCalc = require('../../components/colorscale/calc'); +var processGrid = require('../streamtube/calc').processGrid; +var filter = require('../streamtube/calc').filter; + +module.exports = function calc(gd, trace) { + trace._len = Math.min( + trace.x.length, + trace.y.length, + trace.z.length, + trace.value.length + ); + + trace._x = filter(trace.x, trace._len); + trace._y = filter(trace.y, trace._len); + trace._z = filter(trace.z, trace._len); + trace._value = filter(trace.value, trace._len); + + var grid = processGrid(trace); + trace._gridFill = grid.fill; + trace._Xs = grid.Xs; + trace._Ys = grid.Ys; + trace._Zs = grid.Zs; + trace._len = grid.len; + + var min = Infinity; + var max = -Infinity; + for(var i = 0; i < trace._len; i++) { + var v = trace._value[i]; + min = Math.min(min, v); + max = Math.max(max, v); + } + + trace._minValues = min; + trace._maxValues = max; + trace._vMin = (trace.isomin === undefined || trace.isomin === null) ? min : trace.isomin; + trace._vMax = (trace.isomax === undefined || trace.isomin === null) ? max : trace.isomax; + + colorscaleCalc(gd, trace, { + vals: [trace._vMin, trace._vMax], + containerStr: '', + cLetter: 'c' + }); +}; diff --git a/src/traces/bar3d/convert.js b/src/traces/bar3d/convert.js new file mode 100644 index 00000000000..933af645cc7 --- /dev/null +++ b/src/traces/bar3d/convert.js @@ -0,0 +1,1047 @@ +'use strict'; + +var createMesh = require('../../../stackgl_modules').gl_mesh3d; +var parseColorScale = require('../../lib/gl_format_color').parseColorScale; +var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; +var str2RgbaArray = require('../../lib/str2rgbarray'); +var extractOpts = require('../../components/colorscale').extractOpts; +var zip3 = require('../../plots/gl3d/zip3'); + +var findNearestOnAxis = function(w, arr) { + for(var q = arr.length - 1; q > 0; q--) { + var min = Math.min(arr[q], arr[q - 1]); + var max = Math.max(arr[q], arr[q - 1]); + if(max > min && min < w && w <= max) { + return { + id: q, + distRatio: (max - w) / (max - min) + }; + } + } + return { + id: 0, + distRatio: 0 + }; +}; + +function bar3dTrace(scene, mesh, uid) { + this.scene = scene; + this.uid = uid; + this.mesh = mesh; + this.name = ''; + this.data = null; + this.showContour = false; +} + +var proto = bar3dTrace.prototype; + +proto.handlePick = function(selection) { + if(selection.object === this.mesh) { + var rawId = selection.data.index; + + var x = this.data._meshX[rawId]; + var y = this.data._meshY[rawId]; + var z = this.data._meshZ[rawId]; + + var height = this.data._Ys.length; + var depth = this.data._Zs.length; + + var i = findNearestOnAxis(x, this.data._Xs).id; + var j = findNearestOnAxis(y, this.data._Ys).id; + var k = findNearestOnAxis(z, this.data._Zs).id; + + var selectIndex = selection.index = k + depth * j + depth * height * i; + + selection.traceCoordinate = [ + this.data._meshX[selectIndex], + this.data._meshY[selectIndex], + this.data._meshZ[selectIndex], + this.data._value[selectIndex] + ]; + + var text = this.data.hovertext || this.data.text; + if(isArrayOrTypedArray(text) && text[selectIndex] !== undefined) { + selection.textLabel = text[selectIndex]; + } else if(text) { + selection.textLabel = text; + } + + return true; + } +}; + +proto.update = function(data) { + var scene = this.scene; + var layout = scene.fullSceneLayout; + + this.data = generateIsoMeshes(data); + + // Unpack position data + function toDataCoords(axis, coord, scale, calendar) { + return coord.map(function(x) { + return axis.d2l(x, 0, calendar) * scale; + }); + } + + var positions = zip3( + toDataCoords(layout.xaxis, data._meshX, scene.dataScale[0], data.xcalendar), + toDataCoords(layout.yaxis, data._meshY, scene.dataScale[1], data.ycalendar), + toDataCoords(layout.zaxis, data._meshZ, scene.dataScale[2], data.zcalendar)); + + var cells = zip3(data._meshI, data._meshJ, data._meshK); + + var config = { + positions: positions, + cells: cells, + lightPosition: [data.lightposition.x, data.lightposition.y, data.lightposition.z], + ambient: data.lighting.ambient, + diffuse: data.lighting.diffuse, + specular: data.lighting.specular, + roughness: data.lighting.roughness, + fresnel: data.lighting.fresnel, + vertexNormalsEpsilon: data.lighting.vertexnormalsepsilon, + faceNormalsEpsilon: data.lighting.facenormalsepsilon, + opacity: data.opacity, + contourEnable: data.contour.show, + contourColor: str2RgbaArray(data.contour.color).slice(0, 3), + contourWidth: data.contour.width, + useFacetNormals: data.flatshading + }; + + var cOpts = extractOpts(data); + config.vertexIntensity = data._meshIntensity; + config.vertexIntensityBounds = [cOpts.min, cOpts.max]; + config.colormap = parseColorScale(data); + + // Update mesh + this.mesh.update(config); +}; + +proto.dispose = function() { + this.scene.glplot.remove(this.mesh); + this.mesh.dispose(); +}; + +var GRID_TYPES = ['xyz', 'xzy', 'yxz', 'yzx', 'zxy', 'zyx']; + +function generateIsoMeshes(data) { + data._meshI = []; + data._meshJ = []; + data._meshK = []; + + var showSurface = data.surface.show; + var showSpaceframe = data.spaceframe.show; + + var surfaceFill = data.surface.fill; + var spaceframeFill = data.spaceframe.fill; + + var drawingSurface = false; + var drawingSpaceframe = false; + + var numFaces = 0; + var numVertices; + var beginVertextLength; + + var Xs = data._Xs; + var Ys = data._Ys; + var Zs = data._Zs; + + var width = Xs.length; + var height = Ys.length; + var depth = Zs.length; + + var filled = GRID_TYPES.indexOf(data._gridFill.replace(/-/g, '').replace(/\+/g, '')); + + var getIndex = function(i, j, k) { + switch(filled) { + case 5: // 'zyx' + return k + depth * j + depth * height * i; + case 4: // 'zxy' + return k + depth * i + depth * width * j; + case 3: // 'yzx' + return j + height * k + height * depth * i; + case 2: // 'yxz' + return j + height * i + height * width * k; + case 1: // 'xzy' + return i + width * k + width * depth * j; + default: // case 0: // 'xyz' + return i + width * j + width * height * k; + } + }; + + var minValues = data._minValues; + var maxValues = data._maxValues; + + var vMin = data._vMin; + var vMax = data._vMax; + + var allXs; + var allYs; + var allZs; + var allVs; + + function findVertexId(x, y, z) { + // could be used to find the vertex id of previously generated vertex within the group + + var len = allVs.length; + for(var f = beginVertextLength; f < len; f++) { + if( + x === allXs[f] && + y === allYs[f] && + z === allZs[f] + ) { + return f; + } + } + return -1; + } + + function beginGroup() { + beginVertextLength = numVertices; + } + + function emptyVertices() { + allXs = []; + allYs = []; + allZs = []; + allVs = []; + numVertices = 0; + + beginGroup(); + } + + function addVertex(x, y, z, v) { + allXs.push(x); + allYs.push(y); + allZs.push(z); + allVs.push(v); + numVertices++; + + return numVertices - 1; + } + + function addFace(a, b, c) { + data._meshI.push(a); + data._meshJ.push(b); + data._meshK.push(c); + numFaces++; + + return numFaces - 1; + } + + function getCenter(A, B, C) { + var M = []; + for(var i = 0; i < A.length; i++) { + M[i] = (A[i] + B[i] + C[i]) / 3.0; + } + return M; + } + + function getBetween(A, B, r) { + var M = []; + for(var i = 0; i < A.length; i++) { + M[i] = A[i] * (1 - r) + r * B[i]; + } + return M; + } + + var activeFill; + function setFill(fill) { + activeFill = fill; + } + + function createOpenTri(xyzv, abc) { + var A = xyzv[0]; + var B = xyzv[1]; + var C = xyzv[2]; + var G = getCenter(A, B, C); + + var r = Math.sqrt(1 - activeFill); + var p1 = getBetween(G, A, r); + var p2 = getBetween(G, B, r); + var p3 = getBetween(G, C, r); + + var a = abc[0]; + var b = abc[1]; + var c = abc[2]; + + return { + xyzv: [ + [A, B, p2], [p2, p1, A], + [B, C, p3], [p3, p2, B], + [C, A, p1], [p1, p3, C] + ], + abc: [ + [a, b, -1], [-1, -1, a], + [b, c, -1], [-1, -1, b], + [c, a, -1], [-1, -1, c] + ] + }; + } + + function styleIncludes(style, char) { + if(style === 'all' || style === null) return true; + return (style.indexOf(char) > -1); + } + + function mapValue(style, value) { + if(style === null) return value; + return style; + } + + function drawTri(style, xyzv, abc) { + beginGroup(); + + var allXYZVs = [xyzv]; + var allABCs = [abc]; + if(activeFill >= 1) { + allXYZVs = [xyzv]; + allABCs = [abc]; + } else if(activeFill > 0) { + var openTri = createOpenTri(xyzv, abc); + allXYZVs = openTri.xyzv; + allABCs = openTri.abc; + } + + for(var f = 0; f < allXYZVs.length; f++) { + xyzv = allXYZVs[f]; + abc = allABCs[f]; + + var pnts = []; + for(var i = 0; i < 3; i++) { + var x = xyzv[i][0]; + var y = xyzv[i][1]; + var z = xyzv[i][2]; + var v = xyzv[i][3]; + + var id = (abc[i] > -1) ? abc[i] : findVertexId(x, y, z); + if(id > -1) { + pnts[i] = id; + } else { + pnts[i] = addVertex(x, y, z, mapValue(style, v)); + } + } + + addFace(pnts[0], pnts[1], pnts[2]); + } + } + + function drawQuad(style, xyzv, abcd) { + var makeTri = function(i, j, k) { + drawTri(style, [xyzv[i], xyzv[j], xyzv[k]], [abcd[i], abcd[j], abcd[k]]); + }; + + makeTri(0, 1, 2); + makeTri(2, 3, 0); + } + + function drawTetra(style, xyzv, abcd) { + var makeTri = function(i, j, k) { + drawTri(style, [xyzv[i], xyzv[j], xyzv[k]], [abcd[i], abcd[j], abcd[k]]); + }; + + makeTri(0, 1, 2); + makeTri(3, 0, 1); + makeTri(2, 3, 0); + makeTri(1, 2, 3); + } + + function calcIntersection(pointOut, pointIn, min, max) { + var value = pointOut[3]; + + if(value < min) value = min; + if(value > max) value = max; + + var ratio = (pointOut[3] - value) / (pointOut[3] - pointIn[3] + 0.000000001); // we had to add this error to force solve the tiny caps + + var result = []; + for(var s = 0; s < 4; s++) { + result[s] = (1 - ratio) * pointOut[s] + ratio * pointIn[s]; + } + return result; + } + + function inRange(value, min, max) { + return ( + value >= min && + value <= max + ); + } + + function almostInFinalRange(value) { + var vErr = 0.001 * (vMax - vMin); + return ( + value >= vMin - vErr && + value <= vMax + vErr + ); + } + + function getXYZV(indecies) { + var xyzv = []; + for(var q = 0; q < 4; q++) { + var index = indecies[q]; + xyzv.push( + [ + data._x[index], + data._y[index], + data._z[index], + data._value[index] + ] + ); + } + + return xyzv; + } + + var MAX_PASS = 3; + + function tryCreateTri(style, xyzv, abc, min, max, nPass) { + if(!nPass) nPass = 1; + + abc = [-1, -1, -1]; // Note: for the moment we override indices + // to run faster! But it is possible to comment this line + // to reduce the number of vertices. + + var result = false; + + var ok = [ + inRange(xyzv[0][3], min, max), + inRange(xyzv[1][3], min, max), + inRange(xyzv[2][3], min, max) + ]; + + if(!ok[0] && !ok[1] && !ok[2]) { + return false; + } + + var tryDrawTri = function(style, xyzv, abc) { + if( // we check here if the points are in `real` iso-min/max range + almostInFinalRange(xyzv[0][3]) && + almostInFinalRange(xyzv[1][3]) && + almostInFinalRange(xyzv[2][3]) + ) { + drawTri(style, xyzv, abc); + return true; + } else if(nPass < MAX_PASS) { + return tryCreateTri(style, xyzv, abc, vMin, vMax, ++nPass); // i.e. second pass using actual vMin vMax bounds + } + return false; + }; + + if(ok[0] && ok[1] && ok[2]) { + return tryDrawTri(style, xyzv, abc) || result; + } + + var interpolated = false; + + [ + [0, 1, 2], + [2, 0, 1], + [1, 2, 0] + ].forEach(function(e) { + if(ok[e[0]] && ok[e[1]] && !ok[e[2]]) { + var A = xyzv[e[0]]; + var B = xyzv[e[1]]; + var C = xyzv[e[2]]; + + var p1 = calcIntersection(C, A, min, max); + var p2 = calcIntersection(C, B, min, max); + + result = tryDrawTri(style, [p2, p1, A], [-1, -1, abc[e[0]]]) || result; + result = tryDrawTri(style, [A, B, p2], [abc[e[0]], abc[e[1]], -1]) || result; + + interpolated = true; + } + }); + if(interpolated) return result; + + [ + [0, 1, 2], + [1, 2, 0], + [2, 0, 1] + ].forEach(function(e) { + if(ok[e[0]] && !ok[e[1]] && !ok[e[2]]) { + var A = xyzv[e[0]]; + var B = xyzv[e[1]]; + var C = xyzv[e[2]]; + + var p1 = calcIntersection(B, A, min, max); + var p2 = calcIntersection(C, A, min, max); + + result = tryDrawTri(style, [p2, p1, A], [-1, -1, abc[e[0]]]) || result; + + interpolated = true; + } + }); + return result; + } + + function tryCreateTetra(style, abcd, min, max) { + var result = false; + + var xyzv = getXYZV(abcd); + + var ok = [ + inRange(xyzv[0][3], min, max), + inRange(xyzv[1][3], min, max), + inRange(xyzv[2][3], min, max), + inRange(xyzv[3][3], min, max) + ]; + + if(!ok[0] && !ok[1] && !ok[2] && !ok[3]) { + return result; + } + + if(ok[0] && ok[1] && ok[2] && ok[3]) { + if(drawingSpaceframe) { + result = drawTetra(style, xyzv, abcd) || result; + } + return result; + } + + var interpolated = false; + + [ + [0, 1, 2, 3], + [3, 0, 1, 2], + [2, 3, 0, 1], + [1, 2, 3, 0] + ].forEach(function(e) { + if(ok[e[0]] && ok[e[1]] && ok[e[2]] && !ok[e[3]]) { + var A = xyzv[e[0]]; + var B = xyzv[e[1]]; + var C = xyzv[e[2]]; + var D = xyzv[e[3]]; + + if(drawingSpaceframe) { + result = drawTri(style, [A, B, C], [abcd[e[0]], abcd[e[1]], abcd[e[2]]]) || result; + } else { + var p1 = calcIntersection(D, A, min, max); + var p2 = calcIntersection(D, B, min, max); + var p3 = calcIntersection(D, C, min, max); + + result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result; + } + + interpolated = true; + } + }); + if(interpolated) return result; + + [ + [0, 1, 2, 3], + [1, 2, 3, 0], + [2, 3, 0, 1], + [3, 0, 1, 2], + [0, 2, 3, 1], + [1, 3, 2, 0] + ].forEach(function(e) { + if(ok[e[0]] && ok[e[1]] && !ok[e[2]] && !ok[e[3]]) { + var A = xyzv[e[0]]; + var B = xyzv[e[1]]; + var C = xyzv[e[2]]; + var D = xyzv[e[3]]; + + var p1 = calcIntersection(C, A, min, max); + var p2 = calcIntersection(C, B, min, max); + var p3 = calcIntersection(D, B, min, max); + var p4 = calcIntersection(D, A, min, max); + + if(drawingSpaceframe) { + result = drawTri(style, [A, p4, p1], [abcd[e[0]], -1, -1]) || result; + result = drawTri(style, [B, p2, p3], [abcd[e[1]], -1, -1]) || result; + } else { + result = drawQuad(null, [p1, p2, p3, p4], [-1, -1, -1, -1]) || result; + } + + interpolated = true; + } + }); + if(interpolated) return result; + + [ + [0, 1, 2, 3], + [1, 2, 3, 0], + [2, 3, 0, 1], + [3, 0, 1, 2] + ].forEach(function(e) { + if(ok[e[0]] && !ok[e[1]] && !ok[e[2]] && !ok[e[3]]) { + var A = xyzv[e[0]]; + var B = xyzv[e[1]]; + var C = xyzv[e[2]]; + var D = xyzv[e[3]]; + + var p1 = calcIntersection(B, A, min, max); + var p2 = calcIntersection(C, A, min, max); + var p3 = calcIntersection(D, A, min, max); + + if(drawingSpaceframe) { + result = drawTri(style, [A, p1, p2], [abcd[e[0]], -1, -1]) || result; + result = drawTri(style, [A, p2, p3], [abcd[e[0]], -1, -1]) || result; + result = drawTri(style, [A, p3, p1], [abcd[e[0]], -1, -1]) || result; + } else { + result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result; + } + + interpolated = true; + } + }); + return result; + } + + function addCube(style, p000, p001, p010, p011, p100, p101, p110, p111, min, max) { + var result = false; + + if(drawingSurface) { + if(styleIncludes(style, 'A')) { + result = tryCreateTetra(null, [p000, p001, p010, p100], min, max) || result; + } + if(styleIncludes(style, 'B')) { + result = tryCreateTetra(null, [p001, p010, p011, p111], min, max) || result; + } + if(styleIncludes(style, 'C')) { + result = tryCreateTetra(null, [p001, p100, p101, p111], min, max) || result; + } + if(styleIncludes(style, 'D')) { + result = tryCreateTetra(null, [p010, p100, p110, p111], min, max) || result; + } + if(styleIncludes(style, 'E')) { + result = tryCreateTetra(null, [p001, p010, p100, p111], min, max) || result; + } + } + + if(drawingSpaceframe) { + result = tryCreateTetra(style, [p001, p010, p100, p111], min, max) || result; + } + + return result; + } + + function addRect(style, a, b, c, d, min, max, previousResult) { + return [ + (previousResult[0] === true) ? true : + tryCreateTri(style, getXYZV([a, b, c]), [a, b, c], min, max), + (previousResult[1] === true) ? true : + tryCreateTri(style, getXYZV([c, d, a]), [c, d, a], min, max) + ]; + } + + function begin2dCell(style, p00, p01, p10, p11, min, max, isEven, previousResult) { + // used to create caps and/or slices on exact axis points + if(isEven) { + return addRect(style, p00, p01, p11, p10, min, max, previousResult); + } else { + return addRect(style, p01, p11, p10, p00, min, max, previousResult); + } + } + + function beginSection(style, i, j, k, min, max, distRatios) { + // used to create slices between axis points + + var result = false; + var A, B, C, D; + + var makeSection = function() { + result = tryCreateTri(style, [A, B, C], [-1, -1, -1], min, max) || result; + result = tryCreateTri(style, [C, D, A], [-1, -1, -1], min, max) || result; + }; + + var rX = distRatios[0]; + var rY = distRatios[1]; + var rZ = distRatios[2]; + + if(rX) { + A = getBetween(getXYZV([getIndex(i, j - 0, k - 0)])[0], getXYZV([getIndex(i - 1, j - 0, k - 0)])[0], rX); + B = getBetween(getXYZV([getIndex(i, j - 0, k - 1)])[0], getXYZV([getIndex(i - 1, j - 0, k - 1)])[0], rX); + C = getBetween(getXYZV([getIndex(i, j - 1, k - 1)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rX); + D = getBetween(getXYZV([getIndex(i, j - 1, k - 0)])[0], getXYZV([getIndex(i - 1, j - 1, k - 0)])[0], rX); + makeSection(); + } + + if(rY) { + A = getBetween(getXYZV([getIndex(i - 0, j, k - 0)])[0], getXYZV([getIndex(i - 0, j - 1, k - 0)])[0], rY); + B = getBetween(getXYZV([getIndex(i - 0, j, k - 1)])[0], getXYZV([getIndex(i - 0, j - 1, k - 1)])[0], rY); + C = getBetween(getXYZV([getIndex(i - 1, j, k - 1)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rY); + D = getBetween(getXYZV([getIndex(i - 1, j, k - 0)])[0], getXYZV([getIndex(i - 1, j - 1, k - 0)])[0], rY); + makeSection(); + } + + if(rZ) { + A = getBetween(getXYZV([getIndex(i - 0, j - 0, k)])[0], getXYZV([getIndex(i - 0, j - 0, k - 1)])[0], rZ); + B = getBetween(getXYZV([getIndex(i - 0, j - 1, k)])[0], getXYZV([getIndex(i - 0, j - 1, k - 1)])[0], rZ); + C = getBetween(getXYZV([getIndex(i - 1, j - 1, k)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rZ); + D = getBetween(getXYZV([getIndex(i - 1, j - 0, k)])[0], getXYZV([getIndex(i - 1, j - 0, k - 1)])[0], rZ); + makeSection(); + } + + return result; + } + + function begin3dCell(style, p000, p001, p010, p011, p100, p101, p110, p111, min, max, isEven) { + // used to create spaceframe and/or iso-surfaces + + var cellStyle = style; + if(isEven) { + if(drawingSurface && style === 'even') cellStyle = null; + return addCube(cellStyle, p000, p001, p010, p011, p100, p101, p110, p111, min, max); + } else { + if(drawingSurface && style === 'odd') cellStyle = null; + return addCube(cellStyle, p111, p110, p101, p100, p011, p010, p001, p000, min, max); + } + } + + function draw2dX(style, items, min, max, previousResult) { + var result = []; + var n = 0; + for(var q = 0; q < items.length; q++) { + var i = items[q]; + for(var k = 1; k < depth; k++) { + for(var j = 1; j < height; j++) { + result.push( + begin2dCell(style, + getIndex(i, j - 1, k - 1), + getIndex(i, j - 1, k), + getIndex(i, j, k - 1), + getIndex(i, j, k), + min, + max, + (i + j + k) % 2, + (previousResult && previousResult[n]) ? previousResult[n] : [] + ) + ); + n++; + } + } + } + return result; + } + + function draw2dY(style, items, min, max, previousResult) { + var result = []; + var n = 0; + for(var q = 0; q < items.length; q++) { + var j = items[q]; + for(var i = 1; i < width; i++) { + for(var k = 1; k < depth; k++) { + result.push( + begin2dCell(style, + getIndex(i - 1, j, k - 1), + getIndex(i, j, k - 1), + getIndex(i - 1, j, k), + getIndex(i, j, k), + min, + max, + (i + j + k) % 2, + (previousResult && previousResult[n]) ? previousResult[n] : [] + ) + ); + n++; + } + } + } + return result; + } + + function draw2dZ(style, items, min, max, previousResult) { + var result = []; + var n = 0; + for(var q = 0; q < items.length; q++) { + var k = items[q]; + for(var j = 1; j < height; j++) { + for(var i = 1; i < width; i++) { + result.push( + begin2dCell(style, + getIndex(i - 1, j - 1, k), + getIndex(i - 1, j, k), + getIndex(i, j - 1, k), + getIndex(i, j, k), + min, + max, + (i + j + k) % 2, + (previousResult && previousResult[n]) ? previousResult[n] : [] + ) + ); + n++; + } + } + } + return result; + } + + function draw3d(style, min, max) { + for(var k = 1; k < depth; k++) { + for(var j = 1; j < height; j++) { + for(var i = 1; i < width; i++) { + begin3dCell(style, + getIndex(i - 1, j - 1, k - 1), + getIndex(i - 1, j - 1, k), + getIndex(i - 1, j, k - 1), + getIndex(i - 1, j, k), + getIndex(i, j - 1, k - 1), + getIndex(i, j - 1, k), + getIndex(i, j, k - 1), + getIndex(i, j, k), + min, + max, + (i + j + k) % 2 + ); + } + } + } + } + + function drawSpaceframe(style, min, max) { + drawingSpaceframe = true; + draw3d(style, min, max); + drawingSpaceframe = false; + } + + function drawSurface(style, min, max) { + drawingSurface = true; + draw3d(style, min, max); + drawingSurface = false; + } + + function drawSectionX(style, items, min, max, distRatios, previousResult) { + var result = []; + var n = 0; + for(var q = 0; q < items.length; q++) { + var i = items[q]; + for(var k = 1; k < depth; k++) { + for(var j = 1; j < height; j++) { + result.push( + beginSection(style, i, j, k, min, max, distRatios[q], + (previousResult && previousResult[n]) ? previousResult[n] : [] + ) + ); + n++; + } + } + } + return result; + } + + function drawSectionY(style, items, min, max, distRatios, previousResult) { + var result = []; + var n = 0; + for(var q = 0; q < items.length; q++) { + var j = items[q]; + for(var i = 1; i < width; i++) { + for(var k = 1; k < depth; k++) { + result.push( + beginSection(style, i, j, k, min, max, distRatios[q], + (previousResult && previousResult[n]) ? previousResult[n] : [] + ) + ); + n++; + } + } + } + return result; + } + + function drawSectionZ(style, items, min, max, distRatios, previousResult) { + var result = []; + var n = 0; + for(var q = 0; q < items.length; q++) { + var k = items[q]; + for(var j = 1; j < height; j++) { + for(var i = 1; i < width; i++) { + result.push( + beginSection(style, i, j, k, min, max, distRatios[q], + (previousResult && previousResult[n]) ? previousResult[n] : [] + ) + ); + n++; + } + } + } + return result; + } + + function createRange(a, b) { + var range = []; + for(var q = a; q < b; q++) { + range.push(q); + } + return range; + } + + function insertGridPoints() { + for(var i = 0; i < width; i++) { + for(var j = 0; j < height; j++) { + for(var k = 0; k < depth; k++) { + var index = getIndex(i, j, k); + addVertex( + data._x[index], + data._y[index], + data._z[index], + data._value[index] + ); + } + } + } + } + + function drawAll() { + emptyVertices(); + + // insert grid points + insertGridPoints(); + + var activeStyle = null; + + // draw spaceframes + if(showSpaceframe && spaceframeFill) { + setFill(spaceframeFill); + + drawSpaceframe(activeStyle, vMin, vMax); + } + + // draw iso-surfaces + if(showSurface && surfaceFill) { + setFill(surfaceFill); + + var surfacePattern = data.surface.pattern; + var surfaceCount = data.surface.count; + for(var q = 0; q < surfaceCount; q++) { + var ratio = (surfaceCount === 1) ? 0.5 : q / (surfaceCount - 1); + var level = (1 - ratio) * vMin + ratio * vMax; + + var d1 = Math.abs(level - minValues); + var d2 = Math.abs(level - maxValues); + var ranges = (d1 > d2) ? + [minValues, level] : + [level, maxValues]; + + drawSurface(surfacePattern, ranges[0], ranges[1]); + } + } + + var setupMinMax = [ + [ Math.min(vMin, maxValues), Math.max(vMin, maxValues) ], + [ Math.min(minValues, vMax), Math.max(minValues, vMax) ] + ]; + + ['x', 'y', 'z'].forEach(function(e) { + var preRes = []; + for(var s = 0; s < setupMinMax.length; s++) { + var count = 0; + + var activeMin = setupMinMax[s][0]; + var activeMax = setupMinMax[s][1]; + + // draw slices + var slice = data.slices[e]; + if(slice.show && slice.fill) { + setFill(slice.fill); + + var exactIndices = []; + var ceilIndices = []; + var distRatios = []; + if(slice.locations.length) { + for(var q = 0; q < slice.locations.length; q++) { + var near = findNearestOnAxis( + slice.locations[q], + (e === 'x') ? Xs : + (e === 'y') ? Ys : Zs + ); + + if(near.distRatio === 0) { + exactIndices.push(near.id); + } else if(near.id > 0) { + ceilIndices.push(near.id); + if(e === 'x') { + distRatios.push([near.distRatio, 0, 0]); + } else if(e === 'y') { + distRatios.push([0, near.distRatio, 0]); + } else { + distRatios.push([0, 0, near.distRatio]); + } + } + } + } else { + if(e === 'x') { + exactIndices = createRange(1, width - 1); + } else if(e === 'y') { + exactIndices = createRange(1, height - 1); + } else { + exactIndices = createRange(1, depth - 1); + } + } + + if(ceilIndices.length > 0) { + if(e === 'x') { + preRes[count] = drawSectionX(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]); + } else if(e === 'y') { + preRes[count] = drawSectionY(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]); + } else { + preRes[count] = drawSectionZ(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]); + } + count++; + } + + if(exactIndices.length > 0) { + if(e === 'x') { + preRes[count] = draw2dX(activeStyle, exactIndices, activeMin, activeMax, preRes[count]); + } else if(e === 'y') { + preRes[count] = draw2dY(activeStyle, exactIndices, activeMin, activeMax, preRes[count]); + } else { + preRes[count] = draw2dZ(activeStyle, exactIndices, activeMin, activeMax, preRes[count]); + } + count++; + } + } + + // draw caps + var cap = data.caps[e]; + if(cap.show && cap.fill) { + setFill(cap.fill); + if(e === 'x') { + preRes[count] = draw2dX(activeStyle, [0, width - 1], activeMin, activeMax, preRes[count]); + } else if(e === 'y') { + preRes[count] = draw2dY(activeStyle, [0, height - 1], activeMin, activeMax, preRes[count]); + } else { + preRes[count] = draw2dZ(activeStyle, [0, depth - 1], activeMin, activeMax, preRes[count]); + } + count++; + } + } + }); + + // remove vertices arrays (i.e. grid points) in case no face was created. + if(numFaces === 0) { + emptyVertices(); + } + + data._meshX = allXs; + data._meshY = allYs; + data._meshZ = allZs; + data._meshIntensity = allVs; + + data._Xs = Xs; + data._Ys = Ys; + data._Zs = Zs; + } + + drawAll(); + + return data; +} + +function createbar3dTrace(scene, data) { + var gl = scene.glplot.gl; + var mesh = createMesh({gl: gl}); + var result = new bar3dTrace(scene, mesh, data.uid); + + mesh._trace = result; + result.update(data); + scene.glplot.add(mesh); + return result; +} + +module.exports = { + findNearestOnAxis: findNearestOnAxis, + generateIsoMeshes: generateIsoMeshes, + createbar3dTrace: createbar3dTrace, +}; diff --git a/src/traces/bar3d/defaults.js b/src/traces/bar3d/defaults.js new file mode 100644 index 00000000000..c0553d80897 --- /dev/null +++ b/src/traces/bar3d/defaults.js @@ -0,0 +1,110 @@ +'use strict'; + +var Lib = require('../../lib'); +var Registry = require('../../registry'); +var attributes = require('./attributes'); +var colorscaleDefaults = require('../../components/colorscale/defaults'); + +function supplyDefaults(traceIn, traceOut, defaultColor, layout) { + function coerce(attr, dflt) { + return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); + } + + supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce); +} + +function supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) { + var isomin = coerce('isomin'); + var isomax = coerce('isomax'); + + if(isomax !== undefined && isomax !== null && + isomin !== undefined && isomin !== null && + isomin > isomax) { + // applying default values in this case: + traceOut.isomin = null; + traceOut.isomax = null; + } + + var x = coerce('x'); + var y = coerce('y'); + var z = coerce('z'); + var value = coerce('value'); + + if( + !x || !x.length || + !y || !y.length || + !z || !z.length || + !value || !value.length + ) { + traceOut.visible = false; + return; + } + + var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults'); + handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout); + + coerce('valuehoverformat'); + ['x', 'y', 'z'].forEach(function(dim) { + coerce(dim + 'hoverformat'); + + var capDim = 'caps.' + dim; + var showCap = coerce(capDim + '.show'); + if(showCap) { + coerce(capDim + '.fill'); + } + + var sliceDim = 'slices.' + dim; + var showSlice = coerce(sliceDim + '.show'); + if(showSlice) { + coerce(sliceDim + '.fill'); + coerce(sliceDim + '.locations'); + } + }); + + var showSpaceframe = coerce('spaceframe.show'); + if(showSpaceframe) { + coerce('spaceframe.fill'); + } + + var showSurface = coerce('surface.show'); + if(showSurface) { + coerce('surface.count'); + coerce('surface.fill'); + coerce('surface.pattern'); + } + + var showContour = coerce('contour.show'); + if(showContour) { + coerce('contour.color'); + coerce('contour.width'); + } + + // Coerce remaining properties + [ + 'text', + 'hovertext', + 'hovertemplate', + 'lighting.ambient', + 'lighting.diffuse', + 'lighting.specular', + 'lighting.roughness', + 'lighting.fresnel', + 'lighting.vertexnormalsepsilon', + 'lighting.facenormalsepsilon', + 'lightposition.x', + 'lightposition.y', + 'lightposition.z', + 'flatshading', + 'opacity' + ].forEach(function(x) { coerce(x); }); + + colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'}); + + // disable 1D transforms (for now) + traceOut._length = null; +} + +module.exports = { + supplyDefaults: supplyDefaults, + supplyIsoDefaults: supplyIsoDefaults +}; diff --git a/src/traces/bar3d/index.js b/src/traces/bar3d/index.js new file mode 100644 index 00000000000..56356d6d85a --- /dev/null +++ b/src/traces/bar3d/index.js @@ -0,0 +1,25 @@ +'use strict'; + +module.exports = { + attributes: require('./attributes'), + supplyDefaults: require('./defaults').supplyDefaults, + calc: require('./calc'), + colorbar: { + min: 'cmin', + max: 'cmax' + }, + plot: require('./convert').createbar3dTrace, + + moduleType: 'trace', + name: 'bar3d', + basePlotModule: require('../../plots/gl3d'), + categories: ['gl3d', 'showLegend'], + meta: { + description: [ + 'Draws bar3ds between iso-min and iso-max values with coordinates given by', + 'four 1-dimensional arrays containing the `value`, `x`, `y` and `z` of every vertex', + 'of a uniform or non-uniform 3-D grid. Horizontal or vertical slices, caps as well as', + 'spaceframe between iso-min and iso-max values could also be drawn using this trace.' + ].join(' ') + } +}; From 6077a3f59488826c75d389e65c1f248cc1c9de81 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Wed, 22 May 2024 10:04:23 -0400 Subject: [PATCH 3/4] voila --- src/traces/bar3d/attributes.js | 185 +- src/traces/bar3d/calc.js | 46 +- src/traces/bar3d/convert.js | 927 ++-------- src/traces/bar3d/defaults.js | 64 +- src/traces/bar3d/index.js | 9 +- .../baselines/zz-gl3d_bars-coloring_color.png | Bin 0 -> 41047 bytes .../baselines/zz-gl3d_bars-coloring_fill.png | Bin 0 -> 58104 bytes .../zz-gl3d_bars-coloring_heatmap.png | Bin 0 -> 94674 bytes .../baselines/zz-gl3d_bars-fill_base.png | Bin 0 -> 91294 bytes .../baselines/zz-gl3d_bars-fill_some.png | Bin 0 -> 135898 bytes .../mocks/zz-gl3d_bars-coloring_color.json | 75 + .../mocks/zz-gl3d_bars-coloring_fill.json | 74 + .../mocks/zz-gl3d_bars-coloring_heatmap.json | 74 + test/image/mocks/zz-gl3d_bars-fill_base.json | 73 + test/image/mocks/zz-gl3d_bars-fill_some.json | 74 + test/plot-schema.json | 1504 +++++++++++++++++ 16 files changed, 2084 insertions(+), 1021 deletions(-) create mode 100644 test/image/baselines/zz-gl3d_bars-coloring_color.png create mode 100644 test/image/baselines/zz-gl3d_bars-coloring_fill.png create mode 100644 test/image/baselines/zz-gl3d_bars-coloring_heatmap.png create mode 100644 test/image/baselines/zz-gl3d_bars-fill_base.png create mode 100644 test/image/baselines/zz-gl3d_bars-fill_some.png create mode 100644 test/image/mocks/zz-gl3d_bars-coloring_color.json create mode 100644 test/image/mocks/zz-gl3d_bars-coloring_fill.json create mode 100644 test/image/mocks/zz-gl3d_bars-coloring_heatmap.json create mode 100644 test/image/mocks/zz-gl3d_bars-fill_base.json create mode 100644 test/image/mocks/zz-gl3d_bars-fill_some.json diff --git a/src/traces/bar3d/attributes.js b/src/traces/bar3d/attributes.js index cb00ecbef76..9b0fd2e719c 100644 --- a/src/traces/bar3d/attributes.js +++ b/src/traces/bar3d/attributes.js @@ -9,121 +9,86 @@ var baseAttrs = require('../../plots/attributes'); var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; -function makeSliceAttr(axLetter) { - return { - show: { - valType: 'boolean', - dflt: false, - description: [ - 'Determines whether or not slice planes about the', axLetter, - 'dimension are drawn.' - ].join(' ') - }, - locations: { - valType: 'data_array', - dflt: [], - description: [ - 'Specifies the location(s) of slices on the axis.', - 'When not specified slices would be created for', - 'all points of the axis', axLetter, 'except start and end.' - ].join(' ') - }, - fill: { - valType: 'number', - min: 0, - max: 1, - dflt: 1, - description: [ - 'Sets the fill ratio of the `slices`. The default fill value of the', - '`slices` is 1 meaning that they are entirely shaded. On the other hand', - 'Applying a `fill` ratio less than one would allow the creation of', - 'openings parallel to the edges.' - ].join(' ') - } - }; -} - -function makeCapAttr(axLetter) { - return { - show: { - valType: 'boolean', - dflt: true, - description: [ - 'Sets the fill ratio of the `slices`. The default fill value of the', axLetter, - '`slices` is 1 meaning that they are entirely shaded. On the other hand', - 'Applying a `fill` ratio less than one would allow the creation of', - 'openings parallel to the edges.' - ].join(' ') - }, - fill: { - valType: 'number', - min: 0, - max: 1, - dflt: 1, - description: [ - 'Sets the fill ratio of the `caps`. The default fill value of the', - '`caps` is 1 meaning that they are entirely shaded. On the other hand', - 'Applying a `fill` ratio less than one would allow the creation of', - 'openings parallel to the edges.' - ].join(' ') - } - }; -} - var attrs = module.exports = overrideAll(extendFlat({ x: { valType: 'data_array', description: [ - 'Sets the X coordinates of the vertices on X axis.' + 'Sets the X coordinates of bars on X axis.' ].join(' ') }, y: { valType: 'data_array', description: [ - 'Sets the Y coordinates of the vertices on Y axis.' + 'Sets the Y coordinates of bars on Y axis.' ].join(' ') }, - z: { + base: { valType: 'data_array', description: [ - 'Sets the Z coordinates of the vertices on Z axis.' + 'Sets the Z coordinates (i.e. the base) of bars on Z axis.' ].join(' ') }, value: { valType: 'data_array', description: [ - 'Sets the 4th dimension (value) of the vertices.' + 'Sets the height of bars.' ].join(' ') }, - isomin: { + + showbase: { + valType: 'boolean', + dflt: false, + editType: 'calc', + description: [ + 'Determines whether or not the base of a bar is filled.' + ].join(' ') + }, + + xgap: { valType: 'number', + min: 0, + max: 1, + dflt: 0.2, + editType: 'calc', description: [ - 'Sets the minimum boundary for iso-surface plot.' + 'Sets the gap (in plot fraction) between bars of', + 'adjacent location coordinates on X axis.' ].join(' ') }, - isomax: { + + ygap: { valType: 'number', + min: 0, + max: 1, + dflt: 0.2, + editType: 'calc', description: [ - 'Sets the maximum boundary for iso-surface plot.' + 'Sets the gap (in plot fraction) between bars of', + 'adjacent location coordinates on Y axis.' ].join(' ') }, - surface: { - show: { - valType: 'boolean', - dflt: true, + marker: { + color: { + valType: 'color', + dflt: '#eee', // TODO: Is this a good default? + // TODO: support arrayOk + editType: 'calc', description: [ - 'Hides/displays surfaces between minimum and maximum iso-values.' + 'Sets the color of the whole mesh if `coloring` is set to *color*.' ].join(' ') }, - count: { - valType: 'integer', - dflt: 2, - min: 1, + coloring: { + valType: 'enumerated', + values: ['color', 'fill', 'heatmap'], + dflt: 'heatmap', + editType: 'calc', description: [ - 'Sets the number of iso-surfaces between minimum and maximum iso-values.', - 'By default this value is 2 meaning that only minimum and maximum surfaces', - 'would be drawn.' + 'Determines the coloring method showing the bar values.', + 'If *color*, *marker.color* is used for all bars.', + 'If *fill*, coloring is done evenly across a single bar.', + 'If *heatmap*, a heatmap gradient coloring is applied', + 'between each level from bottom to top.' ].join(' ') }, fill: { @@ -132,62 +97,12 @@ var attrs = module.exports = overrideAll(extendFlat({ max: 1, dflt: 1, description: [ - 'Sets the fill ratio of the iso-surface. The default fill value of the', - 'surface is 1 meaning that they are entirely shaded. On the other hand', - 'Applying a `fill` ratio less than one would allow the creation of', - 'openings parallel to the edges.' - ].join(' ') - }, - pattern: { - valType: 'flaglist', - flags: ['A', 'B', 'C', 'D', 'E'], - extras: ['all', 'odd', 'even'], - dflt: 'all', - description: [ - 'Sets the surface pattern of the iso-surface 3-D sections. The default pattern of', - 'the surface is `all` meaning that the rest of surface elements would be shaded.', - 'The check options (either 1 or 2) could be used to draw half of the squares', - 'on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E`', - 'may also be used to reduce the number of triangles on the iso-surfaces and', - 'creating other patterns of interest.' - ].join(' ') - } - }, - - spaceframe: { - show: { - valType: 'boolean', - dflt: false, - description: [ - 'Displays/hides tetrahedron shapes between minimum and', - 'maximum iso-values. Often useful when either caps or', - 'surfaces are disabled or filled with values less than 1.' - ].join(' ') - }, - fill: { - valType: 'number', - min: 0, - max: 1, - dflt: 0.15, - description: [ - 'Sets the fill ratio of the `spaceframe` elements. The default fill value', + 'Sets the fill ratio of the `marker` elements. The default fill value', 'is 0.15 meaning that only 15% of the area of every faces of tetras would be', 'shaded. Applying a greater `fill` ratio would allow the creation of stronger', 'elements or could be sued to have entirely closed areas (in case of using 1).' ].join(' ') - } - }, - - slices: { - x: makeSliceAttr('x'), - y: makeSliceAttr('y'), - z: makeSliceAttr('z') - }, - - caps: { - x: makeCapAttr('x'), - y: makeCapAttr('y'), - z: makeCapAttr('z') + }, }, text: { @@ -232,5 +147,5 @@ colorScaleAttrs('', { // required defaults to speed up surface normal calculations attrs.flatshading.dflt = true; attrs.lighting.facenormalsepsilon.dflt = 0; -attrs.x.editType = attrs.y.editType = attrs.z.editType = attrs.value.editType = 'calc+clearAxisTypes'; +attrs.x.editType = attrs.y.editType = attrs.base.editType = attrs.value.editType = 'calc+clearAxisTypes'; attrs.transforms = undefined; diff --git a/src/traces/bar3d/calc.js b/src/traces/bar3d/calc.js index 8e425d2ab1a..de780474f9a 100644 --- a/src/traces/bar3d/calc.js +++ b/src/traces/bar3d/calc.js @@ -1,44 +1,44 @@ 'use strict'; var colorscaleCalc = require('../../components/colorscale/calc'); -var processGrid = require('../streamtube/calc').processGrid; var filter = require('../streamtube/calc').filter; module.exports = function calc(gd, trace) { - trace._len = Math.min( + var i; + var len = Math.min( trace.x.length, trace.y.length, - trace.z.length, trace.value.length ); - trace._x = filter(trace.x, trace._len); - trace._y = filter(trace.y, trace._len); - trace._z = filter(trace.z, trace._len); - trace._value = filter(trace.value, trace._len); + trace._len = len; + trace._value = filter(trace.value, len); + trace._Xs = filter(trace.x, len); + trace._Ys = filter(trace.y, len); - var grid = processGrid(trace); - trace._gridFill = grid.fill; - trace._Xs = grid.Xs; - trace._Ys = grid.Ys; - trace._Zs = grid.Zs; - trace._len = grid.len; + if(!trace.base) trace.base = new Array(len).fill(0); // TODO: Improve me! + trace.z = trace.base; // TODO: why we need to add z to trace? + + trace._Zs = filter(trace.base, len); + + for(i = 0; i < trace._Zs.length; i++) { + var base = trace._Zs[i]; + if(!base || isNaN(base)) trace._Zs[i] = 0; + } var min = Infinity; var max = -Infinity; - for(var i = 0; i < trace._len; i++) { - var v = trace._value[i]; - min = Math.min(min, v); - max = Math.max(max, v); - } + for(i = 0; i < trace._len; i++) { + var h = + trace._Zs[i] + + trace._value[i]; - trace._minValues = min; - trace._maxValues = max; - trace._vMin = (trace.isomin === undefined || trace.isomin === null) ? min : trace.isomin; - trace._vMax = (trace.isomax === undefined || trace.isomin === null) ? max : trace.isomax; + min = Math.min(min, h); + max = Math.max(max, h); + } colorscaleCalc(gd, trace, { - vals: [trace._vMin, trace._vMax], + vals: [min, max], containerStr: '', cLetter: 'c' }); diff --git a/src/traces/bar3d/convert.js b/src/traces/bar3d/convert.js index 933af645cc7..f4325a33794 100644 --- a/src/traces/bar3d/convert.js +++ b/src/traces/bar3d/convert.js @@ -7,24 +7,7 @@ var str2RgbaArray = require('../../lib/str2rgbarray'); var extractOpts = require('../../components/colorscale').extractOpts; var zip3 = require('../../plots/gl3d/zip3'); -var findNearestOnAxis = function(w, arr) { - for(var q = arr.length - 1; q > 0; q--) { - var min = Math.min(arr[q], arr[q - 1]); - var max = Math.max(arr[q], arr[q - 1]); - if(max > min && min < w && w <= max) { - return { - id: q, - distRatio: (max - w) / (max - min) - }; - } - } - return { - id: 0, - distRatio: 0 - }; -}; - -function bar3dTrace(scene, mesh, uid) { +function Bar3dTrace(scene, mesh, uid) { this.scene = scene; this.uid = uid; this.mesh = mesh; @@ -33,29 +16,20 @@ function bar3dTrace(scene, mesh, uid) { this.showContour = false; } -var proto = bar3dTrace.prototype; +var proto = Bar3dTrace.prototype; proto.handlePick = function(selection) { if(selection.object === this.mesh) { var rawId = selection.data.index; - var x = this.data._meshX[rawId]; - var y = this.data._meshY[rawId]; - var z = this.data._meshZ[rawId]; - - var height = this.data._Ys.length; - var depth = this.data._Zs.length; + var selectIndex = selection.index = this.data._meshG[rawId]; - var i = findNearestOnAxis(x, this.data._Xs).id; - var j = findNearestOnAxis(y, this.data._Ys).id; - var k = findNearestOnAxis(z, this.data._Zs).id; - - var selectIndex = selection.index = k + depth * j + depth * height * i; + if(selectIndex === -1) return false; selection.traceCoordinate = [ - this.data._meshX[selectIndex], - this.data._meshY[selectIndex], - this.data._meshZ[selectIndex], + this.data._Xs[selectIndex], + this.data._Ys[selectIndex], + this.data._Zs[selectIndex] + this.data._value[selectIndex] ]; @@ -74,7 +48,7 @@ proto.update = function(data) { var scene = this.scene; var layout = scene.fullSceneLayout; - this.data = generateIsoMeshes(data); + this.data = generateMeshes(data); // Unpack position data function toDataCoords(axis, coord, scale, calendar) { @@ -109,9 +83,14 @@ proto.update = function(data) { }; var cOpts = extractOpts(data); - config.vertexIntensity = data._meshIntensity; - config.vertexIntensityBounds = [cOpts.min, cOpts.max]; - config.colormap = parseColorScale(data); + var color = data.marker.color; + if(!color) { + config.vertexIntensity = data._meshIntensity; + config.vertexIntensityBounds = [cOpts.min, cOpts.max]; + config.colormap = parseColorScale(data); + } else { + config.meshColor = str2RgbaArray(color); + } // Update mesh this.mesh.update(config); @@ -122,68 +101,31 @@ proto.dispose = function() { this.mesh.dispose(); }; -var GRID_TYPES = ['xyz', 'xzy', 'yxz', 'yzx', 'zxy', 'zyx']; - -function generateIsoMeshes(data) { +function generateMeshes(data) { data._meshI = []; data._meshJ = []; data._meshK = []; - var showSurface = data.surface.show; - var showSpaceframe = data.spaceframe.show; - - var surfaceFill = data.surface.fill; - var spaceframeFill = data.spaceframe.fill; - - var drawingSurface = false; - var drawingSpaceframe = false; + var markerFill = data.marker.fill; + var numGroups = 0; var numFaces = 0; - var numVertices; + var numVertices = 0; var beginVertextLength; var Xs = data._Xs; var Ys = data._Ys; var Zs = data._Zs; - var width = Xs.length; - var height = Ys.length; - var depth = Zs.length; - - var filled = GRID_TYPES.indexOf(data._gridFill.replace(/-/g, '').replace(/\+/g, '')); - - var getIndex = function(i, j, k) { - switch(filled) { - case 5: // 'zyx' - return k + depth * j + depth * height * i; - case 4: // 'zxy' - return k + depth * i + depth * width * j; - case 3: // 'yzx' - return j + height * k + height * depth * i; - case 2: // 'yxz' - return j + height * i + height * width * k; - case 1: // 'xzy' - return i + width * k + width * depth * j; - default: // case 0: // 'xyz' - return i + width * j + width * height * k; - } - }; - - var minValues = data._minValues; - var maxValues = data._maxValues; - - var vMin = data._vMin; - var vMax = data._vMax; - - var allXs; - var allYs; - var allZs; - var allVs; + var allXs = []; + var allYs = []; + var allZs = []; + var allQs = []; // store vertex color + var allGs = []; // store group ids function findVertexId(x, y, z) { // could be used to find the vertex id of previously generated vertex within the group - - var len = allVs.length; + var len = allZs.length; for(var f = beginVertextLength; f < len; f++) { if( x === allXs[f] && @@ -198,23 +140,15 @@ function generateIsoMeshes(data) { function beginGroup() { beginVertextLength = numVertices; + numGroups++; } - function emptyVertices() { - allXs = []; - allYs = []; - allZs = []; - allVs = []; - numVertices = 0; - - beginGroup(); - } - - function addVertex(x, y, z, v) { + function addVertex(x, y, z, q, withHover) { allXs.push(x); allYs.push(y); allZs.push(z); - allVs.push(v); + allQs.push(q); + allGs.push(withHover ? numGroups : -1); numVertices++; return numVertices - 1; @@ -229,10 +163,10 @@ function generateIsoMeshes(data) { return numFaces - 1; } - function getCenter(A, B, C) { + function getCenter(A, B, C, D) { var M = []; for(var i = 0; i < A.length; i++) { - M[i] = (A[i] + B[i] + C[i]) / 3.0; + M[i] = (A[i] + B[i] + C[i] + D[i]) / 4.0; } return M; } @@ -250,75 +184,74 @@ function generateIsoMeshes(data) { activeFill = fill; } - function createOpenTri(xyzv, abc) { - var A = xyzv[0]; - var B = xyzv[1]; - var C = xyzv[2]; - var G = getCenter(A, B, C); + function createOpenRect(xyz, abcd) { + var A = xyz[0]; + var B = xyz[1]; + var C = xyz[2]; + var D = xyz[3]; + var G = getCenter(A, B, C, D); var r = Math.sqrt(1 - activeFill); var p1 = getBetween(G, A, r); var p2 = getBetween(G, B, r); var p3 = getBetween(G, C, r); + var p4 = getBetween(G, D, r); - var a = abc[0]; - var b = abc[1]; - var c = abc[2]; + var a = abcd[0]; + var b = abcd[1]; + var c = abcd[2]; + var d = abcd[3]; return { - xyzv: [ + xyz: [ [A, B, p2], [p2, p1, A], [B, C, p3], [p3, p2, B], - [C, A, p1], [p1, p3, C] + [C, D, p4], [p4, p3, C], + [D, A, p1], [p1, p4, D] ], abc: [ [a, b, -1], [-1, -1, a], [b, c, -1], [-1, -1, b], - [c, a, -1], [-1, -1, c] + [c, d, -1], [-1, -1, c], + [d, a, -1], [-1, -1, d] ] }; } - function styleIncludes(style, char) { - if(style === 'all' || style === null) return true; - return (style.indexOf(char) > -1); - } - - function mapValue(style, value) { - if(style === null) return value; - return style; - } - - function drawTri(style, xyzv, abc) { - beginGroup(); - - var allXYZVs = [xyzv]; - var allABCs = [abc]; - if(activeFill >= 1) { - allXYZVs = [xyzv]; - allABCs = [abc]; - } else if(activeFill > 0) { - var openTri = createOpenTri(xyzv, abc); - allXYZVs = openTri.xyzv; - allABCs = openTri.abc; + function drawRect(xyz, abcd) { + var allXYZs; + var allABCs; + if(activeFill < 1) { + var openRect = createOpenRect(xyz, abcd); + allXYZs = openRect.xyz; + allABCs = openRect.abc; + } else { + allXYZs = [ + [xyz[0], xyz[1], xyz[2]], + [xyz[2], xyz[3], xyz[0]], + ]; + allABCs = [ + [abcd[0], abcd[1], abcd[2]], + [abcd[2], abcd[3], abcd[0]], + ]; } - for(var f = 0; f < allXYZVs.length; f++) { - xyzv = allXYZVs[f]; - abc = allABCs[f]; + for(var f = 0; f < allXYZs.length; f++) { + xyz = allXYZs[f]; + var abc = allABCs[f]; var pnts = []; for(var i = 0; i < 3; i++) { - var x = xyzv[i][0]; - var y = xyzv[i][1]; - var z = xyzv[i][2]; - var v = xyzv[i][3]; + var x = xyz[i][0]; + var y = xyz[i][1]; + var z = xyz[i][2]; + var q = xyz[i][3]; var id = (abc[i] > -1) ? abc[i] : findVertexId(x, y, z); if(id > -1) { pnts[i] = id; } else { - pnts[i] = addVertex(x, y, z, mapValue(style, v)); + pnts[i] = addVertex(x, y, z, q, false); } } @@ -326,698 +259,82 @@ function generateIsoMeshes(data) { } } - function drawQuad(style, xyzv, abcd) { - var makeTri = function(i, j, k) { - drawTri(style, [xyzv[i], xyzv[j], xyzv[k]], [abcd[i], abcd[j], abcd[k]]); - }; - - makeTri(0, 1, 2); - makeTri(2, 3, 0); - } - - function drawTetra(style, xyzv, abcd) { - var makeTri = function(i, j, k) { - drawTri(style, [xyzv[i], xyzv[j], xyzv[k]], [abcd[i], abcd[j], abcd[k]]); - }; - - makeTri(0, 1, 2); - makeTri(3, 0, 1); - makeTri(2, 3, 0); - makeTri(1, 2, 3); - } - - function calcIntersection(pointOut, pointIn, min, max) { - var value = pointOut[3]; - - if(value < min) value = min; - if(value > max) value = max; - - var ratio = (pointOut[3] - value) / (pointOut[3] - pointIn[3] + 0.000000001); // we had to add this error to force solve the tiny caps - - var result = []; - for(var s = 0; s < 4; s++) { - result[s] = (1 - ratio) * pointOut[s] + ratio * pointIn[s]; - } - return result; - } - - function inRange(value, min, max) { - return ( - value >= min && - value <= max - ); - } - - function almostInFinalRange(value) { - var vErr = 0.001 * (vMax - vMin); - return ( - value >= vMin - vErr && - value <= vMax + vErr - ); - } - - function getXYZV(indecies) { - var xyzv = []; - for(var q = 0; q < 4; q++) { - var index = indecies[q]; - xyzv.push( + function createRect(abcd) { + var xyz = []; + for(var i = 0; i < 4; i++) { + var index = abcd[i]; + xyz.push( [ - data._x[index], - data._y[index], - data._z[index], - data._value[index] + allXs[index], + allYs[index], + allZs[index] ] ); } - return xyzv; - } - - var MAX_PASS = 3; - - function tryCreateTri(style, xyzv, abc, min, max, nPass) { - if(!nPass) nPass = 1; - - abc = [-1, -1, -1]; // Note: for the moment we override indices - // to run faster! But it is possible to comment this line - // to reduce the number of vertices. - - var result = false; - - var ok = [ - inRange(xyzv[0][3], min, max), - inRange(xyzv[1][3], min, max), - inRange(xyzv[2][3], min, max) - ]; - - if(!ok[0] && !ok[1] && !ok[2]) { - return false; - } - - var tryDrawTri = function(style, xyzv, abc) { - if( // we check here if the points are in `real` iso-min/max range - almostInFinalRange(xyzv[0][3]) && - almostInFinalRange(xyzv[1][3]) && - almostInFinalRange(xyzv[2][3]) - ) { - drawTri(style, xyzv, abc); - return true; - } else if(nPass < MAX_PASS) { - return tryCreateTri(style, xyzv, abc, vMin, vMax, ++nPass); // i.e. second pass using actual vMin vMax bounds - } - return false; - }; - - if(ok[0] && ok[1] && ok[2]) { - return tryDrawTri(style, xyzv, abc) || result; - } - - var interpolated = false; - - [ - [0, 1, 2], - [2, 0, 1], - [1, 2, 0] - ].forEach(function(e) { - if(ok[e[0]] && ok[e[1]] && !ok[e[2]]) { - var A = xyzv[e[0]]; - var B = xyzv[e[1]]; - var C = xyzv[e[2]]; - - var p1 = calcIntersection(C, A, min, max); - var p2 = calcIntersection(C, B, min, max); - - result = tryDrawTri(style, [p2, p1, A], [-1, -1, abc[e[0]]]) || result; - result = tryDrawTri(style, [A, B, p2], [abc[e[0]], abc[e[1]], -1]) || result; - - interpolated = true; - } - }); - if(interpolated) return result; - - [ - [0, 1, 2], - [1, 2, 0], - [2, 0, 1] - ].forEach(function(e) { - if(ok[e[0]] && !ok[e[1]] && !ok[e[2]]) { - var A = xyzv[e[0]]; - var B = xyzv[e[1]]; - var C = xyzv[e[2]]; - - var p1 = calcIntersection(B, A, min, max); - var p2 = calcIntersection(C, A, min, max); - - result = tryDrawTri(style, [p2, p1, A], [-1, -1, abc[e[0]]]) || result; - - interpolated = true; - } - }); - return result; - } - - function tryCreateTetra(style, abcd, min, max) { - var result = false; - - var xyzv = getXYZV(abcd); - - var ok = [ - inRange(xyzv[0][3], min, max), - inRange(xyzv[1][3], min, max), - inRange(xyzv[2][3], min, max), - inRange(xyzv[3][3], min, max) - ]; - - if(!ok[0] && !ok[1] && !ok[2] && !ok[3]) { - return result; - } - - if(ok[0] && ok[1] && ok[2] && ok[3]) { - if(drawingSpaceframe) { - result = drawTetra(style, xyzv, abcd) || result; - } - return result; - } - - var interpolated = false; - - [ - [0, 1, 2, 3], - [3, 0, 1, 2], - [2, 3, 0, 1], - [1, 2, 3, 0] - ].forEach(function(e) { - if(ok[e[0]] && ok[e[1]] && ok[e[2]] && !ok[e[3]]) { - var A = xyzv[e[0]]; - var B = xyzv[e[1]]; - var C = xyzv[e[2]]; - var D = xyzv[e[3]]; - - if(drawingSpaceframe) { - result = drawTri(style, [A, B, C], [abcd[e[0]], abcd[e[1]], abcd[e[2]]]) || result; - } else { - var p1 = calcIntersection(D, A, min, max); - var p2 = calcIntersection(D, B, min, max); - var p3 = calcIntersection(D, C, min, max); - - result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result; - } - - interpolated = true; - } - }); - if(interpolated) return result; - - [ - [0, 1, 2, 3], - [1, 2, 3, 0], - [2, 3, 0, 1], - [3, 0, 1, 2], - [0, 2, 3, 1], - [1, 3, 2, 0] - ].forEach(function(e) { - if(ok[e[0]] && ok[e[1]] && !ok[e[2]] && !ok[e[3]]) { - var A = xyzv[e[0]]; - var B = xyzv[e[1]]; - var C = xyzv[e[2]]; - var D = xyzv[e[3]]; - - var p1 = calcIntersection(C, A, min, max); - var p2 = calcIntersection(C, B, min, max); - var p3 = calcIntersection(D, B, min, max); - var p4 = calcIntersection(D, A, min, max); - - if(drawingSpaceframe) { - result = drawTri(style, [A, p4, p1], [abcd[e[0]], -1, -1]) || result; - result = drawTri(style, [B, p2, p3], [abcd[e[1]], -1, -1]) || result; - } else { - result = drawQuad(null, [p1, p2, p3, p4], [-1, -1, -1, -1]) || result; - } - - interpolated = true; - } - }); - if(interpolated) return result; - - [ - [0, 1, 2, 3], - [1, 2, 3, 0], - [2, 3, 0, 1], - [3, 0, 1, 2] - ].forEach(function(e) { - if(ok[e[0]] && !ok[e[1]] && !ok[e[2]] && !ok[e[3]]) { - var A = xyzv[e[0]]; - var B = xyzv[e[1]]; - var C = xyzv[e[2]]; - var D = xyzv[e[3]]; - - var p1 = calcIntersection(B, A, min, max); - var p2 = calcIntersection(C, A, min, max); - var p3 = calcIntersection(D, A, min, max); - - if(drawingSpaceframe) { - result = drawTri(style, [A, p1, p2], [abcd[e[0]], -1, -1]) || result; - result = drawTri(style, [A, p2, p3], [abcd[e[0]], -1, -1]) || result; - result = drawTri(style, [A, p3, p1], [abcd[e[0]], -1, -1]) || result; - } else { - result = drawTri(null, [p1, p2, p3], [-1, -1, -1]) || result; - } - - interpolated = true; - } - }); - return result; - } - - function addCube(style, p000, p001, p010, p011, p100, p101, p110, p111, min, max) { - var result = false; - - if(drawingSurface) { - if(styleIncludes(style, 'A')) { - result = tryCreateTetra(null, [p000, p001, p010, p100], min, max) || result; - } - if(styleIncludes(style, 'B')) { - result = tryCreateTetra(null, [p001, p010, p011, p111], min, max) || result; - } - if(styleIncludes(style, 'C')) { - result = tryCreateTetra(null, [p001, p100, p101, p111], min, max) || result; - } - if(styleIncludes(style, 'D')) { - result = tryCreateTetra(null, [p010, p100, p110, p111], min, max) || result; - } - if(styleIncludes(style, 'E')) { - result = tryCreateTetra(null, [p001, p010, p100, p111], min, max) || result; - } - } - - if(drawingSpaceframe) { - result = tryCreateTetra(style, [p001, p010, p100, p111], min, max) || result; - } - - return result; - } - - function addRect(style, a, b, c, d, min, max, previousResult) { - return [ - (previousResult[0] === true) ? true : - tryCreateTri(style, getXYZV([a, b, c]), [a, b, c], min, max), - (previousResult[1] === true) ? true : - tryCreateTri(style, getXYZV([c, d, a]), [c, d, a], min, max) - ]; - } - - function begin2dCell(style, p00, p01, p10, p11, min, max, isEven, previousResult) { - // used to create caps and/or slices on exact axis points - if(isEven) { - return addRect(style, p00, p01, p11, p10, min, max, previousResult); - } else { - return addRect(style, p01, p11, p10, p00, min, max, previousResult); - } + drawRect(xyz, abcd); } - function beginSection(style, i, j, k, min, max, distRatios) { - // used to create slices between axis points - - var result = false; - var A, B, C, D; - - var makeSection = function() { - result = tryCreateTri(style, [A, B, C], [-1, -1, -1], min, max) || result; - result = tryCreateTri(style, [C, D, A], [-1, -1, -1], min, max) || result; - }; - - var rX = distRatios[0]; - var rY = distRatios[1]; - var rZ = distRatios[2]; + function addCube(p000, p001, p010, p011, p100, p101, p110, p111) { + beginGroup(); - if(rX) { - A = getBetween(getXYZV([getIndex(i, j - 0, k - 0)])[0], getXYZV([getIndex(i - 1, j - 0, k - 0)])[0], rX); - B = getBetween(getXYZV([getIndex(i, j - 0, k - 1)])[0], getXYZV([getIndex(i - 1, j - 0, k - 1)])[0], rX); - C = getBetween(getXYZV([getIndex(i, j - 1, k - 1)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rX); - D = getBetween(getXYZV([getIndex(i, j - 1, k - 0)])[0], getXYZV([getIndex(i - 1, j - 1, k - 0)])[0], rX); - makeSection(); + if(data.showbase) { + createRect([p000, p001, p011, p010]); } - if(rY) { - A = getBetween(getXYZV([getIndex(i - 0, j, k - 0)])[0], getXYZV([getIndex(i - 0, j - 1, k - 0)])[0], rY); - B = getBetween(getXYZV([getIndex(i - 0, j, k - 1)])[0], getXYZV([getIndex(i - 0, j - 1, k - 1)])[0], rY); - C = getBetween(getXYZV([getIndex(i - 1, j, k - 1)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rY); - D = getBetween(getXYZV([getIndex(i - 1, j, k - 0)])[0], getXYZV([getIndex(i - 1, j - 1, k - 0)])[0], rY); - makeSection(); - } + createRect([p111, p101, p100, p110]); - if(rZ) { - A = getBetween(getXYZV([getIndex(i - 0, j - 0, k)])[0], getXYZV([getIndex(i - 0, j - 0, k - 1)])[0], rZ); - B = getBetween(getXYZV([getIndex(i - 0, j - 1, k)])[0], getXYZV([getIndex(i - 0, j - 1, k - 1)])[0], rZ); - C = getBetween(getXYZV([getIndex(i - 1, j - 1, k)])[0], getXYZV([getIndex(i - 1, j - 1, k - 1)])[0], rZ); - D = getBetween(getXYZV([getIndex(i - 1, j - 0, k)])[0], getXYZV([getIndex(i - 1, j - 0, k - 1)])[0], rZ); - makeSection(); - } + createRect([p000, p100, p110, p010]); + createRect([p111, p101, p001, p011]); - return result; + createRect([p000, p100, p101, p001]); + createRect([p111, p110, p010, p011]); } - function begin3dCell(style, p000, p001, p010, p011, p100, p101, p110, p111, min, max, isEven) { - // used to create spaceframe and/or iso-surfaces + function draw3d() { + var rx = (1 - data.xgap) / 2; + var ry = (1 - data.ygap) / 2; - var cellStyle = style; - if(isEven) { - if(drawingSurface && style === 'even') cellStyle = null; - return addCube(cellStyle, p000, p001, p010, p011, p100, p101, p110, p111, min, max); - } else { - if(drawingSurface && style === 'odd') cellStyle = null; - return addCube(cellStyle, p111, p110, p101, p100, p011, p010, p001, p000, min, max); - } - } + for(var i = 0; i < Zs.length; i++) { + var x = Xs[i]; + var y = Ys[i]; + var z = Zs[i]; + var value = data._value[i]; + var q = z + value; - function draw2dX(style, items, min, max, previousResult) { - var result = []; - var n = 0; - for(var q = 0; q < items.length; q++) { - var i = items[q]; - for(var k = 1; k < depth; k++) { - for(var j = 1; j < height; j++) { - result.push( - begin2dCell(style, - getIndex(i, j - 1, k - 1), - getIndex(i, j - 1, k), - getIndex(i, j, k - 1), - getIndex(i, j, k), - min, - max, - (i + j + k) % 2, - (previousResult && previousResult[n]) ? previousResult[n] : [] - ) - ); - n++; - } - } - } - return result; - } + var X = [x - rx, x + rx]; + var Y = [y - ry, y + ry]; + var Z = [z, q]; - function draw2dY(style, items, min, max, previousResult) { - var result = []; - var n = 0; - for(var q = 0; q < items.length; q++) { - var j = items[q]; - for(var i = 1; i < width; i++) { - for(var k = 1; k < depth; k++) { - result.push( - begin2dCell(style, - getIndex(i - 1, j, k - 1), - getIndex(i, j, k - 1), - getIndex(i - 1, j, k), - getIndex(i, j, k), - min, - max, - (i + j + k) % 2, - (previousResult && previousResult[n]) ? previousResult[n] : [] - ) - ); - n++; - } - } - } - return result; - } + var p000 = addVertex(X[0], Y[0], Z[0], q, false); + var p001 = addVertex(X[1], Y[0], Z[0], q, false); - function draw2dZ(style, items, min, max, previousResult) { - var result = []; - var n = 0; - for(var q = 0; q < items.length; q++) { - var k = items[q]; - for(var j = 1; j < height; j++) { - for(var i = 1; i < width; i++) { - result.push( - begin2dCell(style, - getIndex(i - 1, j - 1, k), - getIndex(i - 1, j, k), - getIndex(i, j - 1, k), - getIndex(i, j, k), - min, - max, - (i + j + k) % 2, - (previousResult && previousResult[n]) ? previousResult[n] : [] - ) - ); - n++; - } - } - } - return result; - } + var p010 = addVertex(X[0], Y[1], Z[0], q, false); + var p011 = addVertex(X[1], Y[1], Z[0], q, false); - function draw3d(style, min, max) { - for(var k = 1; k < depth; k++) { - for(var j = 1; j < height; j++) { - for(var i = 1; i < width; i++) { - begin3dCell(style, - getIndex(i - 1, j - 1, k - 1), - getIndex(i - 1, j - 1, k), - getIndex(i - 1, j, k - 1), - getIndex(i - 1, j, k), - getIndex(i, j - 1, k - 1), - getIndex(i, j - 1, k), - getIndex(i, j, k - 1), - getIndex(i, j, k), - min, - max, - (i + j + k) % 2 - ); - } - } - } - } - - function drawSpaceframe(style, min, max) { - drawingSpaceframe = true; - draw3d(style, min, max); - drawingSpaceframe = false; - } - - function drawSurface(style, min, max) { - drawingSurface = true; - draw3d(style, min, max); - drawingSurface = false; - } - - function drawSectionX(style, items, min, max, distRatios, previousResult) { - var result = []; - var n = 0; - for(var q = 0; q < items.length; q++) { - var i = items[q]; - for(var k = 1; k < depth; k++) { - for(var j = 1; j < height; j++) { - result.push( - beginSection(style, i, j, k, min, max, distRatios[q], - (previousResult && previousResult[n]) ? previousResult[n] : [] - ) - ); - n++; - } - } - } - return result; - } + var p100 = addVertex(X[0], Y[0], Z[1], q, true); + var p101 = addVertex(X[1], Y[0], Z[1], q, true); - function drawSectionY(style, items, min, max, distRatios, previousResult) { - var result = []; - var n = 0; - for(var q = 0; q < items.length; q++) { - var j = items[q]; - for(var i = 1; i < width; i++) { - for(var k = 1; k < depth; k++) { - result.push( - beginSection(style, i, j, k, min, max, distRatios[q], - (previousResult && previousResult[n]) ? previousResult[n] : [] - ) - ); - n++; - } - } - } - return result; - } - - function drawSectionZ(style, items, min, max, distRatios, previousResult) { - var result = []; - var n = 0; - for(var q = 0; q < items.length; q++) { - var k = items[q]; - for(var j = 1; j < height; j++) { - for(var i = 1; i < width; i++) { - result.push( - beginSection(style, i, j, k, min, max, distRatios[q], - (previousResult && previousResult[n]) ? previousResult[n] : [] - ) - ); - n++; - } - } - } - return result; - } + var p110 = addVertex(X[0], Y[1], Z[1], q, true); + var p111 = addVertex(X[1], Y[1], Z[1], q, true); - function createRange(a, b) { - var range = []; - for(var q = a; q < b; q++) { - range.push(q); - } - return range; - } - - function insertGridPoints() { - for(var i = 0; i < width; i++) { - for(var j = 0; j < height; j++) { - for(var k = 0; k < depth; k++) { - var index = getIndex(i, j, k); - addVertex( - data._x[index], - data._y[index], - data._z[index], - data._value[index] - ); - } - } + addCube(p000, p001, p010, p011, p100, p101, p110, p111); } } function drawAll() { - emptyVertices(); - - // insert grid points - insertGridPoints(); - - var activeStyle = null; - - // draw spaceframes - if(showSpaceframe && spaceframeFill) { - setFill(spaceframeFill); - - drawSpaceframe(activeStyle, vMin, vMax); - } - - // draw iso-surfaces - if(showSurface && surfaceFill) { - setFill(surfaceFill); - - var surfacePattern = data.surface.pattern; - var surfaceCount = data.surface.count; - for(var q = 0; q < surfaceCount; q++) { - var ratio = (surfaceCount === 1) ? 0.5 : q / (surfaceCount - 1); - var level = (1 - ratio) * vMin + ratio * vMax; + // draw markers + if(markerFill) { + setFill(markerFill); - var d1 = Math.abs(level - minValues); - var d2 = Math.abs(level - maxValues); - var ranges = (d1 > d2) ? - [minValues, level] : - [level, maxValues]; - - drawSurface(surfacePattern, ranges[0], ranges[1]); - } - } - - var setupMinMax = [ - [ Math.min(vMin, maxValues), Math.max(vMin, maxValues) ], - [ Math.min(minValues, vMax), Math.max(minValues, vMax) ] - ]; - - ['x', 'y', 'z'].forEach(function(e) { - var preRes = []; - for(var s = 0; s < setupMinMax.length; s++) { - var count = 0; - - var activeMin = setupMinMax[s][0]; - var activeMax = setupMinMax[s][1]; - - // draw slices - var slice = data.slices[e]; - if(slice.show && slice.fill) { - setFill(slice.fill); - - var exactIndices = []; - var ceilIndices = []; - var distRatios = []; - if(slice.locations.length) { - for(var q = 0; q < slice.locations.length; q++) { - var near = findNearestOnAxis( - slice.locations[q], - (e === 'x') ? Xs : - (e === 'y') ? Ys : Zs - ); - - if(near.distRatio === 0) { - exactIndices.push(near.id); - } else if(near.id > 0) { - ceilIndices.push(near.id); - if(e === 'x') { - distRatios.push([near.distRatio, 0, 0]); - } else if(e === 'y') { - distRatios.push([0, near.distRatio, 0]); - } else { - distRatios.push([0, 0, near.distRatio]); - } - } - } - } else { - if(e === 'x') { - exactIndices = createRange(1, width - 1); - } else if(e === 'y') { - exactIndices = createRange(1, height - 1); - } else { - exactIndices = createRange(1, depth - 1); - } - } - - if(ceilIndices.length > 0) { - if(e === 'x') { - preRes[count] = drawSectionX(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]); - } else if(e === 'y') { - preRes[count] = drawSectionY(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]); - } else { - preRes[count] = drawSectionZ(activeStyle, ceilIndices, activeMin, activeMax, distRatios, preRes[count]); - } - count++; - } - - if(exactIndices.length > 0) { - if(e === 'x') { - preRes[count] = draw2dX(activeStyle, exactIndices, activeMin, activeMax, preRes[count]); - } else if(e === 'y') { - preRes[count] = draw2dY(activeStyle, exactIndices, activeMin, activeMax, preRes[count]); - } else { - preRes[count] = draw2dZ(activeStyle, exactIndices, activeMin, activeMax, preRes[count]); - } - count++; - } - } - - // draw caps - var cap = data.caps[e]; - if(cap.show && cap.fill) { - setFill(cap.fill); - if(e === 'x') { - preRes[count] = draw2dX(activeStyle, [0, width - 1], activeMin, activeMax, preRes[count]); - } else if(e === 'y') { - preRes[count] = draw2dY(activeStyle, [0, height - 1], activeMin, activeMax, preRes[count]); - } else { - preRes[count] = draw2dZ(activeStyle, [0, depth - 1], activeMin, activeMax, preRes[count]); - } - count++; - } - } - }); - - // remove vertices arrays (i.e. grid points) in case no face was created. - if(numFaces === 0) { - emptyVertices(); + draw3d(); } + data._meshG = allGs; data._meshX = allXs; data._meshY = allYs; data._meshZ = allZs; - data._meshIntensity = allVs; + data._meshIntensity = data.marker.coloring === 'fill' ? allQs : allZs; data._Xs = Xs; data._Ys = Ys; @@ -1029,19 +346,13 @@ function generateIsoMeshes(data) { return data; } -function createbar3dTrace(scene, data) { +module.exports = function createBar3dTrace(scene, data) { var gl = scene.glplot.gl; var mesh = createMesh({gl: gl}); - var result = new bar3dTrace(scene, mesh, data.uid); + var result = new Bar3dTrace(scene, mesh, data.uid); mesh._trace = result; result.update(data); scene.glplot.add(mesh); return result; -} - -module.exports = { - findNearestOnAxis: findNearestOnAxis, - generateIsoMeshes: generateIsoMeshes, - createbar3dTrace: createbar3dTrace, }; diff --git a/src/traces/bar3d/defaults.js b/src/traces/bar3d/defaults.js index c0553d80897..a45e127fddf 100644 --- a/src/traces/bar3d/defaults.js +++ b/src/traces/bar3d/defaults.js @@ -5,74 +5,38 @@ var Registry = require('../../registry'); var attributes = require('./attributes'); var colorscaleDefaults = require('../../components/colorscale/defaults'); -function supplyDefaults(traceIn, traceOut, defaultColor, layout) { +module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } - supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce); -} - -function supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) { - var isomin = coerce('isomin'); - var isomax = coerce('isomax'); - - if(isomax !== undefined && isomax !== null && - isomin !== undefined && isomin !== null && - isomin > isomax) { - // applying default values in this case: - traceOut.isomin = null; - traceOut.isomax = null; - } - var x = coerce('x'); var y = coerce('y'); - var z = coerce('z'); var value = coerce('value'); if( !x || !x.length || !y || !y.length || - !z || !z.length || !value || !value.length ) { traceOut.visible = false; return; } + coerce('xgap'); + coerce('ygap'); + + coerce('base'); + coerce('showbase'); + var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults'); handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout); coerce('valuehoverformat'); ['x', 'y', 'z'].forEach(function(dim) { coerce(dim + 'hoverformat'); - - var capDim = 'caps.' + dim; - var showCap = coerce(capDim + '.show'); - if(showCap) { - coerce(capDim + '.fill'); - } - - var sliceDim = 'slices.' + dim; - var showSlice = coerce(sliceDim + '.show'); - if(showSlice) { - coerce(sliceDim + '.fill'); - coerce(sliceDim + '.locations'); - } }); - var showSpaceframe = coerce('spaceframe.show'); - if(showSpaceframe) { - coerce('spaceframe.fill'); - } - - var showSurface = coerce('surface.show'); - if(showSurface) { - coerce('surface.count'); - coerce('surface.fill'); - coerce('surface.pattern'); - } - var showContour = coerce('contour.show'); if(showContour) { coerce('contour.color'); @@ -98,13 +62,15 @@ function supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) { 'opacity' ].forEach(function(x) { coerce(x); }); - colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'}); + + coerce('marker.fill'); + var coloring = coerce('marker.coloring'); + if(coloring === 'color') { + coerce('marker.color'); + } else { + colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'}); + } // disable 1D transforms (for now) traceOut._length = null; -} - -module.exports = { - supplyDefaults: supplyDefaults, - supplyIsoDefaults: supplyIsoDefaults }; diff --git a/src/traces/bar3d/index.js b/src/traces/bar3d/index.js index 56356d6d85a..6dd46ffeb2e 100644 --- a/src/traces/bar3d/index.js +++ b/src/traces/bar3d/index.js @@ -2,13 +2,13 @@ module.exports = { attributes: require('./attributes'), - supplyDefaults: require('./defaults').supplyDefaults, + supplyDefaults: require('./defaults'), calc: require('./calc'), colorbar: { min: 'cmin', max: 'cmax' }, - plot: require('./convert').createbar3dTrace, + plot: require('./convert'), moduleType: 'trace', name: 'bar3d', @@ -16,10 +16,7 @@ module.exports = { categories: ['gl3d', 'showLegend'], meta: { description: [ - 'Draws bar3ds between iso-min and iso-max values with coordinates given by', - 'four 1-dimensional arrays containing the `value`, `x`, `y` and `z` of every vertex', - 'of a uniform or non-uniform 3-D grid. Horizontal or vertical slices, caps as well as', - 'spaceframe between iso-min and iso-max values could also be drawn using this trace.' + 'Draws bar3ds with the height in `z` direction.' ].join(' ') } }; diff --git a/test/image/baselines/zz-gl3d_bars-coloring_color.png b/test/image/baselines/zz-gl3d_bars-coloring_color.png new file mode 100644 index 0000000000000000000000000000000000000000..0491dc3e6ad791c4f33944ffe07c850552341c3a GIT binary patch literal 41047 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 Z>mHnoPj_Fqz7PIUQc$~2xMt%0{{SufR9pZ6 literal 0 HcmV?d00001 diff --git a/test/image/baselines/zz-gl3d_bars-coloring_fill.png b/test/image/baselines/zz-gl3d_bars-coloring_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..86d4cf113849216e0f27b78a7ff6d8fca09489f1 GIT binary patch literal 58104 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⋙Ix)3-^!;tS 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/zz-gl3d_bars-coloring_heatmap.png b/test/image/baselines/zz-gl3d_bars-coloring_heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..e5336939629170d3054bd214283a18cafb67167d GIT binary patch literal 94674 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 e1~;kW_gFUbQ{X literal 0 HcmV?d00001 diff --git a/test/image/baselines/zz-gl3d_bars-fill_base.png b/test/image/baselines/zz-gl3d_bars-fill_base.png new file mode 100644 index 0000000000000000000000000000000000000000..30ecb014e5e297fe4199a93327bc92c7ada61170 GIT binary patch literal 91294 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

`83`rcg0xTM_o!_ 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 ^ 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%0D2ys>snoWzQdo?OO~#o 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/zz-gl3d_bars-coloring_color.json b/test/image/mocks/zz-gl3d_bars-coloring_color.json new file mode 100644 index 00000000000..43b3b46c3a6 --- /dev/null +++ b/test/image/mocks/zz-gl3d_bars-coloring_color.json @@ -0,0 +1,75 @@ +{ + "data": [{ + "type": "bar3d", + "colorscale": "Blackbody", + "reversescale": true, + "contour": { + "show": true, + "color": "black" + }, + "marker": { + "fill": 1, + "color": "light", + "coloring": "color" + }, + "xgap": 0.2, + "ygap": 0.2, + "x": [ + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6 + ], + "y": [ + 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4 + ], + "value": [ + 0, -1, -2, -3, -4, -5, + 1, 2, 3, 4, 5, 6, + 12, 11, 10, 9, 8, 7, + 13, 14, 15, 16, 17, 18 + ], + "base": [ + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + "showbase": false + }], + "layout": { + "title": { + "text": "bar3d | coloring: 'color'" + }, + "width": 700, + "height": 700, + "scene": { + "xaxis": { "dtick": 1 }, + "yaxis": { "dtick": 1 }, + "zaxis": { "dtick": 5 }, + "aspectratio": { + "x": 1.2, + "y": 1.2, + "z": 1.2 + }, + "camera": { + "projection": { + "type": "orthographic" + }, + "eye": { + "x": -0.125, + "y": -1, + "z": 0.75 + }, + "center": { + "x": 0, + "y": 0, + "z": 0 + } + } + } + } +} diff --git a/test/image/mocks/zz-gl3d_bars-coloring_fill.json b/test/image/mocks/zz-gl3d_bars-coloring_fill.json new file mode 100644 index 00000000000..fef8055a1b7 --- /dev/null +++ b/test/image/mocks/zz-gl3d_bars-coloring_fill.json @@ -0,0 +1,74 @@ +{ + "data": [{ + "type": "bar3d", + "colorscale": "Blackbody", + "reversescale": true, + "contour": { + "show": true, + "color": "black" + }, + "marker": { + "fill": 1, + "coloring": "fill" + }, + "xgap": 0.2, + "ygap": 0.2, + "x": [ + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6 + ], + "y": [ + 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4 + ], + "value": [ + 0, -1, -2, -3, -4, -5, + 1, 2, 3, 4, 5, 6, + 12, 11, 10, 9, 8, 7, + 13, 14, 15, 16, 17, 18 + ], + "base": [ + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + "showbase": false + }], + "layout": { + "title": { + "text": "bar3d | coloring: 'fill'" + }, + "width": 700, + "height": 700, + "scene": { + "xaxis": { "dtick": 1 }, + "yaxis": { "dtick": 1 }, + "zaxis": { "dtick": 5 }, + "aspectratio": { + "x": 1.2, + "y": 1.2, + "z": 1.2 + }, + "camera": { + "projection": { + "type": "orthographic" + }, + "eye": { + "x": -0.125, + "y": -1, + "z": 0.75 + }, + "center": { + "x": 0, + "y": 0, + "z": 0 + } + } + } + } +} diff --git a/test/image/mocks/zz-gl3d_bars-coloring_heatmap.json b/test/image/mocks/zz-gl3d_bars-coloring_heatmap.json new file mode 100644 index 00000000000..6883184c783 --- /dev/null +++ b/test/image/mocks/zz-gl3d_bars-coloring_heatmap.json @@ -0,0 +1,74 @@ +{ + "data": [{ + "type": "bar3d", + "colorscale": "Blackbody", + "reversescale": true, + "contour": { + "show": true, + "color": "black" + }, + "marker": { + "fill": 1, + "coloring": "heatmap" + }, + "xgap": 0.2, + "ygap": 0.2, + "x": [ + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6 + ], + "y": [ + 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4 + ], + "value": [ + 0, -1, -2, -3, -4, -5, + 1, 2, 3, 4, 5, 6, + 12, 11, 10, 9, 8, 7, + 13, 14, 15, 16, 17, 18 + ], + "base": [ + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + "showbase": false + }], + "layout": { + "title": { + "text": "bar3d | coloring: 'heatmap'" + }, + "width": 700, + "height": 700, + "scene": { + "xaxis": { "dtick": 1 }, + "yaxis": { "dtick": 1 }, + "zaxis": { "dtick": 5 }, + "aspectratio": { + "x": 1.2, + "y": 1.2, + "z": 1.2 + }, + "camera": { + "projection": { + "type": "orthographic" + }, + "eye": { + "x": -0.125, + "y": -1, + "z": 0.75 + }, + "center": { + "x": 0, + "y": 0, + "z": 0 + } + } + } + } +} diff --git a/test/image/mocks/zz-gl3d_bars-fill_base.json b/test/image/mocks/zz-gl3d_bars-fill_base.json new file mode 100644 index 00000000000..7ae1f2fed62 --- /dev/null +++ b/test/image/mocks/zz-gl3d_bars-fill_base.json @@ -0,0 +1,73 @@ +{ + "data": [{ + "type": "bar3d", + "colorscale": "Blackbody", + "reversescale": true, + "contour": { + "show": true, + "color": "black" + }, + "marker": { + "coloring": "heatmap" + }, + "xgap": 0.2, + "ygap": 0.2, + "x": [ + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6 + ], + "y": [ + 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4 + ], + "value": [ + 0, -1, -2, -3, -4, -5, + 1, 2, 3, 4, 5, 6, + 12, 11, 10, 9, 8, 7, + 13, 14, 15, 16, 17, 18 + ], + "base": [ + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + "showbase": true + }], + "layout": { + "title": { + "text": "bar3d | showbase: true" + }, + "width": 700, + "height": 700, + "scene": { + "xaxis": { "dtick": 1 }, + "yaxis": { "dtick": 1 }, + "zaxis": { "dtick": 5 }, + "aspectratio": { + "x": 1.2, + "y": 1.2, + "z": 1.2 + }, + "camera": { + "projection": { + "type": "orthographic" + }, + "eye": { + "x": -0.125, + "y": -1, + "z": 0.75 + }, + "center": { + "x": 0, + "y": 0, + "z": 0 + } + } + } + } +} diff --git a/test/image/mocks/zz-gl3d_bars-fill_some.json b/test/image/mocks/zz-gl3d_bars-fill_some.json new file mode 100644 index 00000000000..e1b5bd7cd98 --- /dev/null +++ b/test/image/mocks/zz-gl3d_bars-fill_some.json @@ -0,0 +1,74 @@ +{ + "data": [{ + "type": "bar3d", + "colorscale": "Blackbody", + "reversescale": true, + "contour": { + "show": true, + "color": "black" + }, + "marker": { + "fill": 0.5, + "coloring": "heatmap" + }, + "xgap": 0.2, + "ygap": 0.2, + "x": [ + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6 + ], + "y": [ + 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4 + ], + "value": [ + 0, -1, -2, -3, -4, -5, + 1, 2, 3, 4, 5, 6, + 12, 11, 10, 9, 8, 7, + 13, 14, 15, 16, 17, 18 + ], + "base": [ + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + ], + "showbase": false + }], + "layout": { + "title": { + "text": "bar3d | fill: 0.5" + }, + "width": 700, + "height": 700, + "scene": { + "xaxis": { "dtick": 1 }, + "yaxis": { "dtick": 1 }, + "zaxis": { "dtick": 5 }, + "aspectratio": { + "x": 1.2, + "y": 1.2, + "z": 1.2 + }, + "camera": { + "projection": { + "type": "orthographic" + }, + "eye": { + "x": -0.125, + "y": -1, + "z": 0.75 + }, + "center": { + "x": 0, + "y": 0, + "z": 0 + } + } + } + } +} diff --git a/test/plot-schema.json b/test/plot-schema.json index fd2b1659e37..72b7c1f932c 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -19237,6 +19237,1510 @@ }, "type": "bar" }, + "bar3d": { + "animatable": false, + "attributes": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "base": { + "description": "Sets the Z coordinates (i.e. the base) of bars on Z axis.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "basesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `base`.", + "editType": "none", + "valType": "string" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "_deprecated": { + "title": { + "description": "Deprecated in favor of color bar's `title.text`. Note that value of color bar's `title` is no longer a simple *string* but a set of sub-attributes.", + "editType": "calc", + "valType": "string" + }, + "titlefont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Deprecated in favor of color bar's `title.font`.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "titleside": { + "description": "Deprecated in favor of color bar's `title.side`.", + "dflt": "top", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + } + }, + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "calc", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "calc", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "calc", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "calc", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "calc", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "calc", + "items": [ + { + "editType": "calc", + "valType": "any" + }, + { + "editType": "calc", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "calc", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "calc", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "calc", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "calc", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "calc", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "calc", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "calc", + "font": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets this color bar's title font. Note that the title's font used to be set by the now deprecated `titlefont` attribute.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*. Note that the title's location used to be set by the now deprecated `titleside` attribute.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar. Note that before the existence of `title.text`, the title's contents used to be defined as the `title` attribute itself. This behavior has been deprecated.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "contour": { + "color": { + "description": "Sets the color of the contour lines.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "role": "object", + "show": { + "description": "Sets whether or not dynamic contours are shown on hover", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "width": { + "description": "Sets the width of the contour lines.", + "dflt": 2, + "editType": "calc", + "max": 16, + "min": 1, + "valType": "number" + } + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "flatshading": { + "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "calc", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object" + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example \"{fullData.name}\". To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Same as `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "lighting": { + "ambient": { + "description": "Ambient light increases overall color visibility but can wash out the image.", + "dflt": 0.8, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "diffuse": { + "description": "Represents the extent that incident rays are reflected in a range of angles.", + "dflt": 0.8, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "editType": "calc", + "facenormalsepsilon": { + "description": "Epsilon for face normals calculation avoids math issues arising from degenerate geometry.", + "dflt": 0, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "fresnel": { + "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.", + "dflt": 0.2, + "editType": "calc", + "max": 5, + "min": 0, + "valType": "number" + }, + "role": "object", + "roughness": { + "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.", + "dflt": 0.5, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "specular": { + "description": "Represents the level that incident rays are reflected in a single direction, causing shine.", + "dflt": 0.05, + "editType": "calc", + "max": 2, + "min": 0, + "valType": "number" + }, + "vertexnormalsepsilon": { + "description": "Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry.", + "dflt": 1e-12, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + }, + "lightposition": { + "editType": "calc", + "role": "object", + "x": { + "description": "Numeric vector, representing the X coordinate for each vertex.", + "dflt": 100000, + "editType": "calc", + "max": 100000, + "min": -100000, + "valType": "number" + }, + "y": { + "description": "Numeric vector, representing the Y coordinate for each vertex.", + "dflt": 100000, + "editType": "calc", + "max": 100000, + "min": -100000, + "valType": "number" + }, + "z": { + "description": "Numeric vector, representing the Z coordinate for each vertex.", + "dflt": 0, + "editType": "calc", + "max": 100000, + "min": -100000, + "valType": "number" + } + }, + "marker": { + "color": { + "description": "Sets the color of the whole mesh if `coloring` is set to *color*.", + "dflt": "#eee", + "editType": "calc", + "valType": "color" + }, + "coloring": { + "description": "Determines the coloring method showing the bar values. If *color*, *marker.color* is used for all bars. If *fill*, coloring is done evenly across a single bar. If *heatmap*, a heatmap gradient coloring is applied between each level from bottom to top.", + "dflt": "heatmap", + "editType": "calc", + "valType": "enumerated", + "values": [ + "color", + "fill", + "heatmap" + ] + }, + "editType": "calc", + "fill": { + "description": "Sets the fill ratio of the `marker` elements. The default fill value is 0.15 meaning that only 15% of the area of every faces of tetras would be shaded. Applying a greater `fill` ratio would allow the creation of stronger elements or could be sued to have entirely closed areas (in case of using 1).", + "dflt": 1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object" + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.", + "dflt": 1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "reversescale": { + "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "scene": { + "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.", + "dflt": "scene", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "showbase": { + "description": "Determines whether or not the base of a bar is filled.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "text": { + "arrayOk": true, + "description": "Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "bar3d", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "value": { + "description": "Sets the height of bars.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "valuehoverformat": { + "description": "Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "valuesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `value`.", + "editType": "none", + "valType": "string" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + }, + "x": { + "description": "Sets the X coordinates of bars on X axis.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xgap": { + "description": "Sets the gap (in plot fraction) between bars of adjacent location coordinates on X axis.", + "dflt": 0.2, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "xhoverformat": { + "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "description": "Sets the Y coordinates of bars on Y axis.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "ygap": { + "description": "Sets the gap (in plot fraction) between bars of adjacent location coordinates on Y axis.", + "dflt": 0.2, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "yhoverformat": { + "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + }, + "zhoverformat": { + "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "dflt": "", + "editType": "calc", + "valType": "string" + } + }, + "categories": [ + "gl3d", + "showLegend" + ], + "meta": { + "description": "Draws bar3ds with the height in `z` direction." + }, + "type": "bar3d" + }, "barpolar": { "animatable": false, "attributes": { From 2aa2761d738dedd5d7fc47ed2add391be6f1df5a Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 20 Aug 2024 10:30:10 -0400 Subject: [PATCH 4/4] update schame --- test/plot-schema.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index bc8d840049b..13412efa4fa 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -19901,7 +19901,7 @@ "description": "Deprecated in favor of color bar's `title.font`.", "editType": "calc", "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", "editType": "calc", "noBlank": true, "strict": true, @@ -20189,7 +20189,7 @@ "description": "Sets the color bar's tick label font", "editType": "calc", "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", "editType": "calc", "noBlank": true, "strict": true, @@ -20435,7 +20435,7 @@ "description": "Sets this color bar's title font. Note that the title's font used to be set by the now deprecated `titlefont` attribute.", "editType": "calc", "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", "editType": "calc", "noBlank": true, "strict": true, @@ -20727,7 +20727,7 @@ "editType": "none", "family": { "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", "editType": "none", "noBlank": true, "strict": true, @@ -20926,7 +20926,7 @@ "description": "Sets this legend group's title font.", "editType": "style", "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", "editType": "style", "noBlank": true, "strict": true,

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