From bf6d887f224840896c630c6b796e09745eacbcc3 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 21 Oct 2025 13:56:52 -0700 Subject: [PATCH 01/34] Add scatterquiver trace type --- lib/index-strict.js | 1 + lib/index.js | 1 + lib/scatterquiver.js | 3 + src/traces/scatterquiver/attributes.js | 207 +++ src/traces/scatterquiver/calc.js | 55 + src/traces/scatterquiver/defaults.js | 68 + src/traces/scatterquiver/event_data.js | 10 + src/traces/scatterquiver/hover.js | 75 + src/traces/scatterquiver/index.js | 31 + src/traces/scatterquiver/plot.js | 120 ++ src/traces/scatterquiver/select_points.js | 39 + src/traces/scatterquiver/style.js | 16 + test/plot-schema.json | 1563 +++++++++++++++++++++ 13 files changed, 2189 insertions(+) create mode 100644 lib/scatterquiver.js create mode 100644 src/traces/scatterquiver/attributes.js create mode 100644 src/traces/scatterquiver/calc.js create mode 100644 src/traces/scatterquiver/defaults.js create mode 100644 src/traces/scatterquiver/event_data.js create mode 100644 src/traces/scatterquiver/hover.js create mode 100644 src/traces/scatterquiver/index.js create mode 100644 src/traces/scatterquiver/plot.js create mode 100644 src/traces/scatterquiver/select_points.js create mode 100644 src/traces/scatterquiver/style.js diff --git a/lib/index-strict.js b/lib/index-strict.js index cac9738bff8..8e332c3b56d 100644 --- a/lib/index-strict.js +++ b/lib/index-strict.js @@ -52,6 +52,7 @@ Plotly.register([ require('../src/traces/scatterpolargl/strict'), require('./barpolar'), require('./scattersmith'), + require('./scatterquiver'), // components require('./calendars'), diff --git a/lib/index.js b/lib/index.js index d4cb5bdcc87..d234cfca3ea 100644 --- a/lib/index.js +++ b/lib/index.js @@ -52,6 +52,7 @@ Plotly.register([ require('./scatterpolargl'), require('./barpolar'), require('./scattersmith'), + require('./scatterquiver'), // components require('./calendars'), diff --git a/lib/scatterquiver.js b/lib/scatterquiver.js new file mode 100644 index 00000000000..f3d08677cc2 --- /dev/null +++ b/lib/scatterquiver.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../src/traces/scatterquiver'); diff --git a/src/traces/scatterquiver/attributes.js b/src/traces/scatterquiver/attributes.js new file mode 100644 index 00000000000..6a72329cee5 --- /dev/null +++ b/src/traces/scatterquiver/attributes.js @@ -0,0 +1,207 @@ +'use strict'; + +var baseAttrs = require('../../plots/attributes'); +var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; +var fontAttrs = require('../../plots/font_attributes'); +var dash = require('../../components/drawing/attributes').dash; + +var extendFlat = require('../../lib/extend').extendFlat; + +var attrs = { + x: { + valType: 'data_array', + editType: 'calc+clearAxisTypes', + anim: true, + description: 'Sets the x coordinates of the arrow locations.' + }, + y: { + valType: 'data_array', + editType: 'calc+clearAxisTypes', + anim: true, + description: 'Sets the y coordinates of the arrow locations.' + }, + u: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the x components of the arrow vectors.' + }, + v: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the y components of the arrow vectors.' + }, + scale: { + valType: 'number', + dflt: 0.1, + min: 0, + max: 1, + editType: 'calc', + description: 'Scales size of the arrows (ideally to avoid overlap). Default = 0.1' + }, + arrow_scale: { + valType: 'number', + dflt: 0.3, + min: 0, + max: 1, + editType: 'calc', + description: 'Value multiplied to length of barb to get length of arrowhead. Default = 0.3' + }, + angle: { + valType: 'number', + dflt: Math.PI / 9, + min: 0, + max: Math.PI / 2, + editType: 'calc', + description: 'Angle of arrowhead in radians. Default = π/9' + }, + scaleratio: { + valType: 'number', + min: 0, + editType: 'calc', + description: 'The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.' + }, + hoverdistance: { + valType: 'number', + min: -1, + dflt: 20, + editType: 'calc', + description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' + }, + + // Line styling for arrows + line: { + color: { + valType: 'color', + dflt: '#000', + editType: 'style', + description: 'Sets the color of the arrow lines.' + }, + width: { + valType: 'number', + min: 0, + dflt: 1, + editType: 'style', + description: 'Sets the width (in px) of the arrow lines.' + }, + dash: dash, + shape: { + valType: 'enumerated', + values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'], + dflt: 'linear', + editType: 'plot', + description: 'Determines the line shape.' + }, + smoothing: { + valType: 'number', + min: 0, + max: 1.3, + dflt: 1, + editType: 'plot', + description: 'Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.' + }, + simplify: { + valType: 'boolean', + dflt: true, + editType: 'plot', + description: 'Simplifies lines by removing nearly-overlapping points.' + }, + editType: 'style' + }, + + // Text and labels + text: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets text elements associated with each (x,y) pair.' + }, + textposition: { + valType: 'enumerated', + values: [ + 'top left', 'top center', 'top right', + 'middle left', 'middle center', 'middle right', + 'bottom left', 'bottom center', 'bottom right' + ], + dflt: 'middle center', + editType: 'calc', + description: 'Sets the positions of the `text` elements with respects to the (x,y) coordinates.' + }, + // Text font + textfont: fontAttrs({ + editType: 'calc', + colorEditType: 'style', + arrayOk: true, + description: 'Sets the text font.' + }), + + // Selection and styling + selected: { + line: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the line color of selected points.' + }, + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of selected points.' + }, + editType: 'style' + }, + textfont: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the text font color of selected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + }, + unselected: { + line: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the line color of unselected points.' + }, + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of unselected points.' + }, + editType: 'style' + }, + textfont: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the text font color of unselected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + } +}; + +// Extend with base attributes (includes hoverinfo, etc.) +extendFlat(attrs, baseAttrs); + +// Add hoverinfo with proper flags for quiver +// We need to create a new object to avoid mutating the shared base attributes +attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { + flags: ['x', 'y', 'u', 'v', 'text', 'name'], + dflt: 'all' +}); + +// Add hovertemplate +attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { + keys: ['x', 'y', 'u', 'v', 'text', 'name'] +})); + +module.exports = attrs; \ No newline at end of file diff --git a/src/traces/scatterquiver/calc.js b/src/traces/scatterquiver/calc.js new file mode 100644 index 00000000000..f502d19bc4c --- /dev/null +++ b/src/traces/scatterquiver/calc.js @@ -0,0 +1,55 @@ +'use strict'; + +var Lib = require('../../lib'); + +/** + * Main calculation function for scatterquiver trace + * Creates calcdata with arrow path data for each vector + */ +module.exports = function calc(gd, trace) { + var x = trace.x; + var y = trace.y; + var u = trace.u; + var v = trace.v; + var scale = trace.scale; + var arrowScale = trace.arrow_scale; + var angle = trace.angle; + var scaleRatio = trace.scaleratio; + + // Create calcdata - one complete arrow per entry + var calcdata = []; + var len = x.length; + + for(var i = 0; i < len; i++) { + // Calculate arrow components + var dx = u[i] * scale * (scaleRatio || 1); + var dy = v[i] * scale; + var barbLen = Math.sqrt(dx * dx / (scaleRatio || 1) + dy * dy); + var arrowLen = barbLen * arrowScale; + var barbAng = Math.atan2(dy, dx / (scaleRatio || 1)); + + var ang1 = barbAng + angle; + var ang2 = barbAng - angle; + + var endX = x[i] + dx; + var endY = y[i] + dy; + + var point1X = endX - arrowLen * Math.cos(ang1) * (scaleRatio || 1); + var point1Y = endY - arrowLen * Math.sin(ang1); + var point2X = endX - arrowLen * Math.cos(ang2) * (scaleRatio || 1); + var point2Y = endY - arrowLen * Math.sin(ang2); + + // Create complete arrow as one path: shaft + arrow head + var arrowPath = [ + { x: x[i], y: y[i], i: i }, // Start point + { x: endX, y: endY, i: i }, // End of shaft + { x: point1X, y: point1Y, i: i }, // Arrow head point 1 + { x: endX, y: endY, i: i }, // Back to end + { x: point2X, y: point2Y, i: i } // Arrow head point 2 + ]; + + calcdata.push(arrowPath); + } + + return calcdata; +}; \ No newline at end of file diff --git a/src/traces/scatterquiver/defaults.js b/src/traces/scatterquiver/defaults.js new file mode 100644 index 00000000000..651e6dd2775 --- /dev/null +++ b/src/traces/scatterquiver/defaults.js @@ -0,0 +1,68 @@ +'use strict'; + +var Lib = require('../../lib'); +var attributes = require('./attributes'); + +module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { + // Selection styling - use coerce to set proper defaults + function coerce(attr, dflt) { + return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); + } + + // Coerce x and y data arrays (this ensures proper data structure for category ordering) + var x = coerce('x'); + var y = coerce('y'); + var u = coerce('u'); + var v = coerce('v'); + + // Simple validation - check if we have the required arrays + if(!x || !Array.isArray(x) || x.length === 0 || + !y || !Array.isArray(y) || y.length === 0 || + !u || !Array.isArray(u) || u.length === 0 || + !v || !Array.isArray(v) || v.length === 0) { + traceOut.visible = false; + return; + } + + // Set basic properties + traceOut.type = 'scatterquiver'; + traceOut.visible = true; + + // Set default values using coerce + coerce('scale', 0.1); + coerce('arrow_scale', 0.3); + coerce('angle', Math.PI / 9); + coerce('scaleratio'); + coerce('hoverdistance', 20); + + // Line styling + traceOut.line = { + color: traceIn.line && traceIn.line.color ? traceIn.line.color : defaultColor, + width: traceIn.line && traceIn.line.width ? traceIn.line.width : 1, + dash: traceIn.line && traceIn.line.dash ? traceIn.line.dash : 'solid', + shape: traceIn.line && traceIn.line.shape ? traceIn.line.shape : 'linear', + smoothing: traceIn.line && traceIn.line.smoothing ? traceIn.line.smoothing : 1, + simplify: traceIn.line && traceIn.line.simplify !== undefined ? traceIn.line.simplify : true + }; + + // Hover and interaction - let the plots module handle hoverinfo defaults + // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js + traceOut.hovertemplate = traceIn.hovertemplate; + + // Text + traceOut.text = traceIn.text; + traceOut.textposition = traceIn.textposition || 'middle center'; + + // Use Lib.coerceFont to set textfont properly + Lib.coerceFont(coerce, 'textfont', layout.font); + + coerce('selected.line.color'); + coerce('selected.line.width'); + coerce('selected.textfont.color'); + coerce('unselected.line.color'); + coerce('unselected.line.width'); + coerce('unselected.textfont.color'); + + // Set the data length + traceOut._length = x.length; +}; \ No newline at end of file diff --git a/src/traces/scatterquiver/event_data.js b/src/traces/scatterquiver/event_data.js new file mode 100644 index 00000000000..faecde95abb --- /dev/null +++ b/src/traces/scatterquiver/event_data.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = function eventData(out, pt, trace, cd, pointNumber) { + out.x = pt.x; + out.y = pt.y; + out.u = trace.u[pointNumber]; + out.v = trace.v[pointNumber]; + out.pointNumber = pointNumber; + out.trace = trace; +}; diff --git a/src/traces/scatterquiver/hover.js b/src/traces/scatterquiver/hover.js new file mode 100644 index 00000000000..e5502dcbc0a --- /dev/null +++ b/src/traces/scatterquiver/hover.js @@ -0,0 +1,75 @@ +'use strict'; + +var Lib = require('../../lib'); +var Fx = require('../../components/fx'); +var Registry = require('../../registry'); + +module.exports = function hoverPoints(pointData, xval, yval, hovermode) { + var cd = pointData.cd; + var trace = cd[0].trace; + var xa = pointData.xa; + var ya = pointData.ya; + var xpx = xa.c2p(xval); + var ypx = ya.c2p(yval); + + // Find the closest arrow to the hover point + var minDistance = Infinity; + var closestPoint = null; + var closestIndex = -1; + + // Check each arrow segment + for(var i = 0; i < cd.length; i++) { + var segment = cd[i]; + if(segment.length < 2) continue; + + // Calculate distance to the start point of the arrow + var x1 = xa.c2p(segment[0].x); + var y1 = ya.c2p(segment[0].y); + + var distance = Math.sqrt((xpx - x1) * (xpx - x1) + (ypx - y1) * (ypx - y1)); + + if(distance < minDistance) { + minDistance = distance; + closestPoint = segment[0]; // Use the start point for hover data + closestIndex = i; + } + } + + if(!closestPoint || minDistance > (trace.hoverdistance || 20)) return; + + // Create hover point data with proper label values and spikeline support + var hoverPoint = { + x: closestPoint.x, + y: closestPoint.y, + u: trace.u[closestIndex], + v: trace.v[closestIndex], + text: trace.text ? trace.text[closestIndex] : '', + name: trace.name || '', + trace: trace, + index: closestIndex, + // Set label values for proper hover formatting + xLabelVal: closestPoint.x, + yLabelVal: closestPoint.y, + uLabelVal: trace.u[closestIndex], + vLabelVal: trace.v[closestIndex], + // Add spikeline support + xa: pointData.xa, + ya: pointData.ya, + x0: closestPoint.x, + x1: closestPoint.x, + y0: closestPoint.y, + y1: closestPoint.y, + distance: minDistance, + spikeDistance: minDistance, + curveNumber: trace.index, + color: trace.line ? trace.line.color : 'blue' + }; + + // Set hover text + var hovertext = trace.hovertext || trace.text; + if(hovertext && hovertext[closestIndex]) { + hoverPoint.hovertext = hovertext[closestIndex]; + } + + return [hoverPoint]; +}; \ No newline at end of file diff --git a/src/traces/scatterquiver/index.js b/src/traces/scatterquiver/index.js new file mode 100644 index 00000000000..b476090cc53 --- /dev/null +++ b/src/traces/scatterquiver/index.js @@ -0,0 +1,31 @@ +'use strict'; + +module.exports = { + moduleType: 'trace', + name: 'scatterquiver', + basePlotModule: require('../../plots/cartesian'), + categories: [ + 'cartesian', 'svg', 'showLegend', 'scatter-like', 'zoomScale' + ], + + attributes: require('./attributes'), + supplyDefaults: require('./defaults'), + calc: require('./calc'), + plot: require('./plot'), + style: require('./style'), + styleOnSelect: require('../scatter/style').styleOnSelect, + hoverPoints: require('./hover'), + eventData: require('./event_data'), + selectPoints: require('./select_points'), + animatable: true, + + meta: { + description: [ + 'The scatterquiver trace type visualizes vector fields using arrows.', + 'Specify a vector field using 4 1D arrays:', + '2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`.', + 'The arrows are drawn exactly at the positions given by `x` and `y`.', + 'Arrow length and direction are determined by `u` and `v` components.' + ].join(' ') + } +}; diff --git a/src/traces/scatterquiver/plot.js b/src/traces/scatterquiver/plot.js new file mode 100644 index 00000000000..36a9bb4cb7e --- /dev/null +++ b/src/traces/scatterquiver/plot.js @@ -0,0 +1,120 @@ +'use strict'; + +var d3 = require('@plotly/d3'); + +var Registry = require('../../registry'); +var Lib = require('../../lib'); +var Drawing = require('../../components/drawing'); + +module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { + var join, onComplete; + + // If transition config is provided, then it is only a partial replot and traces not + // updated are removed. + var isFullReplot = !transitionOpts; + var hasTransition = !!transitionOpts && transitionOpts.duration > 0; + + join = scatterLayer.selectAll('g.trace') + .data(cdscatter, function(d) { return d[0].trace.uid; }); + + // Append new traces: + join.enter().append('g') + .attr('class', function(d) { + return 'trace scatterquiver trace' + d[0].trace.uid; + }) + .style('stroke-miterlimit', 2); + join.order(); + + if(hasTransition) { + if(makeOnCompleteCallback) { + onComplete = makeOnCompleteCallback(); + } + + var transition = d3.transition() + .duration(transitionOpts.duration) + .ease(transitionOpts.easing) + .each('end', function() { + onComplete && onComplete(); + }) + .each('interrupt', function() { + onComplete && onComplete(); + }); + + transition.each(function() { + scatterLayer.selectAll('g.trace').each(function(d, i) { + plotOne(gd, i, plotinfo, d, cdscatter, this, transitionOpts); + }); + }); + } else { + join.each(function(d, i) { + plotOne(gd, i, plotinfo, d, cdscatter, this, transitionOpts); + }); + } + + if(isFullReplot) { + join.exit().remove(); + } +}; + +function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transitionOpts) { + var trace = cdscatter[0].trace; + var xa = plotinfo.xaxis; + var ya = plotinfo.yaxis; + var fullLayout = gd._fullLayout; + + // Create line group for arrows + var lines = d3.select(element).selectAll('g.lines') + .data([cdscatter]); + + lines.enter().append('g') + .classed('lines', true); + + Drawing.setClipUrl(lines, plotinfo.layerClipId, gd); + + // Create line segments for each arrow + var lineSegments = lines.selectAll('path.js-line') + .data(cdscatter); + + lineSegments.enter().append('path') + .classed('js-line', true) + .style('vector-effect', 'non-scaling-stroke'); + + lineSegments.exit().remove(); + + // Update line segments + lineSegments.each(function(d) { + var path = d3.select(this); + var segment = d; + + if(segment.length === 0) return; + + // Convert data coordinates to pixel coordinates + var pixelCoords = segment.map(function(point) { + return { + x: xa.c2p(point.x), + y: ya.c2p(point.y) + }; + }); + + // Create SVG path from pixel coordinates + var pathData = 'M' + pixelCoords[0].x + ',' + pixelCoords[0].y; + for(var i = 1; i < pixelCoords.length; i++) { + pathData += 'L' + pixelCoords[i].x + ',' + pixelCoords[i].y; + } + + path.attr('d', pathData); + }); + + // Apply styling using Plotly's standard styling system + Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); + + // Handle transitions + if(transitionOpts && transitionOpts.duration > 0) { + var transition = d3.transition() + .duration(transitionOpts.duration) + .ease(transitionOpts.easing); + + lineSegments.transition(transition) + .style('opacity', 1); + } +} \ No newline at end of file diff --git a/src/traces/scatterquiver/select_points.js b/src/traces/scatterquiver/select_points.js new file mode 100644 index 00000000000..e169b1b9517 --- /dev/null +++ b/src/traces/scatterquiver/select_points.js @@ -0,0 +1,39 @@ +'use strict'; + +module.exports = function selectPoints(searchInfo, selectionTester) { + var cd = searchInfo.cd; + var xa = searchInfo.xaxis; + var ya = searchInfo.yaxis; + var selection = []; + var trace = cd[0].trace; + var i; + var segment; + var x; + var y; + + if(selectionTester === false) { // clear selection + for(i = 0; i < cd.length; i++) { + cd[i].selected = 0; + } + } else { + for(i = 0; i < cd.length; i++) { + segment = cd[i]; + // Use the start point of the arrow for selection testing + x = xa.c2p(segment[0].x); + y = ya.c2p(segment[0].y); + + if((segment[0].i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { + selection.push({ + pointNumber: segment[0].i, + x: xa.c2d(segment[0].x), + y: ya.c2d(segment[0].y) + }); + segment.selected = 1; + } else { + segment.selected = 0; + } + } + } + + return selection; +}; diff --git a/src/traces/scatterquiver/style.js b/src/traces/scatterquiver/style.js new file mode 100644 index 00000000000..deb72e21718 --- /dev/null +++ b/src/traces/scatterquiver/style.js @@ -0,0 +1,16 @@ +'use strict'; + +var d3 = require('@plotly/d3'); + +var Drawing = require('../../components/drawing'); +var Lib = require('../../lib'); + +module.exports = function style(gd, calcTrace) { + if(!calcTrace || !calcTrace.length || !calcTrace[0]) return; + + var trace = calcTrace[0].trace; + var s = d3.select(gd).selectAll('g.trace' + trace.uid); + + s.selectAll('path.js-line') + .call(Drawing.lineGroupStyle, trace.line || {}); +}; diff --git a/test/plot-schema.json b/test/plot-schema.json index 9e6c6299dad..f500c00824c 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57587,6 +57587,1569 @@ }, "type": "pie" }, + "quiver": { + "animatable": true, + "attributes": { + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "dflt": "tail", + "editType": "calc", + "valType": "enumerated", + "values": [ + "tip", + "tail", + "cm", + "center", + "middle" + ] + }, + "arrow_scale": { + "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "arrowsize": { + "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, + "arrowwidth": { + "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", + "editType": "style", + "min": 0.1, + "valType": "number" + }, + "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" + }, + "c": { + "anim": true, + "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", + "editType": "calc", + "valType": "data_array" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) 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 u/v norm 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 u/v norm. 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 u/v norm 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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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" + }, + "csrc": { + "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "editType": "none", + "valType": "string" + }, + "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" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "anim": true, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "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": "plot", + "valType": "boolean" + }, + "selected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "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": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uid": { + "anim": true, + "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" + }, + "unselected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of unselected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "usrc": { + "description": "Sets the source reference on Chart Studio Cloud for `u`.", + "editType": "none", + "valType": "string" + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "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" + ] + }, + "vsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `v`.", + "editType": "none", + "valType": "string" + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, "sankey": { "animatable": false, "attributes": { From 64005916ffb8138e90531abee6270900186297a2 Mon Sep 17 00:00:00 2001 From: John Degner Date: Wed, 22 Oct 2025 08:43:35 -0700 Subject: [PATCH 02/34] Ensure no-gl-jasmine tests pass --- src/traces/scatterquiver/calc.js | 76 +++++++++++++--------------- src/traces/scatterquiver/defaults.js | 18 +++++-- src/traces/scatterquiver/hover.js | 38 +++++++------- src/traces/scatterquiver/plot.js | 62 ++++++++++++++++------- 4 files changed, 111 insertions(+), 83 deletions(-) diff --git a/src/traces/scatterquiver/calc.js b/src/traces/scatterquiver/calc.js index f502d19bc4c..28e11e95116 100644 --- a/src/traces/scatterquiver/calc.js +++ b/src/traces/scatterquiver/calc.js @@ -1,55 +1,47 @@ 'use strict'; var Lib = require('../../lib'); +var Axes = require('../../plots/cartesian/axes'); +var isNumeric = require('fast-isnumeric'); +var BADNUM = require('../../constants/numerical').BADNUM; +var scatterCalc = require('../scatter/calc'); /** * Main calculation function for scatterquiver trace * Creates calcdata with arrow path data for each vector */ module.exports = function calc(gd, trace) { - var x = trace.x; - var y = trace.y; - var u = trace.u; - var v = trace.v; - var scale = trace.scale; - var arrowScale = trace.arrow_scale; - var angle = trace.angle; - var scaleRatio = trace.scaleratio; - - // Create calcdata - one complete arrow per entry - var calcdata = []; - var len = x.length; - + // Map x/y through axes so category/date values become numeric calcdata + var xa = trace._xA = Axes.getFromId(gd, trace.xaxis || 'x', 'x'); + var ya = trace._yA = Axes.getFromId(gd, trace.yaxis || 'y', 'y'); + + var xVals = xa.makeCalcdata(trace, 'x'); + var yVals = ya.makeCalcdata(trace, 'y'); + + // u/v are read in plot using the original trace arrays via cdi.i + + var len = Math.min(xVals.length, yVals.length); + trace._length = len; + var cd = new Array(len); + for(var i = 0; i < len; i++) { - // Calculate arrow components - var dx = u[i] * scale * (scaleRatio || 1); - var dy = v[i] * scale; - var barbLen = Math.sqrt(dx * dx / (scaleRatio || 1) + dy * dy); - var arrowLen = barbLen * arrowScale; - var barbAng = Math.atan2(dy, dx / (scaleRatio || 1)); - - var ang1 = barbAng + angle; - var ang2 = barbAng - angle; - - var endX = x[i] + dx; - var endY = y[i] + dy; - - var point1X = endX - arrowLen * Math.cos(ang1) * (scaleRatio || 1); - var point1Y = endY - arrowLen * Math.sin(ang1); - var point2X = endX - arrowLen * Math.cos(ang2) * (scaleRatio || 1); - var point2Y = endY - arrowLen * Math.sin(ang2); - - // Create complete arrow as one path: shaft + arrow head - var arrowPath = [ - { x: x[i], y: y[i], i: i }, // Start point - { x: endX, y: endY, i: i }, // End of shaft - { x: point1X, y: point1Y, i: i }, // Arrow head point 1 - { x: endX, y: endY, i: i }, // Back to end - { x: point2X, y: point2Y, i: i } // Arrow head point 2 - ]; - - calcdata.push(arrowPath); + var cdi = cd[i] = { i: i }; + var xValid = isNumeric(xVals[i]); + var yValid = isNumeric(yVals[i]); + + if(xValid && yValid) { + cdi.x = xVals[i]; + cdi.y = yVals[i]; + } else { + cdi.x = BADNUM; + cdi.y = BADNUM; + } + + // No additional props; keep minimal to avoid collisions with generic fields (e.g. `v`) } - return calcdata; + // Ensure axes are expanded and categories registered like scatter traces do + scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); + + return cd; }; \ No newline at end of file diff --git a/src/traces/scatterquiver/defaults.js b/src/traces/scatterquiver/defaults.js index 651e6dd2775..1992c520baf 100644 --- a/src/traces/scatterquiver/defaults.js +++ b/src/traces/scatterquiver/defaults.js @@ -17,16 +17,24 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Simple validation - check if we have the required arrays if(!x || !Array.isArray(x) || x.length === 0 || - !y || !Array.isArray(y) || y.length === 0 || - !u || !Array.isArray(u) || u.length === 0 || - !v || !Array.isArray(v) || v.length === 0) { + !y || !Array.isArray(y) || y.length === 0) { traceOut.visible = false; return; } + // If u/v are missing, default to zeros so the trace participates in calc/category logic + var len = Math.min(x.length, y.length); + if(!Array.isArray(u) || u.length === 0) { + traceOut.u = new Array(len); + for(var i = 0; i < len; i++) traceOut.u[i] = 0; + } + if(!Array.isArray(v) || v.length === 0) { + traceOut.v = new Array(len); + for(var j = 0; j < len; j++) traceOut.v[j] = 0; + } + // Set basic properties traceOut.type = 'scatterquiver'; - traceOut.visible = true; // Set default values using coerce coerce('scale', 0.1); @@ -64,5 +72,5 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('unselected.textfont.color'); // Set the data length - traceOut._length = x.length; + traceOut._length = len; }; \ No newline at end of file diff --git a/src/traces/scatterquiver/hover.js b/src/traces/scatterquiver/hover.js index e5502dcbc0a..d786ea3afc3 100644 --- a/src/traces/scatterquiver/hover.js +++ b/src/traces/scatterquiver/hover.js @@ -12,47 +12,47 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var xpx = xa.c2p(xval); var ypx = ya.c2p(yval); - // Find the closest arrow to the hover point + // Find the closest arrow base point to the hover point var minDistance = Infinity; var closestPoint = null; var closestIndex = -1; - // Check each arrow segment + // Each cd[i] is a calcdata point object with x/y for(var i = 0; i < cd.length; i++) { - var segment = cd[i]; - if(segment.length < 2) continue; + var cdi = cd[i]; + if(cdi.x === undefined || cdi.y === undefined) continue; + + var px = xa.c2p(cdi.x); + var py = ya.c2p(cdi.y); + + var distance = Math.sqrt((xpx - px) * (xpx - px) + (ypx - py) * (ypx - py)); - // Calculate distance to the start point of the arrow - var x1 = xa.c2p(segment[0].x); - var y1 = ya.c2p(segment[0].y); - - var distance = Math.sqrt((xpx - x1) * (xpx - x1) + (ypx - y1) * (ypx - y1)); - if(distance < minDistance) { minDistance = distance; - closestPoint = segment[0]; // Use the start point for hover data + closestPoint = cdi; closestIndex = i; } } - if(!closestPoint || minDistance > (trace.hoverdistance || 20)) return; + var maxHoverDist = pointData.distance === Infinity ? Infinity : (trace.hoverdistance || 20); + if(!closestPoint || minDistance > maxHoverDist) return; // Create hover point data with proper label values and spikeline support var hoverPoint = { x: closestPoint.x, y: closestPoint.y, - u: trace.u[closestIndex], - v: trace.v[closestIndex], - text: trace.text ? trace.text[closestIndex] : '', + u: trace.u ? trace.u[closestIndex] : undefined, + v: trace.v ? trace.v[closestIndex] : undefined, + text: Array.isArray(trace.text) ? trace.text[closestIndex] : trace.text, name: trace.name || '', trace: trace, index: closestIndex, - // Set label values for proper hover formatting + // Label values for formatting xLabelVal: closestPoint.x, yLabelVal: closestPoint.y, - uLabelVal: trace.u[closestIndex], - vLabelVal: trace.v[closestIndex], - // Add spikeline support + uLabelVal: trace.u ? trace.u[closestIndex] : undefined, + vLabelVal: trace.v ? trace.v[closestIndex] : undefined, + // Spikeline support xa: pointData.xa, ya: pointData.ya, x0: closestPoint.x, diff --git a/src/traces/scatterquiver/plot.js b/src/traces/scatterquiver/plot.js index 36a9bb4cb7e..87e2d754926 100644 --- a/src/traces/scatterquiver/plot.js +++ b/src/traces/scatterquiver/plot.js @@ -71,7 +71,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition Drawing.setClipUrl(lines, plotinfo.layerClipId, gd); - // Create line segments for each arrow + // Create one path per data point (arrow) var lineSegments = lines.selectAll('path.js-line') .data(cdscatter); @@ -82,26 +82,54 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.exit().remove(); // Update line segments - lineSegments.each(function(d) { + lineSegments.each(function(cdi) { var path = d3.select(this); - var segment = d; - - if(segment.length === 0) return; - - // Convert data coordinates to pixel coordinates - var pixelCoords = segment.map(function(point) { - return { - x: xa.c2p(point.x), - y: ya.c2p(point.y) - }; - }); - // Create SVG path from pixel coordinates - var pathData = 'M' + pixelCoords[0].x + ',' + pixelCoords[0].y; - for(var i = 1; i < pixelCoords.length; i++) { - pathData += 'L' + pixelCoords[i].x + ',' + pixelCoords[i].y; + // Skip invalid points + if(cdi.x === undefined || cdi.y === undefined) { + path.attr('d', null); + return; } + // Compute arrow in data space + var scale = trace.scale || 1; + var scaleRatio = trace.scaleratio || 1; + var arrowScale = trace.arrow_scale || 0.2; + var angle = trace.angle || Math.PI / 12; // small default + + var u = (trace.u && trace.u[cdi.i]) || 0; + var v = (trace.v && trace.v[cdi.i]) || 0; + + var dx = u * scale * scaleRatio; + var dy = v * scale; + var barbLen = Math.sqrt((dx * dx) / scaleRatio + dy * dy); + var arrowLen = barbLen * arrowScale; + var barbAng = Math.atan2(dy, dx / scaleRatio); + + var ang1 = barbAng + angle; + var ang2 = barbAng - angle; + + var x0 = cdi.x; + var y0 = cdi.y; + var x1 = x0 + dx; + var y1 = y0 + dy; + + var xh1 = x1 - arrowLen * Math.cos(ang1) * scaleRatio; + var yh1 = y1 - arrowLen * Math.sin(ang1); + var xh2 = x1 - arrowLen * Math.cos(ang2) * scaleRatio; + var yh2 = y1 - arrowLen * Math.sin(ang2); + + // Convert to pixels + var p0x = xa.c2p(x0); + var p0y = ya.c2p(y0); + var p1x = xa.c2p(x1); + var p1y = ya.c2p(y1); + var ph1x = xa.c2p(xh1); + var ph1y = ya.c2p(yh1); + var ph2x = xa.c2p(xh2); + var ph2y = ya.c2p(yh2); + + var pathData = 'M' + p0x + ',' + p0y + 'L' + p1x + ',' + p1y + 'L' + ph1x + ',' + ph1y + 'L' + p1x + ',' + p1y + 'L' + ph2x + ',' + ph2y; path.attr('d', pathData); }); From e9551cd9d32d3e33a10afafa5c20f9eb77b0e3ec Mon Sep 17 00:00:00 2001 From: John Degner Date: Sun, 2 Nov 2025 09:59:30 -0800 Subject: [PATCH 03/34] Name plot type quiver not scatterquiver --- lib/index-strict.js | 2 +- lib/index.js | 2 +- lib/quiver.js | 5 + lib/scatterquiver.js | 3 - .../{scatterquiver => quiver}/attributes.js | 4 +- src/traces/{scatterquiver => quiver}/calc.js | 8 +- .../{scatterquiver => quiver}/defaults.js | 6 +- .../{scatterquiver => quiver}/event_data.js | 2 + src/traces/{scatterquiver => quiver}/hover.js | 4 +- src/traces/{scatterquiver => quiver}/index.js | 6 +- src/traces/{scatterquiver => quiver}/plot.js | 6 +- .../select_points.js | 2 + src/traces/{scatterquiver => quiver}/style.js | 2 + test/plot-schema.json | 12055 ++++++++++++++++ 14 files changed, 12090 insertions(+), 17 deletions(-) create mode 100644 lib/quiver.js delete mode 100644 lib/scatterquiver.js rename src/traces/{scatterquiver => quiver}/attributes.js (99%) rename src/traces/{scatterquiver => quiver}/calc.js (89%) rename src/traces/{scatterquiver => quiver}/defaults.js (98%) rename src/traces/{scatterquiver => quiver}/event_data.js (99%) rename src/traces/{scatterquiver => quiver}/hover.js (99%) rename src/traces/{scatterquiver => quiver}/index.js (89%) rename src/traces/{scatterquiver => quiver}/plot.js (98%) rename src/traces/{scatterquiver => quiver}/select_points.js (99%) rename src/traces/{scatterquiver => quiver}/style.js (99%) diff --git a/lib/index-strict.js b/lib/index-strict.js index 8e332c3b56d..c5d1c092056 100644 --- a/lib/index-strict.js +++ b/lib/index-strict.js @@ -52,7 +52,7 @@ Plotly.register([ require('../src/traces/scatterpolargl/strict'), require('./barpolar'), require('./scattersmith'), - require('./scatterquiver'), + require('./quiver'), // components require('./calendars'), diff --git a/lib/index.js b/lib/index.js index d234cfca3ea..73f4f0a29b8 100644 --- a/lib/index.js +++ b/lib/index.js @@ -52,7 +52,7 @@ Plotly.register([ require('./scatterpolargl'), require('./barpolar'), require('./scattersmith'), - require('./scatterquiver'), + require('./quiver'), // components require('./calendars'), diff --git a/lib/quiver.js b/lib/quiver.js new file mode 100644 index 00000000000..0368a75e500 --- /dev/null +++ b/lib/quiver.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = require('../src/traces/quiver'); + + diff --git a/lib/scatterquiver.js b/lib/scatterquiver.js deleted file mode 100644 index f3d08677cc2..00000000000 --- a/lib/scatterquiver.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../src/traces/scatterquiver'); diff --git a/src/traces/scatterquiver/attributes.js b/src/traces/quiver/attributes.js similarity index 99% rename from src/traces/scatterquiver/attributes.js rename to src/traces/quiver/attributes.js index 6a72329cee5..5586bc37783 100644 --- a/src/traces/scatterquiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -204,4 +204,6 @@ attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { keys: ['x', 'y', 'u', 'v', 'text', 'name'] })); -module.exports = attrs; \ No newline at end of file +module.exports = attrs; + + diff --git a/src/traces/scatterquiver/calc.js b/src/traces/quiver/calc.js similarity index 89% rename from src/traces/scatterquiver/calc.js rename to src/traces/quiver/calc.js index 28e11e95116..1fd8877bef7 100644 --- a/src/traces/scatterquiver/calc.js +++ b/src/traces/quiver/calc.js @@ -7,7 +7,7 @@ var BADNUM = require('../../constants/numerical').BADNUM; var scatterCalc = require('../scatter/calc'); /** - * Main calculation function for scatterquiver trace + * Main calculation function for quiver trace * Creates calcdata with arrow path data for each vector */ module.exports = function calc(gd, trace) { @@ -36,12 +36,12 @@ module.exports = function calc(gd, trace) { cdi.x = BADNUM; cdi.y = BADNUM; } - - // No additional props; keep minimal to avoid collisions with generic fields (e.g. `v`) } // Ensure axes are expanded and categories registered like scatter traces do scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); return cd; -}; \ No newline at end of file +}; + + diff --git a/src/traces/scatterquiver/defaults.js b/src/traces/quiver/defaults.js similarity index 98% rename from src/traces/scatterquiver/defaults.js rename to src/traces/quiver/defaults.js index 1992c520baf..2584e758286 100644 --- a/src/traces/scatterquiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -34,7 +34,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } // Set basic properties - traceOut.type = 'scatterquiver'; + traceOut.type = 'quiver'; // Set default values using coerce coerce('scale', 0.1); @@ -73,4 +73,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Set the data length traceOut._length = len; -}; \ No newline at end of file +}; + + diff --git a/src/traces/scatterquiver/event_data.js b/src/traces/quiver/event_data.js similarity index 99% rename from src/traces/scatterquiver/event_data.js rename to src/traces/quiver/event_data.js index faecde95abb..c744a23a152 100644 --- a/src/traces/scatterquiver/event_data.js +++ b/src/traces/quiver/event_data.js @@ -8,3 +8,5 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.pointNumber = pointNumber; out.trace = trace; }; + + diff --git a/src/traces/scatterquiver/hover.js b/src/traces/quiver/hover.js similarity index 99% rename from src/traces/scatterquiver/hover.js rename to src/traces/quiver/hover.js index d786ea3afc3..d9a3d4573fb 100644 --- a/src/traces/scatterquiver/hover.js +++ b/src/traces/quiver/hover.js @@ -72,4 +72,6 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } return [hoverPoint]; -}; \ No newline at end of file +}; + + diff --git a/src/traces/scatterquiver/index.js b/src/traces/quiver/index.js similarity index 89% rename from src/traces/scatterquiver/index.js rename to src/traces/quiver/index.js index b476090cc53..82850f0840b 100644 --- a/src/traces/scatterquiver/index.js +++ b/src/traces/quiver/index.js @@ -2,7 +2,7 @@ module.exports = { moduleType: 'trace', - name: 'scatterquiver', + name: 'quiver', basePlotModule: require('../../plots/cartesian'), categories: [ 'cartesian', 'svg', 'showLegend', 'scatter-like', 'zoomScale' @@ -21,7 +21,7 @@ module.exports = { meta: { description: [ - 'The scatterquiver trace type visualizes vector fields using arrows.', + 'The quiver trace type visualizes vector fields using arrows.', 'Specify a vector field using 4 1D arrays:', '2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`.', 'The arrows are drawn exactly at the positions given by `x` and `y`.', @@ -29,3 +29,5 @@ module.exports = { ].join(' ') } }; + + diff --git a/src/traces/scatterquiver/plot.js b/src/traces/quiver/plot.js similarity index 98% rename from src/traces/scatterquiver/plot.js rename to src/traces/quiver/plot.js index 87e2d754926..c1f67b156df 100644 --- a/src/traces/scatterquiver/plot.js +++ b/src/traces/quiver/plot.js @@ -20,7 +20,7 @@ module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transition // Append new traces: join.enter().append('g') .attr('class', function(d) { - return 'trace scatterquiver trace' + d[0].trace.uid; + return 'trace quiver trace' + d[0].trace.uid; }) .style('stroke-miterlimit', 2); join.order(); @@ -145,4 +145,6 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.transition(transition) .style('opacity', 1); } -} \ No newline at end of file +} + + diff --git a/src/traces/scatterquiver/select_points.js b/src/traces/quiver/select_points.js similarity index 99% rename from src/traces/scatterquiver/select_points.js rename to src/traces/quiver/select_points.js index e169b1b9517..d2dfa2d1dab 100644 --- a/src/traces/scatterquiver/select_points.js +++ b/src/traces/quiver/select_points.js @@ -37,3 +37,5 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; + + diff --git a/src/traces/scatterquiver/style.js b/src/traces/quiver/style.js similarity index 99% rename from src/traces/scatterquiver/style.js rename to src/traces/quiver/style.js index deb72e21718..30da22034c9 100644 --- a/src/traces/scatterquiver/style.js +++ b/src/traces/quiver/style.js @@ -14,3 +14,5 @@ module.exports = function style(gd, calcTrace) { s.selectAll('path.js-line') .call(Drawing.lineGroupStyle, trace.line || {}); }; + + diff --git a/test/plot-schema.json b/test/plot-schema.json index f500c00824c..872549f6b25 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -15039,6 +15039,12061 @@ "valType": "string" } }, +<<<<<<< HEAD +======= + "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*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", + "dflt": "map", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" + }, + "textfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "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" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "arrayOk": false, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattermap", + "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" + }, + "unselected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "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" + ] + } + }, + "categories": [ + "map", + "gl", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_map" + }, + "type": "scattermap" + }, + "scattermapbox": { + "animatable": false, + "attributes": { + "below": { + "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", + "editType": "calc", + "valType": "string" + }, + "cluster": { + "color": { + "arrayOk": true, + "description": "Sets the color for each cluster step.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether clustering is enabled or disabled.", + "editType": "calc", + "valType": "boolean" + }, + "maxzoom": { + "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", + "dflt": 24, + "editType": "calc", + "max": 24, + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "dflt": 1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "size": { + "arrayOk": true, + "description": "Sets the size for each cluster step.", + "dflt": 20, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "step": { + "arrayOk": true, + "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", + "dflt": -1, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "stepsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `step`.", + "editType": "none", + "valType": "string" + } + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "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" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "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": [ + "lon", + "lat", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "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" + }, + "lat": { + "description": "Sets the latitude coordinates (in degrees North).", + "editType": "calc", + "valType": "data_array" + }, + "latsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lat`.", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "lon": { + "description": "Sets the longitude coordinates (in degrees East).", + "editType": "calc", + "valType": "data_array" + }, + "lonsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lon`.", + "editType": "none", + "valType": "string" + }, + "marker": { + "allowoverlap": { + "description": "Flag to draw all symbols, even if they overlap.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "angle": { + "arrayOk": true, + "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", + "dflt": "auto", + "editType": "calc", + "valType": "number" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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": { + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", + "dflt": "mapbox", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" + }, + "textfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "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" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "arrayOk": false, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattermapbox", + "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" + }, + "unselected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "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" + ] + } + }, + "categories": [ + "mapbox", + "gl", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_mapbox" + }, + "type": "scattermapbox" + }, + "scatterpolar": { + "animatable": false, + "attributes": { + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "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" + }, + "dr": { + "description": "Sets the r coordinate step.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dtheta": { + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", + "editType": "calc", + "valType": "number" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "style", + "valType": "color" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "r", + "theta", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, + "color": { + "description": "Sets the line color.", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "calc", + "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "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" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "style", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolar", + "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" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "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" + ] + } + }, + "categories": [ + "polar", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar" + }, + "type": "scatterpolar" + }, + "scatterpolargl": { + "animatable": false, + "attributes": { + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "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" + }, + "dr": { + "description": "Sets the r coordinate step.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dtheta": { + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", + "editType": "calc", + "valType": "number" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "tozeroy", + "tozerox", + "tonexty", + "tonextx", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "r", + "theta", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "dash": { + "description": "Sets the style of the lines.", + "dflt": "solid", + "editType": "calc", + "valType": "enumerated", + "values": [ + "dash", + "dashdot", + "dot", + "longdash", + "longdashdot", + "solid" + ] + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "calc", + "valType": "angle" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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": { + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.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 `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "calc", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps" + ] + }, + "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": "calc", + "valType": "enumerated", + "values": [ + "normal", + "bold" + ] + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolargl", + "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" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "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" + ] + } + }, + "categories": [ + "gl", + "regl", + "polar", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar_gl" + }, + "type": "scatterpolargl" + }, + "quiver": { + "animatable": true, + "attributes": { + "angle": { + "description": "Angle of arrowhead in radians. Default = π/9", + "dflt": 0.3490658503988659, + "editType": "calc", + "max": 1.5707963267948966, + "min": 0, + "valType": "number" + }, + "arrow_scale": { + "description": "Value multiplied to length of barb to get length of arrowhead. Default = 0.3", + "dflt": 0.3, + "editType": "calc", + "max": 1, + "min": 0, + "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" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "anim": true, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "scale": { + "description": "Scales size of the arrows (ideally to avoid overlap). Default = 0.1", + "dflt": 0.1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "scaleratio": { + "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uid": { + "anim": true, + "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" + }, + "unselected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of unselected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "usrc": { + "description": "Sets the source reference on Chart Studio Cloud for `u`.", + "editType": "none", + "valType": "string" + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "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" + ] + }, + "vsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `v`.", + "editType": "none", + "valType": "string" + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, + "scattersmith": { + "animatable": false, + "attributes": { + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "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" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "style", + "valType": "color" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "real", + "imag", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "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" + }, + "imag": { + "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "imagsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `imag`.", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, + "color": { + "description": "Sets the line color.", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "calc", + "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "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" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "style", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "real": { + "description": "Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "realsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `real`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.", + "dflt": "smith", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattersmith", + "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" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "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" + ] + } + }, + "categories": [ + "smith", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scattersmith trace type encompasses line charts, scatter charts, text charts, and bubble charts in smith coordinates. The data visualized as scatter point or lines is set in `real` and `imag` (imaginary) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_smith" + }, + "type": "scattersmith" + }, + "scatterternary": { + "animatable": false, + "attributes": { + "a": { + "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", + "editType": "calc", + "valType": "data_array" + }, + "asrc": { + "description": "Sets the source reference on Chart Studio Cloud for `a`.", + "editType": "none", + "valType": "string" + }, + "b": { + "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", + "editType": "calc", + "valType": "data_array" + }, + "bsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `b`.", + "editType": "none", + "valType": "string" + }, + "c": { + "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", + "editType": "calc", + "valType": "data_array" + }, + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "csrc": { + "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "editType": "none", + "valType": "string" + }, + "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" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "style", + "valType": "color" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "a", + "b", + "c", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, + "color": { + "description": "Sets the line color.", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "calc", + "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "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" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "style", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.", + "dflt": "ternary", + "editType": "calc", + "valType": "subplotid" + }, + "sum": { + "description": "The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). 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" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scatterternary", + "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" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "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" + ] + } + }, + "categories": [ + "ternary", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "Provides similar functionality to the *scatter* type but on a ternary phase diagram. The data is provided by at least two arrays out of `a`, `b`, `c` triplets.", + "hrName": "scatter_ternary" + }, + "type": "scatterternary" + }, + "splom": { + "animatable": false, + "attributes": { + "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" + }, + "diagonal": { + "editType": "calc", + "role": "object", + "visible": { + "description": "Determines whether or not subplots on the diagonal are displayed.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + } + }, + "dimensions": { + "items": { + "dimension": { + "axis": { + "editType": "calc+clearAxisTypes", + "matches": { + "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", +>>>>>>> 776a4535b (Name plot type quiver not scatterquiver) "type": { "_noTemplating": true, "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.", From 7b321ea5eea9e9426ab11b6401661d1380449df4 Mon Sep 17 00:00:00 2001 From: John Degner Date: Sun, 2 Nov 2025 17:00:36 -0800 Subject: [PATCH 04/34] Model quiver api closer to 3d cone trace --- lib/quiver.js | 2 -- src/traces/quiver/attributes.js | 33 +++++++++++++++++--- src/traces/quiver/defaults.js | 6 +++- src/traces/quiver/plot.js | 53 ++++++++++++++++++++++++++++----- test/plot-schema.json | 30 ++++++++++++++++--- 5 files changed, 106 insertions(+), 18 deletions(-) diff --git a/lib/quiver.js b/lib/quiver.js index 0368a75e500..12179a54900 100644 --- a/lib/quiver.js +++ b/lib/quiver.js @@ -1,5 +1,3 @@ 'use strict'; module.exports = require('../src/traces/quiver'); - - diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 5586bc37783..f7f3ffc2f74 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -32,13 +32,38 @@ var attrs = { anim: true, description: 'Sets the y components of the arrow vectors.' }, - scale: { + sizemode: { + valType: 'enumerated', + values: ['scaled', 'absolute', 'raw'], + editType: 'calc', + dflt: 'scaled', + description: [ + 'Determines whether `sizeref` is set as a *scaled* (unitless) scalar', + '(normalized by the max u/v norm in the vector field), as an *absolute*', + 'value (in the same units as the vector field), or *raw* to use the', + 'raw vector lengths.' + ].join(' ') + }, + sizeref: { valType: 'number', - dflt: 0.1, min: 0, - max: 1, editType: 'calc', - description: 'Scales size of the arrows (ideally to avoid overlap). Default = 0.1' + description: [ + 'Adjusts the arrow size scaling.', + 'The arrow length is determined by the vector norm multiplied by `sizeref`,', + 'optionally normalized when `sizemode` is *scaled*.' + ].join(' ') + }, + anchor: { + valType: 'enumerated', + values: ['tip', 'tail', 'cm', 'center', 'middle'], + dflt: 'tail', + editType: 'calc', + description: [ + 'Sets the arrows\' anchor with respect to their (x,y) positions.', + 'Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head,', + 'or *cm*/*center*/*middle* to center the arrow on (x,y).' + ].join(' ') }, arrow_scale: { valType: 'number', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 2584e758286..4ba6a36b59f 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -36,8 +36,12 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Set basic properties traceOut.type = 'quiver'; + // Sizing API similar to cone + var sizemode = coerce('sizemode'); + coerce('sizeref', sizemode === 'raw' ? 1 : 0.5); + coerce('anchor'); + // Set default values using coerce - coerce('scale', 0.1); coerce('arrow_scale', 0.3); coerce('angle', Math.PI / 9); coerce('scaleratio'); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c1f67b156df..cd660cfa909 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -81,6 +81,20 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.exit().remove(); + // Precompute norms for sizing + var uArr = trace.u || []; + var vArr = trace.v || []; + var maxNorm = 0; + for (var ni = 0; ni < trace._length; ni++) { + var uu = uArr[ni] || 0; + var vv = vArr[ni] || 0; + var nrm = Math.sqrt(uu * uu + vv * vv); + if (nrm > maxNorm) maxNorm = nrm; + } + var sizemode = trace.sizemode || 'scaled'; + var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); + var anchor = trace.anchor || 'tail'; + // Update line segments lineSegments.each(function(cdi) { var path = d3.select(this); @@ -92,7 +106,6 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition } // Compute arrow in data space - var scale = trace.scale || 1; var scaleRatio = trace.scaleratio || 1; var arrowScale = trace.arrow_scale || 0.2; var angle = trace.angle || Math.PI / 12; // small default @@ -100,8 +113,21 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var u = (trace.u && trace.u[cdi.i]) || 0; var v = (trace.v && trace.v[cdi.i]) || 0; - var dx = u * scale * scaleRatio; - var dy = v * scale; + var norm = Math.sqrt(u * u + v * v); + var unitx = norm ? (u / norm) : 0; + var unity = norm ? (v / norm) : 0; + var baseLen; + if (sizemode === 'scaled') { + var n = maxNorm ? (norm / maxNorm) : 0; + baseLen = n * sizeref; + } else { + baseLen = norm * sizeref; + } + + var dxBase = unitx * baseLen; + var dyBase = unity * baseLen; + var dx = dxBase * scaleRatio; + var dy = dyBase; var barbLen = Math.sqrt((dx * dx) / scaleRatio + dy * dy); var arrowLen = barbLen * arrowScale; var barbAng = Math.atan2(dy, dx / scaleRatio); @@ -109,10 +135,23 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var ang1 = barbAng + angle; var ang2 = barbAng - angle; - var x0 = cdi.x; - var y0 = cdi.y; - var x1 = x0 + dx; - var y1 = y0 + dy; + var x0, y0, x1, y1; + if (anchor === 'tip') { + x1 = cdi.x; + y1 = cdi.y; + x0 = x1 - dx; + y0 = y1 - dy; + } else if (anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + x0 = cdi.x - dx / 2; + y0 = cdi.y - dy / 2; + x1 = cdi.x + dx / 2; + y1 = cdi.y + dy / 2; + } else { // tail + x0 = cdi.x; + y0 = cdi.y; + x1 = x0 + dx; + y1 = y0 + dy; + } var xh1 = x1 - arrowLen * Math.cos(ang1) * scaleRatio; var yh1 = y1 - arrowLen * Math.sin(ang1); diff --git a/test/plot-schema.json b/test/plot-schema.json index 872549f6b25..2caeca859d9 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -22082,14 +22082,36 @@ "min": 0, "valType": "number" }, - "scale": { - "description": "Scales size of the arrows (ideally to avoid overlap). Default = 0.1", - "dflt": 0.1, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", "editType": "calc", - "max": 1, "min": 0, "valType": "number" }, + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "dflt": "tail", + "editType": "calc", + "valType": "enumerated", + "values": [ + "tip", + "tail", + "cm", + "center", + "middle" + ] + }, "scaleratio": { "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", "editType": "calc", From 32ce7bba4ada73a16ab50e49977a62cb86cb709f Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:07:16 -0800 Subject: [PATCH 05/34] Match arrowhead attributes for annotations --- src/traces/quiver/attributes.js | 36 +- src/traces/quiver/defaults.js | 6 +- src/traces/quiver/plot.js | 5 +- test/plot-schema.json | 15494 ++++++++++++++++++------------ 4 files changed, 9474 insertions(+), 6067 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index f7f3ffc2f74..a0e64eb74a9 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -65,14 +65,6 @@ var attrs = { 'or *cm*/*center*/*middle* to center the arrow on (x,y).' ].join(' ') }, - arrow_scale: { - valType: 'number', - dflt: 0.3, - min: 0, - max: 1, - editType: 'calc', - description: 'Value multiplied to length of barb to get length of arrowhead. Default = 0.3' - }, angle: { valType: 'number', dflt: Math.PI / 9, @@ -95,6 +87,26 @@ var attrs = { description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' }, + // Arrowhead sizing, consistent with annotations API naming + arrowsize: { + valType: 'number', + min: 0.3, + dflt: 1, + editType: 'calc', + description: [ + 'Scales the size of the arrow head relative to a base size.', + 'Higher values produce larger heads.' + ].join(' ') + }, + // Back-compat alias + arrow_scale: { + valType: 'number', + min: 0, + max: 1, + editType: 'calc', + description: 'Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.' + }, + // Line styling for arrows line: { color: { @@ -135,6 +147,14 @@ var attrs = { editType: 'style' }, + // Alias consistent with annotations; maps to line.width + arrowwidth: { + valType: 'number', + min: 0.1, + editType: 'style', + description: 'Sets the width (in px) of the arrow line (alias of `line.width`).' + }, + // Text and labels text: { valType: 'data_array', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 4ba6a36b59f..2d8e81554c1 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -42,7 +42,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('anchor'); // Set default values using coerce - coerce('arrow_scale', 0.3); + coerce('arrowsize', 1); + // back-compat + coerce('arrow_scale'); coerce('angle', Math.PI / 9); coerce('scaleratio'); coerce('hoverdistance', 20); @@ -50,7 +52,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Line styling traceOut.line = { color: traceIn.line && traceIn.line.color ? traceIn.line.color : defaultColor, - width: traceIn.line && traceIn.line.width ? traceIn.line.width : 1, + width: (traceIn.arrowwidth !== undefined) ? traceIn.arrowwidth : (traceIn.line && traceIn.line.width ? traceIn.line.width : 1), dash: traceIn.line && traceIn.line.dash ? traceIn.line.dash : 'solid', shape: traceIn.line && traceIn.line.shape ? traceIn.line.shape : 'linear', smoothing: traceIn.line && traceIn.line.smoothing ? traceIn.line.smoothing : 1, diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index cd660cfa909..c6fbe470371 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -107,7 +107,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Compute arrow in data space var scaleRatio = trace.scaleratio || 1; - var arrowScale = trace.arrow_scale || 0.2; + var baseHeadScale = 0.2; + var arrowScale = (trace.arrowsize !== undefined) + ? (baseHeadScale * trace.arrowsize) + : (trace.arrow_scale !== undefined ? trace.arrow_scale : baseHeadScale); var angle = trace.angle || Math.PI / 12; // small default var u = (trace.u && trace.u[cdi.i]) || 0; diff --git a/test/plot-schema.json b/test/plot-schema.json index 2caeca859d9..27857059a9b 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14151,4847 +14151,6941 @@ "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.", "dflt": "normal", "editType": "plot", +<<<<<<< HEAD "valType": "enumerated", "values": [ "normal", "tozero", "nonnegative" - ] - }, - "rangeselector": { - "activecolor": { - "description": "Sets the background color of the active range selector button.", - "editType": "plot", - "valType": "color" - }, - "bgcolor": { - "description": "Sets the background color of the range selector buttons.", - "dflt": "#eee", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the color of the border enclosing the range selector.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) of the border enclosing the range selector.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "buttons": { - "items": { - "button": { - "count": { - "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", - "dflt": 1, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", - "editType": "plot", - "label": { - "description": "Sets the text label to appear on the button.", - "editType": "plot", - "valType": "string" - }, - "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": "none", - "valType": "string" - }, - "role": "object", - "step": { - "description": "The unit of measurement that the `count` value will set the range by.", - "dflt": "month", - "editType": "plot", - "valType": "enumerated", - "values": [ - "month", - "year", - "day", - "hour", - "minute", - "second", - "all" - ] - }, - "stepmode": { - "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", - "dflt": "backward", - "editType": "plot", - "valType": "enumerated", - "values": [ - "backward", - "todate" - ] - }, - "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" - }, - "visible": { - "description": "Determines whether or not this button is visible.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - } - } - }, - "role": "object" - }, +======= + "valType": "any" + }, + { "editType": "plot", - "font": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font of the range selector button text.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "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": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "visible": { - "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", - "editType": "plot", - "valType": "boolean" - }, - "x": { - "description": "Sets the x position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "xanchor": { - "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", - "dflt": "left", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "left", - "center", - "right" - ] - }, - "y": { - "description": "Sets the y position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "yanchor": { - "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", - "dflt": "bottom", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "top", - "middle", - "bottom" - ] - } - }, - "rangeslider": { - "autorange": { - "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "bgcolor": { - "description": "Sets the background color of the range slider.", - "dflt": "#fff", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the border color of the range slider.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the border width of the range slider.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "range": { - "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "autorange": false - }, - "items": [ - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - }, - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - } - ], - "valType": "info_array" - }, - "role": "object", - "thickness": { - "description": "The height of the range slider as a fraction of the total plot area height.", - "dflt": 0.15, - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - "visible": { - "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "yaxis": { - "_isSubplotObj": true, - "editType": "calc", - "range": { - "description": "Sets the range of this axis for the rangeslider.", - "editType": "plot", - "items": [ - { - "editType": "plot", - "valType": "any" - }, - { - "editType": "plot", - "valType": "any" - } - ], - "valType": "info_array" - }, - "rangemode": { - "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", - "dflt": "match", - "editType": "calc", - "valType": "enumerated", - "values": [ - "auto", - "fixed", - "match" - ] - }, - "role": "object" - } - }, - "role": "object", - "scaleanchor": { - "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", - "editType": "plot", - "valType": "enumerated", - "values": [ - "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", - "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", - false - ] - }, - "scaleratio": { - "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", - "dflt": 1, + "valType": "any" + } + ], + "valType": "info_array" + }, + "description": "The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported.", + "editType": "calc", + "label": { + "description": "The shown name of the dimension.", + "editType": "plot", + "valType": "string" + }, + "multiselect": { + "description": "Do we allow multiple selection ranges or just a single range?", + "dflt": true, + "editType": "plot", + "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": "none", + "valType": "string" + }, + "range": { + "description": "The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements.", + "editType": "plot", + "items": [ + { "editType": "plot", - "min": 0, "valType": "number" - }, - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "ticks", - "valType": "boolean" - }, - "showdividers": { - "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", - "dflt": true, - "editType": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showgrid": { - "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", - "editType": "ticks", - "valType": "boolean" - }, - "showline": { - "description": "Determines whether or not a line bounding this axis is drawn.", - "dflt": false, - "editType": "ticks+layoutstyle", - "valType": "boolean" - }, - "showspikes": { - "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", - "dflt": false, - "editType": "modebar", - "valType": "boolean" - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "side": { - "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", + }, + { "editType": "plot", - "valType": "enumerated", - "values": [ - "top", - "bottom", - "left", - "right" - ] - }, - "spikecolor": { - "description": "Sets the spike color. If undefined, will use the series color", - "dflt": null, - "editType": "none", - "valType": "color" - }, - "spikedash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "dash", - "editType": "none", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "spikemode": { - "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", - "dflt": "toaxis", - "editType": "none", - "flags": [ - "toaxis", - "across", - "marker" - ], - "valType": "flaglist" - }, - "spikesnap": { - "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", - "dflt": "hovered data", - "editType": "none", - "valType": "enumerated", - "values": [ - "data", - "cursor", - "hovered data" - ] - }, - "spikethickness": { - "description": "Sets the width (in px) of the zero line.", - "dflt": 3, - "editType": "none", "valType": "number" - }, - "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": "ticks", - "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": "ticks", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "ticks", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets the tick font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "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": "ticks", - "items": [ - { - "editType": "ticks", - "valType": "any" - }, - { - "editType": "ticks", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "ticks", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "ticks", - "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": "none", - "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": "ticks", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabelindex": { - "arrayOk": true, - "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", - "editType": "calc", - "valType": "integer" - }, - "ticklabelindexsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", - "editType": "none", - "valType": "string" - }, - "ticklabelmode": { - "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", - "dflt": "instant", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "instant", - "period" - ] - }, - "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*. Otherwise on *category* and *multicategory* axes the default is *allow*. 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 with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", - "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" - ] - }, - "ticklabelshift": { - "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "ticklabelstandoff": { - "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "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": "ticks", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "ticks", - "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). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", - "editType": "ticks", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array", - "sync" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "ticks", - "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.", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "tickson": { - "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", - "dflt": "labels", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "labels", - "boundaries" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "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": "ticks", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "ticks", - "font": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets this axis' title font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "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": "ticks", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "standoff": { - "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "text": { - "description": "Sets the title of this axis.", - "editType": "ticks", - "valType": "string" - } - }, -<<<<<<< HEAD -======= - "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*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", - "dflt": "map", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "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" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermap", - "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" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "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" - ] - } - }, - "categories": [ - "map", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_map" - }, - "type": "scattermap" - }, - "scattermapbox": { - "animatable": false, - "attributes": { - "below": { - "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", - "editType": "calc", - "valType": "string" - }, - "cluster": { - "color": { - "arrayOk": true, - "description": "Sets the color for each cluster step.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether clustering is enabled or disabled.", - "editType": "calc", - "valType": "boolean" - }, - "maxzoom": { - "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", - "dflt": 24, - "editType": "calc", - "max": 24, - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "dflt": 1, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "description": "Sets the size for each cluster step.", - "dflt": 20, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "step": { - "arrayOk": true, - "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", - "dflt": -1, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" - } - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "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" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", - "valType": "color" - }, - "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": [ - "lon", - "lat", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "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" - }, - "lat": { - "description": "Sets the latitude coordinates (in degrees North).", - "editType": "calc", - "valType": "data_array" - }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "color": { - "description": "Sets the line color.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "role": "object", - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "lon": { - "description": "Sets the longitude coordinates (in degrees East).", - "editType": "calc", - "valType": "data_array" - }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, - "marker": { - "allowoverlap": { - "description": "Flag to draw all symbols, even if they overlap.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "angle": { - "arrayOk": true, - "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", - "dflt": "auto", - "editType": "calc", - "valType": "number" - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "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": { - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", - "dflt": "mapbox", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "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" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermapbox", - "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" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "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" - ] - } - }, - "categories": [ - "mapbox", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_mapbox" - }, - "type": "scattermapbox" - }, - "scatterpolar": { - "animatable": false, - "attributes": { - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "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" - }, - "dr": { - "description": "Sets the r coordinate step.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "dtheta": { - "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", - "editType": "calc", - "valType": "number" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "r", - "theta", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" + } + ], + "valType": "info_array" + }, + "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" + }, + "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": "plot", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`.", + "editType": "plot", + "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.", + "editType": "plot", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "values": { + "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.", + "editType": "calc", + "valType": "data_array" + }, + "valuessrc": { + "description": "Sets the source reference on Chart Studio Cloud for `values`.", + "editType": "none", + "valType": "string" + }, + "visible": { + "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + } + } + }, + "role": "object" + }, + "domain": { + "column": { + "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "editType": "plot", + "role": "object", + "row": { + "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "x": { + "description": "Sets the horizontal domain of this parcoords trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "items": [ + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + }, + "y": { + "description": "Sets the vertical domain of this parcoords trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "items": [ + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + } + }, + "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" + }, + "labelangle": { + "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "labelfont": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font for the `dimension` labels.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "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": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "labelside": { + "description": "Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", + "dflt": "top", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top", + "bottom" + ] + }, + "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" + }, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. 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": false, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.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 `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. 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 `line.cmin` and `line.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": [ + [ + 0, + "#440154" + ], + [ + 0.06274509803921569, + "#48186a" + ], + [ + 0.12549019607843137, + "#472d7b" + ], + [ + 0.18823529411764706, + "#424086" + ], + [ + 0.25098039215686274, + "#3b528b" + ], + [ + 0.3137254901960784, + "#33638d" + ], + [ + 0.3764705882352941, + "#2c728e" + ], + [ + 0.4392156862745098, + "#26828e" + ], + [ + 0.5019607843137255, + "#21918c" + ], + [ + 0.5647058823529412, + "#1fa088" + ], + [ + 0.6274509803921569, + "#28ae80" + ], + [ + 0.6901960784313725, + "#3fbc73" + ], + [ + 0.7529411764705882, + "#5ec962" + ], + [ + 0.8156862745098039, + "#84d44b" + ], + [ + 0.8784313725490196, + "#addc30" + ], + [ + 0.9411764705882353, + "#d8e219" + ], + [ + 1, + "#fde725" + ] + ], + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + } + }, + "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" + }, + "rangefont": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font for the `dimension` range values.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "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": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "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" + } + }, + "tickfont": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font for the `dimension` tick values.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "auto", + "editType": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "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": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "type": "parcoords", + "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" + }, + "unselected": { + "editType": "plot", + "line": { + "color": { + "description": "Sets the base color of unselected lines. in connection with `unselected.line.opacity`.", + "dflt": "#7f7f7f", + "editType": "plot", + "valType": "color" + }, + "editType": "plot", + "opacity": { + "description": "Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`.", + "dflt": "auto", + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object" + }, + "role": "object" + }, + "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" + ] + } + }, + "categories": [ + "gl", + "regl", + "noOpacity", + "noHover" + ], + "meta": { + "description": "Parallel coordinates for multidimensional exploratory data analysis. The samples are specified in `dimensions`. The colors are set in `line.color`." + }, + "type": "parcoords" + }, + "pie": { + "animatable": false, + "attributes": { + "automargin": { + "description": "Determines whether outside text labels can push the margins.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "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" + }, + "direction": { + "description": "Specifies the direction at which succeeding sectors follow one another.", + "dflt": "counterclockwise", + "editType": "calc", + "valType": "enumerated", + "values": [ + "clockwise", + "counterclockwise" + ] + }, + "dlabel": { + "description": "Sets the label step. See `label0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "domain": { + "column": { + "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "role": "object", + "row": { + "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "x": { + "description": "Sets the horizontal domain of this pie trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + }, + "y": { + "description": "Sets the vertical domain of this pie trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + } + }, + "hole": { + "description": "Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart.", + "dflt": 0, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "label", + "text", + "value", + "percent", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. 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": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "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" + }, + "insidetextfont": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `textinfo` lying inside the sector.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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" + } + }, + "insidetextorientation": { + "description": "Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector.", + "dflt": "auto", + "editType": "plot", + "valType": "enumerated", + "values": [ + "horizontal", + "radial", + "tangential", + "auto" + ] + }, + "label0": { + "description": "Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step.", + "dflt": 0, + "editType": "calc", + "valType": "number" + }, + "labels": { + "description": "Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label.", + "editType": "calc", + "valType": "data_array" + }, + "labelssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `labels`.", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "marker": { + "colors": { + "description": "Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors.", + "editType": "calc", + "valType": "data_array" + }, + "colorssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `colors`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "line": { + "color": { + "arrayOk": true, + "description": "Sets the color of the line enclosing each sector.", + "dflt": "#444", + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the line enclosing each sector.", + "dflt": 0, + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "pattern": { + "bgcolor": { + "arrayOk": true, + "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.", + "editType": "style", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the pattern within the marker.", + "editType": "style", + "fgcolor": { + "arrayOk": true, + "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.", + "editType": "style", + "valType": "color" + }, + "fgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", + "editType": "none", + "valType": "string" + }, + "fgopacity": { + "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "fillmode": { + "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.", + "dflt": "replace", + "editType": "style", + "valType": "enumerated", + "values": [ + "replace", + "overlay" + ] + }, + "path": { + "arrayOk": true, + "description": "Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color.", + "editType": "style", + "valType": "string" + }, + "pathsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `path`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shape": { + "arrayOk": true, + "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.", + "dflt": "", + "editType": "style", + "valType": "enumerated", + "values": [ + "", + "/", + "\\", + "x", + "-", + "|", + "+", + "." + ] + }, + "shapesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shape`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", + "dflt": 8, + "editType": "style", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "solidity": { + "arrayOk": true, + "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", + "dflt": 0.3, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "soliditysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", + "editType": "none", + "valType": "string" + } + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "outsidetextfont": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `textinfo` lying outside the sector.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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" + } + }, + "pull": { + "arrayOk": true, + "description": "Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices.", + "dflt": 0, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "pullsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `pull`.", + "editType": "none", + "valType": "string" + }, + "rotation": { + "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.", + "dflt": 0, + "editType": "calc", + "valType": "angle" + }, + "scalegroup": { + "description": "If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "sort": { + "description": "Determines whether or not the sectors are reordered from largest to smallest.", + "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": { + "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "editType": "plot", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `textinfo`.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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" + } + }, + "textinfo": { + "description": "Determines which trace information appear on the graph.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "label", + "text", + "value", + "percent" + ], + "valType": "flaglist" + }, + "textposition": { + "arrayOk": true, + "description": "Specifies the location of the `textinfo`.", + "dflt": "auto", + "editType": "plot", + "valType": "enumerated", + "values": [ + "inside", + "outside", + "auto", + "none" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "title": { + "editType": "plot", + "font": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `title`.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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": "plot", + "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" + } + }, + "position": { + "description": "Specifies the location of the `title`.", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle center", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "role": "object", + "text": { + "description": "Sets the title of the chart. If it is empty, no title is displayed.", + "dflt": "", + "editType": "plot", + "valType": "string" + } + }, + "type": "pie", + "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" + }, + "values": { + "description": "Sets the values of the sectors. If omitted, we count occurrences of each label.", + "editType": "calc", + "valType": "data_array" + }, + "valuessrc": { + "description": "Sets the source reference on Chart Studio Cloud for `values`.", + "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" + ] + } + }, + "categories": [ + "pie-like", + "pie", + "showLegend" + ], + "layoutAttributes": { + "extendpiecolors": { + "description": "If `true`, the pie slice colors (whether given by `piecolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "hiddenlabels": { + "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts", + "editType": "calc", + "valType": "data_array" + }, + "hiddenlabelssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", + "editType": "none", + "valType": "string" + }, + "piecolorway": { + "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.", + "editType": "calc", + "valType": "colorlist" + } + }, + "meta": { + "description": "A data visualized by the sectors of the pie is set in `values`. The sector labels are set in `labels`. The sector colors are set in `marker.colors`" + }, + "type": "pie" + }, + "quiver": { + "animatable": true, + "attributes": { + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "dflt": "tail", + "editType": "calc", + "valType": "enumerated", + "values": [ + "tip", + "tail", + "cm", + "center", + "middle" + ] + }, + "angle": { + "description": "Angle of arrowhead in radians. Default = π/9", + "dflt": 0.3490658503988659, + "editType": "calc", + "max": 1.5707963267948966, + "min": 0, + "valType": "number" + }, + "arrow_scale": { + "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "arrowsize": { + "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, + "arrowwidth": { + "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", + "editType": "style", + "min": 0.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" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "anim": true, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "scaleratio": { + "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "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": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uid": { + "anim": true, + "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" + }, + "unselected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of unselected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "usrc": { + "description": "Sets the source reference on Chart Studio Cloud for `u`.", + "editType": "none", + "valType": "string" + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "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" + ] + }, + "vsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `v`.", + "editType": "none", + "valType": "string" + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, + "sankey": { + "animatable": false, + "attributes": { + "arrangement": { + "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.", + "dflt": "snap", + "editType": "calc", + "valType": "enumerated", + "values": [ + "snap", + "perpendicular", + "freeform", + "fixed" + ] + }, + "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" + }, + "domain": { + "column": { + "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "role": "object", + "row": { + "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "x": { + "description": "Sets the horizontal domain of this sankey trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + }, + "y": { + "description": "Sets the vertical domain of this sankey trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + } + }, + "hoverinfo": { + "arrayOk": false, + "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. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively.", + "dflt": "all", + "editType": "calc", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [], + "valType": "flaglist" + }, + "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": "calc", + "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": "calc", + "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": "calc", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "font": { + "color": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + } + }, + "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" + }, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "link": { + "arrowlen": { + "description": "Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used.", + "editType": "calc", + "valType": "color" + }, + "colorscales": { + "items": { + "concentrationscales": { + "cmax": { + "description": "Sets the upper bound of the color domain.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain.", + "dflt": 0, + "editType": "calc", + "valType": "number" + }, + "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": [ + [ + 0, + "white" + ], + [ + 1, + "black" +>>>>>>> b50bcc3af (Match arrowhead attributes for annotations) + ] + }, + "rangeselector": { + "activecolor": { + "description": "Sets the background color of the active range selector button.", + "editType": "plot", + "valType": "color" + }, + "bgcolor": { + "description": "Sets the background color of the range selector buttons.", + "dflt": "#eee", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the color of the border enclosing the range selector.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) of the border enclosing the range selector.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "buttons": { + "items": { + "button": { + "count": { + "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", + "editType": "plot", + "label": { + "description": "Sets the text label to appear on the button.", + "editType": "plot", + "valType": "string" + }, + "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": "none", + "valType": "string" + }, + "role": "object", + "step": { + "description": "The unit of measurement that the `count` value will set the range by.", + "dflt": "month", + "editType": "plot", + "valType": "enumerated", + "values": [ + "month", + "year", + "day", + "hour", + "minute", + "second", + "all" + ] + }, + "stepmode": { + "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", + "dflt": "backward", + "editType": "plot", + "valType": "enumerated", + "values": [ + "backward", + "todate" + ] + }, + "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" + }, + "visible": { + "description": "Determines whether or not this button is visible.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + } + } + }, + "role": "object" + }, + "editType": "plot", + "font": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font of the range selector button text.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "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": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "visible": { + "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", + "editType": "plot", + "valType": "boolean" + }, + "x": { + "description": "Sets the x position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "xanchor": { + "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", + "dflt": "left", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "y": { + "description": "Sets the y position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "yanchor": { + "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", + "dflt": "bottom", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, + "rangeslider": { + "autorange": { + "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "bgcolor": { + "description": "Sets the background color of the range slider.", + "dflt": "#fff", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the border color of the range slider.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the border width of the range slider.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "range": { + "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "autorange": false + }, + "items": [ + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + }, + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + } + ], + "valType": "info_array" + }, + "role": "object", + "thickness": { + "description": "The height of the range slider as a fraction of the total plot area height.", + "dflt": 0.15, + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + "visible": { + "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "yaxis": { + "_isSubplotObj": true, + "editType": "calc", + "range": { + "description": "Sets the range of this axis for the rangeslider.", + "editType": "plot", + "items": [ + { + "editType": "plot", + "valType": "any" + }, + { + "editType": "plot", + "valType": "any" + } + ], + "valType": "info_array" + }, + "rangemode": { + "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", + "dflt": "match", + "editType": "calc", + "valType": "enumerated", + "values": [ + "auto", + "fixed", + "match" + ] + }, + "role": "object" + } + }, + "role": "object", + "scaleanchor": { + "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", + "editType": "plot", + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", + "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", + false + ] + }, + "scaleratio": { + "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "ticks", + "valType": "boolean" + }, + "showdividers": { + "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", + "dflt": true, + "editType": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showgrid": { + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "editType": "ticks", + "valType": "boolean" + }, + "showline": { + "description": "Determines whether or not a line bounding this axis is drawn.", + "dflt": false, + "editType": "ticks+layoutstyle", + "valType": "boolean" + }, + "showspikes": { + "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", + "dflt": false, + "editType": "modebar", + "valType": "boolean" + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "side": { + "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top", + "bottom", + "left", + "right" + ] + }, + "spikecolor": { + "description": "Sets the spike color. If undefined, will use the series color", + "dflt": null, + "editType": "none", + "valType": "color" + }, + "spikedash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "dash", + "editType": "none", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "spikemode": { + "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", + "dflt": "toaxis", + "editType": "none", + "flags": [ + "toaxis", + "across", + "marker" + ], + "valType": "flaglist" + }, + "spikesnap": { + "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", + "dflt": "hovered data", + "editType": "none", + "valType": "enumerated", + "values": [ + "data", + "cursor", + "hovered data" + ] + }, + "spikethickness": { + "description": "Sets the width (in px) of the zero line.", + "dflt": 3, + "editType": "none", + "valType": "number" + }, + "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": "ticks", + "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": "ticks", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "ticks", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets the tick font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "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": "ticks", + "items": [ + { + "editType": "ticks", + "valType": "any" + }, + { + "editType": "ticks", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "ticks", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "ticks", + "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": "none", + "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": "ticks", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabelindex": { + "arrayOk": true, + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", + "editType": "calc", + "valType": "integer" + }, + "ticklabelindexsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", + "editType": "none", + "valType": "string" + }, + "ticklabelmode": { + "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", + "dflt": "instant", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "instant", + "period" + ] + }, + "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*. Otherwise on *category* and *multicategory* axes the default is *allow*. 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 with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", + "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" + ] + }, + "ticklabelshift": { + "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "ticklabelstandoff": { + "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "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": "ticks", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "ticks", + "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). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", + "editType": "ticks", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array", + "sync" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "ticks", + "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.", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "tickson": { + "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", + "dflt": "labels", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "labels", + "boundaries" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "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": "ticks", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "ticks", + "font": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets this axis' title font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "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": "ticks", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "standoff": { + "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "text": { + "description": "Sets the title of this axis.", + "editType": "ticks", + "valType": "string" + } + }, +<<<<<<< HEAD +======= + "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*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", + "dflt": "map", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" + }, + "textfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "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" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "arrayOk": false, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattermap", + "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" + }, + "unselected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "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" + ] + } + }, + "categories": [ + "map", + "gl", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_map" + }, + "type": "scattermap" + }, + "scattermapbox": { + "animatable": false, + "attributes": { + "below": { + "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", + "editType": "calc", + "valType": "string" + }, + "cluster": { + "color": { + "arrayOk": true, + "description": "Sets the color for each cluster step.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether clustering is enabled or disabled.", + "editType": "calc", + "valType": "boolean" + }, + "maxzoom": { + "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", + "dflt": 24, + "editType": "calc", + "max": 24, + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "dflt": 1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "size": { + "arrayOk": true, + "description": "Sets the size for each cluster step.", + "dflt": 20, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "step": { + "arrayOk": true, + "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", + "dflt": -1, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "stepsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `step`.", + "editType": "none", + "valType": "string" + } + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "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" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "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": [ + "lon", + "lat", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "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" + }, + "lat": { + "description": "Sets the latitude coordinates (in degrees North).", + "editType": "calc", + "valType": "data_array" + }, + "latsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lat`.", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + }, + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "lon": { + "description": "Sets the longitude coordinates (in degrees East).", + "editType": "calc", + "valType": "data_array" + }, + "lonsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lon`.", + "editType": "none", + "valType": "string" + }, + "marker": { + "allowoverlap": { + "description": "Flag to draw all symbols, even if they overlap.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "angle": { + "arrayOk": true, + "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", + "dflt": "auto", + "editType": "calc", + "valType": "number" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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": { + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" ] }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, "symbolsrc": { "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", "editType": "none", @@ -19010,7 +21104,8 @@ "valType": "string" }, "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", "editType": "calc", "extras": [ "none" @@ -19035,34 +21130,18 @@ "min": 0, "valType": "number" }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { - "editType": "style", + "editType": "calc", "marker": { "color": { "description": "Sets the marker color of selected points.", - "editType": "style", + "editType": "calc", "valType": "color" }, - "editType": "style", + "editType": "calc", "opacity": { "description": "Sets the marker opacity of selected points.", - "editType": "style", + "editType": "calc", "max": 1, "min": 0, "valType": "number" @@ -19070,21 +21149,12 @@ "role": "object", "size": { "description": "Sets the marker size of selected points.", - "editType": "style", + "editType": "calc", "min": 0, "valType": "number" } }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } + "role": "object" }, "selectedpoints": { "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", @@ -19117,90 +21187,40 @@ } }, "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", + "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", + "dflt": "mapbox", "editType": "calc", "valType": "subplotid" }, "text": { "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" }, "textfont": { "color": { - "arrayOk": true, - "editType": "style", + "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", + "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", "editType": "calc", "family": { - "arrayOk": true, "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", "editType": "calc", "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { - "arrayOk": true, "editType": "calc", "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": "calc", @@ -19210,51 +21230,7 @@ "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": "calc", - "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": "calc", - "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": "calc", @@ -19262,18 +21238,13 @@ "normal", "bold" ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" + "max": 1000, + "min": 1, + "valType": "integer" } }, "textposition": { - "arrayOk": true, + "arrayOk": false, "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", "dflt": "middle center", "editType": "calc", @@ -19290,11 +21261,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, "textsrc": { "description": "Sets the source reference on Chart Studio Cloud for `text`.", "editType": "none", @@ -19302,15 +21268,15 @@ }, "texttemplate": { "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", "dflt": "", - "editType": "plot", + "editType": "calc", "valType": "string" }, "texttemplatefallback": { "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", "dflt": "-", - "editType": "plot", + "editType": "calc", "valType": "any" }, "texttemplatesrc": { @@ -19318,34 +21284,7 @@ "editType": "none", "valType": "string" }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolar", + "type": "scattermapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", "editType": "plot", @@ -19357,17 +21296,17 @@ "valType": "any" }, "unselected": { - "editType": "style", + "editType": "calc", "marker": { "color": { "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", + "editType": "calc", "valType": "color" }, - "editType": "style", + "editType": "calc", "opacity": { "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", + "editType": "calc", "max": 1, "min": 0, "valType": "number" @@ -19375,21 +21314,12 @@ "role": "object", "size": { "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", + "editType": "calc", "min": 0, "valType": "number" } }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } + "role": "object" }, "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).", @@ -19404,20 +21334,27 @@ } }, "categories": [ - "polar", + "mapbox", + "gl", "symbols", "showLegend", "scatter-like" ], "meta": { - "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar" + "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_mapbox" }, - "type": "scatterpolar" + "type": "scattermapbox" }, - "scatterpolargl": { + "scatterpolar": { "animatable": false, "attributes": { + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, "connectgaps": { "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", "dflt": false, @@ -19446,23 +21383,19 @@ "valType": "number" }, "fill": { - "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", "editType": "calc", "valType": "enumerated", "values": [ "none", - "tozeroy", - "tozerox", - "tonexty", - "tonextx", "toself", "tonext" ] }, "fillcolor": { "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", + "editType": "style", "valType": "color" }, "hoverinfo": { @@ -19693,6 +21626,15 @@ "valType": "boolean" } }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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 ``.", @@ -19857,31 +21799,62 @@ "valType": "number" }, "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, "color": { "description": "Sets the line color.", - "editType": "calc", + "editType": "style", "valType": "color" }, "dash": { - "description": "Sets the style of the lines.", + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", "dflt": "solid", - "editType": "calc", - "valType": "enumerated", + "editType": "style", + "valType": "string", "values": [ - "dash", - "dashdot", + "solid", "dot", + "dash", "longdash", - "longdashdot", - "solid" + "dashdot", + "longdashdot" ] }, "editType": "calc", "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, "width": { "description": "Sets the line width (in px).", "dflt": 2, - "editType": "calc", + "editType": "style", "min": 0, "valType": "number" } @@ -19891,9 +21864,19 @@ "arrayOk": true, "description": "Sets the marker angle in respect to `angleref`.", "dflt": 0, - "editType": "calc", + "editType": "plot", "valType": "angle" }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, "anglesrc": { "description": "Sets the source reference on Chart Studio Cloud for `angle`.", "editType": "none", @@ -19916,7 +21899,7 @@ "cmax": { "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -19932,7 +21915,7 @@ "cmin": { "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -19941,7 +21924,7 @@ "color": { "arrayOk": true, "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", + "editType": "style", "valType": "color" }, "coloraxis": { @@ -19955,35 +21938,35 @@ "bgcolor": { "description": "Sets the color of padded area.", "dflt": "rgba(0,0,0,0)", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "bordercolor": { "description": "Sets the axis line color.", "dflt": "#444", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "borderwidth": { "description": "Sets the width (in px) or the border enclosing this color bar.", "dflt": 0, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "impliedEdits": { "tickmode": "linear" }, "valType": "any" }, - "editType": "calc", + "editType": "colorbars", "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", "dflt": "B", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "none", @@ -19998,20 +21981,20 @@ "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", + "editType": "colorbars", "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", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "fraction", @@ -20021,21 +22004,21 @@ "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", + "editType": "colorbars", "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", + "editType": "colorbars", "min": 0, "valType": "integer" }, "orientation": { "description": "Sets the orientation of the colorbar.", "dflt": "v", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "h", @@ -20045,13 +22028,13 @@ "outlinecolor": { "description": "Sets the axis line color.", "dflt": "#444", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "outlinewidth": { "description": "Sets the width (in px) of the axis line.", "dflt": 1, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, @@ -20059,13 +22042,13 @@ "separatethousands": { "description": "If \"true\", even 4-digit integers are separated", "dflt": false, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "all", @@ -20077,13 +22060,13 @@ "showticklabels": { "description": "Determines whether or not the tick labels are drawn.", "dflt": true, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "all", @@ -20095,7 +22078,7 @@ "showticksuffix": { "description": "Same as `showtickprefix` but for tick suffixes.", "dflt": "all", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "all", @@ -20107,14 +22090,14 @@ "thickness": { "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", "dflt": 30, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "fraction", @@ -20123,7 +22106,7 @@ }, "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", + "editType": "colorbars", "impliedEdits": { "tickmode": "linear" }, @@ -20132,25 +22115,25 @@ "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", + "editType": "colorbars", "valType": "angle" }, "tickcolor": { "description": "Sets the tick color.", "dflt": "#444", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "tickfont": { "color": { - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "description": "Sets the color bar's tick label font", - "editType": "calc", + "editType": "colorbars", "family": { "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", + "editType": "colorbars", "noBlank": true, "strict": true, "valType": "string" @@ -20158,7 +22141,7 @@ "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", + "editType": "colorbars", "extras": [ "none" ], @@ -20173,18 +22156,18 @@ "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", + "editType": "colorbars", "valType": "string" }, "size": { - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20194,7 +22177,7 @@ "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20206,7 +22189,7 @@ "variant": { "description": "Sets the variant of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20220,7 +22203,7 @@ "weight": { "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "extras": [ "normal", "bold" @@ -20233,7 +22216,7 @@ "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", + "editType": "colorbars", "valType": "string" }, "tickformatstops": { @@ -20241,41 +22224,41 @@ "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", + "editType": "colorbars", "items": [ { - "editType": "calc", + "editType": "colorbars", "valType": "any" }, { - "editType": "calc", + "editType": "colorbars", "valType": "any" } ], "valType": "info_array" }, - "editType": "calc", + "editType": "colorbars", "enabled": { "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", "dflt": true, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "string" }, "value": { "description": "string - dtickformat for described zoom level, the same as *tickformat*", "dflt": "", - "editType": "calc", + "editType": "colorbars", "valType": "string" } } @@ -20284,7 +22267,7 @@ }, "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "allow", @@ -20295,7 +22278,7 @@ "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "outside", @@ -20313,20 +22296,20 @@ "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", + "editType": "colorbars", "min": 1, "valType": "integer" }, "ticklen": { "description": "Sets the tick length (in px).", "dflt": 5, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "impliedEdits": {}, "valType": "enumerated", "values": [ @@ -20338,13 +22321,13 @@ "tickprefix": { "description": "Sets a tick label prefix.", "dflt": "", - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "outside", @@ -20355,12 +22338,12 @@ "ticksuffix": { "description": "Sets a tick label suffix.", "dflt": "", - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "data_array" }, "ticktextsrc": { @@ -20370,7 +22353,7 @@ }, "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", + "editType": "colorbars", "valType": "data_array" }, "tickvalssrc": { @@ -20381,22 +22364,22 @@ "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "title": { - "editType": "calc", + "editType": "colorbars", "font": { "color": { - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "description": "Sets this color bar's title font.", - "editType": "calc", + "editType": "colorbars", "family": { "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", + "editType": "colorbars", "noBlank": true, "strict": true, "valType": "string" @@ -20404,7 +22387,7 @@ "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", + "editType": "colorbars", "extras": [ "none" ], @@ -20419,18 +22402,18 @@ "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", + "editType": "colorbars", "valType": "string" }, "size": { - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20440,7 +22423,7 @@ "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20452,7 +22435,7 @@ "variant": { "description": "Sets the variant of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20466,7 +22449,7 @@ "weight": { "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "extras": [ "normal", "bold" @@ -20479,7 +22462,7 @@ "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*.", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "right", @@ -20489,18 +22472,18 @@ }, "text": { "description": "Sets the title of the color bar.", - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "left", @@ -20511,14 +22494,14 @@ "xpad": { "description": "Sets the amount of padding (in px) along the x direction.", "dflt": 10, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "container", @@ -20527,12 +22510,12 @@ }, "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", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "top", @@ -20543,14 +22526,14 @@ "ypad": { "description": "Sets the amount of padding (in px) along the y direction.", "dflt": 10, - "editType": "calc", + "editType": "colorbars", "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", + "editType": "colorbars", "valType": "enumerated", "values": [ "container", @@ -20573,6 +22556,39 @@ "valType": "string" }, "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, "line": { "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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.", @@ -20591,7 +22607,7 @@ "cmax": { "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -20607,7 +22623,7 @@ "cmin": { "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -20616,7 +22632,7 @@ "color": { "arrayOk": true, "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "calc", + "editType": "style", "valType": "color" }, "coloraxis": { @@ -20644,14 +22660,14 @@ "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", "dflt": false, - "editType": "calc", + "editType": "plot", "valType": "boolean" }, "role": "object", "width": { "arrayOk": true, "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "calc", + "editType": "style", "min": 0, "valType": "number" }, @@ -20661,10 +22677,17 @@ "valType": "string" } }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, "opacity": { "arrayOk": true, "description": "Sets the marker opacity.", - "editType": "calc", + "editType": "style", "max": 1, "min": 0, "valType": "number" @@ -20677,7 +22700,7 @@ "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, - "editType": "calc", + "editType": "plot", "valType": "boolean" }, "role": "object", @@ -20723,11 +22746,24 @@ "editType": "none", "valType": "string" }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", "dflt": "circle", - "editType": "calc", + "editType": "style", "valType": "enumerated", "values": [ 0, @@ -21218,844 +23254,2236 @@ "arrow-wide-open" ] }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "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" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "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 trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "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" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "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": "calc", + "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": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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": "calc", + "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" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolar", + "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" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "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" + ] + } + }, + "categories": [ + "polar", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar" + }, + "type": "scatterpolar" + }, + "scatterpolargl": { + "animatable": false, + "attributes": { + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "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" + }, + "dr": { + "description": "Sets the r coordinate step.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dtheta": { + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", + "editType": "calc", + "valType": "number" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "tozeroy", + "tozerox", + "tonexty", + "tonextx", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "r", + "theta", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" } }, - "meta": { + "hovertemplate": { "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", + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", "editType": "none", "valType": "string" }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "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", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" + "valType": "data_array" }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "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" }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, + "legendgrouptitle": { "editType": "style", - "max": 1, - "min": 0, - "valType": "number" + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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" + } }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" + "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" }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "dash": { + "description": "Sets the style of the lines.", + "dflt": "solid", + "editType": "calc", + "valType": "enumerated", + "values": [ + "dash", + "dashdot", + "dot", + "longdash", + "longdashdot", + "solid" + ] + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "calc", + "valType": "angle" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "calc", "valType": "color" }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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" }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" + "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" }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps" - ] - }, - "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": "calc", - "valType": "enumerated", - "values": [ - "normal", - "bold" - ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolargl", - "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" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", + "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" }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" + "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" }, - "editType": "style", - "role": "object" - } - }, - "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" - ] - } - }, - "categories": [ - "gl", - "regl", - "polar", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar_gl" - }, - "type": "scatterpolargl" - }, - "quiver": { - "animatable": true, - "attributes": { - "angle": { - "description": "Angle of arrowhead in radians. Default = π/9", - "dflt": 0.3490658503988659, - "editType": "calc", - "max": 1.5707963267948966, - "min": 0, - "valType": "number" - }, - "arrow_scale": { - "description": "Value multiplied to length of barb to get length of arrowhead. Default = 0.3", - "dflt": 0.3, - "editType": "calc", - "max": 1, - "min": 0, - "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" - }, - "hoverdistance": { - "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", - "dflt": 20, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "x", - "y", - "u", - "v", - "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" + "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" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" + "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" + ] }, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" + "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" + ] }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", + "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" }, - "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" + "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", + "" + ] }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "calc", "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", + "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" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "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" }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, + "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.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "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*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "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" }, - "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", + "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": [ - "normal", - "italic" + "left", + "center", + "right" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" }, - "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", + "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": [ - "normal", - "word caps", - "upper", - "lower" + "container", + "paper" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" + "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" }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", + "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": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" + "top", + "middle", + "bottom" ] }, - "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" + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" + "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" + ] } }, - "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" + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", "editType": "none", "valType": "string" }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", - "valType": "string" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "anim": true, - "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": { + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.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 `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, "color": { - "editType": "style", + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "calc", "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, + "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" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", "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" + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" }, "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, + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "calc", + "min": 0, "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" + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" } }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", "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" - }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" + "diameter", + "area" ] }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", - "editType": "plot", + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "calc", "valType": "enumerated", "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" ] }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" } }, "meta": { @@ -22069,67 +25497,67 @@ "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", - "dflt": "scaled", - "editType": "calc", - "valType": "enumerated", - "values": [ - "scaled", - "absolute", - "raw" - ] - }, - "sizeref": { - "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", - "min": 0, - "valType": "number" + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" }, - "anchor": { - "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", - "dflt": "tail", - "editType": "calc", - "valType": "enumerated", - "values": [ - "tip", - "tail", - "cm", - "center", - "middle" - ] + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" }, - "scaleratio": { - "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", - "editType": "calc", + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, "min": 0, "valType": "number" }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, "selected": { "editType": "style", - "line": { + "marker": { "color": { - "description": "Sets the line color of selected points.", + "description": "Sets the marker color of selected points.", "editType": "style", "valType": "color" }, "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, "role": "object", - "width": { - "description": "Sets the line width of selected points.", + "size": { + "description": "Sets the marker size of selected points.", "editType": "style", "min": 0, "valType": "number" @@ -22138,7 +25566,7 @@ "role": "object", "textfont": { "color": { - "description": "Sets the text font color of selected points, applied only when a selection exists.", + "description": "Sets the text font color of selected points.", "editType": "style", "valType": "color" }, @@ -22176,16 +25604,23 @@ "valType": "string" } }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, "text": { - "anim": true, - "description": "Sets text elements associated with each (x,y) pair.", + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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": "data_array" + "valType": "string" }, "textfont": { "color": { "arrayOk": true, - "editType": "style", + "editType": "calc", "valType": "color" }, "colorsrc": { @@ -22208,39 +25643,7 @@ "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", @@ -22268,24 +25671,6 @@ "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": "calc", - "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.", @@ -22294,11 +25679,7 @@ "valType": "enumerated", "values": [ "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" + "small-caps" ] }, "variantsrc": { @@ -22311,13 +25692,11 @@ "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", "editType": "calc", - "extras": [ + "valType": "enumerated", + "values": [ "normal", "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" + ] }, "weightsrc": { "description": "Sets the source reference on Chart Studio Cloud for `weight`.", @@ -22326,6 +25705,7 @@ } }, "textposition": { + "arrayOk": true, "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", "dflt": "middle center", "editType": "calc", @@ -22342,20 +25722,63 @@ "bottom right" ] }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, "textsrc": { "description": "Sets the source reference on Chart Studio Cloud for `text`.", "editType": "none", "valType": "string" }, - "type": "quiver", - "u": { - "anim": true, - "description": "Sets the x components of the arrow vectors.", - "editType": "calc", + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", "valType": "data_array" }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolargl", "uid": { - "anim": true, "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", "editType": "plot", "valType": "string" @@ -22367,16 +25790,23 @@ }, "unselected": { "editType": "style", - "line": { + "marker": { "color": { - "description": "Sets the line color of unselected points.", + "description": "Sets the marker color of unselected points, applied only when a selection exists.", "editType": "style", "valType": "color" }, "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, "role": "object", - "width": { - "description": "Sets the line width of unselected points.", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", "editType": "style", "min": 0, "valType": "number" @@ -22393,17 +25823,6 @@ "role": "object" } }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, - "v": { - "anim": true, - "description": "Sets the y components of the arrow vectors.", - "editType": "calc", - "valType": "data_array" - }, "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, @@ -22414,58 +25833,21 @@ false, "legendonly" ] - }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, - "x": { - "anim": true, - "description": "Sets the x coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "xaxis": { - "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", - "dflt": "x", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, - "y": { - "anim": true, - "description": "Sets the y coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "yaxis": { - "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", - "dflt": "y", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "categories": [ - "cartesian", - "svg", + "gl", + "regl", + "polar", + "symbols", "showLegend", - "scatter-like", - "zoomScale" + "scatter-like" ], "meta": { - "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar_gl" }, - "type": "quiver" + "type": "scatterpolargl" }, "scattersmith": { "animatable": false, From 4ef6182ec5017ad47f2282e59db1ab3c28bb431d Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:14:48 -0800 Subject: [PATCH 06/34] Derive scaling from axes --- src/traces/quiver/attributes.js | 6 ------ src/traces/quiver/defaults.js | 1 - src/traces/quiver/plot.js | 5 ++++- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index a0e64eb74a9..0e2ef465a25 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -73,12 +73,6 @@ var attrs = { editType: 'calc', description: 'Angle of arrowhead in radians. Default = π/9' }, - scaleratio: { - valType: 'number', - min: 0, - editType: 'calc', - description: 'The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.' - }, hoverdistance: { valType: 'number', min: -1, diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 2d8e81554c1..eec5dae89ed 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -46,7 +46,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // back-compat coerce('arrow_scale'); coerce('angle', Math.PI / 9); - coerce('scaleratio'); coerce('hoverdistance', 20); // Line styling diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c6fbe470371..82fc6bfb2ca 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -106,7 +106,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition } // Compute arrow in data space - var scaleRatio = trace.scaleratio || 1; + // Derive pixel-per-data scaling from axes at this point + var pxPerX = Math.abs(xa.c2p(cdi.x + 1) - xa.c2p(cdi.x)); + var pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); + var scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; var baseHeadScale = 0.2; var arrowScale = (trace.arrowsize !== undefined) ? (baseHeadScale * trace.arrowsize) From 8fbc748f71e72086a7bb4a6a1305b790d0c9db8f Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:29:40 -0800 Subject: [PATCH 07/34] Remove angle attribute --- src/traces/quiver/attributes.js | 8 -------- src/traces/quiver/defaults.js | 1 - src/traces/quiver/plot.js | 9 ++++++--- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 0e2ef465a25..937e31bb0df 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -65,14 +65,6 @@ var attrs = { 'or *cm*/*center*/*middle* to center the arrow on (x,y).' ].join(' ') }, - angle: { - valType: 'number', - dflt: Math.PI / 9, - min: 0, - max: Math.PI / 2, - editType: 'calc', - description: 'Angle of arrowhead in radians. Default = π/9' - }, hoverdistance: { valType: 'number', min: -1, diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index eec5dae89ed..43d7a633ec4 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -45,7 +45,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('arrowsize', 1); // back-compat coerce('arrow_scale'); - coerce('angle', Math.PI / 9); coerce('hoverdistance', 20); // Line styling diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 82fc6bfb2ca..c90ba980c87 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -114,7 +114,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var arrowScale = (trace.arrowsize !== undefined) ? (baseHeadScale * trace.arrowsize) : (trace.arrow_scale !== undefined ? trace.arrow_scale : baseHeadScale); - var angle = trace.angle || Math.PI / 12; // small default + // Fixed arrowhead wedge angle (radians). + // Arrow direction is fully determined by u,v (see barbAng below); + // this constant only controls the opening of the head. + var headAngle = Math.PI / 12; var u = (trace.u && trace.u[cdi.i]) || 0; var v = (trace.v && trace.v[cdi.i]) || 0; @@ -138,8 +141,8 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var arrowLen = barbLen * arrowScale; var barbAng = Math.atan2(dy, dx / scaleRatio); - var ang1 = barbAng + angle; - var ang2 = barbAng - angle; + var ang1 = barbAng + headAngle; + var ang2 = barbAng - headAngle; var x0, y0, x1, y1; if (anchor === 'tip') { From aa5cc61bd7176937619b71a03cd9003d4362319e Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:37:42 -0800 Subject: [PATCH 08/34] Include colorscale attributes in quiver --- src/traces/quiver/attributes.js | 11 +++++++++++ src/traces/quiver/defaults.js | 23 +++++++++++++++++++++++ src/traces/quiver/plot.js | 12 ++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 937e31bb0df..15c85784745 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -6,6 +6,7 @@ var fontAttrs = require('../../plots/font_attributes'); var dash = require('../../components/drawing/attributes').dash; var extendFlat = require('../../lib/extend').extendFlat; +var colorScaleAttrs = require('../../components/colorscale/attributes'); var attrs = { x: { @@ -223,6 +224,16 @@ var attrs = { // Extend with base attributes (includes hoverinfo, etc.) extendFlat(attrs, baseAttrs); +// Colorscale attributes to color arrows by |(u,v)| magnitude +extendFlat( + attrs, + colorScaleAttrs('', { + colorAttr: 'u/v norm', + showScaleDflt: true, + editTypeOverride: 'calc' + }) +); + // Add hoverinfo with proper flags for quiver // We need to create a new object to avoid mutating the shared base attributes attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 43d7a633ec4..54e243c8497 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,6 +2,9 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); +var Colorscale = require('../../components/colorscale'); +var colorscaleDefaults = Colorscale.handleDefaults; +var hasColorscale = Colorscale.hasColorscale; module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { // Selection styling - use coerce to set proper defaults @@ -61,6 +64,26 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js traceOut.hovertemplate = traceIn.hovertemplate; + // Colorscale for magnitude coloring: compute cmin/cmax from |(u,v)| + var cmin = Infinity; + var cmax = -Infinity; + for (var k = 0; k < len; k++) { + var uu = (traceOut.u && traceOut.u[k]) || (traceIn.u && traceIn.u[k]) || 0; + var vv = (traceOut.v && traceOut.v[k]) || (traceIn.v && traceIn.v[k]) || 0; + var nrm = Math.sqrt(uu * uu + vv * vv); + if (isFinite(nrm)) { + if (nrm < cmin) cmin = nrm; + if (nrm > cmax) cmax = nrm; + } + } + if (!isFinite(cmin)) cmin = 0; + if (!isFinite(cmax)) cmax = 1; + if (traceIn.cmin === undefined && traceOut.cmin === undefined) traceOut.cmin = cmin; + if (traceIn.cmax === undefined && traceOut.cmax === undefined) traceOut.cmax = cmax; + // Flag colorscale and apply defaults (adds colorscale, showscale, colorbar, etc.) + traceOut._hasColorscale = hasColorscale(traceIn) || true; + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + // Text traceOut.text = traceIn.text; traceOut.textposition = traceIn.textposition || 'middle center'; diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c90ba980c87..b2be39b449a 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -5,6 +5,7 @@ var d3 = require('@plotly/d3'); var Registry = require('../../registry'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); +var Colorscale = require('../../components/colorscale'); module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { var join, onComplete; @@ -184,6 +185,17 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Apply styling using Plotly's standard styling system Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); + // If colorscale present, color arrows by magnitude |(u,v)| + if (trace._hasColorscale) { + var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); + lineSegments.style('stroke', function(cdi) { + var uVal = (trace.u && trace.u[cdi.i]) || 0; + var vVal = (trace.v && trace.v[cdi.i]) || 0; + var nVal = Math.sqrt(uVal * uVal + vVal * vVal); + return colorFunc(nVal); + }); + } + // Handle transitions if(transitionOpts && transitionOpts.duration > 0) { var transition = d3.transition() From 7b44252cab9df2cbb39292e29f9ca85a0f143425 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 13:06:44 -0800 Subject: [PATCH 09/34] Add support for coloring by an independent scalar array --- src/traces/quiver/attributes.js | 7 +++++++ src/traces/quiver/calc.js | 32 ++++++++++++++++++++++++++++++++ src/traces/quiver/defaults.js | 19 ++----------------- src/traces/quiver/plot.js | 14 ++++++++++---- 4 files changed, 51 insertions(+), 21 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 15c85784745..88eb603a999 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -33,6 +33,13 @@ var attrs = { anim: true, description: 'Sets the y components of the arrow vectors.' }, + // Optional scalar field used for colorscale mapping. If omitted, |(u,v)| is used. + c: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.' + }, sizemode: { valType: 'enumerated', values: ['scaled', 'absolute', 'raw'], diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 1fd8877bef7..4484de6960b 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -5,6 +5,7 @@ var Axes = require('../../plots/cartesian/axes'); var isNumeric = require('fast-isnumeric'); var BADNUM = require('../../constants/numerical').BADNUM; var scatterCalc = require('../scatter/calc'); +var colorscaleCalc = require('../../components/colorscale/calc'); /** * Main calculation function for quiver trace @@ -24,6 +25,12 @@ module.exports = function calc(gd, trace) { trace._length = len; var cd = new Array(len); + var normMin = Infinity; + var normMax = -Infinity; + var cMin = Infinity; + var cMax = -Infinity; + var hasC = Array.isArray(trace.c); + for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; var xValid = isNumeric(xVals[i]); @@ -36,11 +43,36 @@ module.exports = function calc(gd, trace) { cdi.x = BADNUM; cdi.y = BADNUM; } + + // track ranges for colorscale + if(hasC) { + var ci = trace.c[i]; + if(isNumeric(ci)) { + if(ci < cMin) cMin = ci; + if(ci > cMax) cMax = ci; + } + } else { + var ui = (trace.u && trace.u[i]) || 0; + var vi = (trace.v && trace.v[i]) || 0; + var n = Math.sqrt(ui * ui + vi * vi); + if(isFinite(n)) { + if(n < normMin) normMin = n; + if(n > normMax) normMax = n; + } + } } // Ensure axes are expanded and categories registered like scatter traces do scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); + // Colorscale cmin/cmax computation: prefer provided c, else magnitude + var vals = hasC ? [cMin, cMax] : [normMin, normMax]; + colorscaleCalc(gd, trace, { + vals: vals, + containerStr: '', + cLetter: 'c' + }); + return cd; }; diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 54e243c8497..e03df991d97 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -64,23 +64,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js traceOut.hovertemplate = traceIn.hovertemplate; - // Colorscale for magnitude coloring: compute cmin/cmax from |(u,v)| - var cmin = Infinity; - var cmax = -Infinity; - for (var k = 0; k < len; k++) { - var uu = (traceOut.u && traceOut.u[k]) || (traceIn.u && traceIn.u[k]) || 0; - var vv = (traceOut.v && traceOut.v[k]) || (traceIn.v && traceIn.v[k]) || 0; - var nrm = Math.sqrt(uu * uu + vv * vv); - if (isFinite(nrm)) { - if (nrm < cmin) cmin = nrm; - if (nrm > cmax) cmax = nrm; - } - } - if (!isFinite(cmin)) cmin = 0; - if (!isFinite(cmax)) cmax = 1; - if (traceIn.cmin === undefined && traceOut.cmin === undefined) traceOut.cmin = cmin; - if (traceIn.cmax === undefined && traceOut.cmax === undefined) traceOut.cmax = cmax; - // Flag colorscale and apply defaults (adds colorscale, showscale, colorbar, etc.) + // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) + // Keep colorscale enabled by default for quiver traceOut._hasColorscale = hasColorscale(traceIn) || true; colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index b2be39b449a..c092e0e40ed 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -189,10 +189,16 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition if (trace._hasColorscale) { var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); lineSegments.style('stroke', function(cdi) { - var uVal = (trace.u && trace.u[cdi.i]) || 0; - var vVal = (trace.v && trace.v[cdi.i]) || 0; - var nVal = Math.sqrt(uVal * uVal + vVal * vVal); - return colorFunc(nVal); + var cArr = trace.c; + var value; + if (Array.isArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { + value = cArr[cdi.i]; + } else { + var uVal = (trace.u && trace.u[cdi.i]) || 0; + var vVal = (trace.v && trace.v[cdi.i]) || 0; + value = Math.sqrt(uVal * uVal + vVal * vVal); + } + return colorFunc(value); }); } From fb6bbee00c09361bc2db126fbfd6bc4529c21826 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 13:19:56 -0800 Subject: [PATCH 10/34] Run npm run schema --- test/plot-schema.json | 697 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 684 insertions(+), 13 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 27857059a9b..f93b295abc8 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -17068,14 +17068,6 @@ "middle" ] }, - "angle": { - "description": "Angle of arrowhead in radians. Default = π/9", - "dflt": 0.3490658503988659, - "editType": "calc", - "max": 1.5707963267948966, - "min": 0, - "valType": "number" - }, "arrow_scale": { "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", "editType": "calc", @@ -17096,6 +17088,679 @@ "min": 0.1, "valType": "number" }, + "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" + }, + "c": { + "anim": true, + "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", + "editType": "calc", + "valType": "data_array" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) 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 u/v norm 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 u/v norm. 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 u/v norm 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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", + "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" + }, + "csrc": { + "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "editType": "none", + "valType": "string" + }, "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", @@ -17572,11 +18237,11 @@ "min": 0, "valType": "number" }, - "scaleratio": { - "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", - "editType": "calc", - "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": "plot", + "valType": "boolean" }, "selected": { "editType": "style", @@ -17617,6 +18282,12 @@ "editType": "style", "valType": "boolean" }, + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, "sizemode": { "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", "dflt": "scaled", From 4e8446ad24f41097659be4ac2f50c370fe09fef1 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 18 Nov 2025 20:52:51 -0800 Subject: [PATCH 11/34] Use isArrayOrTypedArray --- src/traces/quiver/attributes.js | 2 -- src/traces/quiver/calc.js | 4 +--- src/traces/quiver/defaults.js | 11 +++++------ src/traces/quiver/event_data.js | 2 -- src/traces/quiver/format_labels.js | 25 +++++++++++++++++++++++++ src/traces/quiver/hover.js | 2 -- src/traces/quiver/index.js | 2 -- src/traces/quiver/plot.js | 4 +--- src/traces/quiver/select_points.js | 2 -- src/traces/quiver/style.js | 2 -- 10 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 src/traces/quiver/format_labels.js diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 88eb603a999..966344561ca 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -254,5 +254,3 @@ attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { })); module.exports = attrs; - - diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 4484de6960b..1bee1abefd9 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -29,7 +29,7 @@ module.exports = function calc(gd, trace) { var normMax = -Infinity; var cMin = Infinity; var cMax = -Infinity; - var hasC = Array.isArray(trace.c); + var hasC = Lib.isArrayOrTypedArray(trace.c); for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; @@ -75,5 +75,3 @@ module.exports = function calc(gd, trace) { return cd; }; - - diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index e03df991d97..b1766539c26 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -19,19 +19,20 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var v = coerce('v'); // Simple validation - check if we have the required arrays - if(!x || !Array.isArray(x) || x.length === 0 || - !y || !Array.isArray(y) || y.length === 0) { + // Use Lib.isArrayOrTypedArray to support both regular arrays and typed arrays + if(!x || !Lib.isArrayOrTypedArray(x) || x.length === 0 || + !y || !Lib.isArrayOrTypedArray(y) || y.length === 0) { traceOut.visible = false; return; } // If u/v are missing, default to zeros so the trace participates in calc/category logic var len = Math.min(x.length, y.length); - if(!Array.isArray(u) || u.length === 0) { + if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { traceOut.u = new Array(len); for(var i = 0; i < len; i++) traceOut.u[i] = 0; } - if(!Array.isArray(v) || v.length === 0) { + if(!Lib.isArrayOrTypedArray(v) || v.length === 0) { traceOut.v = new Array(len); for(var j = 0; j < len; j++) traceOut.v[j] = 0; } @@ -86,5 +87,3 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Set the data length traceOut._length = len; }; - - diff --git a/src/traces/quiver/event_data.js b/src/traces/quiver/event_data.js index c744a23a152..faecde95abb 100644 --- a/src/traces/quiver/event_data.js +++ b/src/traces/quiver/event_data.js @@ -8,5 +8,3 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.pointNumber = pointNumber; out.trace = trace; }; - - diff --git a/src/traces/quiver/format_labels.js b/src/traces/quiver/format_labels.js new file mode 100644 index 00000000000..8b56f67c2bf --- /dev/null +++ b/src/traces/quiver/format_labels.js @@ -0,0 +1,25 @@ +'use strict'; + +var Axes = require('../../plots/cartesian/axes'); + +module.exports = function formatLabels(cdi, trace, fullLayout) { + var labels = {}; + + var xa = Axes.getFromId({ _fullLayout: fullLayout }, trace.xaxis || 'x'); + var ya = Axes.getFromId({ _fullLayout: fullLayout }, trace.yaxis || 'y'); + + var x = cdi.x; + var y = cdi.y; + + labels.xLabel = Axes.tickText(xa, xa.c2l(x), true).text; + labels.yLabel = Axes.tickText(ya, ya.c2l(y), true).text; + + var u = trace.u ? trace.u[cdi.i] : 0; + var v = trace.v ? trace.v[cdi.i] : 0; + + // Format u and v as plain numbers + labels.uLabel = String(u); + labels.vLabel = String(v); + + return labels; +}; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js index d9a3d4573fb..21bfaccb68b 100644 --- a/src/traces/quiver/hover.js +++ b/src/traces/quiver/hover.js @@ -73,5 +73,3 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { return [hoverPoint]; }; - - diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 82850f0840b..066d1e774f3 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -29,5 +29,3 @@ module.exports = { ].join(' ') } }; - - diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c092e0e40ed..ee03ad0334c 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -191,7 +191,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.style('stroke', function(cdi) { var cArr = trace.c; var value; - if (Array.isArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { + if (Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { value = cArr[cdi.i]; } else { var uVal = (trace.u && trace.u[cdi.i]) || 0; @@ -212,5 +212,3 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition .style('opacity', 1); } } - - diff --git a/src/traces/quiver/select_points.js b/src/traces/quiver/select_points.js index d2dfa2d1dab..e169b1b9517 100644 --- a/src/traces/quiver/select_points.js +++ b/src/traces/quiver/select_points.js @@ -37,5 +37,3 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; - - diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 30da22034c9..deb72e21718 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -14,5 +14,3 @@ module.exports = function style(gd, calcTrace) { s.selectAll('path.js-line') .call(Drawing.lineGroupStyle, trace.line || {}); }; - - From 34d183192e0b99da4c13ec29266bb065b69235ca Mon Sep 17 00:00:00 2001 From: John Degner Date: Mon, 17 Nov 2025 08:58:02 -0800 Subject: [PATCH 12/34] Add quiver jasmine and image tests --- src/traces/quiver/defaults.js | 3 + src/traces/quiver/event_data.js | 8 +- src/traces/quiver/hover.js | 105 +++--- src/traces/quiver/index.js | 1 + test/image/mocks/quiver_anchor.json | 92 +++++ test/image/mocks/quiver_arrow-styling.json | 66 ++++ test/image/mocks/quiver_categorical.json | 23 ++ test/image/mocks/quiver_colorscale.json | 32 ++ .../image/mocks/quiver_custom-colorscale.json | 39 +++ test/image/mocks/quiver_simple.json | 27 ++ test/image/mocks/quiver_sizemode.json | 92 +++++ test/image/mocks/quiver_wind.json | 53 +++ test/image/mocks/quiver_zero-vectors.json | 31 ++ test/jasmine/tests/quiver_test.js | 322 ++++++++++++++++++ 14 files changed, 832 insertions(+), 62 deletions(-) create mode 100644 test/image/mocks/quiver_anchor.json create mode 100644 test/image/mocks/quiver_arrow-styling.json create mode 100644 test/image/mocks/quiver_categorical.json create mode 100644 test/image/mocks/quiver_colorscale.json create mode 100644 test/image/mocks/quiver_custom-colorscale.json create mode 100644 test/image/mocks/quiver_simple.json create mode 100644 test/image/mocks/quiver_sizemode.json create mode 100644 test/image/mocks/quiver_wind.json create mode 100644 test/image/mocks/quiver_zero-vectors.json create mode 100644 test/jasmine/tests/quiver_test.js diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index b1766539c26..e7e5c0e86fd 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -17,6 +17,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var y = coerce('y'); var u = coerce('u'); var v = coerce('v'); + + // Optional scalar field for colorscale + coerce('c'); // Simple validation - check if we have the required arrays // Use Lib.isArrayOrTypedArray to support both regular arrays and typed arrays diff --git a/src/traces/quiver/event_data.js b/src/traces/quiver/event_data.js index faecde95abb..bd8507a676c 100644 --- a/src/traces/quiver/event_data.js +++ b/src/traces/quiver/event_data.js @@ -3,8 +3,8 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.x = pt.x; out.y = pt.y; - out.u = trace.u[pointNumber]; - out.v = trace.v[pointNumber]; - out.pointNumber = pointNumber; - out.trace = trace; + out.u = trace.u ? trace.u[pointNumber] : undefined; + out.v = trace.v ? trace.v[pointNumber] : undefined; + + return out; }; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js index 21bfaccb68b..41c7735f145 100644 --- a/src/traces/quiver/hover.js +++ b/src/traces/quiver/hover.js @@ -2,7 +2,7 @@ var Lib = require('../../lib'); var Fx = require('../../components/fx'); -var Registry = require('../../registry'); +var getTraceColor = require('../scatter/get_trace_color'); module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var cd = pointData.cd; @@ -12,64 +12,53 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var xpx = xa.c2p(xval); var ypx = ya.c2p(yval); - // Find the closest arrow base point to the hover point - var minDistance = Infinity; - var closestPoint = null; - var closestIndex = -1; - - // Each cd[i] is a calcdata point object with x/y - for(var i = 0; i < cd.length; i++) { - var cdi = cd[i]; - if(cdi.x === undefined || cdi.y === undefined) continue; - - var px = xa.c2p(cdi.x); - var py = ya.c2p(cdi.y); - - var distance = Math.sqrt((xpx - px) * (xpx - px) + (ypx - py) * (ypx - py)); - - if(distance < minDistance) { - minDistance = distance; - closestPoint = cdi; - closestIndex = i; - } - } - - var maxHoverDist = pointData.distance === Infinity ? Infinity : (trace.hoverdistance || 20); - if(!closestPoint || minDistance > maxHoverDist) return; - - // Create hover point data with proper label values and spikeline support - var hoverPoint = { - x: closestPoint.x, - y: closestPoint.y, - u: trace.u ? trace.u[closestIndex] : undefined, - v: trace.v ? trace.v[closestIndex] : undefined, - text: Array.isArray(trace.text) ? trace.text[closestIndex] : trace.text, - name: trace.name || '', - trace: trace, - index: closestIndex, - // Label values for formatting - xLabelVal: closestPoint.x, - yLabelVal: closestPoint.y, - uLabelVal: trace.u ? trace.u[closestIndex] : undefined, - vLabelVal: trace.v ? trace.v[closestIndex] : undefined, - // Spikeline support - xa: pointData.xa, - ya: pointData.ya, - x0: closestPoint.x, - x1: closestPoint.x, - y0: closestPoint.y, - y1: closestPoint.y, - distance: minDistance, - spikeDistance: minDistance, - curveNumber: trace.index, - color: trace.line ? trace.line.color : 'blue' + var distfn = function(di) { + var x = xa.c2p(di.x) - xpx; + var y = ya.c2p(di.y) - ypx; + return Math.max(Math.sqrt(x * x + y * y), 1 - 3 / Math.max(3, di.mrc || 0)); }; - // Set hover text - var hovertext = trace.hovertext || trace.text; - if(hovertext && hovertext[closestIndex]) { - hoverPoint.hovertext = hovertext[closestIndex]; - } + Fx.getClosest(cd, distfn, pointData); - return [hoverPoint]; + // skip if we didn't find a close point + if(pointData.index === false) return; + + // the closest data point + var di = cd[pointData.index]; + var xc = xa.c2p(di.x, true); + var yc = ya.c2p(di.y, true); + + // now we're done using the whole `calcdata` array, replace the + // index with the original index + pointData.index = di.i; + + var u = trace.u ? trace.u[di.i] : 0; + var v = trace.v ? trace.v[di.i] : 0; + + // Build extraText to show u and v values + var extraText = 'u: ' + u + ', v: ' + v; + + Lib.extendFlat(pointData, { + color: getTraceColor(trace, di), + + x0: xc - 3, + x1: xc + 3, + xLabelVal: di.x, + + y0: yc - 3, + y1: yc + 3, + yLabelVal: di.y, + + uLabelVal: u, + vLabelVal: v, + + extraText: extraText, + + spikeDistance: Math.sqrt((xpx - xc) * (xpx - xc) + (ypx - yc) * (ypx - yc)), + hovertemplate: trace.hovertemplate + }); + + Lib.fillText(di, trace, pointData); + + return [pointData]; }; diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 066d1e774f3..4237fcf810a 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -15,6 +15,7 @@ module.exports = { style: require('./style'), styleOnSelect: require('../scatter/style').styleOnSelect, hoverPoints: require('./hover'), + formatLabels: require('./format_labels'), eventData: require('./event_data'), selectPoints: require('./select_points'), animatable: true, diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json new file mode 100644 index 00000000000..dc0a157e889 --- /dev/null +++ b/test/image/mocks/quiver_anchor.json @@ -0,0 +1,92 @@ +{ + "data": [ + { + "type": "quiver", + "name": "tail anchor", + "x": [1, 1, 1], + "y": [0, 0, 0], + "u": [1, 0, -1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "color": "red", + "width": 2 + }, + "showscale": false, + "xaxis": "x", + "yaxis": "y" + }, + { + "type": "quiver", + "name": "tip anchor", + "x": [1, 1, 1], + "y": [1, 1, 1], + "u": [1, 0, -1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tip", + "line": { + "color": "blue", + "width": 2 + }, + "showscale": false, + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "quiver", + "name": "center anchor", + "x": [1, 1, 1], + "y": [2, 2, 2], + "u": [1, 0, -1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "center", + "line": { + "color": "green", + "width": 2 + }, + "showscale": false, + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 900, + "height": 400, + "showlegend": true, + "xaxis": { + "domain": [0, 0.3], + "range": [-0.5, 2.5], + "title": {"text": "tail anchor"} + }, + "yaxis": { + "domain": [0, 1], + "range": [-0.5, 1.5] + }, + "xaxis2": { + "domain": [0.35, 0.65], + "range": [-0.5, 2.5], + "title": {"text": "tip anchor"} + }, + "yaxis2": { + "domain": [0, 1], + "anchor": "x2", + "range": [0, 2] + }, + "xaxis3": { + "domain": [0.7, 1], + "range": [-0.5, 2.5], + "title": {"text": "center anchor"} + }, + "yaxis3": { + "domain": [0, 1], + "anchor": "x3", + "range": [1, 3] + } + } +} diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json new file mode 100644 index 00000000000..d080d62515c --- /dev/null +++ b/test/image/mocks/quiver_arrow-styling.json @@ -0,0 +1,66 @@ +{ + "data": [ + { + "type": "quiver", + "name": "small arrows", + "x": [0, 1, 2], + "y": [0, 0, 0], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "arrowsize": 0.5, + "anchor": "tail", + "line": { + "color": "red", + "width": 1 + }, + "showscale": false + }, + { + "type": "quiver", + "name": "medium arrows", + "x": [0, 1, 2], + "y": [1, 1, 1], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "arrowsize": 1.0, + "anchor": "tail", + "line": { + "color": "blue", + "width": 2 + }, + "showscale": false + }, + { + "type": "quiver", + "name": "large arrows", + "x": [0, 1, 2], + "y": [2, 2, 2], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "arrowsize": 2.0, + "anchor": "tail", + "line": { + "color": "green", + "width": 3 + }, + "showscale": false + } + ], + "layout": { + "width": 500, + "height": 600, + "showlegend": true, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_categorical.json b/test/image/mocks/quiver_categorical.json new file mode 100644 index 00000000000..776b03ccd3b --- /dev/null +++ b/test/image/mocks/quiver_categorical.json @@ -0,0 +1,23 @@ +{ + "data": [ + { + "type": "quiver", + "x": ["A", "B", "C", "A", "B", "C", "A", "B", "C"], + "y": ["X", "X", "X", "Y", "Y", "Y", "Z", "Z", "Z"], + "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], + "v": [1, 1, 1, 0, 0, 0, -1, -1, -1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "width": 2 + }, + "showscale": false + } + ], + "layout": { + "title": {"text": "Quiver with Categorical Axes"}, + "width": 500, + "height": 500 + } +} diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json new file mode 100644 index 00000000000..40987cc87c7 --- /dev/null +++ b/test/image/mocks/quiver_colorscale.json @@ -0,0 +1,32 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 2, 2, 2, 3, 3, 3], + "sizemode": "scaled", + "sizeref": 0.3, + "anchor": "tail", + "colorscale": "Viridis", + "showscale": true, + "line": { + "width": 2 + }, + "colorbar": { + "title": {"text": "Magnitude"} + } + } + ], + "layout": { + "width": 600, + "height": 500, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json new file mode 100644 index 00000000000..5a29f3e315b --- /dev/null +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -0,0 +1,39 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [0.5, 1.5, 2.5, 0.5, 1.5, 2.5, 0.5, 1.5, 2.5], + "v": [0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5], + "c": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "sizemode": "scaled", + "sizeref": 0.25, + "anchor": "tail", + "colorscale": [ + [0, "rgb(0,0,255)"], + [0.5, "rgb(0,255,0)"], + [1, "rgb(255,0,0)"] + ], + "showscale": true, + "line": { + "width": 2 + }, + "colorbar": { + "title": {"text": "Custom Field"}, + "x": 1.02 + } + } + ], + "layout": { + "title": {"text": "Quiver with Custom Scalar Field (c)"}, + "width": 600, + "height": 500, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json new file mode 100644 index 00000000000..3b9edbf5f78 --- /dev/null +++ b/test/image/mocks/quiver_simple.json @@ -0,0 +1,27 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], + "v": [0, 1, 0, 0, 1, 0, 0, 1, 0], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "width": 2 + } + } + ], + "layout": { + "width": 500, + "height": 500, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json new file mode 100644 index 00000000000..4a8ade18ebd --- /dev/null +++ b/test/image/mocks/quiver_sizemode.json @@ -0,0 +1,92 @@ +{ + "data": [ + { + "type": "quiver", + "name": "scaled", + "x": [0, 1, 2], + "y": [0, 0, 0], + "u": [1, 2, 3], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.3, + "anchor": "tail", + "line": { + "color": "red", + "width": 2 + }, + "showscale": false, + "xaxis": "x", + "yaxis": "y" + }, + { + "type": "quiver", + "name": "absolute", + "x": [0, 1, 2], + "y": [1, 1, 1], + "u": [1, 2, 3], + "v": [1, 1, 1], + "sizemode": "absolute", + "sizeref": 0.3, + "anchor": "tail", + "line": { + "color": "blue", + "width": 2 + }, + "showscale": false, + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "quiver", + "name": "raw", + "x": [0, 1, 2], + "y": [2, 2, 2], + "u": [0.3, 0.6, 0.9], + "v": [0.3, 0.3, 0.3], + "sizemode": "raw", + "sizeref": 1, + "anchor": "tail", + "line": { + "color": "green", + "width": 2 + }, + "showscale": false, + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 800, + "height": 400, + "showlegend": true, + "xaxis": { + "domain": [0, 0.3], + "range": [-0.5, 2.5], + "title": {"text": "scaled"} + }, + "yaxis": { + "domain": [0, 1], + "range": [-0.5, 0.5] + }, + "xaxis2": { + "domain": [0.35, 0.65], + "range": [-0.5, 2.5], + "title": {"text": "absolute"} + }, + "yaxis2": { + "domain": [0, 1], + "anchor": "x2", + "range": [0.5, 1.5] + }, + "xaxis3": { + "domain": [0.7, 1], + "range": [-0.5, 2.5], + "title": {"text": "raw"} + }, + "yaxis3": { + "domain": [0, 1], + "anchor": "x3", + "range": [1.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json new file mode 100644 index 00000000000..9ae94159d0e --- /dev/null +++ b/test/image/mocks/quiver_wind.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Wind field", + "x": [0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3], + "y": [0, 0, 0, 0, 0, 0, 0, + 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, + 1, 1, 1, 1, 1, 1, 1, + 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, + 2, 2, 2, 2, 2, 2, 2], + "u": [1, 1.5, 2, 2.5, 3, 2.5, 2, + 0.8, 1.2, 1.8, 2.2, 2.8, 2.2, 1.8, + 0.5, 1, 1.5, 2, 2.5, 2, 1.5, + 0.3, 0.8, 1.2, 1.8, 2.2, 1.8, 1.2, + 0.1, 0.5, 1, 1.5, 2, 1.5, 1], + "v": [0.2, 0.3, 0.5, 0.8, 1, 0.8, 0.5, + 0.5, 0.8, 1, 1.2, 1.5, 1.2, 1, + 0.8, 1.2, 1.5, 1.8, 2, 1.8, 1.5, + 0.5, 0.8, 1.2, 1.5, 1.8, 1.5, 1.2, + 0.2, 0.5, 0.8, 1.2, 1.5, 1.2, 0.8], + "sizemode": "scaled", + "sizeref": 0.2, + "anchor": "center", + "colorscale": "Jet", + "showscale": true, + "line": { + "width": 1.5 + }, + "colorbar": { + "title": {"text": "Speed"}, + "x": 1.02 + } + } + ], + "layout": { + "title": {"text": "Vector Wind Field Visualization"}, + "width": 700, + "height": 600, + "xaxis": { + "title": {"text": "X"}, + "range": [-0.2, 3.2] + }, + "yaxis": { + "title": {"text": "Y"}, + "range": [-0.2, 2.2] + } + } +} diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json new file mode 100644 index 00000000000..aeb8760aeb2 --- /dev/null +++ b/test/image/mocks/quiver_zero-vectors.json @@ -0,0 +1,31 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Mixed vectors", + "x": [0, 1, 2, 3, 4], + "y": [1, 1, 1, 1, 1], + "u": [1, 0, 0, 1, 2], + "v": [1, 0, 0, 1, 2], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "color": "purple", + "width": 2 + }, + "showscale": false + } + ], + "layout": { + "title": {"text": "Quiver with Zero-Length Vectors"}, + "width": 600, + "height": 400, + "xaxis": { + "range": [-0.5, 4.5] + }, + "yaxis": { + "range": [0, 2] + } + } +} diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js new file mode 100644 index 00000000000..377e34db6c4 --- /dev/null +++ b/test/jasmine/tests/quiver_test.js @@ -0,0 +1,322 @@ +var Plotly = require('../../../lib/index'); +var Lib = require('../../../src/lib'); +var d3Select = require('../../strict-d3').select; + +var supplyAllDefaults = require('../assets/supply_defaults'); +var createGraphDiv = require('../assets/create_graph_div'); +var destroyGraphDiv = require('../assets/destroy_graph_div'); + +var delay = require('../assets/delay'); +var mouseEvent = require('../assets/mouse_event'); + +var customAssertions = require('../assets/custom_assertions'); +var assertHoverLabelContent = customAssertions.assertHoverLabelContent; + +describe('Test quiver defaults', function() { + var gd; + + function makeGD() { + return { + data: [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 2], + v: [1, 2] + }], + layout: {} + }; + } + + it('should not set `visible: false` for traces with x,y arrays', function() { + gd = makeGD(); + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(true); + }); + + it('should set `visible: false` for traces missing x or y arrays', function() { + var keysToDelete = ['x', 'y']; + + keysToDelete.forEach(function(k) { + gd = makeGD(); + delete gd.data[0][k]; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(false, 'missing array ' + k); + }); + }); + + it('should set `visible: false` for traces with empty x or y arrays', function() { + var keysToEmpty = ['x', 'y']; + + keysToEmpty.forEach(function(k) { + gd = makeGD(); + gd.data[0][k] = []; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(false, 'empty array ' + k); + }); + }); + + it('should default u,v to zeros when missing', function() { + gd = { + data: [{ + type: 'quiver', + x: [1, 2, 3], + y: [1, 2, 3] + }], + layout: {} + }; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(true); + expect(gd._fullData[0].u).toEqual([0, 0, 0]); + expect(gd._fullData[0].v).toEqual([0, 0, 0]); + }); + + it('should default u,v to zeros when empty', function() { + gd = { + data: [{ + type: 'quiver', + x: [1, 2, 3], + y: [1, 2, 3], + u: [], + v: [] + }], + layout: {} + }; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(true); + expect(gd._fullData[0].u).toEqual([0, 0, 0]); + expect(gd._fullData[0].v).toEqual([0, 0, 0]); + }); + + it('should set sizemode and sizeref defaults correctly', function() { + gd = makeGD(); + supplyAllDefaults(gd); + expect(gd._fullData[0].sizemode).toBe('scaled'); + expect(gd._fullData[0].sizeref).toBe(0.5); + }); + + it('should set sizeref to 1 when sizemode is raw', function() { + gd = makeGD(); + gd.data[0].sizemode = 'raw'; + supplyAllDefaults(gd); + expect(gd._fullData[0].sizemode).toBe('raw'); + expect(gd._fullData[0].sizeref).toBe(1); + }); + + it('should set anchor default to tail', function() { + gd = makeGD(); + supplyAllDefaults(gd); + expect(gd._fullData[0].anchor).toBe('tail'); + }); +}); + +describe('Test quiver calc', function() { + var gd; + + beforeEach(function() { + gd = createGraphDiv(); + }); + + afterEach(function() { + Plotly.purge(gd); + destroyGraphDiv(); + }); + + it('should calculate data correctly for simple vectors', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [0, 1, 2], + y: [0, 1, 2], + u: [1, 0, -1], + v: [0, 1, 0] + }]).then(function() { + var calcData = gd.calcdata[0]; + expect(calcData.length).toBe(3); + expect(calcData[0].x).toBe(0); + expect(calcData[0].y).toBe(0); + expect(calcData[1].x).toBe(1); + expect(calcData[1].y).toBe(1); + expect(calcData[2].x).toBe(2); + expect(calcData[2].y).toBe(2); + }) + .then(done, done.fail); + }); +}); + +describe('Test quiver interactions', function() { + var gd; + + beforeEach(function() { + gd = createGraphDiv(); + }); + + afterEach(function() { + Plotly.purge(gd); + destroyGraphDiv(); + }); + + it('should add/clear svg objects correctly', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 0], + v: [0, 1] + }, { + type: 'quiver', + x: [3, 4], + y: [3, 4], + u: [1, 1], + v: [1, 1] + }]).then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(2); + + return Plotly.deleteTraces(gd, [0]); + }) + .then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(1); + + return Plotly.deleteTraces(gd, [0]); + }) + .then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(0); + }) + .then(done, done.fail); + }); + + it('should restyle arrow properties', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 0], + v: [0, 1], + sizeref: 0.5 + }]).then(function() { + expect(gd._fullData[0].sizeref).toBe(0.5); + return Plotly.restyle(gd, 'sizeref', 1.5); + }) + .then(function() { + expect(gd._fullData[0].sizeref).toBe(1.5); + return Plotly.restyle(gd, 'anchor', 'tip'); + }) + .then(function() { + expect(gd._fullData[0].anchor).toBe('tip'); + }) + .then(done, done.fail); + }); + + it('should display hover labels', function(done) { + var fig = { + data: [{ + type: 'quiver', + x: [1, 2, 3], + y: [1, 2, 3], + u: [1, 0, -1], + v: [0, 1, 0], + showscale: false + }], + layout: { + margin: {l: 0, t: 0, r: 0, b: 0}, + width: 400, + height: 400 + } + }; + + Plotly.newPlot(gd, fig) + .then(function() { + mouseEvent('mousemove', 200, 200); + }) + .then(delay(20)) + .then(function() { + assertHoverLabelContent({ + nums: '(2, 2)\nu: 0, v: 1' + }); + }) + .then(done, done.fail); + }); + + it('should render multiple quiver traces', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + name: 'trace A', + x: [1, 2], + y: [1, 2], + u: [1, 0], + v: [0, 1], + line: {color: 'red'}, + showscale: false + }, { + type: 'quiver', + name: 'trace B', + x: [3, 4], + y: [3, 4], + u: [-1, 0], + v: [0, -1], + line: {color: 'blue'}, + showscale: false + }], { + margin: {l: 0, t: 0, r: 0, b: 0}, + width: 400, + height: 400 + }) + .then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(2); + }) + .then(done, done.fail); + }); + + it('should handle sizemode changes', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [0, 1, 2], + y: [0, 1, 2], + u: [1, 2, 3], + v: [1, 2, 3], + sizemode: 'scaled', + sizeref: 0.5 + }]).then(function() { + expect(gd._fullData[0].sizemode).toBe('scaled'); + return Plotly.restyle(gd, 'sizemode', 'absolute'); + }) + .then(function() { + expect(gd._fullData[0].sizemode).toBe('absolute'); + return Plotly.restyle(gd, 'sizemode', 'raw'); + }) + .then(function() { + expect(gd._fullData[0].sizemode).toBe('raw'); + }) + .then(done, done.fail); + }); + + it('should handle anchor changes', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 1], + v: [1, 1], + anchor: 'tail' + }]).then(function() { + expect(gd._fullData[0].anchor).toBe('tail'); + return Plotly.restyle(gd, 'anchor', 'tip'); + }) + .then(function() { + expect(gd._fullData[0].anchor).toBe('tip'); + return Plotly.restyle(gd, 'anchor', 'center'); + }) + .then(function() { + expect(gd._fullData[0].anchor).toBe('center'); + }) + .then(done, done.fail); + }); +}); + From e924f87136726e9db41946f51c4631b5cfec2037 Mon Sep 17 00:00:00 2001 From: John Degner Date: Mon, 17 Nov 2025 10:50:04 -0800 Subject: [PATCH 13/34] Generate baseline images for quiver tests --- test/image/baselines/quiver_anchor.png | Bin 0 -> 26453 bytes test/image/baselines/quiver_arrow-styling.png | Bin 0 -> 22306 bytes test/image/baselines/quiver_categorical.png | Bin 0 -> 14784 bytes test/image/baselines/quiver_colorscale.png | Bin 0 -> 17292 bytes .../baselines/quiver_custom-colorscale.png | Bin 0 -> 21053 bytes test/image/baselines/quiver_simple.png | Bin 0 -> 13934 bytes test/image/baselines/quiver_sizemode.png | Bin 0 -> 28492 bytes test/image/baselines/quiver_wind.png | Bin 0 -> 32997 bytes test/image/baselines/quiver_zero-vectors.png | Bin 0 -> 14882 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/quiver_anchor.png create mode 100644 test/image/baselines/quiver_arrow-styling.png create mode 100644 test/image/baselines/quiver_categorical.png create mode 100644 test/image/baselines/quiver_colorscale.png create mode 100644 test/image/baselines/quiver_custom-colorscale.png create mode 100644 test/image/baselines/quiver_simple.png create mode 100644 test/image/baselines/quiver_sizemode.png create mode 100644 test/image/baselines/quiver_wind.png create mode 100644 test/image/baselines/quiver_zero-vectors.png diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png new file mode 100644 index 0000000000000000000000000000000000000000..463f0fb85dfaf6f6b16f0edc8dba648db3e7567d GIT binary patch literal 26453 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png new file mode 100644 index 0000000000000000000000000000000000000000..d6fe39cceb5344f9f2e41d921f097468789f2f3e GIT binary patch literal 22306 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 ip$qxHREOoIm$|cinZryZFIcA@BR{UAuO@ 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0a7e451f9db87f045c4e133b48f50821218847 GIT binary patch literal 13934 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_sizemode.png b/test/image/baselines/quiver_sizemode.png new file mode 100644 index 0000000000000000000000000000000000000000..b914c5129b97027134f23a773feb0ec0072e9bed GIT binary patch literal 28492 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 X75!SQl}aelf{&-WH(9u0_p$#15aZD> literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png new file mode 100644 index 0000000000000000000000000000000000000000..3e799eb8a8b87092332e0fc1566b6cf6db7966e4 GIT binary patch literal 32997 zcmeFadstH0|2C|dI%BC*O<5jt%IWARm3dB?rkR{Fv!kY@Xqu#gm?okqXr@k?+EFW0 zYs^j_P*F$$@sL@0AT>om0W(Dd1SLS_^z6RJd4JFE`#kUUT<>+ge?0x+b;)M$wLfd^ zwb%Nrd)@cV_x_{Ck@&i(v->*b|led>~LA8h>Y#|InHdsps_*!07L zjlZ8+dKA3rkEbp_$Nu~se(85-Z|(TiV1?VYYZsCihcGvyp4*NFJ<%d>a89b<2il7r zVg4ei@MbUGx7h9Elu#(#z5e?LI{I6G)-^hkw&eS#eM|IPAZ4~)F-L(<|M((YUk7Bk z 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�E2DfB+hma`Jbm9Pi@lL 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

iZRV*Fxu7L?)S1oxrA~lHfGEiCOZr= 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 literal 0 HcmV?d00001 From e9f81df39a6abda973b4730bc222d9c1ff321b2b Mon Sep 17 00:00:00 2001 From: John Degner Date: Sat, 29 Nov 2025 18:32:56 -0800 Subject: [PATCH 14/34] Run npm run schema --- test/plot-schema.json | 17882 ++-------------------------------------- 1 file changed, 876 insertions(+), 17006 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index f93b295abc8..f500c00824c 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14151,17024 +14151,894 @@ "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.", "dflt": "normal", "editType": "plot", -<<<<<<< HEAD "valType": "enumerated", "values": [ "normal", "tozero", "nonnegative" -======= - "valType": "any" - }, - { - "editType": "plot", - "valType": "any" - } - ], - "valType": "info_array" - }, - "description": "The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported.", - "editType": "calc", - "label": { - "description": "The shown name of the dimension.", - "editType": "plot", - "valType": "string" - }, - "multiselect": { - "description": "Do we allow multiple selection ranges or just a single range?", - "dflt": true, - "editType": "plot", - "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": "none", - "valType": "string" - }, - "range": { - "description": "The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements.", - "editType": "plot", - "items": [ - { - "editType": "plot", - "valType": "number" - }, - { - "editType": "plot", - "valType": "number" - } - ], - "valType": "info_array" - }, - "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" - }, - "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": "plot", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`.", - "editType": "plot", - "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.", - "editType": "plot", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "values": { - "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.", - "editType": "calc", - "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, - "visible": { - "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - } - } - }, - "role": "object" - }, - "domain": { - "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "editType": "plot", - "role": "object", - "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "x": { - "description": "Sets the horizontal domain of this parcoords trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "plot", - "items": [ - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - }, - "y": { - "description": "Sets the vertical domain of this parcoords trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "plot", - "items": [ - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - } - }, - "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" - }, - "labelangle": { - "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "labelfont": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font for the `dimension` labels.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "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": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "labelside": { - "description": "Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", - "dflt": "top", - "editType": "plot", - "valType": "enumerated", - "values": [ - "top", - "bottom" - ] - }, - "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" - }, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. 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": false, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.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 `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "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": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. 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 `line.cmin` and `line.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": [ - [ - 0, - "#440154" - ], - [ - 0.06274509803921569, - "#48186a" - ], - [ - 0.12549019607843137, - "#472d7b" - ], - [ - 0.18823529411764706, - "#424086" - ], - [ - 0.25098039215686274, - "#3b528b" - ], - [ - 0.3137254901960784, - "#33638d" - ], - [ - 0.3764705882352941, - "#2c728e" - ], - [ - 0.4392156862745098, - "#26828e" - ], - [ - 0.5019607843137255, - "#21918c" - ], - [ - 0.5647058823529412, - "#1fa088" - ], - [ - 0.6274509803921569, - "#28ae80" - ], - [ - 0.6901960784313725, - "#3fbc73" - ], - [ - 0.7529411764705882, - "#5ec962" - ], - [ - 0.8156862745098039, - "#84d44b" - ], - [ - 0.8784313725490196, - "#addc30" - ], - [ - 0.9411764705882353, - "#d8e219" - ], - [ - 1, - "#fde725" - ] - ], - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - } - }, - "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" - }, - "rangefont": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font for the `dimension` range values.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "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": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "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" - } - }, - "tickfont": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font for the `dimension` tick values.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "auto", - "editType": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "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": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "type": "parcoords", - "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" - }, - "unselected": { - "editType": "plot", - "line": { - "color": { - "description": "Sets the base color of unselected lines. in connection with `unselected.line.opacity`.", - "dflt": "#7f7f7f", - "editType": "plot", - "valType": "color" - }, - "editType": "plot", - "opacity": { - "description": "Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`.", - "dflt": "auto", - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object" - }, - "role": "object" - }, - "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" - ] - } - }, - "categories": [ - "gl", - "regl", - "noOpacity", - "noHover" - ], - "meta": { - "description": "Parallel coordinates for multidimensional exploratory data analysis. The samples are specified in `dimensions`. The colors are set in `line.color`." - }, - "type": "parcoords" - }, - "pie": { - "animatable": false, - "attributes": { - "automargin": { - "description": "Determines whether outside text labels can push the margins.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "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" - }, - "direction": { - "description": "Specifies the direction at which succeeding sectors follow one another.", - "dflt": "counterclockwise", - "editType": "calc", - "valType": "enumerated", - "values": [ - "clockwise", - "counterclockwise" - ] - }, - "dlabel": { - "description": "Sets the label step. See `label0` for more info.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "domain": { - "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "role": "object", - "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "x": { - "description": "Sets the horizontal domain of this pie trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - }, - "y": { - "description": "Sets the vertical domain of this pie trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - } - }, - "hole": { - "description": "Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart.", - "dflt": 0, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "label", - "text", - "value", - "percent", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. 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": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "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" - }, - "insidetextfont": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `textinfo` lying inside the sector.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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" - } - }, - "insidetextorientation": { - "description": "Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector.", - "dflt": "auto", - "editType": "plot", - "valType": "enumerated", - "values": [ - "horizontal", - "radial", - "tangential", - "auto" - ] - }, - "label0": { - "description": "Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step.", - "dflt": 0, - "editType": "calc", - "valType": "number" - }, - "labels": { - "description": "Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label.", - "editType": "calc", - "valType": "data_array" - }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "marker": { - "colors": { - "description": "Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors.", - "editType": "calc", - "valType": "data_array" - }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "line": { - "color": { - "arrayOk": true, - "description": "Sets the color of the line enclosing each sector.", - "dflt": "#444", - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the line enclosing each sector.", - "dflt": 0, - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "pattern": { - "bgcolor": { - "arrayOk": true, - "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.", - "editType": "style", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the pattern within the marker.", - "editType": "style", - "fgcolor": { - "arrayOk": true, - "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.", - "editType": "style", - "valType": "color" - }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, - "fgopacity": { - "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "fillmode": { - "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.", - "dflt": "replace", - "editType": "style", - "valType": "enumerated", - "values": [ - "replace", - "overlay" - ] - }, - "path": { - "arrayOk": true, - "description": "Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color.", - "editType": "style", - "valType": "string" - }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shape": { - "arrayOk": true, - "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.", - "dflt": "", - "editType": "style", - "valType": "enumerated", - "values": [ - "", - "/", - "\\", - "x", - "-", - "|", - "+", - "." - ] - }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", - "dflt": 8, - "editType": "style", - "min": 0, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "solidity": { - "arrayOk": true, - "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", - "dflt": 0.3, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" - } - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "outsidetextfont": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `textinfo` lying outside the sector.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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" - } - }, - "pull": { - "arrayOk": true, - "description": "Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices.", - "dflt": 0, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "pullsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `pull`.", - "editType": "none", - "valType": "string" - }, - "rotation": { - "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.", - "dflt": 0, - "editType": "calc", - "valType": "angle" - }, - "scalegroup": { - "description": "If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "sort": { - "description": "Determines whether or not the sectors are reordered from largest to smallest.", - "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": { - "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "editType": "plot", - "valType": "data_array" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `textinfo`.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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" - } - }, - "textinfo": { - "description": "Determines which trace information appear on the graph.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "label", - "text", - "value", - "percent" - ], - "valType": "flaglist" - }, - "textposition": { - "arrayOk": true, - "description": "Specifies the location of the `textinfo`.", - "dflt": "auto", - "editType": "plot", - "valType": "enumerated", - "values": [ - "inside", - "outside", - "auto", - "none" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "title": { - "editType": "plot", - "font": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `title`.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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": "plot", - "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" - } - }, - "position": { - "description": "Specifies the location of the `title`.", - "editType": "plot", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle center", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "role": "object", - "text": { - "description": "Sets the title of the chart. If it is empty, no title is displayed.", - "dflt": "", - "editType": "plot", - "valType": "string" - } - }, - "type": "pie", - "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" - }, - "values": { - "description": "Sets the values of the sectors. If omitted, we count occurrences of each label.", - "editType": "calc", - "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "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" - ] - } - }, - "categories": [ - "pie-like", - "pie", - "showLegend" - ], - "layoutAttributes": { - "extendpiecolors": { - "description": "If `true`, the pie slice colors (whether given by `piecolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "hiddenlabels": { - "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts", - "editType": "calc", - "valType": "data_array" - }, - "hiddenlabelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", - "editType": "none", - "valType": "string" - }, - "piecolorway": { - "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.", - "editType": "calc", - "valType": "colorlist" - } - }, - "meta": { - "description": "A data visualized by the sectors of the pie is set in `values`. The sector labels are set in `labels`. The sector colors are set in `marker.colors`" - }, - "type": "pie" - }, - "quiver": { - "animatable": true, - "attributes": { - "anchor": { - "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", - "dflt": "tail", - "editType": "calc", - "valType": "enumerated", - "values": [ - "tip", - "tail", - "cm", - "center", - "middle" - ] - }, - "arrow_scale": { - "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "arrowsize": { - "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", - "dflt": 1, - "editType": "calc", - "min": 0.3, - "valType": "number" - }, - "arrowwidth": { - "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", - "editType": "style", - "min": 0.1, - "valType": "number" - }, - "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" - }, - "c": { - "anim": true, - "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", - "editType": "calc", - "valType": "data_array" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) 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 u/v norm 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 u/v norm. 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 u/v norm 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": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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" - }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", - "editType": "none", - "valType": "string" - }, - "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" - }, - "hoverdistance": { - "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", - "dflt": 20, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "x", - "y", - "u", - "v", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", - "valType": "string" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "anim": true, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" - ] - }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "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": "plot", - "valType": "boolean" - }, - "selected": { - "editType": "style", - "line": { - "color": { - "description": "Sets the line color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object", - "width": { - "description": "Sets the line width of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "sizemode": { - "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", - "dflt": "scaled", - "editType": "calc", - "valType": "enumerated", - "values": [ - "scaled", - "absolute", - "raw" - ] - }, - "sizeref": { - "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", - "editType": "calc", - "min": 0, - "valType": "number" - }, - "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": { - "anim": true, - "description": "Sets text elements associated with each (x,y) pair.", - "editType": "calc", - "valType": "data_array" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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" - } - }, - "textposition": { - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "type": "quiver", - "u": { - "anim": true, - "description": "Sets the x components of the arrow vectors.", - "editType": "calc", - "valType": "data_array" - }, - "uid": { - "anim": true, - "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" - }, - "unselected": { - "editType": "style", - "line": { - "color": { - "description": "Sets the line color of unselected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object", - "width": { - "description": "Sets the line width of unselected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, - "v": { - "anim": true, - "description": "Sets the y components of the arrow vectors.", - "editType": "calc", - "valType": "data_array" - }, - "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" - ] - }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, - "x": { - "anim": true, - "description": "Sets the x coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "xaxis": { - "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", - "dflt": "x", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, - "y": { - "anim": true, - "description": "Sets the y coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "yaxis": { - "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", - "dflt": "y", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - } - }, - "categories": [ - "cartesian", - "svg", - "showLegend", - "scatter-like", - "zoomScale" - ], - "meta": { - "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." - }, - "type": "quiver" - }, - "sankey": { - "animatable": false, - "attributes": { - "arrangement": { - "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.", - "dflt": "snap", - "editType": "calc", - "valType": "enumerated", - "values": [ - "snap", - "perpendicular", - "freeform", - "fixed" - ] - }, - "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" - }, - "domain": { - "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "role": "object", - "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "x": { - "description": "Sets the horizontal domain of this sankey trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - }, - "y": { - "description": "Sets the vertical domain of this sankey trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - } - }, - "hoverinfo": { - "arrayOk": false, - "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. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively.", - "dflt": "all", - "editType": "calc", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [], - "valType": "flaglist" - }, - "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": "calc", - "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": "calc", - "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": "calc", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "font": { - "color": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - } - }, - "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" - }, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "link": { - "arrowlen": { - "description": "Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used.", - "editType": "calc", - "valType": "color" - }, - "colorscales": { - "items": { - "concentrationscales": { - "cmax": { - "description": "Sets the upper bound of the color domain.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain.", - "dflt": 0, - "editType": "calc", - "valType": "number" - }, - "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": [ - [ - 0, - "white" - ], - [ - 1, - "black" ->>>>>>> b50bcc3af (Match arrowhead attributes for annotations) - ] - }, - "rangeselector": { - "activecolor": { - "description": "Sets the background color of the active range selector button.", - "editType": "plot", - "valType": "color" - }, - "bgcolor": { - "description": "Sets the background color of the range selector buttons.", - "dflt": "#eee", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the color of the border enclosing the range selector.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) of the border enclosing the range selector.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "buttons": { - "items": { - "button": { - "count": { - "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", - "dflt": 1, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", - "editType": "plot", - "label": { - "description": "Sets the text label to appear on the button.", - "editType": "plot", - "valType": "string" - }, - "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": "none", - "valType": "string" - }, - "role": "object", - "step": { - "description": "The unit of measurement that the `count` value will set the range by.", - "dflt": "month", - "editType": "plot", - "valType": "enumerated", - "values": [ - "month", - "year", - "day", - "hour", - "minute", - "second", - "all" - ] - }, - "stepmode": { - "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", - "dflt": "backward", - "editType": "plot", - "valType": "enumerated", - "values": [ - "backward", - "todate" - ] - }, - "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" - }, - "visible": { - "description": "Determines whether or not this button is visible.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - } - } - }, - "role": "object" - }, - "editType": "plot", - "font": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font of the range selector button text.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "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": "plot", - "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": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "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": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "visible": { - "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", - "editType": "plot", - "valType": "boolean" - }, - "x": { - "description": "Sets the x position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "xanchor": { - "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", - "dflt": "left", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "left", - "center", - "right" - ] - }, - "y": { - "description": "Sets the y position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "yanchor": { - "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", - "dflt": "bottom", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "top", - "middle", - "bottom" - ] - } - }, - "rangeslider": { - "autorange": { - "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "bgcolor": { - "description": "Sets the background color of the range slider.", - "dflt": "#fff", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the border color of the range slider.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the border width of the range slider.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "range": { - "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "autorange": false - }, - "items": [ - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - }, - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - } - ], - "valType": "info_array" - }, - "role": "object", - "thickness": { - "description": "The height of the range slider as a fraction of the total plot area height.", - "dflt": 0.15, - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - "visible": { - "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "yaxis": { - "_isSubplotObj": true, - "editType": "calc", - "range": { - "description": "Sets the range of this axis for the rangeslider.", - "editType": "plot", - "items": [ - { - "editType": "plot", - "valType": "any" - }, - { - "editType": "plot", - "valType": "any" - } - ], - "valType": "info_array" - }, - "rangemode": { - "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", - "dflt": "match", - "editType": "calc", - "valType": "enumerated", - "values": [ - "auto", - "fixed", - "match" - ] - }, - "role": "object" - } - }, - "role": "object", - "scaleanchor": { - "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", - "editType": "plot", - "valType": "enumerated", - "values": [ - "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", - "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", - false - ] - }, - "scaleratio": { - "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", - "dflt": 1, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "ticks", - "valType": "boolean" - }, - "showdividers": { - "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", - "dflt": true, - "editType": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showgrid": { - "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", - "editType": "ticks", - "valType": "boolean" - }, - "showline": { - "description": "Determines whether or not a line bounding this axis is drawn.", - "dflt": false, - "editType": "ticks+layoutstyle", - "valType": "boolean" - }, - "showspikes": { - "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", - "dflt": false, - "editType": "modebar", - "valType": "boolean" - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "side": { - "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", - "editType": "plot", - "valType": "enumerated", - "values": [ - "top", - "bottom", - "left", - "right" - ] - }, - "spikecolor": { - "description": "Sets the spike color. If undefined, will use the series color", - "dflt": null, - "editType": "none", - "valType": "color" - }, - "spikedash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "dash", - "editType": "none", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "spikemode": { - "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", - "dflt": "toaxis", - "editType": "none", - "flags": [ - "toaxis", - "across", - "marker" - ], - "valType": "flaglist" - }, - "spikesnap": { - "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", - "dflt": "hovered data", - "editType": "none", - "valType": "enumerated", - "values": [ - "data", - "cursor", - "hovered data" - ] - }, - "spikethickness": { - "description": "Sets the width (in px) of the zero line.", - "dflt": 3, - "editType": "none", - "valType": "number" - }, - "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": "ticks", - "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": "ticks", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "ticks", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets the tick font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "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": "ticks", - "items": [ - { - "editType": "ticks", - "valType": "any" - }, - { - "editType": "ticks", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "ticks", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "ticks", - "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": "none", - "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": "ticks", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabelindex": { - "arrayOk": true, - "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", - "editType": "calc", - "valType": "integer" - }, - "ticklabelindexsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", - "editType": "none", - "valType": "string" - }, - "ticklabelmode": { - "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", - "dflt": "instant", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "instant", - "period" - ] - }, - "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*. Otherwise on *category* and *multicategory* axes the default is *allow*. 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 with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", - "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" - ] - }, - "ticklabelshift": { - "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "ticklabelstandoff": { - "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "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": "ticks", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "ticks", - "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). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", - "editType": "ticks", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array", - "sync" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "ticks", - "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.", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "tickson": { - "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", - "dflt": "labels", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "labels", - "boundaries" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "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": "ticks", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "ticks", - "font": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets this axis' title font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "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": "ticks", - "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": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "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": "ticks", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "standoff": { - "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "text": { - "description": "Sets the title of this axis.", - "editType": "ticks", - "valType": "string" - } - }, -<<<<<<< HEAD -======= - "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*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", - "dflt": "map", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "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" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermap", - "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" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "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" - ] - } - }, - "categories": [ - "map", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_map" - }, - "type": "scattermap" - }, - "scattermapbox": { - "animatable": false, - "attributes": { - "below": { - "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", - "editType": "calc", - "valType": "string" - }, - "cluster": { - "color": { - "arrayOk": true, - "description": "Sets the color for each cluster step.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether clustering is enabled or disabled.", - "editType": "calc", - "valType": "boolean" - }, - "maxzoom": { - "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", - "dflt": 24, - "editType": "calc", - "max": 24, - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "dflt": 1, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "description": "Sets the size for each cluster step.", - "dflt": 20, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "step": { - "arrayOk": true, - "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", - "dflt": -1, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" - } - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "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" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", - "valType": "color" - }, - "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": [ - "lon", - "lat", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "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" - }, - "lat": { - "description": "Sets the latitude coordinates (in degrees North).", - "editType": "calc", - "valType": "data_array" - }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "color": { - "description": "Sets the line color.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "role": "object", - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "lon": { - "description": "Sets the longitude coordinates (in degrees East).", - "editType": "calc", - "valType": "data_array" - }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, - "marker": { - "allowoverlap": { - "description": "Flag to draw all symbols, even if they overlap.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "angle": { - "arrayOk": true, - "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", - "dflt": "auto", - "editType": "calc", - "valType": "number" - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "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": { - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", - "dflt": "mapbox", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. 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" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "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" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermapbox", - "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" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "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" - ] - } - }, - "categories": [ - "mapbox", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_mapbox" - }, - "type": "scattermapbox" - }, - "scatterpolar": { - "animatable": false, - "attributes": { - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "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" - }, - "dr": { - "description": "Sets the r coordinate step.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "dtheta": { - "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", - "editType": "calc", - "valType": "number" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "r", - "theta", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolar", - "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" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "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" - ] - } - }, - "categories": [ - "polar", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar" - }, - "type": "scatterpolar" - }, - "scatterpolargl": { - "animatable": false, - "attributes": { - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "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" - }, - "dr": { - "description": "Sets the r coordinate step.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "dtheta": { - "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", - "editType": "calc", - "valType": "number" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "tozeroy", - "tozerox", - "tonexty", - "tonextx", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", - "valType": "color" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "r", - "theta", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "color": { - "description": "Sets the line color.", - "editType": "calc", - "valType": "color" - }, - "dash": { - "description": "Sets the style of the lines.", - "dflt": "solid", - "editType": "calc", - "valType": "enumerated", - "values": [ - "dash", - "dashdot", - "dot", - "longdash", - "longdashdot", - "solid" - ] - }, - "editType": "calc", - "role": "object", - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "calc", - "valType": "angle" - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "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": { - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "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. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.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 `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "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" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "calc", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "calc", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps" - ] - }, - "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": "calc", - "valType": "enumerated", - "values": [ - "normal", - "bold" - ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolargl", - "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" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "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" - ] - } - }, - "categories": [ - "gl", - "regl", - "polar", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar_gl" - }, - "type": "scatterpolargl" - }, - "scattersmith": { - "animatable": false, - "attributes": { - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "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" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "real", - "imag", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "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" - }, - "imag": { - "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "imagsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `imag`.", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "real": { - "description": "Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "realsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `real`.", - "editType": "none", - "valType": "string" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.", - "dflt": "smith", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. 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" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattersmith", - "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" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "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" - ] - } - }, - "categories": [ - "smith", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scattersmith trace type encompasses line charts, scatter charts, text charts, and bubble charts in smith coordinates. The data visualized as scatter point or lines is set in `real` and `imag` (imaginary) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_smith" - }, - "type": "scattersmith" - }, - "scatterternary": { - "animatable": false, - "attributes": { - "a": { - "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", - "editType": "calc", - "valType": "data_array" - }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, - "b": { - "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", - "editType": "calc", - "valType": "data_array" - }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, - "c": { - "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", - "editType": "calc", - "valType": "data_array" - }, - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", - "editType": "none", - "valType": "string" - }, - "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" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "a", - "b", - "c", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all 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": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "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" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "rangeselector": { + "activecolor": { + "description": "Sets the background color of the active range selector button.", + "editType": "plot", + "valType": "color" + }, + "bgcolor": { + "description": "Sets the background color of the range selector buttons.", + "dflt": "#eee", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the color of the border enclosing the range selector.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) of the border enclosing the range selector.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "buttons": { + "items": { + "button": { + "count": { + "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", + "editType": "plot", + "label": { + "description": "Sets the text label to appear on the button.", + "editType": "plot", + "valType": "string" + }, + "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": "none", + "valType": "string" + }, + "role": "object", + "step": { + "description": "The unit of measurement that the `count` value will set the range by.", + "dflt": "month", + "editType": "plot", + "valType": "enumerated", + "values": [ + "month", + "year", + "day", + "hour", + "minute", + "second", + "all" + ] + }, + "stepmode": { + "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", + "dflt": "backward", + "editType": "plot", + "valType": "enumerated", + "values": [ + "backward", + "todate" + ] + }, + "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" + }, + "visible": { + "description": "Determines whether or not this button is visible.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + } + } + }, + "role": "object" + }, + "editType": "plot", + "font": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font of the range selector button text.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "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": "plot", + "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": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "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": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "visible": { + "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", + "editType": "plot", + "valType": "boolean" + }, + "x": { + "description": "Sets the x position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "xanchor": { + "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", + "dflt": "left", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "y": { + "description": "Sets the y position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "yanchor": { + "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", + "dflt": "bottom", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, + "rangeslider": { + "autorange": { + "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "bgcolor": { + "description": "Sets the background color of the range slider.", + "dflt": "#fff", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the border color of the range slider.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the border width of the range slider.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "range": { + "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "autorange": false + }, + "items": [ + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + }, + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + } + ], + "valType": "info_array" + }, + "role": "object", + "thickness": { + "description": "The height of the range slider as a fraction of the total plot area height.", + "dflt": 0.15, + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + "visible": { + "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "yaxis": { + "_isSubplotObj": true, + "editType": "calc", + "range": { + "description": "Sets the range of this axis for the rangeslider.", + "editType": "plot", + "items": [ + { + "editType": "plot", + "valType": "any" + }, + { + "editType": "plot", + "valType": "any" + } + ], + "valType": "info_array" + }, + "rangemode": { + "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", + "dflt": "match", + "editType": "calc", + "valType": "enumerated", + "values": [ + "auto", + "fixed", + "match" + ] + }, + "role": "object" + } + }, + "role": "object", + "scaleanchor": { + "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", + "editType": "plot", + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", + "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", + false + ] + }, + "scaleratio": { + "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "ticks", + "valType": "boolean" + }, + "showdividers": { + "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", "dflt": true, - "editType": "colorbars", + "editType": "ticks", "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", + }, + "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": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showgrid": { + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "editType": "ticks", + "valType": "boolean" + }, + "showline": { + "description": "Determines whether or not a line bounding this axis is drawn.", + "dflt": false, + "editType": "ticks+layoutstyle", + "valType": "boolean" + }, + "showspikes": { + "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", + "dflt": false, + "editType": "modebar", + "valType": "boolean" + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "side": { + "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top", + "bottom", + "left", + "right" + ] + }, + "spikecolor": { + "description": "Sets the spike color. If undefined, will use the series color", + "dflt": null, + "editType": "none", + "valType": "color" + }, + "spikedash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "dash", + "editType": "none", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "spikemode": { + "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", + "dflt": "toaxis", + "editType": "none", + "flags": [ + "toaxis", + "across", + "marker" + ], + "valType": "flaglist" + }, + "spikesnap": { + "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", + "dflt": "hovered data", + "editType": "none", + "valType": "enumerated", + "values": [ + "data", + "cursor", + "hovered data" + ] + }, + "spikethickness": { + "description": "Sets the width (in px) of the zero line.", + "dflt": 3, + "editType": "none", + "valType": "number" + }, + "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": "ticks", + "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": "ticks", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "ticks", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets the tick font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "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": "ticks", + "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": "colorbars", + "editType": "ticks", "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. 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" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "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" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. 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 `marker.line.cmin` and `marker.line.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" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "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" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "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 trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "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" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.", - "dflt": "ternary", - "editType": "calc", - "valType": "subplotid" - }, - "sum": { - "description": "The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). 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" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "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": "calc", - "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": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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": "calc", - "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" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". 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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scatterternary", - "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" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "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" - ] - } - }, - "categories": [ - "ternary", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "Provides similar functionality to the *scatter* type but on a ternary phase diagram. The data is provided by at least two arrays out of `a`, `b`, `c` triplets.", - "hrName": "scatter_ternary" - }, - "type": "scatterternary" - }, - "splom": { - "animatable": false, - "attributes": { - "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" - }, - "diagonal": { - "editType": "calc", - "role": "object", - "visible": { - "description": "Determines whether or not subplots on the diagonal are displayed.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - } - }, - "dimensions": { - "items": { - "dimension": { - "axis": { - "editType": "calc+clearAxisTypes", - "matches": { - "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.", - "dflt": false, - "editType": "calc", - "valType": "boolean" + "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": "ticks", + "items": [ + { + "editType": "ticks", + "valType": "any" + }, + { + "editType": "ticks", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "ticks", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "ticks", + "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": "none", + "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": "ticks", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabelindex": { + "arrayOk": true, + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", + "editType": "calc", + "valType": "integer" + }, + "ticklabelindexsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", + "editType": "none", + "valType": "string" + }, + "ticklabelmode": { + "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", + "dflt": "instant", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "instant", + "period" + ] + }, + "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*. Otherwise on *category* and *multicategory* axes the default is *allow*. 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 with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", + "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" + ] + }, + "ticklabelshift": { + "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "ticklabelstandoff": { + "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "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": "ticks", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "ticks", + "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). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", + "editType": "ticks", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array", + "sync" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "ticks", + "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.", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "tickson": { + "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", + "dflt": "labels", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "labels", + "boundaries" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "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": "ticks", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "ticks", + "font": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets this axis' title font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "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": "ticks", + "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": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "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": "ticks", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "standoff": { + "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "text": { + "description": "Sets the title of this axis.", + "editType": "ticks", + "valType": "string" + } }, - "role": "object", ->>>>>>> 776a4535b (Name plot type quiver not scatterquiver) "type": { "_noTemplating": true, "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.", From fc62e5159b5c79af24c2a937956b5bcd57b8054d Mon Sep 17 00:00:00 2001 From: John Degner Date: Thu, 18 Dec 2025 13:31:29 -0800 Subject: [PATCH 15/34] Improve code readability --- src/traces/quiver/attributes.js | 6 ++ src/traces/quiver/defaults.js | 67 +++++++++--------- src/traces/quiver/format_labels.js | 15 ++-- src/traces/quiver/hover.js | 2 +- src/traces/quiver/index.js | 4 +- src/traces/quiver/plot.js | 16 ++--- src/traces/quiver/select_points.js | 22 +++--- src/traces/quiver/style.js | 33 ++++++--- test/image/baselines/quiver_anchor.png | Bin 26453 -> 25935 bytes test/image/baselines/quiver_arrow-styling.png | Bin 22306 -> 21942 bytes test/image/baselines/quiver_categorical.png | Bin 14784 -> 14650 bytes test/image/baselines/quiver_colorscale.png | Bin 17292 -> 17103 bytes .../baselines/quiver_custom-colorscale.png | Bin 21053 -> 21113 bytes test/image/baselines/quiver_simple.png | Bin 13934 -> 14093 bytes test/image/baselines/quiver_sizemode.png | Bin 28492 -> 28936 bytes test/image/baselines/quiver_wind.png | Bin 32997 -> 31990 bytes test/image/baselines/quiver_zero-vectors.png | Bin 14882 -> 14785 bytes test/plot-schema.json | 24 +++++++ 18 files changed, 118 insertions(+), 71 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 966344561ca..a237d9044f7 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -3,6 +3,7 @@ var baseAttrs = require('../../plots/attributes'); var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; var fontAttrs = require('../../plots/font_attributes'); +var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var dash = require('../../components/drawing/attributes').dash; var extendFlat = require('../../lib/extend').extendFlat; @@ -81,6 +82,11 @@ var attrs = { description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' }, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + uhoverformat: axisHoverFormat('u', 'noDate'), + vhoverformat: axisHoverFormat('v', 'noDate'), + // Arrowhead sizing, consistent with annotations API naming arrowsize: { valType: 'number', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index e7e5c0e86fd..9ba70a09d46 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,12 +2,9 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); -var Colorscale = require('../../components/colorscale'); -var colorscaleDefaults = Colorscale.handleDefaults; -var hasColorscale = Colorscale.hasColorscale; +var colorscaleDefaults = require('../../components/colorscale/defaults'); module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { - // Selection styling - use coerce to set proper defaults function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } @@ -17,7 +14,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var y = coerce('y'); var u = coerce('u'); var v = coerce('v'); - + // Optional scalar field for colorscale coerce('c'); @@ -40,46 +37,48 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout for(var j = 0; j < len; j++) traceOut.v[j] = 0; } - // Set basic properties - traceOut.type = 'quiver'; - // Sizing API similar to cone var sizemode = coerce('sizemode'); coerce('sizeref', sizemode === 'raw' ? 1 : 0.5); coerce('anchor'); - // Set default values using coerce - coerce('arrowsize', 1); - // back-compat - coerce('arrow_scale'); - coerce('hoverdistance', 20); + // Arrow styling + coerce('arrowsize'); + coerce('arrow_scale'); // back-compat alias + coerce('arrowwidth'); + coerce('hoverdistance'); + + // Line styling - use coerce for proper validation + coerce('line.color', defaultColor); + // If arrowwidth is set, use it as line.width default + var arrowwidth = traceOut.arrowwidth; + if(arrowwidth !== undefined) { + coerce('line.width', arrowwidth); + } else { + coerce('line.width'); + } + coerce('line.dash'); + coerce('line.shape'); + coerce('line.smoothing'); + coerce('line.simplify'); - // Line styling - traceOut.line = { - color: traceIn.line && traceIn.line.color ? traceIn.line.color : defaultColor, - width: (traceIn.arrowwidth !== undefined) ? traceIn.arrowwidth : (traceIn.line && traceIn.line.width ? traceIn.line.width : 1), - dash: traceIn.line && traceIn.line.dash ? traceIn.line.dash : 'solid', - shape: traceIn.line && traceIn.line.shape ? traceIn.line.shape : 'linear', - smoothing: traceIn.line && traceIn.line.smoothing ? traceIn.line.smoothing : 1, - simplify: traceIn.line && traceIn.line.simplify !== undefined ? traceIn.line.simplify : true - }; + // Text + coerce('text'); + coerce('textposition'); + Lib.coerceFont(coerce, 'textfont', layout.font); - // Hover and interaction - let the plots module handle hoverinfo defaults - // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js - traceOut.hovertemplate = traceIn.hovertemplate; + // Hover + coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); + coerce('uhoverformat'); + coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) - // Keep colorscale enabled by default for quiver - traceOut._hasColorscale = hasColorscale(traceIn) || true; + traceOut._hasColorscale = true; colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); - // Text - traceOut.text = traceIn.text; - traceOut.textposition = traceIn.textposition || 'middle center'; - - // Use Lib.coerceFont to set textfont properly - Lib.coerceFont(coerce, 'textfont', layout.font); - + // Selection styling coerce('selected.line.color'); coerce('selected.line.width'); coerce('selected.textfont.color'); diff --git a/src/traces/quiver/format_labels.js b/src/traces/quiver/format_labels.js index 8b56f67c2bf..6ed314702ef 100644 --- a/src/traces/quiver/format_labels.js +++ b/src/traces/quiver/format_labels.js @@ -1,12 +1,14 @@ 'use strict'; var Axes = require('../../plots/cartesian/axes'); +var Lib = require('../../lib'); module.exports = function formatLabels(cdi, trace, fullLayout) { var labels = {}; - var xa = Axes.getFromId({ _fullLayout: fullLayout }, trace.xaxis || 'x'); - var ya = Axes.getFromId({ _fullLayout: fullLayout }, trace.yaxis || 'y'); + var mockGd = {_fullLayout: fullLayout}; + var xa = Axes.getFromTrace(mockGd, trace, 'x'); + var ya = Axes.getFromTrace(mockGd, trace, 'y'); var x = cdi.x; var y = cdi.y; @@ -17,9 +19,12 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { var u = trace.u ? trace.u[cdi.i] : 0; var v = trace.v ? trace.v[cdi.i] : 0; - // Format u and v as plain numbers - labels.uLabel = String(u); - labels.vLabel = String(v); + // Format u and v using hoverformat if provided + var uhoverformat = trace.uhoverformat; + var vhoverformat = trace.vhoverformat; + + labels.uLabel = uhoverformat ? Lib.numberFormat(uhoverformat)(u) : String(u); + labels.vLabel = vhoverformat ? Lib.numberFormat(vhoverformat)(v) : String(v); return labels; }; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js index 41c7735f145..97eaea35aae 100644 --- a/src/traces/quiver/hover.js +++ b/src/traces/quiver/hover.js @@ -15,7 +15,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var distfn = function(di) { var x = xa.c2p(di.x) - xpx; var y = ya.c2p(di.y) - ypx; - return Math.max(Math.sqrt(x * x + y * y), 1 - 3 / Math.max(3, di.mrc || 0)); + return Math.sqrt(x * x + y * y); }; Fx.getClosest(cd, distfn, pointData); diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 4237fcf810a..942ef83fd9b 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -12,8 +12,8 @@ module.exports = { supplyDefaults: require('./defaults'), calc: require('./calc'), plot: require('./plot'), - style: require('./style'), - styleOnSelect: require('../scatter/style').styleOnSelect, + style: require('./style').style, + styleOnSelect: require('./style').styleOnSelect, hoverPoints: require('./hover'), formatLabels: require('./format_labels'), eventData: require('./event_data'), diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index ee03ad0334c..a571e2ef409 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -2,7 +2,6 @@ var d3 = require('@plotly/d3'); -var Registry = require('../../registry'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); var Colorscale = require('../../components/colorscale'); @@ -61,7 +60,6 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var trace = cdscatter[0].trace; var xa = plotinfo.xaxis; var ya = plotinfo.yaxis; - var fullLayout = gd._fullLayout; // Create line group for arrows var lines = d3.select(element).selectAll('g.lines') @@ -86,11 +84,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var uArr = trace.u || []; var vArr = trace.v || []; var maxNorm = 0; - for (var ni = 0; ni < trace._length; ni++) { + for(var ni = 0; ni < trace._length; ni++) { var uu = uArr[ni] || 0; var vv = vArr[ni] || 0; var nrm = Math.sqrt(uu * uu + vv * vv); - if (nrm > maxNorm) maxNorm = nrm; + if(nrm > maxNorm) maxNorm = nrm; } var sizemode = trace.sizemode || 'scaled'; var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); @@ -127,7 +125,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var unitx = norm ? (u / norm) : 0; var unity = norm ? (v / norm) : 0; var baseLen; - if (sizemode === 'scaled') { + if(sizemode === 'scaled') { var n = maxNorm ? (norm / maxNorm) : 0; baseLen = n * sizeref; } else { @@ -146,12 +144,12 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var ang2 = barbAng - headAngle; var x0, y0, x1, y1; - if (anchor === 'tip') { + if(anchor === 'tip') { x1 = cdi.x; y1 = cdi.y; x0 = x1 - dx; y0 = y1 - dy; - } else if (anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + } else if(anchor === 'cm' || anchor === 'center' || anchor === 'middle') { x0 = cdi.x - dx / 2; y0 = cdi.y - dy / 2; x1 = cdi.x + dx / 2; @@ -186,12 +184,12 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); // If colorscale present, color arrows by magnitude |(u,v)| - if (trace._hasColorscale) { + if(trace._hasColorscale) { var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); lineSegments.style('stroke', function(cdi) { var cArr = trace.c; var value; - if (Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { + if(Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { value = cArr[cdi.i]; } else { var uVal = (trace.u && trace.u[cdi.i]) || 0; diff --git a/src/traces/quiver/select_points.js b/src/traces/quiver/select_points.js index e169b1b9517..66f26e444bf 100644 --- a/src/traces/quiver/select_points.js +++ b/src/traces/quiver/select_points.js @@ -5,9 +5,8 @@ module.exports = function selectPoints(searchInfo, selectionTester) { var xa = searchInfo.xaxis; var ya = searchInfo.yaxis; var selection = []; - var trace = cd[0].trace; var i; - var segment; + var di; var x; var y; @@ -17,20 +16,19 @@ module.exports = function selectPoints(searchInfo, selectionTester) { } } else { for(i = 0; i < cd.length; i++) { - segment = cd[i]; - // Use the start point of the arrow for selection testing - x = xa.c2p(segment[0].x); - y = ya.c2p(segment[0].y); + di = cd[i]; + x = xa.c2p(di.x); + y = ya.c2p(di.y); - if((segment[0].i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { + if((di.i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { selection.push({ - pointNumber: segment[0].i, - x: xa.c2d(segment[0].x), - y: ya.c2d(segment[0].y) + pointNumber: di.i, + x: xa.c2d(di.x), + y: ya.c2d(di.y) }); - segment.selected = 1; + di.selected = 1; } else { - segment.selected = 0; + di.selected = 0; } } } diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index deb72e21718..3e910b6d091 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -3,14 +3,31 @@ var d3 = require('@plotly/d3'); var Drawing = require('../../components/drawing'); -var Lib = require('../../lib'); -module.exports = function style(gd, calcTrace) { - if(!calcTrace || !calcTrace.length || !calcTrace[0]) return; - - var trace = calcTrace[0].trace; - var s = d3.select(gd).selectAll('g.trace' + trace.uid); +function style(gd) { + var s = d3.select(gd).selectAll('g.trace.quiver'); - s.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, trace.line || {}); + s.each(function(d) { + var trace = d[0].trace; + var line = trace.line || {}; + + d3.select(this).selectAll('path.js-line') + .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + }); +} + +function styleOnSelect(gd, cd, sel) { + var trace = cd[0].trace; + var line = trace.line || {}; + + if(!sel) return; + + // Style the line paths based on selection state + sel.selectAll('path.js-line') + .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); +} + +module.exports = { + style: style, + styleOnSelect: styleOnSelect }; diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png index 463f0fb85dfaf6f6b16f0edc8dba648db3e7567d..688e05bc59d4e4e2a947db59296c86df37ae7bd4 100644 GIT binary patch literal 25935 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 R0xwEo@O1TaS?83{1OSJv?4|$! literal 26453 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 diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png index d6fe39cceb5344f9f2e41d921f097468789f2f3e..26c92dfce802be0e96450cd95f0f002f6bd54341 100644 GIT binary patch literal 21942 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 Zm8i?i<3oO|;7%lk<_*2;rE2${{12gCmKOj3 literal 14784 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 ip$qxHRE;65GjPcBqrc8yiey= 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 literal 17292 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 literal 21053 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 diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png index fb0a7e451f9db87f045c4e133b48f50821218847..af35ecc0b8f0fc8ebc9a852249e54b91f0308040 100644 GIT binary patch literal 14093 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 diff --git a/test/image/baselines/quiver_sizemode.png b/test/image/baselines/quiver_sizemode.png index b914c5129b97027134f23a773feb0ec0072e9bed..1fa4d32c2ddef57a471e8f61d853ea98d2ef907d 100644 GIT binary patch literal 28936 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 C?&OmI literal 28492 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 X75!SQl}aelf{&-WH(9u0_p$#15aZD> diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png index 3e799eb8a8b87092332e0fc1566b6cf6db7966e4..ab33273e57389216324429496246a574e1072e9b 100644 GIT binary patch literal 31990 zcmeFadpy(s|Nq~acu6`?Nh%!)l@KyIphzkqW|neD4l9S5!={5nC8RW zQ4TAonX$FxyxE*Kv$5YpulM`?dVLP>@8$Q$=a29AbLo%7b9+9XkH=%rJ)if-^?tkE zpAXKTGn0|pBDG}65}7lnPhDKHWElbcyDYg1Y`KllrYu>qeaV?q$1kCrSZUIgHm>Eh z63do-vAMYP!>PEOmsh3UO0*D$BA)6VvC7QeKf`wjdTaeKvZ3Tids*zWlqW%&O%@HF zY0o~cTQ7a-{K4bLrK?o8-xs@|O{0}7c(S$mh$TX3NbOV*>RiKoj9x=%1FkE0NVitd zg5=cj=^>w1EtNE0vTW_`B`dZsxnpboQi((}S8MV({?BboC0$mmb<$r3UjD~Bjq~>0 z=2nbO`uhI4*RRczn&`jwFn(#X-WUZ92-4I0tMR4bNsxaw0S@-{-RkXxf@;Ext$($= zgk+)ot0R9N>3ZjiwRBsU)44VO=-=XIX146V`ny!J?8Y)lM4pD`UWtEn4zzrm+a~d^ z&MsNupuIF4XOool^xonS|9qPdSkoGnuHsoddNqchrb zX$y`XoM$Nb`4m~d(QZRy;-0m)jcdTSX{_e%PsXTZFGk4bO=XCCMPekor~I3sz_F?= z7BY98=AMCOm9?LPUK@gVw7ot%==i*g$EzZvTai>(1>vY&ZO`y|jcd~K2O3*Bpn=e= zTBX3=TRL9d2Mwm0wb%)EPQ_!`S~_uI1`8c(O{1KyHi@7NOhXxST{jv;!)8V|*fbo@ zLZj-VNL0~tBaakRu%8(qheS#!hZd!UPJYf)61N&~$}$$Fa|bgi1yJ4n6w+Rsm(Eq( z!kFsdEfz@{<^6F+^zq96SW|mLUiUQ}*Do7{ZArvS+o37o+?hGIgjv9sdJ>kW!o`No zt0_J(7|Sm`9JId=v}ok2QVZ#+WLMA%i~aZ)G?H2Zb`X-_m?}fic^!;sHc|u+9?3p? z%=FPF=PEmgRGTe*p&k&2; zg#(&l9$-2>pXE%=$hjm69&ApI=}8Y;5b!=*VGausVY7A0CEwiQ#=48MyldxqR5rKm!dW9C z<1jzITX}&SMQx-mmDu|DOo(7mDCCG25W;#*jB~0_wFl2#%t&YG4ZXPL{^FMDo;vj0 z^ydX0o-waM%N-h5c{*@+7JNM2JEFE;g|L~-DCLU1>8PFkUu(m}US$DfL%!FuyNpjr z3?#FX8L8-IttPs>z_?-Qaorp>b?i&7=WLMR%{!|hu82=V)OtCXL6oweaEag+ve_@= z2UEegb)-=xu32LhJ$S6(q4gHgu6Yh5n`HmT=EJX#9NL% z*AIACGtZ-S;R6vgkKDA9U{qi2R2s*n>KXrxJMU?R=;L^;cpLP==1ZO}H9fPoDF$nyy=+!Dp+67aGDuQE8aD5vqHR zzj=hR`+`WYd3o*i%VpOueCiWU6gO=194o*%C7SyQp(ME0>s5DjOu!}HdSK9HEaLq= zS;%#Uc!AFbpJ}Vh2VDiFT32>ft%fhLs$0;QCY^8L6SvKf1@5CU^9%f1vX5}6c!5z! zoV#K0$! zSd>9g!JfRpL=V4;Dv5p*Cgz8c=U$7&xL)6AG#}4s$tj(+wLsNugGB6Q5NhXE#>3B7 zPS4qn9i`*u3G>|xWZl}Y+=UC6P;qFGc*^52B>R(*fhK`_LPzGKk=9UJpp$$?sahMu zc1$FakTiZ-FS(td9+|%UsZKLY&?MumVYVO+`>CSr zu~sulB5e5GrK_p$unh>JV2~Gs2vt$E@rw^E1~;PX$XLI@W{*v0rhDgizD5=d{wqSrw(ERB;c6DfGa{msE58z6VRPkss%R+DHGNFudo;Y}T zwn`#`LNz)tcb-y;6S;}wb($}lq4<&`{x z9fG=NRb2TIL}&wud`8w9quSrDOg4Tgw=~0ZB+Eskj3^jRZ1NgWcMZG!#q2D)qsZS+ zZ{nMtIG#uQlA9iULmt;3Yhe4@@eB%mq{D27TD_pLl;OjJjzjD^20lcPltY^k^Ex)? z5S$-FPgpAX8ZR~WXk6FW#8}|rO23`Xuw&tVSopo!L%_sFDIqUs)m0y?9v&c#UmWrl zoyhd}+cDYSxrJF!W`2@EL~FfLRn~5)8rqqmOg0OG%{e**g1dERI3-s;bRrsFrY!m{ zK|LKbGN`ZtR_*U`5jB-?P^0quT`&D8EatncWa2r$H%GFaS>45hvYPrTwT+)SYkoGw zNn$y5niUn`vK1N69+bq!JrTlI!jtRFY*Tx_#93cL!4}e@{Z#uLGtnCJtM|Tm47>T0 z^>A93*aiY-e{kB3blg3={pTGvatYjf82Unn|I{v>2j>J_LSFeYmZ~Y_;L1 zh&GcCW{~*`-tDE!rKAzow=j8h<;T9qr=jmPG>Hci<22-{p>y}*I)ctY?AlG}X5T`m zz8%YG{XR6R(x)MU7{2OxLAl}Qj)rRxAUj91?m_nUm~BFL(1t{bKEyC`b|SahD@jvf z=*f6i=RnX;5kY4_VJRjyXxqTDjM7^g5ZNk!KU0WrZ-*on$KSsbvW&xq$)o8d@Yg?O zOKh$VYI6mht?!4f2ro$~a6)^`{lY0j>cX60@?QItGmSKM)vySa3N zCV)^nD5*15Zy-`5vJL~O(fLi@BkEHk1o3R5(W9AOKeB6y-&yBuv1 zLE(?>WUD-f$X5GLRS_4?JE}9iTTgoG1-e5$V2;?gloC;B=p{z|7v&DcW2l>1$I!34 z%#M1l#>Q0$Bkmd<9aMP=xjLpYAn1Bl7Ni(v{7th=wAGP-hE$Mi=ZB2MRXry?AuHdT z38$jELO1l9v0%e!o0w1!!wk>yq4urJ895C6YKt9*TlF~``mG<#TGEZM%h+K_MEpWm zzU;A>9ZT+%n=fI)@=#R06<1d{ZVfGKiKsKX*hINK6BM;@FxDa~ZrHXbG`wY~c&_p0 zh+}VC#lqJVtC-5^HVegtQfXYAm!KD}yhFWDge+9ng#R$NzxsvpZRP@0`NPx{*RNSO zLzTH~lr;7v#pwND7&z18RPkO(wO;RYqh~k7YVRiqwqA#)y$pphFD4EQ_0LS|H4rn8 zd%S3R9$gJD>saTcU{ZT|@~tAIkEDEi>cVg)X^b6us;g?q`f%vmqwv)q%}5ryoTpYs z^Zxg^)!&83M%p}d1fpvSoIyzh#I<2;K;h=%*irCF@&(MTL{1igTx~3rJ{1~Ez@Cps z5J#h$ZW1?aS0NO0j%4omdJ(Mm5_ghs?Kpqi7$Vz&NEONw$btiXj&~g)u&wAX_ZZ9g zau+frMvZy|%TGhfKbX{;eBm>v)}d9yv2VVs#4H3V4@^fTigrsa?5dS6U>shc^NC3X zQp~IXB0|}4+C(^STSfjnZ7JuZT)?|g`1ZBN6XYixMy~Jd^eXWq)EbEFvD)raDCy8!-&QPJz0Mf5 z{(#i}<1e4x7N5s+E1xCC`34z?Q=8st77VC(LfktjKW4reCS`>R8DM?I`cPzF>gMY0 zXzG{=^MW~rZfG%s!j_>|=ZJR8Lf#E!H4+!F$_#{su<_c+SlC8p3tWeZdxze5XR>9W zuAV|EQt#VI8WT=beS$n3S~j?Bw5dQ4aVO5D@UtBKn7dJWQ%wfeB7s~mV<#&-vOdEa zdIkmCo>pb?T8q0$!C%bLa5f32z>V1KP=BKTJd~X0*h5&rs4*gXgirk@=7PP=DSo`r z(3FoLwuwKJD_t@*Ww4@(TYUh3B_wQG`f!HscwXdeeWbVmT%9&Zy4w;3<}w($3)4rp zanOyL9U_fLtLzEs2j*zx=O??V8`fl`_h2ZNYJ$#TK+}>MxTOB838Juf1!>$cfpB#_vQ7!v6b@~VAEW_qW#IgFv*5px4H5w zOtk*C;~d!3<=)r0y||RMJe{3UcywDeCYPK9cRvfWf!?RUi)8ka~m$r~%M3EdTwzvC~4 zBL(J1`fldtzwP*Y%Kn<`-&6K~#aY%=0ui!Gy*u7q&~a&etPhD!Jc9<5rXp0}I|f$# zO}owynZb&#+?g5vRtNsJ8*(ohZ--ZSB`@O9u562>fH1DUQKlcX^5&}<7PYjM{Mxk* zUgGi~V6@}2K9bdacy-6b1-n8=k43`a(^uU&VPD4XkfZAt8jHDFA*3YY5nSq< zBtpt&t)DT<tA`X+;L-A|ek*TZ!qRPXC;C+s{LZYL4N zjReEcKk<7?{+CZlv=nE()*u!3)QwgMFDE*`MbqHTu3m+^qK9$d-p@LbKw z7g%^3V>NnOp+T3dN%-p{QuwJ6DssMG%bO?4-uz%*!uy7iA?CVT?nTk`jn!B!7JcRB z!c!ZV>U8o&?+4r*hva2JI|wVc+j!gsC+o3w%ua#Ldis8>dWqtm<}!o5Efre)z8+$U zSZD6IgNF+^Mm>e&>ED$)!@62);Agd>Fx(uV1-S_|<#eC*?#-p1X6&mHYsTBnLmp!s zz&BAN;dHoeg1KbScEYkU*%RPevG}F2JA;a=;;jzx9ZZ!mFx6Mp@-aurR!_$9dSBGb z+~KDc=gN#z3~lpm*{o_GU3 zt|@NYI<@m^F@?Jb8s52&GM>epLyq-+kk^EIFqHMetMD7=jCV8p`rFLBzm+7|k4?!c zx$I>hDoWs`cY7pABOq3xqn^>ME^B1}xf6eI^dFd_q^|%Rle&mYOD%Q#Iu;qfq5(3$ z51?{&NSGYxH$m0XJc5GQt+lS>SYo#I7IW8__|H9CEh2E2xDm^B83#dUe3qo>SPW#p`^sH0QYxUV=|g zZy}VsWj06fqhzgcYRbv!CR&H>|G26_&>F-Ree2ICiLkJ9DH+UL&3*6C{)a^b|6x>) zD;j|(_OVLh4Q_pNcqtqp35Uyql38;Rq=H-)o%?u~Y`#s@b7@Y9l0MD7!LnInLnwaW zS)UhQJw)N9)zd_fyVEIMh9yisOas^%*&m~;qvhM8YqanpntglunxcN5_+ttqNR5#t z%_#_5h)N41OH+qG6=WHS+7JV|MALJKuHGV}iV}RLLVtYGP_ZBm4e(spT5Khz0dJ};Yv-!|{jNRi5X-@fiH(DG< zd=dHTeP8(9@6BK;Mv}#4nskv@ol-v=dB+@fPQ3M#r|Du0 z>zz>j>iC~U$B`e;p`kltstpJ0`9_G^*{M7oR+b?`P212l#zeBF4h~1{gzEKMoSg|^9IMuavv?{-$!M*2BEeFy0 z75B^KHxghVCDDb28yPUe*Kf&8)R^avblt@}sI+XuEMy?(yu(U0Ic+ViNBz6EP~D-_ z&)D?jr=Q2eSVeDP!5_a@`1W}IJXXWd!`pCb+;!87{Gvlgu<`3X?xa=Te1Q=%*knyI zjx00g&d^8E^SzOfmVMdq*O)OJndaxGKBVz`IPXu#!Y5MGKnX8f%Mv zQf8k;VwH4Bk$*5BjAwr2JU?QPibu|#oA+Y9f=>N-komni-@o-|<+WAzV#^TR?7h^M z)3qk4bIVT%LSf3u$3jnMu!P|SI(OP6ge4HJAS^+@b3sw8Nt zvq1F^$l+v7S$l&N`D}%^5O`osVA9kL=G{J$=EXQA{;9f9SncTtAJwJB*KHl`<^gp!#>kBeYPiW=) z$B%w1cT#s0NfzL<;~vIsGuj{WQZMYyGX<-Tu$Iltg8nT#3BeO<=|5N^^(#a#+YyI) zNkqHI98nkMJS(r`_A$z@UJkta#m?Cn` zA>@AC36yo=xtQLyPBo}M16BH{$b4vQaBM8G!W5NPs+K|e?zuk62OJ`U)+VSX5`6^H z0c)M+Ll%SF>~-Mwc5(F%*>JntyyKF;;<;3}p*AFs{WPx-8_l&HwEJnY4(yC3GY$t1 zy|%ZZP)txW97AwPOfug^N;Tgder&DN(k-OClWGrK!tEOFa|>I?f2O9FL_tsw&RA z?bzU@we*0xAn$D}nXpuU$|OPm0ek8vYwPem}1V$ zwBQTOw8@^GioIAo^0Dm}n^P#TxS$n+@U$hp_DELI*!vh(#Wy_e;?5R>f}Ovx3$)TJ zTV}X3JIDYrP#{O2(>zFmHfWzh&HMnA&may2br{Rl*rrcuR^*B?<&5OjG_*VG!F1wF z06t*;4Roz~d37jt?Y9CyiPW2PNLP)tO3Iq-{meA&u(y5MpM~^Cj~Hlo%(@Zvkq}Aj zLfYR0)EUWbu*l%F0_aD$#(`q)F*n#9KOj)khuZ8?$EFr};3Dg=rlr2P}!pnS)D zOr?J94HAARJMOTmQ@>iVBWix<42^%zyYhVHKQKT8@$v(wJdlnme;CLf-wFs+qBJ(n zcUEDO-=640>S=A?OF~+eo+>U=Hb5x*MCe$f(9eduZ&@9AG@f3?>Eb2K1Y z!o{$8pOKXIQg&mSkj4@qXqm2RizLO}pOBBZw2nSW*39~mV03Si9~(_kGwYs7 zaZLDUixu|}y!s3RiyD$Sc9J)=nI;`K`qeVp9!p1I_uTBzSkC&e-!G`~-6F)9iS8iB zre3!mI#AL^98xGc=5G@ct}7n*bEbJW(Ww#3)EqkG>1~*yf+|I8VTfjgytf02Q`x^J z_2{ikf$Uei+PThmq>vVEN;i*&K!mW%?WD9l8$U$g7~9Nx2A8kuzJQ;$QpI&V{TvZ! zBRq%X+QhlaN(zR*4w%WFF`U^o*%ZNV&4ss^2B!7-KxZnJOL%{I;}9d2AcfG_DwOT% z&`{P}fz<8>e?wFk0Bq9nmGldc4%PapLa?xN&|wHZyv0t{*a3X<*$l-P`&z}^IVL(O zVJ~)q4Tr4UT;X4;qfQ_nn|dU(?O1oKA>Yw}UDp0iic_xu_sS47yL$ohbbTaPTYq6Q z+NhjnggQpKA)gSCv!0bdV(cYGF~badUOR`1Sr+umhRTfg;KwI-ICdf&3>nnEmF9*l;lyL_KjsjIDYr5SEt4aXcQk+*; zzCCp#{gWcX3rI1CymQl#Hzsau^Kb3sISTK5dXYDnbd{coWBXC&>z!bg%|3>%ftZ7- z54fKia;VRRIV$*;pMx#%7x?$*YG>?2e8#VaXC;dqQMEx7I6KLz<@2EB!u0Gb$JaXd zm~f{To_pu7mI&Td!uN3>+uTASG@NdT1*Jx`DXb>b54sh4QC-eSD{nVp;qJ1G+A;Az zVdDI3gHgqz_HdA#!PvPH9l-Q8m=4=RO`oUW@*uipCcbYd_vT7WFbU%&!uD%8oVRXY zk&{)n$>c%{gI*-f3HxU1Rr>%fd>rN(zjbuxWmu5wD>U1V>`pq)@O0WZ?`JT$pupz0 zGhTDFWno?V;$EN9&#RE%K0v2xD1Sr>5TB$G1XqP^A_Om4Nyo!oam&kn1NE7hso z8;-lpP2@|5HF{HEf#pEQjH|D1K16{yTaiQSe2)403Hi>-h~i_T?DvAYRgf6wTz_PD zQP{PZ*1?X0Veh}VQZ&m@?GCqs_3++8|8ixe(k$=3BxP*obSSZqypd1iDkzndrxop0 zyS%}5h&@^L4(74!ca^o^ zCOCw)sCEr~l-gLw+ou7n#?+yQ{;?OS^W$+B);p6(BRdF+32+0Fg7D zcCh&Y|cd1?TW|yuu7k5=-s<39ztA4tEFIYosk(eGbpakt&iuC(kU{PT&xx z&hf6KSi!olMys<((wb%at#d9%tx?Li%7EwuPhY1YY2K6*dMP-IE~a|x7+}QIne}cu z$6kI)?Rr?MmIMQLL(eI-8X5T9kz)Y;q~Z3VlRrL}yH^s`o)X;dP+U_HW1DSJkpOuS z$(7Fwt76TW%Xfm0!z-@L900dJvvu^rJ8G~;+W^Tbe8SpED5oaSBQ@bGS1`R(;N?kY zP#Z{4JSTzJ_!E$6ZHGInm<27^C#+zwITbdlzLwsh)^Q3WiFG;_j?*zns<_r*nO`}* zNrliUNRWzRL~4fhE0CaRu!5vB+XNW89q|y(Mbp0w{;sr7j!l4T1)@J`l5U;kN4^HViW15)6w(G zC3KxWNPvE6%*ab3MnMY{^9YbGv<(joz$~296SbL@;&=c~SE^nCn~s#5?wOJd$NAzW z<0noQ2Imh-%l#MDm2*V$D@5}6A}D&mwN>_*ipoprSxf)qe~vh^Kjix8SOmQ%ifhZU z&nEA?b3&(<+*-ehmQ$IY>cb924N)seQ#`lM!?Uo_B^1O;*UOj;SUaiz5UWnjt5 zhvAXl&+j5ffqBt{4VKU}uui9}>5$4wQ6X46L0xpuKKBSbmy#BLRQ&ZgvTfUP=#GRR zxtA`XYB-k3rHx2NN#H~pZZc64F|V-cUl~@Xv@|oIsH=4#jg{P*4^LvxHMn;J*unm_ z)P1eH-02ib`T1dr&vR~x<%>huSEv6e*fB+UJ_2jA8ewa9`zroeVIa?T!vk(t*r7#% zAW*&i5(stz8WfA)(^Ao7y2fMb?u7@w)})Yz*Hj&lvQ8eJi+rQK=duN=7AbVWkB#un z{4I1pve8>QO;JrI6xz7{O%=TN^mwu6L)#5~&$xpkow3e{==N~WSneLj7Y=WC5XvQO z#0DT#%mYpv=^$2(wW4X4kDjZp&jZ`{j+Q9RYIk#;!}irMgBuD4H*aQKE_S%!ug;u- zpm<8;Za+VH-4`>-LLYB9H7wQk)N!MP8zi6*3iJBd9LMbr5_aEqf=%BmFKN6%f(FNr zD!f@wBwDE%Om+F`OCppgAUPUsr$N9(V0cPT7iCgN_QXj+CiYH6sCivL9J$#=m%&pm zdpi$S>A`m#ZnjxTfO>p=<%mazv26K8%TNMWNt75Aq%`lti~jnSSLI9c3} z)cu6)lEFVXMpI86k6d!Td_)+|E6o`3h>e4ByC1v z#=)m#-=)l!S}|R#w7$u<2Z_d0Ijy4C3j;moDggYAY}k@>`!yT|gdZ_Z=ouRWv1p3@ z^`vaMO6<|hD;+)FiPD_1gc^1gMV@Le^p1J6@syJ)0W#!2J$uG}mx^NjlEhfiqF1<+|0Nl%#&^*(k4Bi`*TDnO0Fedh?~smLvQ2GugO?cx2~CT`hldtln+S z*}G}`6zDc=1MS8hA0V-73i|qP?FUB``qaK8SWk~Uvn?y@Hl#O8Ik^jG-g#V{z1l;w7z}+ zOFcDAOFxNRiPRt%h5gtl9ADmE8ud=Zgt*`~omQZ~#S)x{dJPMli5hALH(X1S<^cAF zgBwjb?7=4~8@@)}R78xBLYkgx(gb|M*Mlp=$=>LIhr7ac&2+qb%Fc!|Q2jErYjK8K zYU)R3`{NL|N)o~;VFZU8w1DQmimUVEyeMqR%V0mxn-n;_^p{o&gImgjXSjXN9OO<_ z#b^0EcfqPV_yEaKsmv&?K#%E7WCzuzT&)d47Aony#-jP$msn0+AOAd5yP3utxuKf|#7vH_ zk>kBpRUYlcaN~|VON}X(mnSgA!cn_ z4K&bT#5ghR#yPp1R(mhASYb4~#u5Q6y^n4liAob+$1LQym&C(daC$%K2w@C9qZGfF zTrBQ(w#H9O=4{uFy0ValYuTgN9k@oZIl@-!`#=V5Xi%e~SOwx{#wOTnWqQozxevN5 z-$mzt3d1DH$HTBEk~H$8w~oY|k>q5WM6&=ACJ#1(vyn(W=>=qvk6ut59$31X-_!iy z*O(AiHp5uRh4HJDyc*ZOF1Y@|4>=!-Io*6Ouk(^@CS}@w0AA9fd6C=~rY2EV8%P-e0f6f_*4|Ga&gU24x)|B^%yUgyu0NYu&E zua*P2muj`uP02euVC>U|!mHD5o{LwT@v5Po&wDexposZ}tIYj~{gMcxTRs-lC|KU_ z1!Ve?h!5wU)^2Qo2O0Pq2SSOVdL-y=7@$%&{un?ws1>CG3L8^@&O2#s1HxLf@Xrn8>ByFR;yk;=9{}H&U^AhD1=yN8N z!^!wi#|dtk*XqOcGF!qb;?8@Tb^R({DuE-20j#_RF}I?#3Ee7-8Od2%wf?r91(9 zcp%H^S0WZQRG^KvIiT2TM{CwTwP7zdvp_XLMbFc7dZn0_Rr=b#i}$`A1j|x`;V(u# zEP+KH@p#OBnFPT=39UnV_gZ=<)g}cCeE?Es^M1l|+FlyWitIB9T0#V1=n`>Cy2Yaw zy8-Ls>-kNe$H?7)R|QdX)E@~$1&xi~92U{;74B#rqC4)|A)%P zO7pbg3QTq0<`%p0&&rM7s!{+tmR(f)yG(2obK}cHzjR`!P<9Q&e&;2o-_7sY70yQ^ zAt}fKm3Gfq^Ta1^<|hZ@u<)CLl56DvCCa}V4Ko9%?(M0a|M;{vz68tKBjJHDMJG{4 zABVG^0wuNeb2SollTCf(|50Yvd1%pK@hi{x-vGTxZlTp@e;kT3H-xAvY$>r8BSI}?3_Z#pnI?aC5tlu>2H_iHedHr{GN|2FUG^Uv}*>;aZ zd0p$@Of~MdNW2V+80BAUhz-E(8H1q11N*e#?PjM?lq25)DuH!1s^)6F6bRa@0@yt^ zj5CU{j(>S;DUtiH=f-kx^d5VsM>4qeDOKmzCjyJnL6PqPEUh49Xbo>RNO+mA;cYz& zTnL;++0&(+a`a28JAU5bO8u2-9TkB(UW+zAz^14llLo1-Dp6(jXViAX{={&maT%A2 zjm^e;85%~x_nip(aR*chbbk7a2{+`cgX6QW0x(^kdqC$~ZhC#L0hNQ!7@@p?OLWmd z`cM+FaIXr+@Iik64k-p$Yd9yI;>wO(t?8ciB%8Ll1_Gu+gzK)9Fnv&@AXg()n7*I) zvsu^qa%AOxW(_cl@qmiUZY<;?aO2FyQJ_ZUQ!?9SYiCZMQIIG(`a4^bSk3NALsPF&8y2sXg)n+BJQk^V)bJ z?;;41x&y_l4=;{adMZ!8xPDa zoCg!lj8I^eG-;FuO$}0Qq28`=@f@WfkkhGry%M9*{-J>YNE@S%`hawz%|fR|I6G7ZRS8!DK9Dq zh~tK<{d@I1Dgpp`JGT{b@Tso&n2NHpZ^0gd-LWGrKF<$or4F%DwWd9e^ri_OgYgF- z?I4G1UO7WEbgYHey}s%_`P@Q>@-M#_OaCJ+ukIpe-WXimla87501iLajn2x&@_s@# z?pO7%0aY7jV>T%yowdy*iRA-P4iCQxxv#W=h|qp2e#cN?*8;6O&8p?b zq6ZYhD~{7vrQwJ(>Z#hEi9t~SLdCE_ok0RnrJYlE>ggv}b-T?hgts^rkrrw145u?f z*73u;X6SUqJeN75vp_B_y-?m{I{xv#>2V~TWfz9|jNuByToj}h?gf3g|ADL4$f>WA zW~CT47r~9R_TmFrM$aLtpKVib$8lrBLaSqh?ZWnr1P%;2ea>-fhiOvzY*Vx!yTr`R zO?El~?y|AhB-NWY_#>OwZbWp^6%TZ>cIHj{oJfth=)RZk7QtT-a&QXp&_k(hj}efo z!NAs9u&0#hlt*UFgpnaaFCF#=vnXAv%lcHKumych!4HrC=viIL9?W$rjq|rB6DLLr zyfeIe#;=aHsK19h*{ ziWNa|I!#%6d&e_qsTnEPDCeHL!VJoRw~y_fq1dDQ)TyFp#kfFd#17jQwp-Xce)uIG z?Lltw9$sQA`^K`B)fv&`-5YMtqt({L&lrm720oW-cfKk+RLT&sW$>c-*Rr=bpdn*5mU8xCCBbLt;V3e)hM`fURV@|ojNu;aT~%Qn+0Gq4z^dY z+dDsPn>(b)LmWu9d7U^QyE3hYV{CwlD+ro6C5Ljeojd>4`Q%*B+l(#Oq5Oe{JV{7K ze<%y`FVBtI!*G+O~mMSh9=!vinJAfLb|}6oW61x$KI2z zU@s8OIVmv)I!P<5O@bKsD<8Mh_}7$+0oLrAzPAjYdq!IBdMRm4_HCMf+ZiON2iWuV z)yYzuEsJ$8sr*_oda4$Np6N_JJEtE0VEtYiLIRj_3O*2f|Q~G+1Fs|CvwVj1PO(N^9$$Cf731KEIdEvb;097F_u+p zi7YAaVtS{YN(r=0&?uQCdxJM60k6sk|eq_QV77K+XjlnY=A;9027ZKAoEM(8{)W6tnq)pfg{RGnzr$sbCLyTJ1&& zn7}N=r}al<_C_^zL=?Acp~kXiB`GyHBBc>H4x@pROL+u!WpqqiVayC=^mB-GtI;M- zo50Kqy|j*5u%I_1aXM`Fe1E`;R0j(Mrgw82=hLHYMsK;3z+q@R9u3hShZ5y)W!nN| z7n1rn%j2Jla!?wC{z)WS`YJ1O&Azg22UG}&HJx7>%}Lm7=-iKcIl+5K__^Uqayd32 z9{4<2!qzM~`q8>X`f?JjZKLE?Wo9Q6giMPHp27lYtd;X7%t)5b8wB4JF{^rFBUAmv z+h9dgpp5^|#0qS?zB~RA(4f((x%zq;t1d#YM9B-`ILY1Nx~6Y^kC5;>ZwhJXorJMO z{uV=E(Ci1wGWUjGB|ZMEY_je1e}l_D0i{}u+%H?^pS-#-n0OjeM{{H~*Lgm$;>XT@PdnrFJfGF*ZpAtu!*?9+hxtNrw3HJd? zy3WA1NEL+xm#-KGPZupdZ@^iq=dB81i*B5%Dk1P}ig%!8iZ`f2m4_+O#A3lHEM_LJ0@Qt1xbKL!1il1KAWNG%y_ie4 zK%qDIPS56g0f|`5n!|4pfp~GV;mmT}-NsCk@cpwY9y=tb2dufhKw+qu)==^B)SdyA zDB$Foy9eL*sK))vjpo?is#+Lk`mycTd(+m&|H$>ORGsMKU?^Z+c&$M>j8MZRNh2rf z6=*XQct+or8=pZnkP#Jt8gqUjI%=cCNX1y9A{8*tSf!$kCX{tfNwI*%5qdVOD3zO` zYQ%;|0t)*C9bT#WL-Qljf(m=G29o;iWRE{QUz_xggu3p6NWb=<#j7@=rBcIGEm!|y zmQS_lUS;izI)mlG0Uir??qBueO?*oNpx3?lPGhVbedjY(+}mFSt$?Xxm}#4aD3_y;ZOibu#!2hBjFRwi!Nt&Fnzm}uKp6*l zH>MyZdoB&%)2NZjbC!5>gakd~iyNc0%<+5Pr@uI)saPN)an)IBLhtrHW&svP5TFz? zt5Z&yt2R99I(|b1k6+W$69`BAc8DhWAP$Vp2qa z%9WJ1>NjCPA?_n(zaDGRhY!SM#X+h~)Ka85rm2W)bClQ z7oS~Z&gA(G=}u$^@xFIZ6iJ&ewPV=I^o5=^>KQCG#r~7@Onm4|% zslXzNUka~o^ICYw>%unS_h+=~x3mNutF6qkOraDr{l@0U`wbbz>}qV0lajMd!FGB^ zI+U;=L~{!GoJ)hC{Mb0B`{lUWmJ@Jj4@9WQKyy?+hxxf5@Ih!XM!$aLzqqiFHZ;#o zwC^h+PkuntZ_IARj>t9wlU>)e2CZWOoa+PWx`^~N@ZUc;ZJa6)N3y-HU}FcBD_5%ZxGNhI-_Xr|`VJ~c_$AeZ z-8mR2kkD~DD-Dl%)6f$ubjuF;H z-?QurYp7t&jSJzkiuu>4S8|LBt11hg%9@cRZpo81M_kD2qt7R%$cWq-TWW)jqtCtI z{Oh~6tj;iv&Q7!#hYtnbm=y&xXs%fa72deO$Gv-0`!jiQI0H8{S@;sMP=oWv4NzAu zQ^-nS4)ltqfcI+wKbjimW7IQH$Elf&{uVG%Genjv9$EbQvqbVe@n+kSA9xePJHc}$ zEDdJA-}9d3GW7*+rgOa)Yg>-If%91zMk_vUrRVJMnV1oltb#}!?(f0@MrVUi?8Sxb zaXDa7pS4fm7hHAm8-FW&{JtCFg!}!96m1zOx_w6`^2ITT?Nb ztd8x>mX_fU&NaLc3frkYy3V53-mmHNi7qat_X_%0TLwz}j0TqtpG; zc)G{)E?1|eYoKMIqV1Tft;c1+e@2%K+=aG2cKy6%s>!7P!+s9=bBkt~qc7};Io$ue zXF_B-KPG-WJ@rX%=($37xW9dgKiR*}WYik7}61ovG8Cqoj5N^AQrKzFcq+XRe+ zFz@m-Fnqhe3#|T8hwCJYB8jiiAjsW+#5Em0L{fYe1^&;Li{|EBkk~IBZbwR7c__*b zNO(cbS-~&(wD<==N&m&Q2)2D)Jlg-swzvt@okgz&DCr+%XMelV77PD^Y5iTV_kX)s zWg#pia0|43s^ON1_71JKZll$uQwQQ#$;Ch6-rke=@gi+`!M-yIrr8%AghbAXlNUnX ztg}e{e%x@v`1IOS2Z}Y{YQL&@+-1ZNMC`-8pfBY5VTF(fd-Vg|T0IA+F|B%j=T;MJ zDpa_0R;RzuFk;_BwGEabIz`Kv?JMZUn^qbLjla*Vk9|L8wDk_|3vz{%c=c++0!K& z%OtnoUb6V(w)WCxSZxPY(r%h136`t_q|kMZ|%Qw#7EpFek6 zvh2=wKFuKTOSvbd zIq(#CsG93&$J>j*poG|XUiHcfNy1XC4RnJ{c&55T+2fBNPgMnsB_41hbZ>pU_4a_w zjDn4+X=FaU)+t5X(~V>%CuGha=5A2QynSLHwQgkbhBY_8BS{7#)HdN&~I;+LMVM(eh&L?#O9@b!026y?c7xq)MrpPqq(yYE#%D)3wUgrBrI{mXEOx9m_8p4dbN2r|XV3og{qdded(QK|zu)iqJ?DJq zd!K>=-3(PTE#9jC^5S$wlC^tn@hETf#dq&t%9UasJ?N?MJS!%>TRTNuM*0oPHG|ey z70r30_NW|R;VX>HXOY>BF>|XGvXPa)8l6HC;NAxnU{1yks&B73;25f2#-MLc(XF&xRv^X>PWk8>S^2_kaUt&B5@ga0=fdVcF-Q*YwU&DOJhHRAsqurv zb_$M2?Z`7co+_;tL_D_~!vVOCPU(=5`f%|5Vh5mXheXSP zz9pPW(-qVUzW&jpgI-0uO@eaNO;#J#F_f^P+F+KG*bZf%X!P+4EQB>UpFD8oW2Hsy zB)9D4Q?gql*pWHs!5fe(yI5CyOoP#3!S(*qP9UWp!VLd0qey*vl&^%jm-*BBsnIhio zZt4rqi^jDkfy}1D`rx!~P3ibPOeGc>zVo_W>DZX>LMv>ENim+17f)=&S!i4teGch@ zeOT)CXi#!t{Wz_gx!9IC(VF|f%f`kg&CV^!OoBSxmH-(hafZRaj_ux1WHiY#8IHkV z0y5~8EW5bi`4PR6%GmCk_hfwJqSuZ!gCc1PNzi}AjA{g5Uky4;4fs?w-IbLN_X>}E z1!yAFZ6s}RvRyT@yaqxL!kg7Kzg~1_c@p7{Ov>S@2Q4*l z2WHe{$OL3Dx{;3Mv0^T9*8*{VpPa1-en2p@W-#x_vdG}yX8I@V#c2Cq4lS4lXYN5B zTyY+OeEy82#R0=)Vl)WhSw{?|HoXE`r>Mbe==mx1i@^X( z;fid-a+{35x(QT+jm9y!Xwnn8P17ltl#Q)W=w3Ie4X4`R^T3u&d}`bp?uaX|YIspH_krrSg!yt=v?;oFqv0`pxH;7bPJlc{Gi z0jhuO3Nu0=4rpnelvhxYLRnkm3y(zEn}!W(kB*KS>=p3iTRw^n~JO31vIHH8ozntZ_zfCIt0>rmnDqc)TC^cHc(ueL+_U2W`X=?TX1`} z)czO1zVwuQ065>zN@jzbf@pf%!9vH-CIZwp#C;V&_sQ_C_}3dkB1#~#(&bW>t-?YB zi}om0W(Dd1SLS_^z6RJd4JFE`#kUUT<>+ge?0x+b;)M$wLfd^ zwb%Nrd)@cV_x_{Ck@&i(v->*b|led>~LA8h>Y#|InHdsps_*!07L zjlZ8+dKA3rkEbp_$Nu~se(85-Z|(TiV1?VYYZsCihcGvyp4*NFJ<%d>a89b<2il7r zVg4ei@MbUGx7h9Elu#(#z5e?LI{I6G)-^hkw&eS#eM|IPAZ4~)F-L(<|M((YUk7Bk z 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�E2DfB+hma`Jbm9Pi@lL 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

iZRV*Fxu7L?)S1oxrA~lHfGEiCOZr= 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 diff --git a/test/plot-schema.json b/test/plot-schema.json index f500c00824c..42abfba0e77 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -59037,6 +59037,12 @@ "editType": "calc", "valType": "data_array" }, + "uhoverformat": { + "description": "Sets the hover text formatting rulefor `u` 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": "none", + "valType": "string" + }, "uid": { "anim": true, "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -59087,6 +59093,12 @@ "editType": "calc", "valType": "data_array" }, + "vhoverformat": { + "description": "Sets the hover text formatting rulefor `v` 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": "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, @@ -59115,6 +59127,12 @@ "editType": "calc+clearAxisTypes", "valType": "subplotid" }, + "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": "none", + "valType": "string" + }, "xsrc": { "description": "Sets the source reference on Chart Studio Cloud for `x`.", "editType": "none", @@ -59132,6 +59150,12 @@ "editType": "calc+clearAxisTypes", "valType": "subplotid" }, + "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": "none", + "valType": "string" + }, "ysrc": { "description": "Sets the source reference on Chart Studio Cloud for `y`.", "editType": "none", From 4f91255b0e72d1ab7883b7ff1749b4c23924483b Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:29:05 -0800 Subject: [PATCH 16/34] Reuse scatter selectPoints for quiver instead of duplicating selection logic Co-authored-by: Cursor --- src/traces/quiver/index.js | 2 +- src/traces/quiver/select_points.js | 37 ------------------------------ src/traces/scatter/select.js | 2 +- 3 files changed, 2 insertions(+), 39 deletions(-) delete mode 100644 src/traces/quiver/select_points.js diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 942ef83fd9b..f01dc527851 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -17,7 +17,7 @@ module.exports = { hoverPoints: require('./hover'), formatLabels: require('./format_labels'), eventData: require('./event_data'), - selectPoints: require('./select_points'), + selectPoints: require('../scatter/select'), animatable: true, meta: { diff --git a/src/traces/quiver/select_points.js b/src/traces/quiver/select_points.js deleted file mode 100644 index 66f26e444bf..00000000000 --- a/src/traces/quiver/select_points.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -module.exports = function selectPoints(searchInfo, selectionTester) { - var cd = searchInfo.cd; - var xa = searchInfo.xaxis; - var ya = searchInfo.yaxis; - var selection = []; - var i; - var di; - var x; - var y; - - if(selectionTester === false) { // clear selection - for(i = 0; i < cd.length; i++) { - cd[i].selected = 0; - } - } else { - for(i = 0; i < cd.length; i++) { - di = cd[i]; - x = xa.c2p(di.x); - y = ya.c2p(di.y); - - if((di.i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { - selection.push({ - pointNumber: di.i, - x: xa.c2d(di.x), - y: ya.c2d(di.y) - }); - di.selected = 1; - } else { - di.selected = 0; - } - } - } - - return selection; -}; diff --git a/src/traces/scatter/select.js b/src/traces/scatter/select.js index 01f757a779e..c4c4c3479cc 100644 --- a/src/traces/scatter/select.js +++ b/src/traces/scatter/select.js @@ -13,7 +13,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { var x; var y; - var hasOnlyLines = (!subtypes.hasMarkers(trace) && !subtypes.hasText(trace)); + var hasOnlyLines = trace.mode && !subtypes.hasMarkers(trace) && !subtypes.hasText(trace); if(hasOnlyLines) return []; if(selectionTester === false) { // clear selection From 82e6bc117bb52d91796631eaeb92af629960fac2 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:36:08 -0800 Subject: [PATCH 17/34] Use hasColorscale() to conditionally enable colorscale instead of hardcoding hasColorscale to true --- src/traces/quiver/calc.js | 14 ++++++++------ src/traces/quiver/defaults.js | 8 ++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 1bee1abefd9..f6678b31c59 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -66,12 +66,14 @@ module.exports = function calc(gd, trace) { scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); // Colorscale cmin/cmax computation: prefer provided c, else magnitude - var vals = hasC ? [cMin, cMax] : [normMin, normMax]; - colorscaleCalc(gd, trace, { - vals: vals, - containerStr: '', - cLetter: 'c' - }); + if(trace._hasColorscale) { + var vals = hasC ? [cMin, cMax] : [normMin, normMax]; + colorscaleCalc(gd, trace, { + vals: vals, + containerStr: '', + cLetter: 'c' + }); + } return cd; }; diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 9ba70a09d46..d50dec61c47 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,6 +2,7 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); +var hasColorscale = require('../../components/colorscale/helpers').hasColorscale; var colorscaleDefaults = require('../../components/colorscale/defaults'); module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { @@ -75,8 +76,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) - traceOut._hasColorscale = true; - colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + var withColorscale = hasColorscale(traceIn, '', 'c') || traceIn.coloraxis; + traceOut._hasColorscale = !!withColorscale; + if(withColorscale) { + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + } // Selection styling coerce('selected.line.color'); From 7135b5250f058fcaf93cf3ab250857f45698da3e Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:42:51 -0800 Subject: [PATCH 18/34] Reuse scatter handleXYDefaults() for quiver x/y coercion, validation, and calendar handling --- src/traces/quiver/defaults.js | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index d50dec61c47..bace2a6a8a5 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,6 +2,7 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); +var handleXYDefaults = require('../scatter/xy_defaults'); var hasColorscale = require('../../components/colorscale/helpers').hasColorscale; var colorscaleDefaults = require('../../components/colorscale/defaults'); @@ -10,25 +11,19 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } - // Coerce x and y data arrays (this ensures proper data structure for category ordering) - var x = coerce('x'); - var y = coerce('y'); + var len = handleXYDefaults(traceIn, traceOut, layout, coerce); + if(!len) { + traceOut.visible = false; + return; + } + var u = coerce('u'); var v = coerce('v'); // Optional scalar field for colorscale coerce('c'); - // Simple validation - check if we have the required arrays - // Use Lib.isArrayOrTypedArray to support both regular arrays and typed arrays - if(!x || !Lib.isArrayOrTypedArray(x) || x.length === 0 || - !y || !Lib.isArrayOrTypedArray(y) || y.length === 0) { - traceOut.visible = false; - return; - } - // If u/v are missing, default to zeros so the trace participates in calc/category logic - var len = Math.min(x.length, y.length); if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { traceOut.u = new Array(len); for(var i = 0; i < len; i++) traceOut.u[i] = 0; @@ -90,6 +85,4 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('unselected.line.width'); coerce('unselected.textfont.color'); - // Set the data length - traceOut._length = len; }; From 3cd525c72ed01b5fa2fcf72e93f0954add519d45 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:54:54 -0800 Subject: [PATCH 19/34] Move colorscale attrs under marker and replace custom c attribute with standard marker.color --- src/traces/quiver/attributes.js | 28 ++++++++----------- src/traces/quiver/calc.js | 13 +++++---- src/traces/quiver/defaults.js | 8 ++---- src/traces/quiver/plot.js | 11 ++++---- test/image/mocks/quiver_colorscale.json | 12 ++++---- .../image/mocks/quiver_custom-colorscale.json | 26 +++++++++-------- test/jasmine/tests/quiver_test.js | 9 ++---- 7 files changed, 51 insertions(+), 56 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index a237d9044f7..742f31d41ee 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -34,13 +34,6 @@ var attrs = { anim: true, description: 'Sets the y components of the arrow vectors.' }, - // Optional scalar field used for colorscale mapping. If omitted, |(u,v)| is used. - c: { - valType: 'data_array', - editType: 'calc', - anim: true, - description: 'Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.' - }, sizemode: { valType: 'enumerated', values: ['scaled', 'absolute', 'raw'], @@ -181,6 +174,17 @@ var attrs = { description: 'Sets the text font.' }), + // Marker (for colorscale-based coloring of arrows) + marker: extendFlat( + { + editType: 'calc' + }, + colorScaleAttrs('marker', { + showScaleDflt: true, + editTypeOverride: 'calc' + }) + ), + // Selection and styling selected: { line: { @@ -237,16 +241,6 @@ var attrs = { // Extend with base attributes (includes hoverinfo, etc.) extendFlat(attrs, baseAttrs); -// Colorscale attributes to color arrows by |(u,v)| magnitude -extendFlat( - attrs, - colorScaleAttrs('', { - colorAttr: 'u/v norm', - showScaleDflt: true, - editTypeOverride: 'calc' - }) -); - // Add hoverinfo with proper flags for quiver // We need to create a new object to avoid mutating the shared base attributes attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index f6678b31c59..8123c00e443 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -29,7 +29,8 @@ module.exports = function calc(gd, trace) { var normMax = -Infinity; var cMin = Infinity; var cMax = -Infinity; - var hasC = Lib.isArrayOrTypedArray(trace.c); + var markerColor = (trace.marker || {}).color; + var hasMarkerColorArray = Lib.isArrayOrTypedArray(markerColor); for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; @@ -45,8 +46,8 @@ module.exports = function calc(gd, trace) { } // track ranges for colorscale - if(hasC) { - var ci = trace.c[i]; + if(hasMarkerColorArray) { + var ci = markerColor[i]; if(isNumeric(ci)) { if(ci < cMin) cMin = ci; if(ci > cMax) cMax = ci; @@ -65,12 +66,12 @@ module.exports = function calc(gd, trace) { // Ensure axes are expanded and categories registered like scatter traces do scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); - // Colorscale cmin/cmax computation: prefer provided c, else magnitude + // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { - var vals = hasC ? [cMin, cMax] : [normMin, normMax]; + var vals = hasMarkerColorArray ? [cMin, cMax] : [normMin, normMax]; colorscaleCalc(gd, trace, { vals: vals, - containerStr: '', + containerStr: 'marker', cLetter: 'c' }); } diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index bace2a6a8a5..b0a659ca2b2 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -20,9 +20,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var u = coerce('u'); var v = coerce('v'); - // Optional scalar field for colorscale - coerce('c'); - // If u/v are missing, default to zeros so the trace participates in calc/category logic if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { traceOut.u = new Array(len); @@ -71,10 +68,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) - var withColorscale = hasColorscale(traceIn, '', 'c') || traceIn.coloraxis; + coerce('marker.color'); + var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; traceOut._hasColorscale = !!withColorscale; if(withColorscale) { - colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: 'marker.', cLetter: 'c' }); } // Selection styling diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index a571e2ef409..84ab82fb1d6 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -183,14 +183,15 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Apply styling using Plotly's standard styling system Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); - // If colorscale present, color arrows by magnitude |(u,v)| + // If colorscale present, color arrows by marker.color or magnitude |(u,v)| if(trace._hasColorscale) { - var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); + var marker = trace.marker || {}; + var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); lineSegments.style('stroke', function(cdi) { - var cArr = trace.c; + var markerColor = marker.color; var value; - if(Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { - value = cArr[cdi.i]; + if(Lib.isArrayOrTypedArray(markerColor) && markerColor.length > cdi.i && isFinite(markerColor[cdi.i])) { + value = markerColor[cdi.i]; } else { var uVal = (trace.u && trace.u[cdi.i]) || 0; var vVal = (trace.v && trace.v[cdi.i]) || 0; diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index 40987cc87c7..a9471491013 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -9,13 +9,15 @@ "sizemode": "scaled", "sizeref": 0.3, "anchor": "tail", - "colorscale": "Viridis", - "showscale": true, + "marker": { + "colorscale": "Viridis", + "showscale": true, + "colorbar": { + "title": {"text": "Magnitude"} + } + }, "line": { "width": 2 - }, - "colorbar": { - "title": {"text": "Magnitude"} } } ], diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json index 5a29f3e315b..75461f435d8 100644 --- a/test/image/mocks/quiver_custom-colorscale.json +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -6,27 +6,29 @@ "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], "u": [0.5, 1.5, 2.5, 0.5, 1.5, 2.5, 0.5, 1.5, 2.5], "v": [0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5], - "c": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "marker": { + "color": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "colorscale": [ + [0, "rgb(0,0,255)"], + [0.5, "rgb(0,255,0)"], + [1, "rgb(255,0,0)"] + ], + "showscale": true, + "colorbar": { + "title": {"text": "Custom Field"}, + "x": 1.02 + } + }, "sizemode": "scaled", "sizeref": 0.25, "anchor": "tail", - "colorscale": [ - [0, "rgb(0,0,255)"], - [0.5, "rgb(0,255,0)"], - [1, "rgb(255,0,0)"] - ], - "showscale": true, "line": { "width": 2 - }, - "colorbar": { - "title": {"text": "Custom Field"}, - "x": 1.02 } } ], "layout": { - "title": {"text": "Quiver with Custom Scalar Field (c)"}, + "title": {"text": "Quiver with Custom Scalar Field"}, "width": 600, "height": 500, "xaxis": { diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js index 377e34db6c4..6c829a7278e 100644 --- a/test/jasmine/tests/quiver_test.js +++ b/test/jasmine/tests/quiver_test.js @@ -220,8 +220,7 @@ describe('Test quiver interactions', function() { x: [1, 2, 3], y: [1, 2, 3], u: [1, 0, -1], - v: [0, 1, 0], - showscale: false + v: [0, 1, 0] }], layout: { margin: {l: 0, t: 0, r: 0, b: 0}, @@ -251,8 +250,7 @@ describe('Test quiver interactions', function() { y: [1, 2], u: [1, 0], v: [0, 1], - line: {color: 'red'}, - showscale: false + line: {color: 'red'} }, { type: 'quiver', name: 'trace B', @@ -260,8 +258,7 @@ describe('Test quiver interactions', function() { y: [3, 4], u: [-1, 0], v: [0, -1], - line: {color: 'blue'}, - showscale: false + line: {color: 'blue'} }], { margin: {l: 0, t: 0, r: 0, b: 0}, width: 400, From 96845a844e05d9ebc79106d8890450f95c88d0d8 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:01:34 -0800 Subject: [PATCH 20/34] Fix axis autorange to include arrow tips, not just base positions; remove hard-coded ranges from mocks --- src/traces/quiver/calc.js | 81 ++++++++++++++++--- src/traces/quiver/plot.js | 12 +-- test/image/mocks/quiver_anchor.json | 15 +--- test/image/mocks/quiver_arrow-styling.json | 17 +--- test/image/mocks/quiver_colorscale.json | 8 +- .../image/mocks/quiver_custom-colorscale.json | 8 +- test/image/mocks/quiver_multi-trace.json | 40 +++++++++ test/image/mocks/quiver_simple.json | 8 +- test/image/mocks/quiver_sizemode.json | 15 +--- test/image/mocks/quiver_wind.json | 20 ++--- test/image/mocks/quiver_zero-vectors.json | 11 +-- 11 files changed, 135 insertions(+), 100 deletions(-) create mode 100644 test/image/mocks/quiver_multi-trace.json diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 8123c00e443..4423b02abe4 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -4,7 +4,6 @@ var Lib = require('../../lib'); var Axes = require('../../plots/cartesian/axes'); var isNumeric = require('fast-isnumeric'); var BADNUM = require('../../constants/numerical').BADNUM; -var scatterCalc = require('../scatter/calc'); var colorscaleCalc = require('../../components/colorscale/calc'); /** @@ -19,8 +18,6 @@ module.exports = function calc(gd, trace) { var xVals = xa.makeCalcdata(trace, 'x'); var yVals = ya.makeCalcdata(trace, 'y'); - // u/v are read in plot using the original trace arrays via cdi.i - var len = Math.min(xVals.length, yVals.length); trace._length = len; var cd = new Array(len); @@ -32,6 +29,10 @@ module.exports = function calc(gd, trace) { var markerColor = (trace.marker || {}).color; var hasMarkerColorArray = Lib.isArrayOrTypedArray(markerColor); + var uArr = trace.u || []; + var vArr = trace.v || []; + + // First pass: build calcdata and compute maxNorm (needed for 'scaled' sizemode) for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; var xValid = isNumeric(xVals[i]); @@ -45,26 +46,80 @@ module.exports = function calc(gd, trace) { cdi.y = BADNUM; } - // track ranges for colorscale + var ui = uArr[i] || 0; + var vi = vArr[i] || 0; + var norm = Math.sqrt(ui * ui + vi * vi); + + if(isFinite(norm)) { + if(norm > normMax) normMax = norm; + if(norm < normMin) normMin = norm; + } + if(hasMarkerColorArray) { var ci = markerColor[i]; if(isNumeric(ci)) { if(ci < cMin) cMin = ci; if(ci > cMax) cMax = ci; } + } + } + + // Store maxNorm for use by plot.js + trace._maxNorm = normMax; + + // Compute arrow endpoints for axis expansion. + // We approximate with scaleRatio=1 (exact for square plots, + // close enough for autorange padding in non-square plots). + var sizemode = trace.sizemode || 'scaled'; + var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); + var anchor = trace.anchor || 'tail'; + + var allX = new Array(len * 2); + var allY = new Array(len * 2); + + for(var k = 0; k < len; k++) { + var xk = xVals[k]; + var yk = yVals[k]; + var uk = uArr[k] || 0; + var vk = vArr[k] || 0; + var nk = Math.sqrt(uk * uk + vk * vk); + + var baseLen; + if(sizemode === 'scaled') { + baseLen = normMax ? (nk / normMax) * sizeref : 0; } else { - var ui = (trace.u && trace.u[i]) || 0; - var vi = (trace.v && trace.v[i]) || 0; - var n = Math.sqrt(ui * ui + vi * vi); - if(isFinite(n)) { - if(n < normMin) normMin = n; - if(n > normMax) normMax = n; - } + baseLen = nk * sizeref; + } + + var unitxk = nk ? (uk / nk) : 0; + var unityk = nk ? (vk / nk) : 0; + var dxk = unitxk * baseLen; + var dyk = unityk * baseLen; + + if(anchor === 'tip') { + allX[k * 2] = xk; + allY[k * 2] = yk; + allX[k * 2 + 1] = xk - dxk; + allY[k * 2 + 1] = yk - dyk; + } else if(anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + allX[k * 2] = xk - dxk / 2; + allY[k * 2] = yk - dyk / 2; + allX[k * 2 + 1] = xk + dxk / 2; + allY[k * 2 + 1] = yk + dyk / 2; + } else { // tail (default) + allX[k * 2] = xk; + allY[k * 2] = yk; + allX[k * 2 + 1] = xk + dxk; + allY[k * 2 + 1] = yk + dyk; } } - // Ensure axes are expanded and categories registered like scatter traces do - scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); + // Expand axes to include both base positions and arrow tips + xa._minDtick = 0; + ya._minDtick = 0; + + trace._extremes[xa._id] = Axes.findExtremes(xa, allX, {padded: true}); + trace._extremes[ya._id] = Axes.findExtremes(ya, allY, {padded: true}); // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 84ab82fb1d6..86a2f723c2a 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -80,16 +80,8 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.exit().remove(); - // Precompute norms for sizing - var uArr = trace.u || []; - var vArr = trace.v || []; - var maxNorm = 0; - for(var ni = 0; ni < trace._length; ni++) { - var uu = uArr[ni] || 0; - var vv = vArr[ni] || 0; - var nrm = Math.sqrt(uu * uu + vv * vv); - if(nrm > maxNorm) maxNorm = nrm; - } + // Use maxNorm precomputed in calc + var maxNorm = trace._maxNorm || 0; var sizemode = trace.sizemode || 'scaled'; var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); var anchor = trace.anchor || 'tail'; diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json index dc0a157e889..c16e5e2d10d 100644 --- a/test/image/mocks/quiver_anchor.json +++ b/test/image/mocks/quiver_anchor.json @@ -14,7 +14,6 @@ "color": "red", "width": 2 }, - "showscale": false, "xaxis": "x", "yaxis": "y" }, @@ -32,7 +31,6 @@ "color": "blue", "width": 2 }, - "showscale": false, "xaxis": "x2", "yaxis": "y2" }, @@ -50,7 +48,6 @@ "color": "green", "width": 2 }, - "showscale": false, "xaxis": "x3", "yaxis": "y3" } @@ -61,32 +58,26 @@ "showlegend": true, "xaxis": { "domain": [0, 0.3], - "range": [-0.5, 2.5], "title": {"text": "tail anchor"} }, "yaxis": { - "domain": [0, 1], - "range": [-0.5, 1.5] + "domain": [0, 1] }, "xaxis2": { "domain": [0.35, 0.65], - "range": [-0.5, 2.5], "title": {"text": "tip anchor"} }, "yaxis2": { "domain": [0, 1], - "anchor": "x2", - "range": [0, 2] + "anchor": "x2" }, "xaxis3": { "domain": [0.7, 1], - "range": [-0.5, 2.5], "title": {"text": "center anchor"} }, "yaxis3": { "domain": [0, 1], - "anchor": "x3", - "range": [1, 3] + "anchor": "x3" } } } diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json index d080d62515c..2a74a96a884 100644 --- a/test/image/mocks/quiver_arrow-styling.json +++ b/test/image/mocks/quiver_arrow-styling.json @@ -14,8 +14,7 @@ "line": { "color": "red", "width": 1 - }, - "showscale": false + } }, { "type": "quiver", @@ -31,8 +30,7 @@ "line": { "color": "blue", "width": 2 - }, - "showscale": false + } }, { "type": "quiver", @@ -48,19 +46,12 @@ "line": { "color": "green", "width": 3 - }, - "showscale": false + } } ], "layout": { "width": 500, "height": 600, - "showlegend": true, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "showlegend": true } } diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index a9471491013..897cb5cca51 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -23,12 +23,6 @@ ], "layout": { "width": 600, - "height": 500, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "height": 500 } } diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json index 75461f435d8..9cf8854a094 100644 --- a/test/image/mocks/quiver_custom-colorscale.json +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -30,12 +30,6 @@ "layout": { "title": {"text": "Quiver with Custom Scalar Field"}, "width": 600, - "height": 500, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "height": 500 } } diff --git a/test/image/mocks/quiver_multi-trace.json b/test/image/mocks/quiver_multi-trace.json new file mode 100644 index 00000000000..f6332936b93 --- /dev/null +++ b/test/image/mocks/quiver_multi-trace.json @@ -0,0 +1,40 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Field A", + "x": [0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1], + "u": [1, 1.5, 2, 1, 1.5, 2], + "v": [0.5, 1, 0.5, 1, 1.5, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "line": { + "color": "red", + "width": 2 + } + }, + { + "type": "quiver", + "name": "Field B", + "x": [3, 4, 5, 3, 4, 5], + "y": [0, 0, 0, 1, 1, 1], + "u": [-1, -1.5, -2, -1, -1.5, -2], + "v": [1, 0.5, 1, 0.5, 1, 0.5], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "line": { + "color": "blue", + "width": 2 + } + } + ], + "layout": { + "title": {"text": "Multiple Quiver Traces"}, + "width": 700, + "height": 500, + "showlegend": true + } +} diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json index 3b9edbf5f78..b1539e017d0 100644 --- a/test/image/mocks/quiver_simple.json +++ b/test/image/mocks/quiver_simple.json @@ -16,12 +16,6 @@ ], "layout": { "width": 500, - "height": 500, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "height": 500 } } diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json index 4a8ade18ebd..7b412afaded 100644 --- a/test/image/mocks/quiver_sizemode.json +++ b/test/image/mocks/quiver_sizemode.json @@ -14,7 +14,6 @@ "color": "red", "width": 2 }, - "showscale": false, "xaxis": "x", "yaxis": "y" }, @@ -32,7 +31,6 @@ "color": "blue", "width": 2 }, - "showscale": false, "xaxis": "x2", "yaxis": "y2" }, @@ -50,7 +48,6 @@ "color": "green", "width": 2 }, - "showscale": false, "xaxis": "x3", "yaxis": "y3" } @@ -61,32 +58,26 @@ "showlegend": true, "xaxis": { "domain": [0, 0.3], - "range": [-0.5, 2.5], "title": {"text": "scaled"} }, "yaxis": { - "domain": [0, 1], - "range": [-0.5, 0.5] + "domain": [0, 1] }, "xaxis2": { "domain": [0.35, 0.65], - "range": [-0.5, 2.5], "title": {"text": "absolute"} }, "yaxis2": { "domain": [0, 1], - "anchor": "x2", - "range": [0.5, 1.5] + "anchor": "x2" }, "xaxis3": { "domain": [0.7, 1], - "range": [-0.5, 2.5], "title": {"text": "raw"} }, "yaxis3": { "domain": [0, 1], - "anchor": "x3", - "range": [1.5, 2.5] + "anchor": "x3" } } } diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json index 9ae94159d0e..cea3a550e17 100644 --- a/test/image/mocks/quiver_wind.json +++ b/test/image/mocks/quiver_wind.json @@ -26,14 +26,16 @@ "sizemode": "scaled", "sizeref": 0.2, "anchor": "center", - "colorscale": "Jet", - "showscale": true, + "marker": { + "colorscale": "Jet", + "showscale": true, + "colorbar": { + "title": {"text": "Speed"}, + "x": 1.02 + } + }, "line": { "width": 1.5 - }, - "colorbar": { - "title": {"text": "Speed"}, - "x": 1.02 } } ], @@ -42,12 +44,10 @@ "width": 700, "height": 600, "xaxis": { - "title": {"text": "X"}, - "range": [-0.2, 3.2] + "title": {"text": "X"} }, "yaxis": { - "title": {"text": "Y"}, - "range": [-0.2, 2.2] + "title": {"text": "Y"} } } } diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json index aeb8760aeb2..b7384edcb40 100644 --- a/test/image/mocks/quiver_zero-vectors.json +++ b/test/image/mocks/quiver_zero-vectors.json @@ -13,19 +13,12 @@ "line": { "color": "purple", "width": 2 - }, - "showscale": false + } } ], "layout": { "title": {"text": "Quiver with Zero-Length Vectors"}, "width": 600, - "height": 400, - "xaxis": { - "range": [-0.5, 4.5] - }, - "yaxis": { - "range": [0, 2] - } + "height": 400 } } From 6a3726026ed7cd2943651c5e3271709082f3ebf1 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:12:28 -0800 Subject: [PATCH 21/34] Add legend line icon for quiver traces by including quiver in getStyleGuide showLine check --- src/components/legend/style.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/legend/style.js b/src/components/legend/style.js index d2b3350c0c8..16ff8e716a4 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -683,7 +683,7 @@ function getGradientDirection(reversescale, isRadial) { function getStyleGuide(d) { var trace = d[0].trace; var contours = trace.contours; - var showLine = subTypes.hasLines(trace); + var showLine = subTypes.hasLines(trace) || (trace.visible && trace.type === 'quiver'); var showMarker = subTypes.hasMarkers(trace); var showFill = trace.visible && trace.fill && trace.fill !== 'none'; From b19cce2d131618180c66966a9f3613085a449e38 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:14:31 -0800 Subject: [PATCH 22/34] Add marker_colorbar config to quiver module so colorbars render correctly --- src/traces/quiver/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index f01dc527851..42d17716358 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -18,6 +18,7 @@ module.exports = { formatLabels: require('./format_labels'), eventData: require('./event_data'), selectPoints: require('../scatter/select'), + colorbar: require('../scatter/marker_colorbar'), animatable: true, meta: { From 69516dbc2536be6500ad9cd5bfc79d81c89e5136 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:35:13 -0800 Subject: [PATCH 23/34] Implement visual text label rendering for quiver using shared Drawing.textPointStyle utility --- src/traces/quiver/calc.js | 12 ++++++++++++ src/traces/quiver/plot.js | 30 +++++++++++++++++++++++++++++ test/image/mocks/quiver_simple.json | 3 +++ 3 files changed, 45 insertions(+) diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 4423b02abe4..c7a13bca831 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -121,6 +121,18 @@ module.exports = function calc(gd, trace) { trace._extremes[xa._id] = Axes.findExtremes(xa, allX, {padded: true}); trace._extremes[ya._id] = Axes.findExtremes(ya, allY, {padded: true}); + // Merge text arrays into calcdata for Drawing.textPointStyle + Lib.mergeArray(trace.text, cd, 'tx'); + Lib.mergeArray(trace.textposition, cd, 'tp'); + if(trace.textfont) { + Lib.mergeArrayCastPositive(trace.textfont.size, cd, 'ts'); + Lib.mergeArray(trace.textfont.color, cd, 'tc'); + Lib.mergeArray(trace.textfont.family, cd, 'tf'); + Lib.mergeArray(trace.textfont.weight, cd, 'tw'); + Lib.mergeArray(trace.textfont.style, cd, 'ty'); + Lib.mergeArray(trace.textfont.variant, cd, 'tv'); + } + // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { var vals = hasMarkerColorArray ? [cMin, cMax] : [normMin, normMax]; diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 86a2f723c2a..3e2c13ac3aa 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -193,6 +193,36 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition }); } + // Render text labels at data points + var textGroup = d3.select(element).selectAll('g.text') + .data([cdscatter]); + + textGroup.enter().append('g').classed('text', true); + + Drawing.setClipUrl(textGroup, plotinfo.layerClipId, gd); + + var textJoin = textGroup.selectAll('g.textpoint') + .data(cdscatter); + + textJoin.enter().append('g').classed('textpoint', true).append('text'); + textJoin.exit().remove(); + + textJoin.each(function(d) { + var g = d3.select(this); + var hasNode = Drawing.translatePoint(d, g.select('text'), xa, ya); + if(!hasNode) g.remove(); + }); + + textJoin.selectAll('text') + .call(Drawing.textPointStyle, trace, gd) + .each(function(d) { + var x = xa.c2p(d.x); + var y = ya.c2p(d.y); + d3.select(this).selectAll('tspan.line').each(function() { + d3.select(this).attr({x: x, y: y}); + }); + }); + // Handle transitions if(transitionOpts && transitionOpts.duration > 0) { var transition = d3.transition() diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json index b1539e017d0..b7c0aa6d581 100644 --- a/test/image/mocks/quiver_simple.json +++ b/test/image/mocks/quiver_simple.json @@ -6,6 +6,9 @@ "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], "v": [0, 1, 0, 0, 1, 0, 0, 1, 0], + "text": ["A", "B", "C", "D", "E", "F", "G", "H", "I"], + "textposition": "top center", + "textfont": { "size": 12 }, "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", From 96bb82cf87840cde2d262e34e3d382f2506f1d61 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:38:27 -0800 Subject: [PATCH 24/34] Implement per-arrow selected/unselected styling with opacity dimming for unselected arrows --- src/traces/quiver/style.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 3e910b6d091..c65dede56a9 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -3,6 +3,8 @@ var d3 = require('@plotly/d3'); var Drawing = require('../../components/drawing'); +var Color = require('../../components/color'); +var DESELECTDIM = require('../../constants/interactions').DESELECTDIM; function style(gd) { var s = d3.select(gd).selectAll('g.trace.quiver'); @@ -22,9 +24,36 @@ function styleOnSelect(gd, cd, sel) { if(!sel) return; - // Style the line paths based on selection state - sel.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + if(trace.selectedpoints) { + var selectedAttrs = trace.selected || {}; + var unselectedAttrs = trace.unselected || {}; + var selectedLine = selectedAttrs.line || {}; + var unselectedLine = unselectedAttrs.line || {}; + + sel.selectAll('path.js-line').each(function(d) { + var path = d3.select(this); + + if(d.selected) { + var sc = selectedLine.color || line.color; + var sw = selectedLine.width !== undefined ? selectedLine.width : line.width; + Drawing.lineGroupStyle(path, sw, sc, line.dash); + } else { + var uc = unselectedLine.color; + var uw = unselectedLine.width; + if(!uc) { + uc = line.color ? Color.addOpacity(line.color, DESELECTDIM) : undefined; + } + if(uw === undefined) uw = line.width; + Drawing.lineGroupStyle(path, uw, uc, line.dash); + } + }); + + Drawing.selectedTextStyle(sel.selectAll('text'), trace); + } else { + sel.selectAll('path.js-line') + .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + Drawing.textPointStyle(sel.selectAll('text'), trace, gd); + } } module.exports = { From 9a17d8a59faa339415982fda56885b418435797a Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:40:31 -0800 Subject: [PATCH 25/34] Run npm run schema --- test/plot-schema.json | 1886 +++++++++++++++++++++-------------------- 1 file changed, 945 insertions(+), 941 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 42abfba0e77..cee2ffc218b 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57623,266 +57623,120 @@ "min": 0.1, "valType": "number" }, - "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" - }, - "c": { - "anim": true, - "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", + "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" }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) 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 u/v norm and if set, `cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" }, - "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 u/v norm. Has no effect when `cauto` is `false`.", - "dflt": null, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, "editType": "calc", - "impliedEdits": {}, + "min": -1, "valType": "number" }, - "cmin": { - "description": "Sets the lower bound of the color domain. Value should have the same units as u/v norm and if set, `cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" + "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": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "text", + "name" + ], + "valType": "flaglist" }, - "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" + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", + "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": [ - "fraction", - "pixels" + "left", + "right", + "auto" ] }, - "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": "colorbars", - "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": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", "valType": "color" }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" }, - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { + "editType": "none", + "font": { "color": { - "editType": "colorbars", + "arrayOk": true, + "editType": "none", "valType": "color" }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", + "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", + "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": "colorbars", + "editType": "none", "extras": [ "none" ], @@ -57893,32 +57747,56 @@ ], "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": "colorbars", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", "valType": "string" }, "size": { - "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "editType": "none", "valType": "enumerated", "values": [ "normal", @@ -57927,10 +57805,16 @@ "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": "colorbars", + "editType": "none", "valType": "enumerated", "values": [ "normal", @@ -57941,10 +57825,16 @@ "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": "colorbars", + "editType": "none", "extras": [ "normal", "bold" @@ -57952,464 +57842,89 @@ "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": "colorbars", - "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": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } }, - "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": "colorbars", - "min": 1, + "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" }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "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": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "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": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", "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": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "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": "colorbars", - "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*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "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": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "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": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] + "valType": "boolean" } }, - "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" + "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", + "valType": "string" }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", "editType": "none", "valType": "string" }, - "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", + "ids": { + "anim": true, + "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" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", "editType": "none", "valType": "string" }, - "hoverdistance": { - "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", - "dflt": 20, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "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": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "x", - "y", - "u", - "v", - "text", - "name" - ], - "valType": "flaglist" + "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" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", + "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" }, - "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", + "legendgrouptitle": { + "editType": "style", "font": { "color": { - "arrayOk": true, - "editType": "none", + "editType": "style", "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", + "description": "Sets this legend group's title font.", + "editType": "style", "family": { - "arrayOk": true, "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", + "editType": "style", "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", + "editType": "style", "extras": [ "none" ], @@ -58420,332 +57935,833 @@ ], "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", + "editType": "style", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "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" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.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 `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "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": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "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": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "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. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "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": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] }, - "size": { - "arrayOk": true, - "editType": "none", + "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": "colorbars", "min": 1, - "valType": "number" + "valType": "integer" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", + "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": "colorbars", + "impliedEdits": {}, "valType": "enumerated", "values": [ - "normal", - "italic" + "auto", + "linear", + "array" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", "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", + "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": "colorbars", "valType": "enumerated", "values": [ - "normal", - "word caps", - "upper", - "lower" + "outside", + "inside", + "" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", "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" - ] + "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": "colorbars", + "valType": "data_array" }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", "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" + "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": "colorbars", + "valType": "data_array" }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", "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", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "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. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. 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, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. 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": "none", - "valType": "string" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "anim": true, - "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 can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "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": "colorbars", + "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": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "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": "colorbars", + "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*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "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" + "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": "colorbars", + "valType": "number" }, - "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" + "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": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] }, - "size": { - "editType": "style", - "min": 1, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, "valType": "number" }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", + "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": "colorbars", "valType": "enumerated", "values": [ - "normal", - "italic" + "container", + "paper" ] }, - "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", + "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": "colorbars", + "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": "colorbars", "valType": "enumerated", "values": [ - "normal", - "word caps", - "upper", - "lower" + "top", + "middle", + "bottom" ] }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "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": "colorbars", "valType": "enumerated", "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" + "container", + "paper" ] - }, - "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" - }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. 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 `marker.cmin` and `marker.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" }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" - ] + "valType": "boolean" }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", "dflt": true, - "editType": "plot", + "editType": "calc", "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" } }, "meta": { @@ -58772,12 +58788,6 @@ "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": "plot", - "valType": "boolean" - }, "selected": { "editType": "style", "line": { @@ -58817,12 +58827,6 @@ "editType": "style", "valType": "boolean" }, - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, "sizemode": { "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", "dflt": "scaled", From 37f9d6f03e8bd53e1c40f4fe39304f569233ac90 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:58:00 -0800 Subject: [PATCH 26/34] Fix colorbar crash by ensuring traceOut.marker exists before colorscaleDefaults captures its reference --- src/traces/quiver/defaults.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index b0a659ca2b2..1694160d17f 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -68,6 +68,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) + // Ensure traceOut.marker exists before colorscaleDefaults, which captures + // a reference to it via npMaybe at the start of its execution. + if(!traceOut.marker) traceOut.marker = {}; coerce('marker.color'); var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; traceOut._hasColorscale = !!withColorscale; From 0c13cafd993e44d9885f5df0a8ab7980df025621 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 09:59:44 -0700 Subject: [PATCH 27/34] Regenerate image baselines --- test/image/baselines/quiver_anchor.png | Bin 25935 -> 37535 bytes test/image/baselines/quiver_arrow-styling.png | Bin 21942 -> 21258 bytes test/image/baselines/quiver_categorical.png | Bin 14650 -> 17320 bytes test/image/baselines/quiver_colorscale.png | Bin 17103 -> 23974 bytes .../baselines/quiver_custom-colorscale.png | Bin 21113 -> 27483 bytes test/image/baselines/quiver_multi-trace.png | Bin 0 -> 30245 bytes test/image/baselines/quiver_simple.png | Bin 14093 -> 16862 bytes test/image/baselines/quiver_sizemode.png | Bin 28936 -> 40498 bytes test/image/baselines/quiver_wind.png | Bin 31990 -> 39094 bytes test/image/baselines/quiver_zero-vectors.png | Bin 14785 -> 18879 bytes test/image/mocks/quiver_categorical.json | 3 +-- 11 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 test/image/baselines/quiver_multi-trace.png diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png index 688e05bc59d4e4e2a947db59296c86df37ae7bd4..3bec0ad57aa62d3298b1d32fe192086df255a077 100644 GIT binary patch literal 37535 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 UtX4XD1n@t#OWI0h*z14&KZJDrY5)KL literal 25935 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 R0xwEo@O1TaS?83{1OSJv?4|$! diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png index 26c92dfce802be0e96450cd95f0f002f6bd54341..f25f952899e553e79ea6e06a9dc4adb41e2ae2cc 100644 GIT binary patch literal 21258 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

F&`;P^_mb8jb38vzs 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 Zm8i?i<3oO|;7%lk<_*2;rE2${{12gCmKOj3 diff --git a/test/image/baselines/quiver_colorscale.png b/test/image/baselines/quiver_colorscale.png index 38108b8f8f9d9df8d1d372aa63bc82f594742343..150f6f7d8833c564cca4abd121d96eac1e207a46 100644 GIT binary patch literal 23974 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

krl(07ofo31K|+D!Sxt! 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 L-v0Ex*bDy$7IGOo literal 17103 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 diff --git a/test/image/baselines/quiver_custom-colorscale.png b/test/image/baselines/quiver_custom-colorscale.png index 3d8e2191605e7ab7ae30ea700e511cfe25a09bbf..4250a406e67ad204a73034aaac209c3f717e15a3 100644 GIT binary patch literal 27483 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 diff --git a/test/image/baselines/quiver_multi-trace.png b/test/image/baselines/quiver_multi-trace.png new file mode 100644 index 0000000000000000000000000000000000000000..a94291799eb054d9a9dc1cf37217d9066243545a GIT binary patch literal 30245 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 YJ5jf2z&#O^f8Anq*7Qu~pH~9^0}I4#kN^Mx literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png index af35ecc0b8f0fc8ebc9a852249e54b91f0308040..e36b0d54388d8a14102ab410b060762d42fbe3a5 100644 GIT binary patch literal 16862 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 literal 14093 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 literal 28936 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 C?&OmI diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png index ab33273e57389216324429496246a574e1072e9b..0365bd636c611d59bbb554fa7091704fa4cffc46 100644 GIT binary patch literal 39094 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 feCwaSW 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 AF#rGn literal 31990 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 Date: Mon, 9 Mar 2026 10:21:11 -0700 Subject: [PATCH 28/34] Update unrelated baselines --- test/image/baselines/map_custom-style.png | Bin 158205 -> 163799 bytes test/image/baselines/sunburst_coffee.png | Bin 150957 -> 150956 bytes .../treemap_sunburst_marker_colors.png | Bin 276821 -> 276832 bytes test/image/baselines/treemap_textfit.png | Bin 314043 -> 314041 bytes .../uniformtext_sunburst_treemap.png | Bin 78498 -> 78462 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/map_custom-style.png b/test/image/baselines/map_custom-style.png index 7a79826bc2616e05acfad827d8e317c034aa32cd..6db20064a000b6e50da547b462aa613be907d856 100644 GIT binary patch literal 163799 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

a}qvg>Bp5Z@xj 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

t#*^{7y70SvjL*@6oRHy=rM)4 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 z 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�SZXdP58kga=Lr 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 ?611$qI^uzF;%6H zx7^QUm52$AIN$P1LAkgWnTN$~x#S(4R*0!*(-?2P#P6J50$#-x;K<7yG_qE~051)h zw}(*{3E1~J#O{FH5_(pCA(o$cEfzU0ZY3HjN-QC}m}xVkj6d#&BP}N%Klb-wpsv7j zqJK2&2iL)})2|qRn#%6!Ir+@rnm}%U2XUUk(nfPq zM1K;{cNY0k)oQ|toKT-vRTBuj0K7N?bomLmycl@R-)>XpuLD&cT)P34yyzv3OXe*< z1=%y&S_6YrkW$~Ow+_fGRKjAnVA=fKtDAgIIB;~7_|`++5dihVPZeVhBt3+rpMO(N zomvx#LBPGOrB_p1asFk_ETx2ZPA@ZC?q@NSyQi57>!*{V9GSc%W)

hXObnDlsqf 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

fNl=E(76M6`q?O(Jx~Yo#f@sZqbY= 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 diff --git a/test/image/baselines/treemap_sunburst_marker_colors.png b/test/image/baselines/treemap_sunburst_marker_colors.png index 209427c1b2a359b6d0c5b2904a97782d525ea0a8..2ad27d25deb8374a7a29a16ec4f3ec5edf2ab25c 100644 GIT binary patch delta 40568 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

m?o}b?Md+2io}lWur{90Og}M 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 OKY3|osZvRk!2be6Nzh~f diff --git a/test/image/baselines/treemap_textfit.png b/test/image/baselines/treemap_textfit.png index c5822e6227158f5fb75c3c6ed566b5d77a22aae0..b9b0a41090dee12fafa4cf9a898b293d7bc46053 100644 GIT binary patch delta 245612 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 Z(>IT2D$~;p5o9*-L0H;b+%-E9^D91vq_+S7 delta 245526 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

6NJcC?P;2OXAAi#sKyXn@@i~-I!m89fz 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 literal 78498 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 Date: Mon, 9 Mar 2026 12:03:01 -0700 Subject: [PATCH 29/34] Nest line options under marker.line --- src/traces/quiver/attributes.js | 64 +++---------- src/traces/quiver/defaults.js | 28 +++--- src/traces/quiver/plot.js | 6 +- src/traces/quiver/style.js | 25 +++--- test/image/mocks/quiver_anchor.json | 12 +-- test/image/mocks/quiver_arrow-styling.json | 12 +-- test/image/mocks/quiver_categorical.json | 4 +- test/image/mocks/quiver_colorscale.json | 6 +- .../image/mocks/quiver_custom-colorscale.json | 8 +- test/image/mocks/quiver_multi-trace.json | 8 +- test/image/mocks/quiver_simple.json | 4 +- test/image/mocks/quiver_sizemode.json | 12 +-- test/image/mocks/quiver_wind.json | 6 +- test/image/mocks/quiver_zero-vectors.json | 4 +- test/jasmine/tests/quiver_test.js | 4 +- test/plot-schema.json | 90 ++++++------------- 16 files changed, 107 insertions(+), 186 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 742f31d41ee..16a6a7b68f0 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -4,10 +4,9 @@ var baseAttrs = require('../../plots/attributes'); var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; var fontAttrs = require('../../plots/font_attributes'); var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; -var dash = require('../../components/drawing/attributes').dash; - var extendFlat = require('../../lib/extend').extendFlat; var colorScaleAttrs = require('../../components/colorscale/attributes'); +var dash = require('../../components/drawing/attributes').dash; var attrs = { x: { @@ -100,54 +99,6 @@ var attrs = { description: 'Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.' }, - // Line styling for arrows - line: { - color: { - valType: 'color', - dflt: '#000', - editType: 'style', - description: 'Sets the color of the arrow lines.' - }, - width: { - valType: 'number', - min: 0, - dflt: 1, - editType: 'style', - description: 'Sets the width (in px) of the arrow lines.' - }, - dash: dash, - shape: { - valType: 'enumerated', - values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'], - dflt: 'linear', - editType: 'plot', - description: 'Determines the line shape.' - }, - smoothing: { - valType: 'number', - min: 0, - max: 1.3, - dflt: 1, - editType: 'plot', - description: 'Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.' - }, - simplify: { - valType: 'boolean', - dflt: true, - editType: 'plot', - description: 'Simplifies lines by removing nearly-overlapping points.' - }, - editType: 'style' - }, - - // Alias consistent with annotations; maps to line.width - arrowwidth: { - valType: 'number', - min: 0.1, - editType: 'style', - description: 'Sets the width (in px) of the arrow line (alias of `line.width`).' - }, - // Text and labels text: { valType: 'data_array', @@ -174,9 +125,20 @@ var attrs = { description: 'Sets the text font.' }), - // Marker (for colorscale-based coloring of arrows) + // Marker: color, colorscale, and line styling for arrows marker: extendFlat( { + line: { + width: { + valType: 'number', + min: 0, + dflt: 1, + editType: 'style', + description: 'Sets the width (in px) of the arrow lines.' + }, + dash: dash, + editType: 'style' + }, editType: 'calc' }, colorScaleAttrs('marker', { diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 1694160d17f..7a437f91754 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -38,22 +38,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Arrow styling coerce('arrowsize'); coerce('arrow_scale'); // back-compat alias - coerce('arrowwidth'); coerce('hoverdistance'); - // Line styling - use coerce for proper validation - coerce('line.color', defaultColor); - // If arrowwidth is set, use it as line.width default - var arrowwidth = traceOut.arrowwidth; - if(arrowwidth !== undefined) { - coerce('line.width', arrowwidth); - } else { - coerce('line.width'); - } - coerce('line.dash'); - coerce('line.shape'); - coerce('line.smoothing'); - coerce('line.simplify'); + // Line styling under marker.line + coerce('marker.line.width'); + coerce('marker.line.dash'); // Text coerce('text'); @@ -71,13 +60,22 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Ensure traceOut.marker exists before colorscaleDefaults, which captures // a reference to it via npMaybe at the start of its execution. if(!traceOut.marker) traceOut.marker = {}; - coerce('marker.color'); + coerce('marker.color', defaultColor); var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; traceOut._hasColorscale = !!withColorscale; if(withColorscale) { colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: 'marker.', cLetter: 'c' }); } + // Provide trace.line for compat with shared code (legend, getTraceColor) + var markerLine = traceOut.marker.line || {}; + var mc = traceOut.marker.color; + traceOut.line = { + width: markerLine.width, + color: Lib.isArrayOrTypedArray(mc) ? defaultColor : mc, + dash: markerLine.dash + }; + // Selection styling coerce('selected.line.color'); coerce('selected.line.width'); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 3e2c13ac3aa..a204a055880 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -173,11 +173,13 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition }); // Apply styling using Plotly's standard styling system - Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; + Drawing.lineGroupStyle(lineSegments, markerLine.width, lineColor, markerLine.dash); // If colorscale present, color arrows by marker.color or magnitude |(u,v)| if(trace._hasColorscale) { - var marker = trace.marker || {}; var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); lineSegments.style('stroke', function(cdi) { var markerColor = marker.color; diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index c65dede56a9..4bcc410bd81 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -1,6 +1,7 @@ 'use strict'; var d3 = require('@plotly/d3'); +var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); var Color = require('../../components/color'); @@ -11,16 +12,20 @@ function style(gd) { s.each(function(d) { var trace = d[0].trace; - var line = trace.line || {}; + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; d3.select(this).selectAll('path.js-line') - .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + .call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); }); } function styleOnSelect(gd, cd, sel) { var trace = cd[0].trace; - var line = trace.line || {}; + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; if(!sel) return; @@ -34,24 +39,24 @@ function styleOnSelect(gd, cd, sel) { var path = d3.select(this); if(d.selected) { - var sc = selectedLine.color || line.color; - var sw = selectedLine.width !== undefined ? selectedLine.width : line.width; - Drawing.lineGroupStyle(path, sw, sc, line.dash); + var sc = selectedLine.color || lineColor; + var sw = selectedLine.width !== undefined ? selectedLine.width : markerLine.width; + Drawing.lineGroupStyle(path, sw, sc, markerLine.dash); } else { var uc = unselectedLine.color; var uw = unselectedLine.width; if(!uc) { - uc = line.color ? Color.addOpacity(line.color, DESELECTDIM) : undefined; + uc = lineColor ? Color.addOpacity(lineColor, DESELECTDIM) : undefined; } - if(uw === undefined) uw = line.width; - Drawing.lineGroupStyle(path, uw, uc, line.dash); + if(uw === undefined) uw = markerLine.width; + Drawing.lineGroupStyle(path, uw, uc, markerLine.dash); } }); Drawing.selectedTextStyle(sel.selectAll('text'), trace); } else { sel.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + .call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); Drawing.textPointStyle(sel.selectAll('text'), trace, gd); } } diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json index c16e5e2d10d..5c9942cebb1 100644 --- a/test/image/mocks/quiver_anchor.json +++ b/test/image/mocks/quiver_anchor.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 2 + "line": {"width": 2} }, "xaxis": "x", "yaxis": "y" @@ -27,9 +27,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tip", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} }, "xaxis": "x2", "yaxis": "y2" @@ -44,9 +44,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "center", - "line": { + "marker": { "color": "green", - "width": 2 + "line": {"width": 2} }, "xaxis": "x3", "yaxis": "y3" diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json index 2a74a96a884..1d7e008fdd7 100644 --- a/test/image/mocks/quiver_arrow-styling.json +++ b/test/image/mocks/quiver_arrow-styling.json @@ -11,9 +11,9 @@ "sizeref": 0.5, "arrowsize": 0.5, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 1 + "line": {"width": 1} } }, { @@ -27,9 +27,9 @@ "sizeref": 0.5, "arrowsize": 1.0, "anchor": "tail", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} } }, { @@ -43,9 +43,9 @@ "sizeref": 0.5, "arrowsize": 2.0, "anchor": "tail", - "line": { + "marker": { "color": "green", - "width": 3 + "line": {"width": 3} } } ], diff --git a/test/image/mocks/quiver_categorical.json b/test/image/mocks/quiver_categorical.json index b2edadee492..5dcd3de9f23 100644 --- a/test/image/mocks/quiver_categorical.json +++ b/test/image/mocks/quiver_categorical.json @@ -9,8 +9,8 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { - "width": 2 + "marker": { + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index 897cb5cca51..9519c5e4196 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -14,10 +14,8 @@ "showscale": true, "colorbar": { "title": {"text": "Magnitude"} - } - }, - "line": { - "width": 2 + }, + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json index 9cf8854a094..f1cf7dc2bc1 100644 --- a/test/image/mocks/quiver_custom-colorscale.json +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -17,14 +17,12 @@ "colorbar": { "title": {"text": "Custom Field"}, "x": 1.02 - } + }, + "line": {"width": 2} }, "sizemode": "scaled", "sizeref": 0.25, - "anchor": "tail", - "line": { - "width": 2 - } + "anchor": "tail" } ], "layout": { diff --git a/test/image/mocks/quiver_multi-trace.json b/test/image/mocks/quiver_multi-trace.json index f6332936b93..0b90fb70663 100644 --- a/test/image/mocks/quiver_multi-trace.json +++ b/test/image/mocks/quiver_multi-trace.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.4, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 2 + "line": {"width": 2} } }, { @@ -25,9 +25,9 @@ "sizemode": "scaled", "sizeref": 0.4, "anchor": "tail", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json index b7c0aa6d581..c3e72e8c85f 100644 --- a/test/image/mocks/quiver_simple.json +++ b/test/image/mocks/quiver_simple.json @@ -12,8 +12,8 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { - "width": 2 + "marker": { + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json index 7b412afaded..654dbc8ed5c 100644 --- a/test/image/mocks/quiver_sizemode.json +++ b/test/image/mocks/quiver_sizemode.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.3, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 2 + "line": {"width": 2} }, "xaxis": "x", "yaxis": "y" @@ -27,9 +27,9 @@ "sizemode": "absolute", "sizeref": 0.3, "anchor": "tail", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} }, "xaxis": "x2", "yaxis": "y2" @@ -44,9 +44,9 @@ "sizemode": "raw", "sizeref": 1, "anchor": "tail", - "line": { + "marker": { "color": "green", - "width": 2 + "line": {"width": 2} }, "xaxis": "x3", "yaxis": "y3" diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json index cea3a550e17..8d5ea5d8a08 100644 --- a/test/image/mocks/quiver_wind.json +++ b/test/image/mocks/quiver_wind.json @@ -32,10 +32,8 @@ "colorbar": { "title": {"text": "Speed"}, "x": 1.02 - } - }, - "line": { - "width": 1.5 + }, + "line": {"width": 1.5} } } ], diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json index b7384edcb40..9c2af92d228 100644 --- a/test/image/mocks/quiver_zero-vectors.json +++ b/test/image/mocks/quiver_zero-vectors.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { + "marker": { "color": "purple", - "width": 2 + "line": {"width": 2} } } ], diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js index 6c829a7278e..7c45a451d77 100644 --- a/test/jasmine/tests/quiver_test.js +++ b/test/jasmine/tests/quiver_test.js @@ -250,7 +250,7 @@ describe('Test quiver interactions', function() { y: [1, 2], u: [1, 0], v: [0, 1], - line: {color: 'red'} + marker: {color: 'red'} }, { type: 'quiver', name: 'trace B', @@ -258,7 +258,7 @@ describe('Test quiver interactions', function() { y: [3, 4], u: [-1, 0], v: [0, -1], - line: {color: 'blue'} + marker: {color: 'blue'} }], { margin: {l: 0, t: 0, r: 0, b: 0}, width: 400, diff --git a/test/plot-schema.json b/test/plot-schema.json index cee2ffc218b..90070ba6eba 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57617,12 +57617,6 @@ "min": 0.3, "valType": "number" }, - "arrowwidth": { - "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", - "editType": "style", - "min": 0.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", @@ -58016,65 +58010,6 @@ "min": 0, "valType": "number" }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" - ] - }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" - } - }, "marker": { "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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.", @@ -58750,6 +58685,31 @@ "valType": "string" }, "editType": "calc", + "line": { + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, From c7f073d9aacb72b129b89e8fdd15fb484debf17f Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:05:32 -0700 Subject: [PATCH 30/34] Move arrowheadsize under marker --- src/traces/quiver/attributes.js | 30 +++++++--------------- src/traces/quiver/defaults.js | 3 +-- src/traces/quiver/plot.js | 7 ++--- test/image/mocks/quiver_arrow-styling.json | 6 ++--- 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 16a6a7b68f0..0c7dd04745f 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -7,6 +7,7 @@ var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').ax var extendFlat = require('../../lib/extend').extendFlat; var colorScaleAttrs = require('../../components/colorscale/attributes'); var dash = require('../../components/drawing/attributes').dash; +var annotationAttrs = require('../../components/annotations/attributes'); var attrs = { x: { @@ -79,26 +80,6 @@ var attrs = { uhoverformat: axisHoverFormat('u', 'noDate'), vhoverformat: axisHoverFormat('v', 'noDate'), - // Arrowhead sizing, consistent with annotations API naming - arrowsize: { - valType: 'number', - min: 0.3, - dflt: 1, - editType: 'calc', - description: [ - 'Scales the size of the arrow head relative to a base size.', - 'Higher values produce larger heads.' - ].join(' ') - }, - // Back-compat alias - arrow_scale: { - valType: 'number', - min: 0, - max: 1, - editType: 'calc', - description: 'Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.' - }, - // Text and labels text: { valType: 'data_array', @@ -125,9 +106,16 @@ var attrs = { description: 'Sets the text font.' }), - // Marker: color, colorscale, and line styling for arrows + // Marker: color, colorscale, arrowhead sizing, and line styling for arrows marker: extendFlat( { + arrowsize: extendFlat({}, annotationAttrs.arrowsize, { + editType: 'calc', + description: [ + 'Sets the size of the arrow head relative to `marker.line.width`.', + 'A value of 1 (default) gives a head about 3x as wide as the line.' + ].join(' ') + }), line: { width: { valType: 'number', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 7a437f91754..43016332025 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -36,8 +36,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('anchor'); // Arrow styling - coerce('arrowsize'); - coerce('arrow_scale'); // back-compat alias + coerce('marker.arrowsize'); coerce('hoverdistance'); // Line styling under marker.line diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index a204a055880..8cfdc4795ac 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -102,9 +102,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); var scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; var baseHeadScale = 0.2; - var arrowScale = (trace.arrowsize !== undefined) - ? (baseHeadScale * trace.arrowsize) - : (trace.arrow_scale !== undefined ? trace.arrow_scale : baseHeadScale); + var markerArrowsize = (trace.marker || {}).arrowsize; + var arrowScale = (markerArrowsize !== undefined) + ? (baseHeadScale * markerArrowsize) + : baseHeadScale; // Fixed arrowhead wedge angle (radians). // Arrow direction is fully determined by u,v (see barbAng below); // this constant only controls the opening of the head. diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json index 1d7e008fdd7..db51a45a8f3 100644 --- a/test/image/mocks/quiver_arrow-styling.json +++ b/test/image/mocks/quiver_arrow-styling.json @@ -9,10 +9,10 @@ "v": [1, 1, 1], "sizemode": "scaled", "sizeref": 0.5, - "arrowsize": 0.5, "anchor": "tail", "marker": { "color": "red", + "arrowsize": 0.5, "line": {"width": 1} } }, @@ -25,10 +25,10 @@ "v": [1, 1, 1], "sizemode": "scaled", "sizeref": 0.5, - "arrowsize": 1.0, "anchor": "tail", "marker": { "color": "blue", + "arrowsize": 1.0, "line": {"width": 2} } }, @@ -41,10 +41,10 @@ "v": [1, 1, 1], "sizemode": "scaled", "sizeref": 0.5, - "arrowsize": 2.0, "anchor": "tail", "marker": { "color": "green", + "arrowsize": 2.0, "line": {"width": 3} } } From f327f5d1ae73db4ffeaaf2df9dba6496f59ade93 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:14:00 -0700 Subject: [PATCH 31/34] Run npm run schema --- test/plot-schema.json | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 90070ba6eba..c04ab6ae556 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57603,20 +57603,6 @@ "middle" ] }, - "arrow_scale": { - "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "arrowsize": { - "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", - "dflt": 1, - "editType": "calc", - "min": 0.3, - "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", @@ -58011,6 +57997,13 @@ "valType": "number" }, "marker": { + "arrowsize": { + "description": "Sets the size of the arrow head relative to `marker.line.width`. A value of 1 (default) gives a head about 3x as wide as the line.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. 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, From b1e3852e7cf3ccb1834816f6d845961d314bb2a7 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:23:24 -0700 Subject: [PATCH 32/34] Regenerate quiver custom colorscale --- .../baselines/quiver_custom-colorscale.png | Bin 27483 -> 27324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/quiver_custom-colorscale.png b/test/image/baselines/quiver_custom-colorscale.png index 4250a406e67ad204a73034aaac209c3f717e15a3..79108fa949d485a60c00200375d765a709398941 100644 GIT binary patch literal 27324 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 E0GXC1y8r+H literal 27483 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 Date: Mon, 9 Mar 2026 12:44:22 -0700 Subject: [PATCH 33/34] Import scatter attributes for x, y coercion --- src/traces/quiver/attributes.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 0c7dd04745f..d53ac5e0239 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -8,6 +8,7 @@ var extendFlat = require('../../lib/extend').extendFlat; var colorScaleAttrs = require('../../components/colorscale/attributes'); var dash = require('../../components/drawing/attributes').dash; var annotationAttrs = require('../../components/annotations/attributes'); +var scatterAttrs = require('../scatter/attributes'); var attrs = { x: { @@ -16,12 +17,16 @@ var attrs = { anim: true, description: 'Sets the x coordinates of the arrow locations.' }, + x0: scatterAttrs.x0, + dx: scatterAttrs.dx, y: { valType: 'data_array', editType: 'calc+clearAxisTypes', anim: true, description: 'Sets the y coordinates of the arrow locations.' }, + y0: scatterAttrs.y0, + dy: scatterAttrs.dy, u: { valType: 'data_array', editType: 'calc', From 4d57892fd6be46ad63ffdbfa0966c794bac5ab53 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:46:06 -0700 Subject: [PATCH 34/34] Run npm run schema --- test/plot-schema.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/plot-schema.json b/test/plot-schema.json index c04ab6ae556..bb990ae9dce 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57613,6 +57613,20 @@ "editType": "none", "valType": "string" }, + "dx": { + "anim": true, + "description": "Sets the x coordinate step. See `x0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dy": { + "anim": true, + "description": "Sets the y coordinate step. See `y0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, "hoverdistance": { "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", "dflt": 20, @@ -59078,6 +59092,13 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, + "x0": { + "anim": true, + "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, "xaxis": { "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", "dflt": "x", @@ -59101,6 +59122,13 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, + "y0": { + "anim": true, + "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, "yaxis": { "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", "dflt": "y",

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%0D+M-s{6850BBoYze`FR_ zug^XE9N{&8^%;!2czHRpJtly`S8KQ9KXb-Y2T^Z{{93H=7<*Z=jzlH zd(mL&Az%J!64+?tT z%5MhdFiQ6RX*@K6i&7RCCB!b8pibB>^P}m%cbP3D*qMOp-!W`4!JR3{-)y1j{})wP zw0+XS0K~bk4x?J)pDTtM*DAww(Ium*^CeTaqAq{jq16QPAGIrMBwfFxG?1e3kPzmvUG z%1Zu1EALZ%_}wahj;Kkqy_U)O-;{4U_ORaT|89mvuKFUvgT=GcOso~g|JA;=|1-V+ z@y_BAIp-lN9m*j^4~|PGp>jl2-%xb1v0PTsmdnu1H4~j8j&st5SSa0?xow!W%{8Ua zgv=$|luNE#WOCcS@3EccNdLge51${l&t9L`<@vfj-ydo%?;`_S@yUxm;Z|9U?HO-g z<&bMYBQU}_cep^Vz5j7R8xUQ*5TOnbTm7xSrm%68zB233F@`Zkp3|**U{Q5+BKBm} z>fr3(_}bI&X485PO_g=W4nl2F2RsXbbpM3`%aH2H-JF%gCU4%h#Y;6Uti|_*~a;p`Ks;@CfWYxV33ve03sTst_;t zb~g|IC2TUJfM8uFXfodr4=2NWrOAa;FW)a49Q}KcB%E4b^~mlD*)*XEa%RcbLg4?} z6?58msDw0@5ymc21vQ1#d;tCiMC{Alv4DTofw zTyIRKUgn*)mNYLlg>CJ!x~|@^!)IbD=saG_KqPnc34K&%^l_z-2b{AyhNHGWPYyuL}+kt zQ=D*>=mEX(%gkFl%)!+9vZe~D2j4aX(9ju(8;;6haH-wu;Sf1kGSr^y@GCOvdeq8~gCHYmaEvf2P5e26UIv-myMSca3kuoK?A z2j+GwiB?k9x}WWs%4f$G45g;;J<%BM_VFrF`99NCO6%5=W>-9QrMcf^6w0TdcyD5l2S46N6B$;2pN4cZw8?$6GG(T4x0Qd))**+Zk;}afx^0QGM&doJ!HXc?Dsz-)p%B~8v6O>nOzJ|CXs3H> zUR4u6tpI*;fjnhvDsi6D5x#Hz5FyidQO*OW@X3lE0E)LIpt#Lh_QJpi`=OkrK3my_J6K$an&KHO$z0V4Uot^(``CmA-Mw$aQyRRzK7)BZFQ4LH1uJL&u zSCsD6U$G%&&Nb^HHH@UytJ84Y(xLt$5}(yOSd?Xob`7n(NxcdJjg+VuuV9e-#>m{D z$ppiZNkPH8fM1Q@8GYCQ(b%jkwS#W*Yu2{0F1@HwbfsgOzZx@3$;kehJ)eRC?ma#) zR$Bf8a)|t8A*nHz{+=D%c~L`tF(Fr$gLP>73`CA@ly!$q_Ad^shIP=pVV%4somZ4`S42oTTX6C=zZFWJ|9YF zdSgT03_}geFwqPetr+8!NT_pB=Jw23r&?R0{EWK6D!Vextn%EzE95!$2l##+#tsv*{=}s2u4hhCY$pn{e1IrFRE$q?QKtElHoWC?0GQL7L)#Xm6x_! zPj#^m+Q5VrF|VTW-68JAJp!i(*WCNHG&W~TdG*)zA$%WJZnka7YmjmUaCGan#VF0so4)X9M(pJAVyPILGMzA-_16fCa8!dK! zH6&tnVpsD>$&f2=m}AcAyKHbOEA5jbV0f(NMNG&rSSZOH>#S+ z>V3}!#4b?h@+Ior9LWGzzbJ1|LhVD%A13T;Y<`n9*a(_E^h*&C(MY;0)NPi&R%xJ@ zRcGi;4^{>=YRV0s?|qfDxJE0Y5`#d^tKoz^bt4kqFfWw9wGNjCu6!yP-C6FyBVtKX zb9J%t$Fr?qTfIEHtqMnv#kD!*Ylt;7Cp}_d-fLsw&Yqm`zVyYVTU6>2o2$r1VN-#r z#Fdpj@hUN~F689=x+X$FcsKxBWg-WW565_?a0gplTZ{` zTg4UfALnG?jhur31;zvF1A1q5=K!FLFgmX4Pt}9wO1Xkz*Fvw3Az@8Zhw2)@SU_6YH>_ zfK#apoqD;9P>8J3eC#zvG&AE(3W!w(+1Y8VZHt+KU*SZ3hNq4=ph>C&CMP~(KD?~r zjl2RY%AL+cpw-faTES#=ojhS?U`6>{79EcsG8-@*Y&&~&QP-}94B6K8C!g`AaEbEm zYw2m;eol?Xiz{@SSdag>)oQpc^q0b#HOB26ys6$#?aCN!VDa6rS&R=LCJm7b!``rd z_Z-D~4blwY->|prN$jn_cfAJ$+&|-#5?i8j`|mU{K!#O<9r|DXhsm%@W7R;n3l#)o z(dIk5?!Ca(fZAeOX`l%*#$f>{@GI0Um&U7TVRrIwbnpx)AuilkIPJ6o$9RyzUz5M$ zQlb;cm+<`4rC}2vFQvK_-_Q4IaN7e?ID26V119W5(K)m)y0ox6I_%SPiVHW#Co^R+ z@d+}z2o%iW0`8fhD65?rz&ShIke5R{zNmbS`rrt7E8sjH%a6AS>%BAw8k@Xn2nuqh zeqqjNf`(_9h2IW+Z$+~znjDVfmDDJ;WhK&67uTrP*%ua?+-up6`h^gfgZ0ZryxHNI zs{v9BCh5(fD}(QrERkVb@80DwOKIyWoI)UBjN8ucvdjvSY;Xx;5GY z3I1OU`6%;@4uEW{FW`okK*ikfmfaSSCRTAq_i*6jAu#fM;nvlyq&5Z_HaRI$Q91b= zgXrsQ&8)?Ya>_+1zk8&5gPb%#$$$N41a2z%*>$$rS>3UXVm|#GM3H)#X-VMP*~nRQ z?UuvL9K;f@1BttgYr>CelebPkj>b%^0i5vT>OzSz$^I?c|;X_klfIQ3hLS?3SHayi;% zkIs~vO4r#btMDNiVu>4p#7Lh6LBZiOo}cX%W=0J5f%hmJ#773zE5P?Z8a4lcv*GS7 z!h*8_i+>IuepI-|t~)4HaWTh~7GnsD{p>|WXpf3*^`nih}??` zQ*FJC<)+$BV+X~q-Uqp%7t{+Cykq3(Ywuf^lzG!dMFR^)lZB4casVBU(D5~Y+eVsT z;~pLraoV%psmtC%i8-B=`G?3OvmI9y0tcw*@w3RB2HN$|_iKu@ogEcKczcM8nWM?Y zA|p-0kvi)|q^B?p*VY59D0}Hbp(2FL_KI-u;e_E4S;@zU+?t6KMQ^rmO{@gIPD`?x zJ8_u1iZEmgT|L*SX0O$009gE52TRGvh>(xNN!rKl zX3p7ruY0Xsnf|^a{e8RuAWZrW^_>T^NK2t<*foX{+=B7q;KIBbkbK(Vgtsk9R>mFh@n6*048 z!FPu}9NQ66Yv+&)*siuHHbNK^i5~07UwGcu8>$B{jxy$dN1Ce9(mTZJnfgTE|3Y4B zsg|l$-8MBes-f(akoj&KOxZ7XxKVmBm8ixk!_6c}tzt|*a!{22`#%0NE(xZdU^+4< zOjQg0W>xovKI}p+$;OSFq)>!LfEw;6mIRjqi9cqhBWK^Wfi}D9ip5&pGU}wc@V2)d z?4x=Qh{st$IXEuqhVQoYs=oFIq4z#-(vGllO|L}ANb9MOS%2B7Mlr~F>eJCl+m3qj z5uKUYeA#KDHkrco@PLf79{7a*t2PBIY)!&e@^%YSGxQVzODN44YqpuI`K#F6wQvPZ zcevQcZ%$GG_r(q0-OwG4 z8fH2XNM6ZE!cSTIV@*N3#x0K5_Vpvx_N07;vUy@gf}!~9O^+?8=jIEc!ORi%Y(iLA z$j~gduG!ILWv%Bn(>6;6uWJSa$HQ0~h9!~z$`)q8VFZM?uu47ckg1fp2xECya8`QUR_c@A=lX${PP5zXfM(augSoXH`+T-VI;DEORdcU$gAR28 z0#?_(mC|z!p3i#_)k%HpVxQ$-9+!&+>GI8i+a490+F`ZnoSfZOY?u6Uq>3sRsb@6p zW*)d%XfOmAHa?(^O6Z*KMT&KJM@jCvj%1Ha8eEaR*L%PobGl z98bdRACSNCQ7Kq!M5e6DT&Qr+Y20FCqq?}N-Zm!B3*5gmgx;&{O|Hd`_G!(4$E(-B zL6}6?Ou8N<@!|yTL+uTGriVpqwZj8mxAqxT~oF9SJPC2XRcORAfh;NdP2Ov)Lwlfg0n-t|aT5sx=NJ_j$@-2b00c2CHR~qZFH?o= z%)o1jG*B+pJ_YbT(XW^eNp2?(m!g*s9v~2ytq{9}-MDANwfJkiQ@9`LOgEfuBNtt@?IHB#aHswepBmpWG(``l^k8hp*R+78@fcuS8Q zvAWE0mS$nnY`nGTFxe~13*MFXJo$&pE4o|r#O$ohSJ4icQ562xs^^GP39>$w2$> z{GctS?B0du{ce%dw)Njv0dhKx;zWIAc0Ri?QTQWn*>ao)czMTHX{LiaX1bKsGCv!Q zmHFPRr)9QTxX+jBjzsnr1zznaoWF?SwSN*4LjTqcAXC`8(rnE}S- zl2im$m!nCSnSWGG&OgEL>B;Kxxa}Ga>8OP2+OO@^)QO3>NAB4OrRWK=;h!Xyf>e6S zDt*AS{k_%&{X-4Fsm*W)eC)c^Z`ksbEYg^A_4r41Ov;mQEEvJO|2uree}@P2d0`qN zDRa{qO;3nzv1!eVItoy{U5t#-P_jU7wCcLVMr+lv%|XPjv>T zqinY@8-0@0q^T-3uP`PJdt_+&)aT|65^G@G9+-!gn5m*+KtTLUtXSsZi^J99?!2lsrf^O(~U zwp!sTnzri{BTXmsT@R_HJZ=XToH7gZ{N%2SCpobk9FGfhpM1IPOAjTlo9*4`M|!E! z3)ROy3%c)Y-g^gVcj#us0xbHT* z`k)=-#leYSRr*&242Mky53_BzB{yfW1j_9kD#21&{(`jZq#Vovgw^aXC4FIrFYh`b zZNDB_$f0s|E&uB_;dbdvD?+KPhIPiPynJdh)6p=u06p}stn3vGFNzbmjh*7(09WG2 z9wQTMaT3M4F+Iz0dM8S4d8U*}bDy7q{xk=a^_KdG)!RNb-KBSXt|kL%m)SM4*Dl;Q z?hPu1+8VVh_!e$Gs~c~X8qksrl&@?l^m`y2pdy(Gcr9r>*sXhO+vdC5Hl!)uR#mfC z%xI>GXTg*`)|V8O-0r4(j6^4yt<;k&$0`SPb^4*V3>5d%+J=<7xLNYDORXQ3Dks)a@piM;*?R{AcQn~-`q zpi1Sm|`O2}?Rv~`T0#{9ab9T7W$8;{a17(#}{D;rp!@8OL zPX9!)Os=@AB6@nb|INGregoV$crOE?j`r(p+jXY>+1$H|>>~a%Q&>lE7xTJp{cOS~ zGutKvR>yr_Z0x=bvZg#=HnXGv?Jw*uK#bGlsy$NRT^~3u2K+oqX$96c7?uzptWVP2 z-N!3TVZ%44lqp`7Sq_A$7Ak~WSjE0K{BJyXTkzPV6ckDzIaTtxB>^*2GcD9V8d@m~ zDoPzE+7C>*kCj)Dwj9zoEv314U0v>uZQxkV5)9fOD5-X)wyJQRELOAs-jD;dOEJqo z+zx|i0M_b1d~OF~1%r*#Pn~WPuy|I;>=ZUm4tIJj+vQe`^9aNqoGbz7{mknHl@25^ zYy-6IepXngJ{t`a83$qS6Y*eDa=LpMeZXwQDg-m5ADhEb)6J}@Lt5H=uNv*!d>oPg z8zji|?hXWV!bY*o&sfZ*yeVke zk8&vlD_kQB90m-P*EgI*MbK9ixy?eH22F76)qWU~QhcX|Ki`kEgR4RP{%y8~L?}P& zYh`MhY8ZwL(Z1YQd~ll;b)LO!N9P|NbIy2(_IQh!=g$QB~VGC-f+*)_VlS)yRGCsDj>{`g-H5pDi; zrc_uB!(rIm7{Li-)a=pz27_>Fg>7PbeEiS(Pcs{91sThwQ-8Bw4nfS_TtCmKV8Az7 z4#9DA+D}oJ&k)``K_98v$aqIcGK0$n%O_`_6dhKJQ;gD&xKvZ0wsexaTRORx+ky2` z(J<$RgC8~au_YF9`j+mQq_gP@Qpx*>V;nlTdNRH|!dD-$hc z8Nw#MZ==${l-~X`RwfS8<=Y>$>A}Sx%M3a@O{K?5w&f{P2dboRD0v!0u%#p7l7EFe zu64KWL1%P>|7LUuw&2h}F((GW!lHP(>G^0w8TQ%4dULZdblhanB`upyPF_BS&Sues zO54^_X+?B)7A2C8)mOaDlPa$injJ_TkX-e?!7iab(m$v_@LiJt2B*V%Q3j746sn%?TD!>=@(0Hp-jz)0}b!LRhMiZ8Y}e-NL3 zLmLkV%R->*xnSW3ZkUSheI3mTRUjb{Ev6t zI0~nQ_K?$MYu{cpkNapP<=U}&a&w7eit75#AIG?w4!A1OrVi6HBpKbnzj>mVIPOyB zl}ltn<`p$_Y-jJJ#Bs0?STnfkX2Q=|he3jFeHtwlX2}w3)QpM~Su?^u@t^kb8wYZ+ z6xN8mW)fT$WcS-a8Xx$8R#wk(-qauAkq(A@>Lq4a9dOYEU7mGN>9x{4LqQySvkA{Apf-DFI*?vh#9!(1gLufX<>1sKy;I% zFt6R8zFtm)aDaHs3P%QSDlDfbw>wt;T8#W!lxW4FYsUcmqE@-{&&CW9Cs}&ZZc)`9 z7Q;E}5oZ&PWzPVNm3bNL=~vq=@oj(g)?IZ}END6`>7 z8vajpawG@_MFwa1f7zvIP!fDpeqY(46;djCPpZ}rpC zTHLZp|2zt|^TQc`dN}qN&VljU?u4H%>%ZEQhPVg~wNGLUx|kWmJT#szF~88PY+v1R zaV}*6GXxsS=NZR~@){cg{Tu&jVLv9@YT*d6Ly?EG2@Y0Y`}fH2cgwtv-H{V69IiOO zLhh?WF>|xt2Zx0X@ujdQlnXr`XTa_kVZ2^zqwhc)_?JqA=YMOLUuAV3zQ_aH*IA9) zAApBviD`#LU+vu_^>YE9DQow>=EToFrqV#<8pz(l?$7&Qzx2b-1gLE-3-07+CUaUz zcsUg9n+64cjjmk(0`9CB;(WPeIU%}+_=SL@muk!7 zwsdUsnQR;9-a?ylYcibPfc@jU<^iw&W}vgWAMJ2r8&6S@J8h*lYF~O6!dcC$mVqLS z#PGFmlRVa6#8~HTH|RH3lopL)RC<(>rsu^`e4*OEf1xjsIb%gh_m5n+((IYC$kp#& zY&BUG9(C}BTnsOpz&-Fzik>DZ1`L(=L<$Wg;J-nAW$zHl#z#c=>BC2Re>xpdZ~KtI zmz>mU%OZ?h)Wej^Bc}gGp=Z5L84D{53eL1W` z%$*#wG#iJKxg?p`z3p}9q%+6Z`NZVG0dHMU*-vh)Y+TdmKWszg1qVMnmL6CeUg zl<-AWiB7PS5bfMFE6+s>UM_luSVkgpuxH9fkt ztF-}gS=0S^oI*xx$f)6_(;lx=u*T@rrQ6KN1N-|ihB3W;Jt#aFb4$U4w1AU*(X~!QUxn4G*2?3O_PX`8qzB*ZG*=-{JO+z9-9(_Gy zZ9t%}`=1NSX`_!9Ppj64Jldhkr_;yYw@)m%4Lb5b752BXFc4;_+i^;&O`&S046E}Q zqDdhGM7qP*zw?^F8nNtWYLxd2l1VaQM1|5xYok88SAYCsunWL7Qbk$}Wkob-bm|e4 zmiiO|s51EbCdWt)g~)0G_vXQap)OnT zZvxH<7cLrI)_JxYs+K2m9Y_*I*a)53MJpgHvz~vMBF5uV(`f~#Ee>%RI-2%Rtlvte zJYmr=cCvb81_1#lqP9OjGYi6?nu4<9B9Mt-DqbHca%bjZ#O?wtx*{DM^A#5+8~PR5 zWzrwV5x#@!d$qh~y6L(-Vgm-8vt7C9uG{PeEt8oEs1!4_HSHg&>r&YD*4=4;L>%cZ z$R$}Irn=My^_yp1TVwtCt6*;IPQ+{SlaPc1$cKC71r|zO-_aYn3DO9&JYME1gpgrm z`LYt_+{vST&l~X1U?i~1nc0d$x<`UTA2wPh#I0Dd0$VSPX@SZTb(kd9U&nlB{_gv7 zeWG62_d$EU#pS9ligYd5h7Q%;KL0C7{MeXSH`ns%Elg!Wg zls7=DRy$CS0ByRcvnc@iU~1-gsIu_4gBQuf2wnkS0Vy%O-2};j;pyUkG^R;{EX_ER zHxBKCDk*8h6WDnw?e#W{p7!)vtQ(he0vy(fx*CN6@hJ?pEc9D5bXAH_?MC+Hb4#j$ zcm6kd7)bLZavNyiL8~l(5}4&?I+`ah18i9j#79=@2}-;-;4YR9dsk_9=Q@$ZXBXZ* zX`>&k>r`r!>J8WD1*wqZ8tj+k;rVXtS?C9Q1x%m&*1aH{c}+0mk$#b zTYqWnV((?YNd)_w`>Pj9_cu4$T0{Tc0BlF1N9k9>O;;M`6>3Nv&!cz`>g~9FgPph# z163?W@Y(zt5+xU-Na(1}F|CY)Hih_1CpBv>_syO*c0D9xmTxMmK~?~`?ROcEbyL|r z%pRrH&P@|{$0}qd*Rft+qH~g9FBQ8lh^l_-ZN*)K?~ICz;Q#xv$>&WZpV((YHe2qe z^!uK=uiPls!`msgIE4F~+Q-qIbY(ZMOKNMQsb3T@2;ndw16DQ#7D4QGL~NhtTS`^s zwHw^3YnM{-^XU9^)KbI&0{60#@sl~eXjmYlXNc#4&>PkkNAg~3GHZoWG<3|MxVD-4 z_GAftCx0V_nBvsi?g@XIn@!rYN{`R$e>n88gXW)ZgI)DJtSp6vh#Lx$l{n*3Td-Ia z_s2o0k~jr}MsfF(It{@qBBcF*9yVmpn|y9TazUksFH^IL=s;U^sVsf`kx*q7RZzM` zR{ZA4s%C+5t3HNPzvp&d|K*~h3*0=gq_sBH&`5r+E!v7MoTX}mXl7@uKz?22mE@Yw zYS+hk>UYOv1$I|BdV&gi8ZO|>u%vfmU$_Kx7V7pvTSsSI5U*>rr0EIDCx+^}MnMgn zDjOcziS!OYoDL-v)~8udlqb@%Y1p%Q_ivGSUj2h>ng4;c=TqtGKRN&KchgHUOK})2 z?yia^4n4!JzI4+I-u6+Au3MfPrpm!k^k!}Cv2}=RyO*yY3W(PQ&^^W9DTtwvMC%(b z&G(`HOPD#rpR0Z0aZ@=ZofI)$kzZq5pDXCT!yN`R5i3ovg(zx2X;aHRDr%PoFy#sP zzg|H04(C$FCsH&4eMhvx@r}I8pF&NfqECOlc;Yg;3|4OBP9xZk=|&7lTP6h=%Sthq zAffCfuj8k^x$vz&HDBThryIT*DF$i2EjKPXL%8-9QB^iA*ku+j5u`kR<5FLi*0%^u zvP}TBrdu7v8OQBKsms#`cHBasM2WEFQYuF0ph`M(x~F)S%l>#6b4si~9)bQo0SQXu zY4*PiJ2xHgBw<*|t5AIrck`PM9M?8m-7o(K|MW`EGHB zQ$QzlKQ3y&%ciUSOI~}TYL|O&*cf4Q4veB!*(%N4Vf?b^nM>!JQ!AFNce6>+x!hVT ztc6N%uj}j9GCysX8j~WmQz+vt(kH_yga{wHG`;iNAcM*X0^D3g^xplhyV`*cwHR& zS3e}J9A+7|7=nyzwMJIAVD-kGiotign0m7lW>sz$88{C^@VUV2PhmicFg}ino$joZ zG9%36nIv?q2FLv9NYhYcU6%8#iZ~0tN;j2CWi_fIZp$Qi`5-v&cJQ{DZo%u8K?}o1 zQw!cTCf|8*IT?y#WuD&P!QSQolB8Nc6`xNv7fJ-MK#ucXPS&PmO>;vss7&d(uTsmK zQ2EaS!aP%dCQC}pfvFqZ6e8;ftKphj_}h8i}y(>hYLjN=Bndci^XK`x>-=dI2(`Ee1EYwvdC@C-=KIM-(|JEuXC)mS!H&rOP*q+QY(_a0B`T}9WnS1jbVFnKt!BjWKXzS&6lURjOM$z!Ij( zWLa>G6OOv!Q{{?UKPIiN&OdQ4ZI(|-*7#1!%Iq91z7o0q!5EEGN3(uNMM7M0FEqO@ zkkm&xmtnWqZMnl}xO1Vy->g)hN5p`rvD-SW@HH!jXTxM~3vQo~d3)nE2+G)2Hpri_ zDB-w0e`~GdbpT?Vr>oV>n7#Zk5$LH6`M{siRtvfCy*+`Sv2kroBYs6h0Nkj4^I}&;dHmek!j7h~wEDks zXm7O5R2K;aeXaF%Z(JT5l;_})QwVVjS-S?$(x$QAp8oYi(R5vd@8`imIWm$_4~*?6 zPN%~?in}Oul{;@M=gm!#ZFJVn$z!2R<8nRqWx`x>#Qn{pty5psH=co3jF)Ve>S*)f zDxiNDIK7;Ah^h}w`G{5On()z0xRKTR58_heK!te!Q*iylIl12xmych4&gxWOsBLKd z*BjY3cg4G9R<}M*SxFHIm;vEaLJG{oxtvIQ>Jq;+u~c6S$F)ZypItuDz%M@}v9XNb zNlHaxe*;T{bsD~Fx8%z*nize8xNRFu3;ZCT1dJDQU5E)kJYMR3P_B!ZQn|T+$eNuk zW6A|am{Io0v@K(+*Tfzy1;51F6mwjbW>?zWyzX^NT>UIcO>@h;TN{Q_$s_aasldJG z>*&;U9Okv-BI%?8Ej&Ss4ttHsh9(o_`hxy}cWYf|J_>_wM};(BSz>Hx#{XmJ?^;rT z*&!oLACq3=)UK+6qGOf}mJ>C;TkPRc^%Ww+nl)k*g?Gb*VUnkqN*U6AvmQUiusiTI z5(W^Hi7iL7nrFkD@2Hh za*~RZ6~^#F>u($AhnrM2v@aL8wc?e5j@Oy)j)UtqEbUsduLML)H3^@VRU}3T_v?&H z>W(KxEVGxIk3QkB2KbvIRh(qXqU?;n&NQ(9Fjjg_vrlUu$bTpDVBT$N14k;j59{q? z!67`fZ$UYv6okGB~db|F^Gy`TnL;K6r#O3 zy9+hZMHI7KCa+|#M`b_5fQ!woEieuW?oNf|-L<(H~TWK}4 z|L4LNLFq#T2DGh|+K}+ON`0m2J)%xPPn>I*+`D~lK?ke#&;G(4AEO-E6ripQQEK|f zARlcD-%Bscb*dsR$k{G-|8ZH%NM_K!!_%O1^?vCyNR^0Z@0O_n`21TkxyQtkXi^fR zd&blRbrOpVr@LTahF10Bq;=}?LT|Ur+;$=NjpNu?ZyfF*hW0ec5ZCha(S#HiO`n9! zNE+QTvG}#LHE4pThKt#r;e)@BZllgDX2(GPQi3zhsbV?q)O$BCz9l#qfiDFVfzh08 zxpfQH>9}$phVpv3K*q}5O$CKRtd`~BGrvifzp{z^VWRqP)&QIHEYaJfc~T;e5!P&*@|=lE6*uM43N_&|R8V#E5#ptO+A$K!{=Hh;fYRR%ZRPQ8 zPw6)~Jy&r(GLcbRCQ#dyy`AF>SdYNJJ;w~{^rgDqzS+f`>SXN`UN>Im0cW^u-fDu9)-Cd5pJRF* z{jrkm8_|K-k^g!03*fd+j8zcEd9`e&%;iW$!%xf=KX`M?`q%)JC0KGrthN@_*!fs_ zDIrg5oW5PBZ13PN!X3_0HE;t;Wp}U|k zJ%&@H{%2;^fANGMuS^~?P8BYpFDK@ZKDKE!fEXLVNBnx(}snuXO<2 zYk!40odMpFoKB)lIu`Q+Gj+wJ!IiMYH3|i8FhdsjYk;8A`MHO~ioWF%>nzl<$xD*w zWZE^Mpn}E$;D%_KVKnkjM^c(rHZquPGO7Cd`o5~`rft#YdhH@)t1!uMeYI726);XP z6C3#jy(!}v6^IFJ1l%Bb3WWd;2*A~wCLY7%6c>(CPLnc+30HdfipX(MzA`ttA3hot zF{L=sA2=@^cTvY<zIRsyfI}U5J-mqy#}pC2P?lR^90OwAH(r%`^>sz2YcOCp`J|0z|`3Hy3a?Wv*T&M zM5)XKclE>UH?ayUN-ybw0~+hsyW7E}3Ft6J&6{_MaO`o!tD6L{KF3JjB9EfE`7XTT z{m+{2_WKF=tz^Ai?o7DsM9yo69e%GgtnExe)cp*@GTF$j%3Ud6Ao#*Kbp=Hd9|o9e z=JLddK(tIkY|^mOIicumo4g^=l-7TQ`E;m(b@I$H7-UUTi2fz=mO^Q(ok3o%Pt`xe zj`B^$G?)S?=t>z4DD6>x2L!QuF$kC8=Miu!ipjq5=4bJrkD*D+hiec&0C9SzUUbmg zQ{wm=$2JsZJM|+RR1hZr+?UG`!m`)t_&NVZW}D0Zy>eNmG5G<;zI{pJh5u`Nbb!iT z$@wR@Jq?9#GJm>UpeCIgm&m<~{3aX}>&voz_+d}JDCYUN`amS?Oy8=lgXeIZLE&-N zRK$1NabasPDBvTBN0m^=L5hYj7IsCNfmNvQ#-wJRea?;vn zG{3>H0-2y_T0Hz%bHr}s05>vv^I9*euUU=GZR1n1f54vBJ)kaHHlRAK1Y;)`Qt?## zqEB3D>!kb%<=@ZefBSg1`F{O=|3)8K9hb{YV05WvW%Rju$@S*#H_F+670u^Z=Vi=L zQfx~6%+e9lCT2O%{ouN;(1M*LNi;Mfj2J@8yOITF$|&h zC~#RvZRr?b{Dcyf6gl5ZTQ_;Euoo~M`(WdNABc?iw4T)x$@MTM*~LHUMIsoJJj5eo z>8hS?OXZQLAG@D07Ta{0*5&kHfU11Obi{9CF>c%{g0D-v2r%CeBy8%P@|b2Te)5@{ z8bxaW9N>MrZ<=X6LB$ZjB^ugpxQ>a>D` zRCMWaiT=xkO+K>H8er9;LL&BysA%2xUpRMIrB^;J&4`XlgoMw0_B!L?8i!}+*zBH; zPWiCOqnZRXOmhnQwasys<=3&KHMtj?lREB*Sr^@&70U0-GZ&TB@e-R4%ud0@`j^NbpPgs#c;qs!F%y zY>NAA(D{V&+u^V)h5Z#&o<_scI6C(EeF{o|^e#YoLb|{{ao6*FmLHGDBj~wv(KqP0 z4I|+EvA&|njGR+2-44bAuiR!$X8N~vV!M`1x`CW2p3(MS>Uo6GRKXBn4a(x*j^~#T zl`0x$HX z4)jP*P4O5W0t@l7iu5=r8W<28j+w?th)Mu{f2X6g=^Loi8ViRHS#Y$qM^+;^WuaruWjD6^r0GVh zvJ?V=9BAn7RjySr3J0QflMx}iV#b%fi$^+`>^(b9Eq{Khn?F&yVZOhMz;yasu=9YI z{=0T60aKk?j^~}@vMFCUAWT8=caDXG_G|8&IF2h|6hVPF)bS*oKrBhAuTW~z6Cy>= z%lbXPq9i;qM%d_+!gIXDu;r4=Gc^2IYXRh*tOH6j+mlE$w@rSAxvxG0>*UhRBoqP! z1w%cERHWxHZ+LBLD`nrR;MrT|_M#IJ+n)owgVt^2?Vw_T2sR5qe~%Gc5roYpFzQ$^ zGNka1b@s(^zB3b_bQA(fEw*WfCSN7mG;XeFKA3#`RZT?k^tT}|rMn;fBk?^ttLmu9 zMqp6C-?^(Qlqxrv%gZrT%jDVb+@H1f)=<;CKgT%{Jzf}^jIhP?8bb4{EZU)W0kdPC z4|P~gCfxAcgGO{*d=x_Zx?mXgq<(H(%ahLH+2o~ikHvqj)cAicl!Rz>g6KwL|KQwi zgT68S0k}Nvh4)b$&&oKpo!^=QDa_99tR4<8pP60az$j8JKA#bW;z<{K@U?2DU>A?I zh2)9frZT_-b;*7@8k$w_IMKxRaM{a?$YrWOe8|v0_k;S)7yN0i^7sD9Owsk1HTEd$ zN2s^B&+E{P&>wOnUIgZJDE=9Vo2kItkRccVB8HPJ7=%U38&8rrR_=~QChAWIeVDFo zH(Vk+!tszo^MjS%sqr2fm8Z1c@vJN;BqcA=#rj;zJNQUAYqvCj+z38>LOF0;94`aM zDa*{%Uz$-dvgjC|&^b+EViOlx*{XEf7HnQ2zC^oNra(QOPPTPd9iV*s43a<(HHLr@ z8h~Npk!1lo@nj5x|H{_B{ivCDrbFM_T(H~750GO;IWJHDf#lhLxQ!7!OMU#V^*J?r zpE&6va0kg2UJIuD@(;(UwPlp$+fX@N6-)i!b3D&;gm{z$MtYp8^5DKHT~3b4AN2v9 zT-Ff`t3P7VfADvw*p{@5RPu)@URMFk%pcMn^n^Z0+)TLWhd;Ou$tNwAgm=x=dDY58 zN#|QW-*{{qn2P_Tz&eP9upj=Lte+7R^*dQE`dl=KQ%_INyFbb0LTRSnyaNLrZqisS9^I}nzx>c|>P`T#bD}Dp z0V{p4jJJw*C7(~88@cjyyB@)z+Ly)Hh}g?=%P748T)>5Y;B6OaqpKpKVzph8_)3&r zY&Pu7ClK?Ak~ZJKR;*cK42FEcb|t?Z200nL=QtuEISBPr>OV{6rVv#G3Hkf5V!WPZ zLt6d*pNpDI=RAGs;Rn3DQIQCjSzO(M^c;C~t>HL?}f{8YH?a#?VDWT)7jg}GoPRDE659s74(?c%8rL0Wa9$aju zaVPe&07T3e2rjX zy&k_+flQJ8LEFBoo5-9Irr2^Qs!#!YhT%$BS6(gft;nwIONQ?F&XAl^<96~H>{T?R zu-*!INrWWEAQJFT-BiR7X}xC;M9xlwOLu_%t=I-w`wuo% z>)Id)yzn{%J)eVqu+zX!fWp~H0CUR2D9&QzcH1@G5;0n#F|G1SuY$<9Fh-xo6tynM ze*6c4$E?`tv)|jq>rFwfXPSxg+1EdCtsZBqMY7|@7XQ-tNZrB*{UjdQfZ=}UxxVCx zIR+1-|J$h8T%@Ra)mts|iy9a2ZOQxB8dDH2U)E4M-`-&Hb_#-No@_*1A`s?1r(ULs zwT%}tXLnxV#_GHNNRfujT~od?A3xy#%S^i(Xj2TlCikSsR#e!o)+h#MjD}cl=z?H!h*HVcWvgB|{u4D_=9$=2FYCXk zBKqX?peTWO*^Uasi3Mm@el#1b4zP4L>zSnIa z^Xex(DqL@ex)Fsig|DGHsY#xZ`&R*v)0iW}=@h5A-U8WSKADyuzv>3)&+0^6{_ukj z-X-$O@0=s2*WQmX0VYKz9Ib4)Znmm)+A^*0eSh(b60+Ujx;sAr0CgGL6}M}~_{je5 zNNIH(2T{@NHcZfqt1N-l`Ql{Gz$F)qS{L_w*Cp7-z}v0@b+@F!T?^6|DcE)y^vhJ-g%1 zdD<*pAuWH>JdIocUPO1RmY#PMn-9=OIox)0q%47;qnV*~REgV9%>Lyd=|3^s` zb-o05S-NeT)JU)nUSoS#m|d<6oYsjgUUbLtsgmE@8xUxj3;lt_{30=z2(D_deyB|& zE?l$R%(mG{FD;KPah#KiQQenE`Nd0?9!odUbP#1b@fzejzS4!%)-EY1bkNv1{Qlet z22Y)a=2)*dkKakc4_lbbn4D2Yh>Nsq!!FtUIkU?w#&m4B-jnzG2H@10T}p`cJBel<*jI~%~*0a^Paw>xkfSi4_CLFfewzqtt`(M(qt3lv9>|?wU zS=;mnM^aLQ?RI8YMx*(SMn54{A>L>b_Z=egL6^HfWRu3Km(*+Vmbaje4y4-9kLPjW@ zRH(tr9wp{O7_3xSGyk9vhJMGF@_CShM3M7X>6>VLd&trml@M!xJ>zA@L(d0(7k7B7 zwp{tShV43NTu?~xxGVuS+QH$)Jd_jR0=?v9q2;(xUZHFlXW7ZRGbPvB5_mXlM35oH z3N%B@JTpu8C=ZV!S`we&2WLNz2ql#c_rfrJ^7hD1;BbD_a_S;kHgC++xM{v`w8H?r+i!jS-7hV zdBYC*&@mkc-rfAzZ66uwqv6J-Wos1i1};=$JT}g2Xa?fQ!?%7N7D#J#bCVo#cpzKI z)n!U}fiF3J;q}Oz&zFz(#{a>7S*ntr-vtKajNdoyK1Qk|g*`ou-Q)Mpz$c%;S)KrMZ=@A?&w^}0# ztFzp;pR34jc8w~k*l2GSu6pUs3UXupAn0N>V*NO!XbXTfXaxc?iW#Hv8=4aI&*N{k z#v&jtBPXT#muxKx7~kjWi!%_<~XC^C<1_q2z%x)=@r5ypFTRZzLn+APcgw-}wH zb$d11Fzs;Qt1IwUD1S7dyFBQjsyPDmKg13G1UkMrqRqxyRsR!QTvB`F;}UMA*U{8e zXDRvN)qgP2B-?hh)2gKJ^BmpkTrLks%ejzJUs3h>4|M-=r$oM1PcE3>!(Fsx2vITk zjssH}v?qD?3q5&&7C}uq`bM`ArCtJ^4KrjK{;sECvhu&6cvEuZt?Au|M85;ux&!`6 z;85fqj#cFH)4nxQ#vUGSZ7O{{cLSaXS=w}?Mr8D_HW6uxMJL?|oqGe+Pa@@MLo$6< z#MRTj|_G^KBqkgCLWo6FI%sjj*~QaCc~`yNg)vrRZN0wR->XIkkCKZnDR^ecB%o zsY7E-SyabCa}|X7wS9J6aO9G3y*HuF+_V1*pr*~VB;U3iFE1#O5_F5vZ!d-MWuJr< zt0#_e9NNkt3CZc&q4r!H9J=j7BY7P3TfO|+-=zW`(NirL?p2msP|DPmD!mEd<`teOf&;vHFgDIPfp8NVrjhCx}8ts-h7%|op! z&0;=h_MnRHEy-jja|#OQwkW!$;FBHfhwk(&NHH2NGN@7s2*5~Mh6OcHOadeerB6fu>48lj4L4LSNl2&>Qg=fbKG2ycUH*pSE&P7N z)g<$t#o2Iz7xYnx{CyDnP?eT~!P6XwPl!m;I_)0;?FuRCiO%_da~bJEyc)NRYA5fQ z!!4Z>Oww8!J@Yy=&m!wClhMxNoI9WBwWO+9Ok}>^N|ek$^U74Z(Sp7^rVN6vBYZ2- z)h1?BOB}8wWahiWrE9~RLbkRg=8>EnA+`O)^WguOX0q&Rf21YKyRVU0w~hij5~2Wf zyGDNA1e)J{gbIJPu4(rSB z+EhIYs{wv@Z+-0PmOW7ZVdP;NjFL>#``EP!yW_M@i8<0pV_vs z&ckl*m7V0U*dnRkseg?~Lt|NL87X<^;GjraZL`<>zr(tt5nL=yYrvsB;>J3@h#(c3 zEukZCH1PJaGNc!`V%&JPt3k^;CCQbw_B!dvEEuNmDU~6$IqtJ{p6hNEZ!-Lt|lrq zDgi_?_{>0Ur6%%8YIYz{Ub?N0%uvBp$G@G}b{DHasD@93|*4~e|z_XG-IwnSAIGQzRIDr%&9sgoIcyYRVC9h zk;LKYAkw_nu?NHJXx~dDJCZijGX5-lnqd*lXSv&{ZzCP{vAj1yrKl6V35L#bdL#}l z1N%D7^8+whs30!>)Z{guHbE@-AgNeRuYdWKo_?jL0ft zBerX~#5Z3@;02C@uHZW@NRWlAyRKlvEg*u_e`3SUCBw zL7i5n%tt5NuQR^bwj;-z+9oG4OuQL~-rmZ+-y95}qmP@Wr6H1kiXswcgUC|0(o}j} z?W@LAuZq6O?7TDNv;rnu-7|PgugaIr>32(nw)-U6r6o2`m1V(_Yo&~ywLn~rY2Q;d)NI9q7JPVnD9l*$|tIKI}BMo2GeiA`eJNR@$w;Az>WJ<_diC5eg% zmtnKl1r)jQH!pbOna9_YR#;8@$nWnyrM6@y$GK{4#w%8GpzF|WESO#PH}9d(ZJHq! z%0?OM6!Tf4;{43=^6sd`5+-3vF44ADsys7jjv|#I$v{6E4RbrzIj@owWG2af^MlP( zyI@ry<{;`LVy_q{B%oO>H6|06`1(ovZiwJ`xAsr!kt}f%S|>oYzqz5MwvxRu(wySgY7IPpzo+a1ntJ=*LizajrH)Bu{GAU1A8PcczcJ2qI;9?W zLDLMO&P?mucYm&yIbNVqc<9e+oGy8?JMnSr%H5q8D%>AZ2U4EgSsLw zCXl8Oso1r9d*rG^_I9pTV*rdnQ3=rt`gOqwfZR1TcHFmh&QTCy!>WmLWE?=YK4dSvK2O*+hbWcWGC(?mH|@ z-Wa~nQcf8KHcD1bN_@O)nr2my0h3oAX_X~ohEsR4`Ri1tBs2M}P31@L^(CuUze<9{ z$41({%_rsYu0uDt?WC6{E!!+VPFpKD3p+gEzQa>X0$2v%$JA)&AhqdXYCE+-6>V*y zM;DL^ZC!R5w8F!G!{qHgP2`%7Cz(#;$Z=#2P)H+9}nZD z{mh`bGAINoak2r&?5F$sErHG*DdFN-LG9nRVRBJu-OQ?oCuH!6xs)savYM5-> zW8DjFIuYvUAC6tB7z$`gp%%UQi>Z!UHT|8lUV4Ijd_^;VDR?q?EqH(9(^lEHYmOwu zM#-MSgYuM*zJTdEa2$>u5G&t%fSD$!^7k)msx-FnV%RY<17!W!5S-H_L*5^~L}_LL z=0c3{D!bc;uTsEl?ic$BYblcgwA zUl9JX`ap?Qx#?2h(YItYb9HZuPH&XOBM z9opYK*f=?f22HQ&xwGqQUG|nQrkQ@k)^TjgD9w@0`qycBvcKq%;$1??a97%d?&wxq zNobH(H8ILkp1S!ZEvw0Z$*Z*AoD?~A@9ldIXh+MB(^lJRlT9lhBlq^GBe&b6xD7OC zNS>`a$cM2cBNcVC}t2n`q>LlN(AKACXnt_R9BD zSK0a~9L|k0l9U%b5P1&ttRQ2Fv|bvvlT}J1f9&9S@?RTuOMllf`ks!Oq6|f5!FT*Q zk9U{65cTM5qE89_78{@{q9QT|-bOkY;u+G{NJKiZcP?!rcYZxhb{o)0 zGCs}{2h9eD`aW%J!{@9&CM5`nkJ{p=e}Ak{rZ_ewA70)}R&3cV&kvrjkqjv2r_QV| zV-{^RiuCPV-zQf#Q;-slHdy0j4M33>iuOiVNsxK#cFKgMMC@B+%JMCap9Sx^eR*vQ zrM&GoEO=VhpXa$9HN((&a+QqMaJ){wprSa z30VyrRDf{=2fOzlbi|PNW}n9L(08-63&yEIGh14aKr3E;Mv{`-xOVIcxDmRar-BqP z{N*qtu`5Izg%>*Vo+wMfCEhkCe?{^$ljL=Wpfpaa3{o9y$UOsQIC?hORd>v-bVPR5 z(I6sHr%HnGGO| zsCFURGCvamw5pWnY~Wae`j{=^48T=+3eHb z&A=}J^}6L%mS1MAm0tC$NZIIcZEZQHAXC4HH~)9aG3a~h+OWO((`P3w`SNjyN@qWI zik$k|7+LC|6ToWysGF0$X;!_0Iw1O{gT(_7ft=Q$ik$K9;9IJgKk}xhy*~DsOBr!j z2k8_9!y6l=l(;Clf8GY4fz^8Qd!lu|6GZ4`%7n>_HuxR_jh|XBT1MT|LGm6MVloX! z$I!|M=o7H&2V<8iUgW*Yn#vU)PCRP7nyKaFl?(HQwD;$Ktnj6YT>uG?Sef8Eo^7xN)j(JAt(*)@b!W|$P4(*3&_G{Mu9zN(?8)PKPi-XO+ zl%(E?%)kG0RSB_2*V?+#cz*C)<(9|EK+WhcG7I$Zzj|RKd11(WS+&Ki4KAlrIq6<6 zP3O_NW~#mvf1dhzuGZE488oWrHpvJ`mmBIY=cA|PY2@N(n!P)#AYDOayhA)j#QyuD zO{J0#(e}vwnXziCd_Bn?hJ|ya#7E1+r{>9R4!~zU>!&G!jd$NXS_pt#zp~L*%RH`b zS3~v{7RhJh&4Pi_)}3=Fm5tKWKO7lW!d8?qswBm_f-YVQ>N@npi$P?&Vdp-}v@>4> zZ)eV~f07m~r#i!)dvQ^VOy#deNWqQ~-BSXXzH*zUS3mxJnTos6r*5~^gg)_GJJ*!E zzP1*T@XV1q=e6y!<+;K0lH!6iENct7QD*O^UGqYw`7UEwx+_e+vB&+J-*7ylK#FRjBpBEOuVgOc~|X zCyu)zoeJ`LiJw%w)f#wyKkDud^1{&h@>7WT13K5Ks3}xf(8x3qp^un{(%ELyDFr-k z;sc!(tTrx0<9VNqj2YxIUGpj{lOO~$#Eq2X*qm6|jU8&rU8mGiU?}(rQ-kpl1va~V zf9{OWv%&N0VSA*62GG^6nj(N)-W#t4A;k-}hQP!lz{5KhWkruu_lF(wtP$cf$#Kz& z&vDIViaYWQkhVqzD3I~Rr6&{QJErTANy_(xG-m zWv_E;2+jbW<@yo6`DFZZ-Q45U+vcR|`xSOfN(!D9JKuA?azP`Bk8#=LSQj@!7tt?| zubz3J2NXF?03<{@Xcea?l~rIGe=TU#p@T76(+1C8BNG;z?bPY*UcPy^MmE&!=>G%( z`t;9plzW_Xv)wj3s8hd~v{G5R{22^TXE&}Y&;2r2J~XVkdyhkE{)sc|YpT9(dZOGr zV20o-?RN7<~J=H@Re?2kGNL|kA zf=J<)W=?tN>EoXMXgA4uFmwbscXq9%I1pOa=olEYaFZ<-!a(cr>IM1w-Mr@;XW-L7 zV}s83?J<9zE+vfD}T(22ONu~}cOm=LXXbbx1_>QvI!HmG5*>rhh}mQZ2}#$LG~UtS!tKwC(x zjC9mpr{v0eqZca(jsFAe;|uXXuR1bh);ilx2afoEonG&lmO7Z4e|V9s-@aeY4+4>n zjy4jEfZzc2B*jH)KR31aNc~hs$eZqY1q;}{;(?sTl4w%Y_e}*q?PJMEtI&=7^ht63i z8A)aJiwsYCFvi2_-SQP^tn{QIU z>e)>{G;n4}c-N6}U9@4R#70FZCp|5K)c=o{y?aT4vR;K!h7*qW8$X+>G_awx?`~|R z=~}C@htqSCf3+bseA}1K#B1oWhC?9~?SNbZQ7)yU$A2`_yti}RXEjO}97m^qp<&4L zckU+DljN>$xmxC$xq7=Ynq3zHVwK*F)8(<#>dLS4*2~X_u?i*KC?cO4d{+Ri!c75B z1e@BP^(nus*2sFq-1TyE=Ny%Qov_6GT}9`?yO%bRf2+OPQSICh?_+6wq{K+M(qmPV zV&#&S)sF#knw$d+#%mWgI;oNGC#^$=0D{!hgWoyR3-&x5ESL)!>84iKbLQn);Y-vyty(2 zUt-U?e-SNyb3<$8wFeADMu9dwURc!ioD%kw_Qh{qGgytqWAtVIrNxgE^eNwyanAu zB=ZV~!Kn?aNaM^TeHqVPyF*?ZzVHZ0%F!eb2Y=|NTiVFClUi3H0o;>(S0#V+pt+VQ z@Y1dw;4Wn=^wkmKxx0I=_MCgbd8FK#A6+_5?7>s>B&A%Gc1xU$c2YWYkjbFQNw)(e zyYnk&yv{iD%UWm2`tAFa(v+4Jz#K&E)ByQ6Hpn3}6fX<<&F}lh9Cgn50PJyXuvDRl zMg-BMS_K)qXp^SgOpW=s&Pjh!bTFHeP@9Kok2EXyp-+oyic6sNE!Yf)zqw9(q^n%= z!9T7?YueS&P6xij)TJ9{B+0ZDTO~Iw!ItABNC05z zln@7@8Gy84P&~cvbmS1JPg}WF0fA&2Umm(ZyGQIAi1)#>)+wm&@-|sgHuB`Fsh@NX z9Y(Jqv(_sh3*!NL_|$*8TC=q3d-Q$4aGWFOtyg9x(BVWED>m=Zv{tar+;cAaooR;w zDB{m(H)&ZjSwV3aU*P+C)KS_-A|6oau$s|61K`Ni0OqXUi7>;O5(g6m2}z)Hq8ANC zCS)`0%DF!{8+xZnk%!Wt{UjaQ=Yyk(KJ1j#w~-k^CGX*Zvy@%TiNSWZeA8}uEC?kr@AFbOrBi@f^uqPK0cm zcO9hh8)cMN{rXTEuj!}9 zf#b+|dD}61QSa(jTOR#!wtR9J!T$Nx&GlskXerdj3zuljdq;k0%W9gk91vuineSXf z6|tRLP*q=u@VFzN>f6{r4>;u)$_P%3l>NUiYAns34!%6#`$FUS^z{2WnH!%Oc1JsT zf9z7*1SEe}=VL?s$f2Ff z2bC^3ljlO98{j*~(;B3yz>8;tM@Ptmz3M27p0C0pPW1ZrH8qL{{K$J?+Tm^$%70C> zlI6Woi)EV)(HpX7VPRqN(KvIC4ASY;>Ywo1^xc2hv8G1%zMLJN_okD3L)8C3uROV{ z|FK#Ww|A|j@57UcOzxy|=)7d_571`u?AZ}++8XMveg&ntb(f2AU#pqJwNi8_Lap?_msMi z47PtIqiA(L-{14azMxsA^5IXw5(nD?s%EAHh9q#A~T{m^u94Rb3~PPvPu4~ zg@~W1EtHrE@AEv+vyNuN5E))i`<5?bOYwVedXrBpY^^A@B(%YFAEh46cPEo=gGrfhm&jH}cb- z&2Dxox)`aB0I?AFfaU1>b?GHj((uT^o-B6KICLVD>proj|Gckf9gPlPU~*!fx-c0j z_x(i&mE`4%2`l81R@H2?!1EARWzY7K>i7NZcnQYd z+o{yg(rZjgw9Rw&?!?1gYm+I@gjx zGu9|A@2y>O)Y*e{zo$p8yft!>E%GZcA&|cOYoIf10PCV9u9nr67zU?~@Cx^wdGWpP z)u4*@q1!F5L4?z;Rz-Q#U~cf~pDa=Oe@WrcNku>O{Y>NZGk_P;YOjwtIyGuamYpDX;6zStcfNl<_)w|_Owl3DKc3mfT6_f8wsuqN{% zGRMh&`p0rz_r9l;)Vcx4vHQ0BWw$yfeaTt(JMT$H9qhI)Ir7Ki&3-kzxt<0Yf8}NS zo&%aOabi;+?kZP*JV~ZHyw7Ypd<{p=%arI6jD-_t2k4J1M<{@1jFnzK_DEFAOE(ns zxvc;ECqv6Sz*;t}T3)%+x9&NhrL^v^j5;Ev?BpI>ede-O)s*<9*K2{97-0kKcWy&% z{RCWiW!r3lPMP-)HEWD_8k-JNe_2!b{`t&34m&MSI;@-+tMt=E=H5=7|AP&p%ZT8F z%&8qC%Fn0}D=!#oU%(qe28DOaiEbynLkDQ_{+Ojl9&FPa3bkVG%8AOj=EO+zAVkuC z@(O)$cYC$5z_J7(&AhccG`(ooaI655Hrf0l_@0L^8Fl5ZFPZn~lKwmEf6Z~SVErz; z)3!XGy4$;#HdR0zjB)&*URjvr$b8U>V)x7M@1(C?kgqlSd%p>;WzjP>J-!G^c(l@~ z+ktw1`?tk1YJoE<(?Pek(Hix~K?+`Y=Ew^kX9TzX{ol?wic8<}#&{h75D>DO<{_x> z1BOGfuc)|KJ5AzuB18ZHe;@!!L_t&#+92XZhp47t1&%z(~N{H2|j{%bav zsHL5jUqwZny5?1q-{x-!xnr-C5G}*|cCb};Aq7w708$nrYf|oTQvlqAlftwH&W079 z_?v@J(nHd<-;nu7ura<)-RZrh4o^_=-e~_Bi_*rW6NQ#o^fFFle>YkPM$|l2eX~!2Tx*lz z&U+4|P*tvPpDkTp3XVpX8BpdyfPdjDopt1?`PlB415*_PsA{ zbw0hSxm^G0WO?nv#&YjB(`D1H13~rk2f7RB54=8nfef@Me}41AISnMIQoI6xap(jU zdkz#S;FnCLiM@Y$Q!P(A0Z&q|zpYCx1-1H;T6vs0s*t8NeDC=_)GJTstlci(PIcBv zK)RpOVe|>?)K6H44x7@m=)l=Qby|4l3gUzHCB8_}+_gw8BVUrIpI++igWhm{AE;;&ao%gOY z;-A(vlI4@Dn=1iL(ZNHi@nD+Sdg*Ytk8coS=lXEm*LSF?a?VS9N>23dBOv81Gix$7 z^ZI7;e<~TbxTHPTsomZsM|h{7s5Cn{{JUQ%`Rx7*bhi{yh+DI>HPP=3H zJO0+rIl5V(wht=zjS-6!nG5RKR|F%N^RZEAe_ty#Xnkx@$OCR@r63>fG00~~W$334 z#z;qB)jCVMITVyZU zKIhgoQykOY!ZA+vb@V=fC8To!fI&@w*u$zU_NOL38_rchuN{4FK5L!T+`h&4cG!+II2=wYzZL_u3 z>eP^P<;87P>jyYP`$@2hW1e~P(){t3f6#!Vysw=Wu&di-Ye@ny9M1i%J_T~chZBvX z43o9w1&yY6-Xp=ahJk0GCDGHP&kMg-{j{U{Z%yXodrX^}De~gE4IFnB485bBAAg!n!@*eg#RC7BYq8mR9hr}^HP#g3_e!FV9&>l+zbE=GU@f4;k^ zwOsJd_>gojSj~gX(T$%^kx4$}D^{N??f1X-ZLef4KTHdpriSl+&9;3?lWW(&1Odd` zxwlYK;-eJsG)y1b(P{taO(7;gWa%Ww1a}z01$gTjPF<9Q*tFX^29>EpHL1RAQI#bh!~V+ zL;;8rAP8cY>eVymUEOQTe}?V*<&*Kj2|j?>L`R)eEs^$TWjjIF(5@7q}=>b zr#!Vmn%r|rZE5$yZ&sJ-_xH%aF5Iw7Yx~r0n`I>{)g&~$!JxD`e;F+{bDlUwYCaG; z&2dK;>GPo_&-9d94-OJTd{wEZq!!Kh2T4!Z#2|sWGXOz|$=pA_vZ?YkgqqP1npZf& zJ>M-5^aKucA%x1H6Gr$X6x{><=EQT(#{XfT@*F7rM%60F^S{iseJN~g0EWV}`N5d~ zN1fB1a##0U>HF0*f7`WkCV}V?4*iKAopl(QUI=~w3g;7v9`=NB=)CA@*?@(pG^027 zk<;rcYZB2hNLThP_FR)(|GhGuf02A)-EVUmVZ2FN>k0X-+e>XkXK>sZ-3ewrtlH(+? zY@{42J|x$CGT9b6hSj7NKGj1Co*3p>8I4WGGrb!qE`s?IiFC`WByWvcY}wauHMg1n z>ZbIf$D>8i>fHW*Pb<}kz8$1)2pH@THhS{R`l`*neDm&-Zj>N+(9x&=^O0^+>!HwZ zfKbq*zT65euHO@ zRjk!Xe}a*>5IfCIRSHTy3q4u)-Q9$jk?syOSc~3@f#VF(QQ6zSw=bT zul!^UbHOT~G2>kiPr2_OJM~@zY-;*>?1CWP#t3zZ3eGeGG@W!QlIjGLRTF%D{nPEg zIoGv2_qCcpWlH~a|8E1zd{iXHb|^392Rlbuf8=+7GoW2{Jvhd#%H@^EZQgVDXVRi< z9s#8G>z0!WawM^*N}fcO0i6thhF5OglRgH)t#;1Mf`YaQCM{rkVv|jEKMzv6=%&Ns zi0%(TQU^IcYTM%-yG$9aP^#zMG+Umxb3fRZmdbx6{u2rP&V#>{cZpDo zf2W}51$y@F>D#0FbWp|+%D|7;Y9QDE;LJ>~CuP#ak7%MtcV=VtQYuddwO}lGYGR5+lL=KsSSZnb0iQbynL= zt{|!7V}V%=le9_ej_Jb0XrSbVmcxu~);Q+w=i$3f1(fRRssk7P-Z)2EJvv_t@Ok!2e-+{8lpVv+l%aKk^5ni5b z9?ZhWwNl}%`oSRh&~~pKAhWiee&h#ZWPA~>Y-y$0=vB(&Uh!rfsrhjPKHS9+{Q1c_(^F)6HAFp~u3&Y%=M-buh=7p~ov%eU`o*^*;kzI9(N-ngrRGte?| z@H=zmj$Ajex;FCuWKWkuD_68@kjrEe0UAA1>g3w;2*{R3(xgbHA9X%{&(KZupr6UpIe>?nk3G8w~x?2s5i6*{K(Kgk~{rsrmQEg#W3X6ovQTJL! zRQ4FUniIiq^zeuFWQdK9155^#RjM~2*{OWZdbPUjJ$+4P8<+$!=|j_imL}+P79q)! zCf3Bh;m9RjiIdcsh>lvc-!Myo#m30C!7_2}G1*`eXc?1B8{c%=e}K5UH7J==+W=oL zJ>)g1Q|iZa9wV)U90@+5Q=&#d!Bc>`q_>QJFe?D)Rxj5prU{*%=eNrbt2VRUAhCSh zI#~Msxl2pLR)UfBVdwyBU$S8ncTTuQc0K3k!xWvuwixY}R=sFe?MtK12A$>L`5W4&Gb)CPHR|rQb*oN1F;%HjIIEP(lU_}Tr~ur5@RyvvdPm<`f541PRF6h7PWS-3By#za z_Z>T9`sj9OrbC`6Eg91!lkOAEPpCcJ7tB9UaCAp-!|gXRNi%w{f9hIETWg>CsH){Y z4yd0i4us3Yhkwf(jRK|F=oLy+`=whIxp4E2I<$EUgrAVW-e~W8+#e*m zZb^lW)miDh8PrsPh+c~KG%oy#N!lY9>=&qBF7-12e;p2( zhLc{k zNLImPp5zUemU893v)5!}WVIo_0N#u|DNAVeCaW9lIo3Ph8cHE_S_qYHd z5+zD36IRDgEn`xRMmws0^-APWt#($xBthDIfAe>p)n~~{9pN2MG+M@vCI%G`I|`g= zRw(Up#%^T?F+u#Ob%+d|y<7D?)*X(RP!dc)z2P)i;C=K~ISVzU>K z7gdd_R#<-DdMaw$rz;hZ>v!%)CC;pAlS_{}MYRV{pBcGCJ29YnN!fDzs{Fpi`>faf ze>{BPNY02dl**k!0Vb^Wn1FafzrR$wh#b3gTg@%_;Ubv8DxCyR37#Z4bk1J=xU#%r zRqN~6JE)P=9llgfUAg1PsrZ;O^XC5WA!0^OnH%sN?G%!PU1hc@T`J0^V^>s5+)D7l zc)Uz*X;VJ0e%vUHQwk?}(W{)d>zvmQ3yPKV`g5N(@6?e#ldy3if7>KTs()m^D#SB{ zGmRuI@7cN|m$U@}Vw(j3dI;W5<% z>Hmi^N4v$F$Q6l_Z|bl)dtY!F%5r9cS!SbBxpWs^KvwDW@#t4F26y!P zYYmHO-*TWERgcnfi;z6} z5@+(j_l?QYdykh?oWtg0m!w>Qi1rqK?0~0@MAw>yf2DkZ%n4HOJwYaPRzGiAP!J+n zXGxPnQNw^l;5`HEK#YRbG!unUPnAR2VV}<+FH`dG^%#7W&ExobKsgp@J zhx(cbf6cTHE1(}G`eswsM|^w{bm?8cxZHX0P+qg?)4qFPLuoj2xtxdvoy)y_x>9}x zN&yxl5g~=@{$aFozvBBod??qvQ&$3gw5se3?JP8}I)%})!6Sg=zU`#vWC~z!yNJ{c%pp&F>AbokAW^;$b-UG$Rr5?vDkCK|pHyF!FX0yn&T8$>9b4$g-nbhsdOz^`jkvqLiSbbDMU-ZV| z+Cs5IBJ%Ua2W0YkV@g%%jicrUEd;CpA}G*R%)aDi#?Q8!-m53w9gqp-SZLq#BV}bn zm4*L)wO&zO-BBj@)_O5Ac2?-QGp3X-e-k3gkglj)7%$~QN_%8t!9)of;O~)G2P4N$ z=-U8%o6y-=B)O-1LP7!11Z#jYDlC=>YmR9N+&x~ZRYWT*Pky<^^6f=K0ZU$(1Wa0b z)GjJj0PFqa;KN>KW#4!xPZ4B2kA=O z4*k(}QYHl-K3Q5)Bu!YQ_XL&DNwx>iUzhYLk}J)~PLLevlekvDP!<}O$|Zwl?9$Q< z<#*KNumH5e+7w%13u~?p4*1y*SR&p$^>5vy}@<>+*T^_c5T8oOeqCGH{dWcO3##){_W$ zEPwiWi`;cXL&vlqFRII3h}8joD`;$>)<2oQ*K0Co;MH+7y~-X?IYe;d}7HgpIbP zaj9A{*(DJIo*lRHi0TNCK&WED*|r<~nwHRaw&VBC8YH>K1r>7d+3TtsaQMPa!SeO( zCPB)_X7WyZC{vo`vTR?t;c7#>3i$*(V`N>eM2cjIWklPux`Jj!Z729%b3O3ZS$}l7 zg39IKCrhhtJPSTRvP@vCf)}CoqABv*=2Ke2XEFjG??fWQV(IsIdk`c~K2}?fU)GW|eUpC8O6re;q)IZRmyT%&eOo)`An8&j6KF6W z&)p{n&R_R7v`7A(9uc;ZM#}8`n18#~Dx#cICOotiTwHCE)%P7M=&FMmHnN*$RPIa- zI&$O1uho>#7avq`o>TF2x61O$lr37u!(x?y#%3jI6w4}aHVjnMJW{+o^G2VouyUyX z>^>hpQA(3S_esuiz3tpAl5nqjMWubk0-D$XuUS!6bRPr1b6P7%$O4dafq&%ejFWxo z#eef$c`5&abCS8PF(If!PnvcF6H?@dL9z4Sl*T`49jtUUM47C_vy}_TbCnCqhbF(V z{D!Cwyz|?3xnzS*=ssrNKfcWffw^mQKu!K;`5{xvbTQovWV!i10{C++s3_&ric2V{ z_XLs9DR~0o_#=j%C45NAW`9uFNXS+KV+VjD%mUwR94H6QUDw$xC90X*PCJfRCaJR$ zSYgmK1@1L&PxQ_01U)BK?0tUS9@USeFAPuLX!*>_`QfQ9b-;Vvb#7V`=;*)wYlO8T z&kt~;*%dk;svfnA=rLdgj9qa=CvUq3G?ajMoj3Wga_{2HK6Yt+zJI(9k`85aCg&u# ziR-*$UZ8OzI(6pSZB^TI?~zl%dcImA#hsXar((L!o&6h1i!m$ZV7N6SsMziuEj5xj z<#l@gT-Vs=%FBrP`&5p&aMm=M)Z2fv*7B;gcl}~2`)bsPidMz*)e0NdiT8AUv}hp!xbon|81Yh1mdm5nz=WV8 zmmm_liv#NEVIg=xpBN{k&u!3Gc!8iFF$1JWOFs=E4T2B-V`Xxy(iN-1sT+=)b`o+Q zKPpF50bD(NPuIqW3fjzoSX|_cyu^UHCU>c%Jv?_VI)6XBO@D~4o|i;ktC8cG-3AnM z>(IQ?c$7WE63z=68ssq(uD(r6DAs{{$@A(Hi)tYI!frs#juI;?yANjViF(GaYr>K0 zm#G6SV50O-dTL0NH9 zmw$>fVfCXfY>2qn{g8PYuhZphEJ{(uqa;QkH%Yq$Z*5nE7RV@lnv{@|xzj5j)u>JC zwtfwy{n$179{qn0UwV!E`reLg6RZw0|vC0-k zCi=Btyb{=VuF_+D9SF#_2-$HR%ETzSp#*{JHg%X^jvRG*OR3K+Fu6zC-1L zQmtqfl`@X65w8>a&ASifl_}OhINW>;NruhYqq2==gZ>&xj|Yym-?){BmHUp05PzKK zhNW_2*zz>ttXXhwp(j_%hP9~cSo97N(SVXO?Zqmp7WMr24GL&^taMJD*a30`-1NzObHX6d zfJ){{FCE4`s_kv~2LFdP^acIU-+#At03O8pp3TraWn6 z>_0vqKq=UX001BWNkl$bYE|9T*1$ zva>r+T~P`t!73Z$E!auXJ=$Zsf0zeFctPCP)xVXX@)MtJR^x3##|L`kq62d9ob?q_ zv7G7TfAxy#DxaRW)!>E2jfgTFvwBKGs1s4Dfr^3@>Bt59)F8kjEJ%! z1Oznu$hIN+jr(J(wRhe0$wg%5%hhDvk&A)@8*Q}3d(2x8gINHz4&b?Y**x0bze7>{pxCpQhM*8RU_TlCuP_+K=MJt!A`;b%k=1?Jsj}b2uIzle% zk6d)j*@*IZu8b)?Dt{k&doZ9j+f~RfUoJhUJaqy|#nj1@>I(@aj51V#%xTmM*tLzf z<3|7Y&;pqS8`P$wR>&EPAP+O=MBf=VERdpTS@)d0S<8bTv?#5scLW-&PEfp!16}aY zK?~%X2LlIh`@8;~)d}J_l?rE8g9%FRL+0$2ou?uIGj@W64u9u;yiIj0J7b6s`?9h{ zWT)|eh{}iZ-D~xWNl>l~^753;+Gb+4*zLzhRRYc4e}AXPu`p7U(L%4|7y*{iR4 z^fAC&N6t2BqJKm(Y_7fDzU$a1hyuiAaTnhrUM6&CYA@RSVMV{uSXnY_p1R?L&H~K_ zl7nc8Gtq!ThRDfl4T`JFmuqH>y&^yjE0U_&)2CGF!b%@5knQ~%N{`8#WWjFpvtF~; zMF|`ehxdNpp;d=5Plc*7+Qws-q)L&j(tGMwN2oi|$A48VAgg@Rx{Oq^2|OdABL;&9 zGb?p$Ih_j7^xbO~k-8&%x6*QItiC)BtN=9gJOAJtJclpG?(Nt(zybC`j07(Ls%&KJWOp%f>>khP{y{m@$@G`1s8P@Ax9Z8@*?ZJo&`MBRr)7y& z##0pws4W%*-y!t;X@h_Z01WrVk^_oeG7})>aijcY<4MKOI2iyCnQ+9nh<6DcRO2_3 zPlOgP4=t8^0dl~1M1mDM#TRbg(3D|%H7KrzDmzYI(U;U!KJxb9;f|KIN3pAvN4!0a+@^GP*~VwFr! zx5XIe&*y1yd=p@RxI}Uo*VcXwq?<+XuFGS8oxV0K11M;ST~Q*3wnj@3u00mmAI#Wg zxS|Km4V-~hS2%AEhXo>S%J?QY6R#3F<=xeXFUrOvmvp8^l0kmY3aBl%2U06AyR;QTat$0+2+!Ma16XCbq@6TOPAQRVifAp+> zs`R_wKIE`+E_l0NJRK^x?mf^Fo+|*!k|ImAlP=e;_&7$V#>5JnMDWT_Ta?aeG?1d5*QNn5mE~d6)vd!c^{MsF9Q8uq~u>tIV;`#8~=9BX0w$rALXJzB(suWOaXw8q8KC*km zk~!4vtpA_p45(ZOL6ZY4Ky0gMG(zZ=Q;Lr*U?csnUU6Bp_pIWcd>H_U@fe6t>-2b) z&;dKVHEo+bQ8uqCzfsbF?`_BJ%+mu+og%3sBtg9zRX}n-maBK`{&#RR`#ctZ!Ih*J z-87v8cO75fhGR8N8aK9$#!h3~wrxz(sIhI^w%WL{ZQIU!{_k4PH#lp~%-%D<`?~Jk z>cRkun|#ovSc~giYE*x+<8_b?@K!SQcu}aZlt@z8c0WYjTRLn+vgF(TPS?pbeg7cj zQO$+M9+{R;Nx<@3+ES)>_Db9336?Ac*OU>xb*rWV=bEvSrf7dnX7uaCKrlmnx-cYU zaN4`N^`2J{6>$g01Ji2IuL6kYLp%>@Nh1deQNAV8GRf7=h_QGH@w{-vF6dXsb+Ln$ zi%nt>HdkOJiikDBC$E>(jIeH2u@>gHzWrNaad{v}!w<`Lzu^Y+i@WoZ@k_i8yx`oF zN<_17#}k(-gs-+UShyp?!IU3OJH zuST{x0Po9i!S?WfdDH$-D-*V#X5&mTk;xL~_9Nu^5l)C!#Gs#RhRvuFE3(azR1sxL z1cs}yTk~EoJE7P0&IpL|UO{T;kkB9hyt70tMNdZB^z25Siq@+}BNC|OKKcC%cS84w zEr%)hvwM5p3n5brS2Cr}`5&2!77HJRZE{sy2!v~26{}{kdKY+3L zbjP^KUBQ@o#=JReOfL2n$y!rue(#$uPF-)q8B20e(XCl*i4P#iDvD*Klp=*7=X(>8 zDt%fR-S^OX%E;+C(Bns;(sqsy{9e~E>%TR0x_;qHYg>P9ne_Ehfy=2@5#-M_ttt}v zffbjEUs8Sa*q0N4YnHXMOm4|5d2&sa_esx3X&;|r1x*FS>v8+TtDPrmofHZ-YJ`VPmuc}ykNl9@oDze(d~l!CMwbS zqN09=aw5ZL&u=lV)6(`}SgQUaWM{*UeOHsVVb03HnAl3|FwM@OLR>Xu5=#0NCOSJk zagV^GN>A0sTBsx#)3VjAjyz0L)zf^@an213k6(a8<_l!_bqimAxq#1l?I^N`q@H%S zo2%uw#m&FO#52|+RX~{L>lKSfzBf%h}l;SyP5kF34T0DZ+)}-4G-c22P^FDm9i-zc zWiOY5Mk{N^xUv4>@UJhTPEM)YkDYDf_rE_8LD5hA>0PwQdJ1{4XDH9$)2sm@i5$vS zt|Gg;KSqQ;Pmhp$bT$0mIr9}<76R!kWEc@Ez6&yahuf}g|0_t;yiCE@&Vhr$@s84q zaW+;WQdAi8;=-(}-7QmQqETVs`Lf#dOM8tYVJjRRnt$|_U^U@6oD8_vie7V%7s;qu z9Ij0^Z4`eUI4KB0<2ItA`mQADST&`&ekFqwsZ*UIC;FxPq9ZQ-L501x@_SovdMwP# z(SUZSL=ka!mIU`b@x#0$SjRSJ%gz?`G5>YW49EA_!@;T)TRpE1wL#GeSV$761PcK_ z#NTWq1vCySW2v?G@5VrhX?tZ!UDc(sdRhBs4ZoSy(^^8F^MjNJ-O5oh()WQu&YF8G z1(^xmt^&*2Xt4M&r5Q8<`<#|A{n&CH0uBsQBuhkB;JyH^qRN9 z27akR@?8B@la>;&$1=-?RKdt6;h~b&?b-Y*QrC}a^uAi82*T-R)OJWlw|$5OntQ0_6##4p`?hTtP z+fk!F_EK=*JFZMAO~V7j7F&%Oce!C_wvNhG=;>ewJp0`%?icf5!v$|2hy{PyM1t5R zR-xSd^bHl)w4u=UZ{6kI;mspG4c*V9lyxcnQWj616#Is4I=%xrQ>JD3>^dtcnLrZO zePv#~mJEp*snNOaL4lfDtDx3>nTyFvBjV3qDyH$(ELQtZp;{xYU;J#|X(Vqyu7 z7$(5h+;QXNF#w_81<=WuEKgO3sw9ZOl5GA!5EfGm%d zV6Y;zHNDzP*Bs@QrDrxltbnklFZR zzM0iS!f6k4z8s2}O6kV$-4t$`^f}L1z3Em05n)0j2X@4tc8DvfI~acb{j9d%Cf%W)-MHASMbP8 zpfkd3V-b4D-6cb78bhY$7xlF4~63=DF3s6o08R zv3zt|{jf)|@`TGXg1R8^=n!c+DjE!)t%?+ON!lE594$pmjMnjR{;x1@GudNhirIPMBYO?2$~0;A1IsnMLJ11GD?IC(m6+X_kiU3zQxVJZ{a{@eMyMEV{(o zR}MyM$d5G)(KN9$7-(52I~}m2qamLL$5`~qxP`JI!(&dz^eN3Ok!u!`%E@_C$qZgA zZLcseA_D5kIgpWn@)8}UZtcrAMJsKl*;ZhP@k zB4%VF<-HY`OyZ1+ajmta+8LA~sCBt(z%9*-y*-MFc#URnC`h$4E>f5KYEfox91VRg z6qGkUTSbMd=5DUHX%W-w-zb_uz@-al#{bcxV4V>+KO=0SD-ioGhQA6Jwd*|wP4tNH z;Y?HfR3eimnJ2Zhrrj(r7>BJi=wqTg(v|jl?-T{yOJ(L2=qeZdeNxf$My4&^Lxo^+ zY>{z?z;6#VHRA=^c@@hDJwONMZUS90;io6^pM8x%K6Skxo8YDU6R}E|chzOB8IJ5I z3;O(M<#I;Igdg=q{T>=-m_qaybJ<%7fPj4J%G#Z;eaTcl zNBHFjJ$6ag9jEjWGQmd?SV9=4OTA=uW%g{b3`GTKn5R-be4Pj&X0Mzk1HA#pHLbsnRKn!kj$(6>s>~aj>s`D_Fm`& z2ARv0@W3Pm@DehO#{J1(>nT}=mP#5PibVf)0UAtN&2q^AVw5I^kIX^rKcyQ5*X|Ti(R0tEy*oMkG{Tl9nn0D2j+OD*4sMU*D z;Eob$dMiQ|Nugxb3O=i2f$C45QsbmwQe}ls$0sqfz~TeOu#H26(n~elW8BVKA9997 zjAVw&;Jl1N++PV;$GRi8DzoTa%T@UmDCwMIo_tic$JEWQ>3ENXZ}gB_iArD5E8U}D zCXpi5<2m!|{%Q(;zFzjYnwnE;tml%r-`v>pAwGDasSzqNeWP_XYr4vCgb=Qtw~I~P zv_L201p0hgCR?X~&0_NXT~BZPUE3iS{JZ3D7Nr>HBF2yDx~~nWd+nE>_bGSwT1rvq zOfs#`pLx|#?%CZm0#yQrPcFyG-=fA5mEaVNuLWe3)nw=(qmyPM+@&%k>o)oPa(haf*w9_O>p{4dm4`YgokCff2B z;N;wI@ZnM>Qfg1Crmb&3fWOfc`#oCO*9AJEoZNeoS~bQEZ`d`JMT}H2|L4p4wvQu< zWBiokO};pk#z+}hq+l8pQ!MSbci5=`#K{p09hwwg%uH$TgjJHiLcI8dOwiXeWSdE2 zI)}vqk;B0#Akg{IcsQYGe=rNSof~fvV3yHKZ))2^@jZ>B32vmSs}E_jIzg3U z?+0I0+6Zp?0+}O4IQgwftebw#H1htLdd1l7F2@O7MiL|I6%1*z=sl?>eht5e;sFku zeJ-D1S#?@qrboqO|E!-%NiWJAVcnd9(X|WS=*X@2Vk4Qk6d>}E(3M`Wd00t;V z8T^>wQR~uRFVo?SU?c2O(qx!YzcxFRzXGo`bL7&w;ieA_RwVRuAqKN+FUOEu-vpsY z)A47i8mUMzNfTw4B>UHzJVxwLc|J1vVg|o0Zs)ChqQTa9`5qdr>>&AJ06j9r{lW}zUJ0U2#(Snh&pVrJC3XR0fHStP!3q>LH zbwY2J5XlTiPOP|bWd9#bfYZ(>{d0d{8l;cQ=-j-3*3Mp;F&}2<`6Uma8jI@dTR<%< z@V@iU8zH0uH*pt5CjjMTJeE>QIxwCKFUzGDMNGgyo1&sLr$aUF-w?wXY=fKiBzBm7 z?1l{4^VB658gaaGg$MibESZFsZ`%q}O7>`f2>*RyE3U;qd*sF5uwE5~v>iQ#UoB|E z8#^7gqT|Eb!myQ`UEZpI<^4R(IU2G(TIEErK0Qw%JpMli)Q9@vhvd`C^cc;uRaVcU zDu|MtJ&B^Bd)z~U-VS}^fk*Ba--5)IYGHm$lPO_L2KHS~0j23lS6&+3U7pY~Ip{g6 z@qBjt4!rxysRoZ?BR|=zr=Zt-lDIj;#Wug>b2za*3=2@PE?BqnRfRO6whR`bo0lj1}03MEtFf zZo3T+rWmc~msj4xJ${dQben))nYkRSX@wWL(`fzsVUa|0Blj4nVuI#*vZ@3f>TjTE z)>xT^E^*FEOf;a?svoWEb4L#48);IUaLCGH$DeGyQC499dey?}gT<`H=%SA|`7|qX z5smB{^X@s1L?H`x7@uE#EL>lL6HHMKpl3KNvXR5K9bA}=SyJyu5lyA?dQLm}I>$gk zWo9Im5?+72gdtk;nGz_4K;x-K7Akq9GQ76wTjY)3nhWr`pt2K@VofD(ezPS-WxK>w z8CC~g#BJkx#!{&7NpYT5Uw%xDIBE2aho>C94ZuM2eoQx{?~p{QL`3omcvXyTl$v_Q zN4kM;;<;<;(NHRL5U59}LcEDgpB<}Ef(K$??G6p^Ee$Uf*h5bI{xb^Y?!NbDVbrnm zY#`kAu@?~g>{sx|GEkM9-?z@-My_@g;)21LbPv!0%bf_8tHFs?eO+r5l6;|)aWa!A z`i`r1DOVT@y0Q`tvAhVy59UvNd5~vY6qJ&g8h*=gTU+V!)h$AWTZrM#yi5}r)Uqt} zmx}Dpml;d=f&rD5P_&cul+~k85`=pkxUeTS=wDA%bpAGX-|r7Bd+(ViAg5sf69Sc3 zkz|5L-7NcrbA0|?o}U%O1z3c!)6(N(JYqdSVq)1(x@C9098%NexO3sXyZzOhgT`|y zc~S-0jMj%#15ascQ0)$3qR7h+TF`Xpx#nhPZs{LhXqZx!(K4OnhL?7pGPYs9tYsQl zT8tv9S}vKrSIWhS+Z%ooyL&i5d*aK)@T5@V)e+71;nKDxD=3+L5~&=px~49TJj%wn zzmqx<>IM!W{#A@2AtB|mwCm*a1WUP&us4^e0z6qM`s2Q+{N|#D$0QQ8~0OEBQzN8}6zf6cR`6kg0u>em7` z4)a6oCcK~QnB??yLRn{<9TS^vRzlRtw1Jhp->Ow=%t?dQ-<|~va;yz6aq4YyE?-P8 z`7sO02ejP@rEcrnRDXv8F(IJbNfz`wb2X{U1dP(kN0+}o&BFmRgo_d zatBivY`+V*Nsveu63TMkt@}VdEc4aovEjAp2+4lV3pNl|^HcDd4QLCCtAr*oqUKGL zQvBor)QOyNl7z`M`s_{@71F>PuX@GsI00R)*-|P~4 zK4jBdWj_1EUR&-M%0;7sMeFALYQ3E*1o{zopD>oC4%KDrZGxjY_ zY3vNY#B@6Q)(h~>D#uU}!U2Ny(O!aa-3!n=b+EpxQ8jF71X5hO(<0*@6ykOX{dNbP zNpuh`i0Du8Qeha(YAqQZPYXX%R;obNFq)z?J`m{OmK2CH&X7Ob}i?_FGH`> zA>%+m9|5XXFdbd@VLMVMU4huaH-v{Gw$fySaqJN@+W^AQA|S4})SUVJb0n^8hpMMX zzwEn7S-zz@`sB+W(=sC!S}GRZ{^k2|YvbEih2N%a51-}D(WH%Wd^g~Ao~0aJq%#4# zs4QF(v|@B8wGMOjeIx^wPiQqX%s9D`y71yk{Jp(uqac5IcC-3Uv61ZY>9Cb4lMaVgbAIN+4I?L}F@RyJZ0dmb!qrB6ftN7?t`_yBVVJvzoV!-Q$rgm#!X&lO_y`3au+v{2d3d&Ezm%m7TJJz4dxvU$KjIMaP7s8QkYEr~*pQ z1_uPXLO&TPA1cvuX*Fq}98oHLQf0ZL+Dm+edvGr3=3~ig788#%N zwk4e(?Yn#{?M)g_gs=iQA>~?Mn7(JBxjQIERW12CXrB4b8+ez+iQ0VHmkpjn`lFzDtO9 zAz8>bBNe>CiPp78QLd}BZ~z)nIW3dBMj#pz1`2+Kh(q5E$Xq<(D&1ky^yOAUT|9AI znnco_Jo4;I?$l`bJvqAdhGfa(%d+Xtk1SU6qxszJ4yuA5?ti(yJrQW+oIFO5O3}FD zwLo7U!DCT!5%b&jWXX7kg&5P$P@=9ICT0Mxy{os zP*mcKn~U2iL3T;*NHA-kiO4LBNl z^_FVQJG7lENlZ4PSClhco8X0B&DvhZj$i$AumjM%7n@BTT@566;*uiY4)f zh78=$lI-4-`xK7Q9!y_BMI5>`?V?r#=l41v{>!3Q-n`B3&y>4N6Tof-FG!S;Jzm1U?JEo@tb& zw2@X219}zoa@&REdrN$ZpwX*KQetp7XxMU`;Gb__lf>_~XEMOUzA!F!AtF279DW_b z=)0t+s*zoFQ34&(s?1L7kC@1~!{~^uVUquK>aZoNI7BEIydhpO0$GC{ye~gCiAzG! z%Veoe%%Z5q$AoTbm!(jyxStugrdOb|7I2H&OltA*Bn$y@*Q*5A7z+Cl)-6^)cmHTe zoKWqn60|Qh_Tw*sqrcY@%9Zv(p{^xT%5f*nJrXeHJERi-=(i>oDV=0UWEh{6z z8ILM@H&f3UH!W{f`^09EzvaH)&$_)YZ7~%zMIn-|X*C84g*o&027V-mo9b-x;+Ff( ziv4xaAg=N3sJ=O+#BsSZf)MQJ!|(}GAnEWq?WTwUr5+X49+fl9^4~8H`o3~f=pU#! zQN5XUzM3hfhoC;m@B-gZolXw?V?l+-`H>n&xW!@0yDlf3UR~l0qragY-MbPuHOthQ z>y&^BN5?X(R1uV0vtO9or%~b3e}y&Y(&DX%`#B^;8G(jor{_Gs1*&w}1;Q?i4j)?+ zn+CnA>MG4zab{?zY9H3ElwE9OiGQkkp-Cn`hDjBsjvVDzJ%Ii?UesBS|6)F;-fn~( zau+pihmV6-@HdP^p0384SbcM~MC+`rgbq88tll%Hog4ajND5*_)X`*yqUzDQ5!$;6 zo7u^b8;!sHnu(wMMt%I)HzwG=lG6sTZO1HyOuhygJfLBka6f`+97Tbe2OlcmEn_l) z*H5|WSviRwb74MXh+Qqu1_W5+{}2QhQ5Fz-R{t<8n)G18li0KprHjUh=5cpwlF$5_ zbmB-;c6=X@wg%=;nnWs?^?5JI3L&Y~AUTco7@YJ%>l!Zg12RPJ?v=Gfj^VufSv;k0 zIJMUHy-Gacsu&xHDW7?Mz2`oDaIHlU;4PG_Y+k{q!BXK;EpNz()>C@-2B|v`H31KC zNgLR!@+0Bz2ltrc*;wKVKmFoghr|Av!{eWT8IgWO)<3gKcGUX3C~+^p=5j#J_zjIz zNF|MCGZcYtDn)j}j(l`_9&i%0ZCI&msNNosa#5C#4h9GUus2QqPvwL8%F%5Di(^O? zCN(X+&|g(vuAX1#P{x{shc1!{nb3Ore{JJ2p{nZACq;(6*jeVL2GfZVNc_U2}g#P{6QBJ@`4 ze0?thXu^9u&#`XlslF{**!&^u7)yQdoze*J;SjfQcCFNsAa^~cBs~g>MRO|iCHSJ$ zOA|k#{lXrLYIip%zZyan5jsNjlmfRP#nQx1z+|jmx!I(C0tGi}pKVd2Vw_W@B;mK| zq|}4020^zlYxrEG0GfnMc=}~G)_;>hbliXiwiAMoVr^CimFpek&l)XZ8^m1! z-k(1N-*z=)l1ye<+KQ%2##C35SUM7lY20#DZC-b=r@G8gM88wsNu-dJ+4%HiqXYJK z!ae9UyP-k>LxI!Haf^`LjY6xSct|=*SjqlRkMyz15JeSFu~ed((d_H}KFE?5TZR)C z2%*ipeFRlBsLtXpB4hyUF#>_3JyByAkg7|x@V4!q(a?=3l8b;q8R4DV3Vzz}a z{6Mhw#3m;lU8ZUw-aa;&Lke<>)qlwDU?{-C_b3Fc4|(6ylT;eXY2_#(3;@_ICK|+s z<{Y)E6ESkpjOn zLbSR|8=sTJJzpP^BlhN}g9cPxpmCg%Em`4V-=rquvTYh;uWJhrogvh~^n*U!F>$c? z-tZ%n&oe^z)OhBFSTh~RrQ^xs8Y^P;%b`t@_F?-?!-d9U=3h^{3C~3={?(RPlo7N! zC@aX~FVsiMdmZyj9%aPnCo@OzW&DBU-}?3OIE(pX(%@jBNzCwk$P3u0s zREi+5VAfQ9TR@@;GR7_6(jNI6mYE9z3AC6J_ZkvsKixDB~}BX!85@Z}Q)AQ=}Sk4!=_!fh<9UT>@U6gauO_-L>y$4%9R zVQ0j)UM0`tCtYmSp5N^!t5B&*822B45dQZSWv^b)`vcxO4^b z2kY;jOf}tsz4$qXY}o)8s=8~T2Xi{_g5)zkZ`t9C0@;LQ6M_-~(V4;0f@4F>m<(@_s$YpFlY0!lkynr6%SyGUeSgeh)P}lEiX) zSbbJfb<}LeN|Q*@Teu(NX8`LZ27>>TihwpcYyKu*UX5o-HQV#qbo^_IG%^SbWl>z? z%FTmnJ9c<`@)1qzyjUXjm)fWkqL(^;+<=p9(THwj0S&u#?=<1#IkWLWK5`tRk*1DT zf=?A865}F$d5;L?z;#fx*5qnJS(O@~#{u8(iT%fJx>8EgxrL?Z4eEP!1K~wc&1Kx{ z^*OgoUZVKSU=s4?S+CA9`u*hP$y-#1)5(qPviD0mUb}+`Wm4$GCKH|f**Sl1P7a8n zIaaMH?KXc}yfr^y8*#mHxa+51_PYu9BlConyxVxm+nB({`rLTDCZdk#tKtPXCLVi? zORDW{LKTXdSm5h$_ixM-ud`@JW4XK==SLs{4rNexw9m4qz`c#!>aQ(=^3eHQKr!xS z-t*@5>%G&}+gG7*ccDuyEnSn~iH`A>h$D@nTtU9m&yuQb2@Qb6hCllDjItW+670a23$AE?vJ2>rNxqw-Z-xDke?}bG z@>nax4_w=X($pm$?k0r<(Q?yoO=PMXc=TcUo9|Sm4kQ^P9y3z}S_Y9~4O|0fVtQOV zHtq1JK;l3#<3IEBu~FsC%6YfH#}zG2F@)>2y(6y=Cd<4t9YV}ym|=hi;d*x^5%%gu zhHHrY0HUApAyW}LQf8gDoNhNcNHibI_zH=E75hz1B7{-xr)T{M2?;PtC7GL zUu1sUqJGUgF8wxN`Txu|wSkDokg;-+2_xywC`+Fbre$}K`M~)~sQhIENJLlM-yw~1 zBKe-W`baR^?Ywx;1>At&s_u`jrbd16(4o@F>~@Ix$}EZ$McVJ@te(m5rO}aui|*uw z50I1(xS!6ct?=a;hs@PjN+xL(yJG$aespi-wpMqic_@+h4<-g79bshXlnZ3;-j}VC zy@fbNXjs^A(zl!}jAaP9aokksb(bA|LU^dhG`Lnew(~VawVXte)VzsxPdWT0BLsg-*a7?R*}5y( z39sE(^w(iP$vC(1t0jF}y^%0+OgHztQh@;)tMO<8a}k|iRWf=Eh2^VR0UU7zOb!lK zeeNC7aBvzcxlwNnClQw|mgT{VPZRwm8sP@2@1Z9zbQf#t7uRs}#Y6G^z?rp~uI+kS zrysi&*VtSa`HNOo*07)8_5oqi4Y6xV4H|AuxLtn0V}KO)t)Ec<-X?^5P4bF>+d}!A z{$iWG0%_UxH7b|;KM$q5#U&rd>^^!a_yoP)R%Ylo&zr$>Z)B6V6XR&oU1RP;kk3{g zi+!N0g5R--q!3sWHN;Q`Cf}8d=XARPsk`L0I}9w={VHhrR~Hlw`IY<(zK$q2t!$ee z<~$6zLAs3xrwU%!}Lyep80moRtw8ett16VLf6#zbr&29-lTdC_)*ZGbvR9I z&HGXCcVN;HAltK6_WHOgt=iZbaurQ$am@>8m-(My3kIw?z192loRre78RJ)-&3P0M znwx)y%ovSJaajl@)wo@s^}qH>ahleXt#D-4oy%l~k+pfl%Ib>D4aa~*J8_B`3#q^1m&49jx+jsXU& z1cTsCm0-T);y2Id1wJ8Fmx~G3VkS8{^a>~wMZsFMZ4Kd)yO8NOO-5mKxG1)-BLycv z6S4BDd{K^ZKNKqr=m&%?LAz`?$nc@tUBsKtkoau3cyM8{n)ZVq&Ym#OJj>^ru{4s; zCW{O20weIGtv|ES0`mFpQ$ zZ7;{ZRr*(mITdAbchB#(-c99UOechN5P-r8pN<^|6@f1EEU+ZIH6J>NVIv9{ zHdxo8XP6YfaM?QZG>hm`&|bg1rOpgzq(nC`hX8{ekik;W+ z;$dHIKE*)p#|vX2VI$F0_&l<5DN4r8hp~P9m)fwzGamH|jYRnSF(TPala+|1ChnoV zk53T;2-n>U-=uYlIu@=6(XEq^Tr567>QE)kVt`+f;gXbPQ6;y&M80gdmWS(nv$F74 zW)_?{Dz~rW=#d)gZ{U>V$gpRgOak=XMz&eSnO}sC%1!jG7xxW*6c@YiI76PMAJZJ~ z0W#L#C+GESBrIcqIi#7cAQwgulaInaoTH0l1&QwjJ&F1>x=e-U(R4q+0V4ohb0i41 zscqymy23N6LnO1rJ23U%RB{nH8B8#z{HwqD(w&~Kr}GMX8ql=cQ}cR$%s++d2~z1r ziy_UtjaS@6$tfGJLhnWFLmD(!On@2B7{2{xKDn$@8pD|gZBep6u zDL!>i{tvS#G1$!ZIXa!kYhRHkQiKR-6U4JZ6>R&vFQ5Ku-;BFk?~l@dI`#4KS-5+u zjHajNc7BYhx!Q~T3nLUx-;;DjMb|ErOaAGGWJ48f3@~Q|c!8@yY>D52!NDjSc;L0G zF26HtEcf^+Aelmdsl0)xOKeQ(jQ-K<_b%jj`xmdTGVSh~_=jKS5k?wR5z2`s4e{70f6!f%gYqQpRQiFsxhG*kbY7A?w z8!g#+K~GtX_qS`urMyf;!R;&xq5trHQP0~=1zM`}K4#M&_8e`-&fFFYc4;lA zgdao) zWX7~VTt zc(x9(WO^QLIgH!}QgKtWzK8C$P4g4qa0P0=PPa|55Qh9RMHY zC#e~9G(yD=IE?3+ST+}ttrKh|q6X(yv4H}3kXhbnPOYQQc|iac)caE*dzGp!rOOMf zz07Jct4+y3(fx#@bFqBcN08i5<2G!9Q z?Hd#L;>;tm@eZL}Op8kP9Ss(uz)MF`=>9FJLL0%H{NqSb)y#&6e6yO@3NU?yYM30V z8m0PdTaC#;9ZxmJp`xSgt{8jBdgRReQ;{W_tr=nCpitc@1UjN#7{hrYn)M_wo6i@a zNO_l0==k+0I3s#0KZ^g`#MmQ_LU~qg)|4iG!I!Rstzdw9dkI_P&R57bVM`qkF6F-* zG~gD6S80?qxS>c@x~EVQ^!_ze^{Xi-;*MPS2Z$?GzWTjDkV0$z;NLW-YAXkfh zaG>my_5d9^68!3sw)R=Zawy#t4oA*K5vEINqY@bWX*BNJ)cy+qc2;~NF{jigL!_G7 zMoeFlm2avf@$F<}wSxANiwiyhqCTv<@;sgMRc3Fay-8vwSsD>$xYBn43&wOp(v+X!9DB zaC=^Uzul)uoadeaN>tW3G?)QCCC8V`qEV2IC!BV^ov6XjpsZHP`}F=+ZTTCu5Y8&!SQc?nJ!5CrqTJf! zlMCWc=iGW?@APjF5lfE*$V!%T=0jC6POf+C532U_3nO2Y8pI&f&=Hc-X2?>`DXXRa ztJ4y81^O-;tQtj0U?CyT$MwN=tLzMr%0MMY;ENT=!KXQ(31wr^CFr6VBV6}CMJYZK zfzm3F9?UMJvs2Ua5r1A%Z6&|cJ)nX@^(65wv?#pykrG8o08Zn_P?T=nmv~dqaj1)EvVL;2HhU)9FiEF(JoqgukC4L$N zsPox*{RJ!X*uG8`m(NUz8U0yPrfnJqOFL96oMxgk#6+D0Cdx!r6Jvo(0?ksQc6r!k z9_7nh*=g_gkau#^_`Uni50{Jtg&i&@Rlb%Re-m>BMEkx&a}JQXWRf^!zC?19Ko%vxN1sYcWTvc^cC@ zi17{<**u)2LiVxb^b!{qq`S|l4G;K^UDL97IgUs3fgZ^?oWJ$b^Zs-+>+K+R&oIiJ zmILb>bRz@-9_^^&`B<5dppC#=>O>$a8iTo;$01$;FdL5w8kI-tx=9SC(_v|~`N_XJ zFn-$+DvL~`n*XYH^xI~9*;TB#GQu+$fA;!lHo$ZXkkNB8kto}Lk=wMt0yN_CIz=}t zMoKY?fmXQcMC06ha_9L1^CKw_$0V7H18N<$ftR=38_(TDZsxJ+ zSQu@;iKA1B)Xmc&ZPb|+V3qM;=vgEbrsKyP%kqN>B>;8g6`=qgaUvXYfe&G!TUot{ zgGqSX;|WoLSr0V(d-)3HA`*pesiv;kWwbqx>UUmkm4?^x-H>fB#y>8&6;&0y93kQ% zGm51n%+Ig1#>V^y9i@xi2FDokh#REWzqMiRzsD$riCu@)W8+mNz}^$N`S#}>e{N4J z9nm%;PFkO6k0XfIR@t30}t~#5#M1heT1v{}sJx-FY@^aW^`D{|lD2$t2 z*F8*$X4#N_3(SQVg0{5@y-`}-Y0z2f2=VE-`8}hyE0XvR$Wi3?$!|<sa?-YOtIv zLTMK=dVzQlDMx)T?sfRg0GbzLUh-jGLh*xYD)Vuki=513vz6JsGx>O)v$-AVS}P3L z9hyiS?@IA=xj)q)-T725P!Y^Kd;(-{EIWX2n(j~WoeyK6a|QhPsxY}M5zw@SL(i{X z7+3RMP864Jlc!drbPJ5gnWS|DRYr$Yv~#0S8%HdtG*kzmTBUfZ9CDV`^r6KcAPWLv zy#ycFKp%cW&xTD6Hi7rPC*}GO&q1Q8v^u}EG+gX?-8A_`-c;2}^kZt(lR?|vV;XQO z70TneoH@sODQ3i9iP`TYtna>;4|<@N`l(6Xz&&7yh%1RgE;&p_Hk=78Rg>k7oW%Lf z#`81%u5||dS;NN(RRk9OOCM=P{*}#)eYWpA8_i3-4Yj!)n>FJyP__#9OR`57=$?rjh!LLD8Ipv9|0;gm6BTrcu(449$R>5wU z&<={wt031Mw2vLYstjEHPb(}sYBkuHYR_xbW7nqu$x|rLE{5Z_nyiz=#kTsTdJ_MY zV3pLYEx0j!C#;lkHkBzl|H{T}@#U2p!l_U>ZRrM@#mXC-$IjiEvEdM?Q$s0JU}{)i zckz~n$2Z21p%`}pHwJKsd+B5Uc$hTQo2dojd>efDK$N=k-_Bg9jXuUn58X@lla(HR zK7HJKzCPWbGyT+|9Z7M@nYM=7YB^pa=W@P}Ho$&5k=MQ>1^?Ch@!PaG3Qp(INMmf~ zCD0mk=l~U@pOF5DFi#36WOz8NFniH?6T8Y2yY)BkE36%RiUR7-_b~RWx?eTm|BA?T#tw72<(Ffo0_Q?3=X)}kw(<1T+eJ@9A6B?5>tOIFk^h<`evOu3b zJMn|nr^d9l3jiShqZ!KdNlIo)z(thpO32T~{5hg8yrYaXp?xTvCYSs>8UiY_bF8#m z(!quIr))H&j^re|2H6xkd#H1AH=Lgrbc;$A>aWBViu<0=tBxlou8eVcEMyUB(F30E zwQ_L974p5TU)(h7CsWI@U;g^LS8uj4GRm$MHprU+e>GkLjPN3RZnjgR*dhNMQFb95Mz z=AdYx>$c>}qxe_Ll?YXnsquC0X%dS7FoLM;DHOf@o&D81Z@H&l@6Fy{))kZmDUdrti`m3VuR27 ztotg`8#bwOM^tBY0^b?X)VNlW!}uLqe-U8;(g!2|wMC@_cTA2oqaCadL~g{^@B~Sv zf#3S_H$+(SGA_`O*t5}9tNF|2ITz%VsCVV3!x^EiI9&hBQ{9`47aOeMF9*Z_gseNGE|ncuy=h(cgl)D z`7fHkQU-oCI44;b(FTMsCfIF{SB8oCxJB+v^toQ(gi)s&LfP+jS?W^xuUB!OMF@e7 zPQpk*Qi5LwDme|&e5@(*01&fAo(Dds#06d`5lrhP97j+7=OF)1Cd_&}D zI~`XbK^1z)@ue;BB=b#}oO&Io=A=`eb~wTJ!hUH>a+q~fOO{ge+%mzp~tUy(47@)tKAW3q~iXg{Sf3uLSm z-mT|yk$Tv0P%n>Latuvp`2X4P>Y z9KGV>zoer3nJ1I(8!Xmcw_SqzBr64+6jy*bxFQanzD$mLjEeI94p+NVx(@Csx$^gISK* zb>9w`)CsKS2fHz9#SnW3;f3WT2R-qBo#vog9f`}bhcWg4`T=!4C@1eOvSe7m?!=xS zcH3U_sW_=zw^!Vl);t3+uD*a6fFySPDn*rY#vM>64E&|Ma2!NYy0HCQog#{JX*vx)(Q+8uvQF+RI$?bMt9Th{Fkgx+O2F_VMgTPxJo) z>_8L0(yWY=eE^c}K66bikDZK4|HOsrwPid!Va*6`S9$FC!Q1lONYQ_d!F@1G?Po9cN|m>^;63y6xkl^ak({WG?y% zBx%HdKs~eC<~nA7zgk0kw4Rjt>Js+-yKLO+ZM|Qlc~?H%l_dgMH}S2rc;d7Jx56HHYTUq`LW^E;?vxh$PAG z6F12^4^C_D2ctT`hvm?P8~WknMM9k6u`;=}wD#pv->ar!4uUIOUk5A_k;0_E_RP2I z3|+se8|&bI#)waJuN5F)Ej=VpmdhiQ`{4UiR-f}~4SE0fo!Ykx$(K<9av%C&Vgeuw z97oMK0x3FpJ7YW)9Q)yIf>oUjGmiKaRM3zi?f2&{pG?-c)e}w z!&E|t@A~1a*jG7l=s+DJA_D~j6d=e=e*|)~HH$OT%B-NG@6g!%bX<)rAl z@!u~Qkp}vCg|elQF^dlx@{6WlOtNVCrFSb+lE=^8Dr^4_Q3THM%O+=N7-paS4;?Eg zQn{0V4O?1%+>>6YB%vQHaI|-5_FBAcPbr;A6q7C-o|r^Uf2pd{&_M2@DE4{#a?<#- z(5w;?Cke@~w(sr>q473no~nZjTsHY3H`6X|CXiu!XHuOiGC8m10&m&m3O9ZS9v|8PoJw=NWNHd!0!$~DmNRH zLvp4|A^XnVkeS>5EjP;tjB?BLO{Z)DXN=x#C$^(kN)jOH4w-dtMat;+_I-jDft2U%-^RU0e=VmM6R{TDD!&PrSqhh@trG5IfHEme_tEt zLuCxkG%8^))e4ZZ1Lx~xieP3w^~K8ay zlqk8WVf@|nq&j+0~X=dsqjT}Qf2++@g$!k^>v z^|@Th8i`!@0APtsD=XNqmmZR@9N@wG`dTSbcR3RN|5)Ni0FR(yQ|t2>n7?(@Ob*nN)kFZiyUn=sZe)fqyG4&}iA+ za6;$8;77(5tTsyK&Y&`U+`xwq|B@bcipsc^M-;G@CsQgpd*zNij3Z8AYscOq%?^=cW|qLd~uB2DrnT897M&s$9+g?;t#V>>QZg!I@kPw6>nvzp&fE<>9< zHlSa0k8{9qAZ(k5R4RwSxegiV9n{A)eBY@;yaPD8 zo*y`ml?TFgb;SP%1lQ^N^@5npuP;@R)?cnx@g7$oExPyYb-%n;tKP07{SruN)u|h@ z`t3T}>Tpu~-Knwp@;GSTcb%|F86_CpPz}S5dh*)iGSsGElrP7B9n-NFzE)E`&Y=vV zyD;a~>Iy34w*$DBs`5%3u5M0V4~wtRf|*p)193LM+~lJxx9-W3edl#C3@DFrCrzAK zF=5F6e*J8D=U3=P`sesZ(|gUEIhCrtQ9}H6(@9O{^aVz?Ei3*1*eO>$_|N9an946J zLB{e6H8pvGtVFFwi_E$sy43^OMNWBN3l1+W&}%1?p`T3T0MTq%WS6{LdeM zMlIQO>YDVNyjj)UNTQ8DT`rez-4~p>+E&Oft-f3pCp~|33eXb2aO0j|A2k$7vOb`|oeFM|^@tY!yC+c`L2M%i~dV0<8bX= zC!me*f3qaN-Eg-PG4aPw;^d`U(mVlyASp-l&7$W#Y|b97X0bA-U4-hMD}f`VLL-=(BbeKf)Bun%eS;0jagP~(WrDT!9V=$7b({09a9e7}+jF)vy2oy-=gD zg0fZ|2-lforqs#hiL!ZR>~iO+QgD8&24s`RKVKpAj=I(;BKyu=lcL$vNuNl63qwF> zW%6Yd^pKbB4^J?lxvhQcOUo};8&-5nmolkzt5HPSRLG~#iOGyV{DQr`n4bO}J^F7~ z9G0<>dgGMVCcaQHUiQqk|KcKeujr}!!<{QGu8(uFaCxQ9|FL%- z@HOAx|39%3B=(3MD@d%^drQpvmR4zL(N?RJqH5NzQCgJlp;c5>jZ%B>z4u@H#cq~k(=bs{{H9j@IZ3!=ktEQKjXa5Ij{42mC*MY8^^C-uVhny+U1nan^sPY zlr(_{?VI=;S`e|n-mfX&Y&aXMQL*ZydWug$FvXTegiSe@k~0RFjTAbdJR*1aBRn#u zm$WXTSvhl!;BsK|GG=L{o8{2iMI?oOg?NM-=D{mLa`O5^NtZT_0POjG(>bjJlH!3f z))?)QMr~CgzmjO6vkeb_GBrF<)=5RXe-XI z+b+a%jI$oI->o6N=kB)~X$cviw`T5kxIXoiuC?)d@766U0|H9R;j2ON%6HFNSOEs2 zh_>oj>e)6^J4Vxg@ALdnqS|}uo|a({x#3U6QLAI06S7^O{d+<=D<~6!NdXUm(SnI@ znY!kgaE>L%XFL{uqIe#6rCTTNEYn7q5@X5osoCPAL27ogB>%MHO?%DPDEjj z`j1<>G*Y%;R&~mxZueZcrw$&6J+*_MDs~x-RPWXMp|bja*bVKqtyw&m%!pBwA|3bT zYku-)j3gv~LoulE{xmMBq8m(~&P8UtURg>ES*}B&Za=g8Rlqv1+{a2MQd*#vV`m#oVe&B+`dJNjD0AgIa`&gshY3r<`|C`iJ33cbh zm8W8}ATRoVJWvZnLdz7i z2qtGN&jvMu*FB^z^6^5$DIB06m3%r81Ku7s3?{AhIKGJ;;Gid z;drNiCeCIFU@~1*U_x#_41ZxqSaOF%`I^jfQkJAchaHZc^uAPbY=b1SXml zUoV$ZsitL#u^5j*FF)-ilVe&1(Zi;k1MrOv?suK5Xo&~rx0S~n2XqNx5fKsWbk;I| z=D)6g1NnW&MfoO%ageOgpYPXH$ycM~sI|_Yoa3JTthxA(Smm%8s-))9vK*Z+WmO%q z=WIjgOJa6-guiAb>{V)jy8EqKMOFQf_bVxCO0I0~)_>eky3O3JNN-wE;kbue9V76< ziPxF9UN^_o($POaa+}N;f-OYv+fzY*RgGdEU^LX$LZ3uxAjgJc{fV1Wy;x2O1c011 zqiO}@&z4b6S+OI6i{l`yYFCKuqu62qkppJSQwF$4BnPt|Fivn1RNE%e3IX1X|MH$@; z%zJ@;E`&3raAF91G!jQeiSNM2=q z4_*rjwL9SpWv3x6$~aW^$DDhG@(#V^ytjDwm?MKbv_%>5E0RrKF@sIgoH3aD8MFhS zUj-P+yK~v$Yq4DpfLtM4!bhw-c}x4u3Fcm^kYCH9Mw`~5qLxm<1jM(0&NYf?6mQCj zlGNDfTc@N7u7%dJ+riHbjWnjMpnE!j%Ub8{f9POj&zMZap;opD4%M(_Q-w;aw*+-l?XS zj9Ge2n)>8b1U+d@c2GZmZ#gfQ65*O>@sXh{Vs0QWWA z%X8kTuJ{5L95EGcIQlwi1xamI!`w9|tFX3TeX~)@JRC4W#peWH)U&qkh?4`@Fn5fW z`rL%J2E4=QW%d_ZVI#M=XB`=~=!ixY;6P~aH08YSSgo+$pY}q3aGSI48$WI!Q`VlA zB?qsW^YK)Dh8H;N)<2$#Ab6V*t$k(6n$y||0C>=z_Qk6P=Dc2W57=`UW}TaoC4@2A zGG~yn{~niRhmyzaNXugVNgJ%%%|k#(&vlFP`DFa^6Pn5Vp>q{QtHXI=wAW(l;Y94D zuYc}RRcei2r;coY`{2eBFlAG0YbB-G7qvQ`8q-|*&p#O3Ws=xp0?>w1yNXv11+I}D zpai_*+#My_VPizc6G0;z&nFR2^=~7yqgfZp0w4OUZF%v`;`+iPz0jdYMMcZf!`I~> z6Xd!D#`WAG$`{P4AO;lENd1tS>@|0vM8?!VXeWcEE@Os&bXuPvWzJ>*F^hrCOY2T* z&dy6(tEXWfw0%Mb{U0gMvQ9#1g`M)zMEjow}_U3`ezNqXMMWS6k#l3Y4l+GAGd0 zppcDgGO$@`X823R#oL~ zAPPtEjrSFj!RFY49yQeoZ#-#;;CaV^6EbqWQx`Y(hm*C0ga%TsjOo+Kfh+eF z;A~^I)|~TN>oa77o0s!cj6q`dLWdq286{t=JZba3*#G$zkcx$~%lti;)k%KT#9L)s zkC^m-i2}fbrgU7}ate$vN7;=Cdh+U%vNV}H*!YV_4=2$~e}8YKj-)^TpI&vO?Kj(0 z4U34`SSKVKQKd)@>D8!&yz$en=dJ@RZ`6iTTD#_^JUOI+*)=)|YY*6tr10rB|K>A_}4+ zHg3@6ZaDQUGe*!S*)z$cRi|{bh7+ep9Igd0C%HXb<48mQ-J_OlIdezr)0AF^Ek2^pPD&UP2>?E9 zTvEm^JFX>EFjs)sc=z!>S+qY;Io?62(_+ov9jX@Awo>ZnfQ9WrPLtSuRy=oR>FZxg zQS~Wu=tRhU{yZRIR?z27>fr#n7!@Ud+NJ<70hAxgZD(%Q?}MKn{a;+2Z;Mr&js#UkBr4)o2fGQYNoeBF5y-fl?aW4&K9TN4k^P7|E=SY2z#Pz4K_W zGdc<7%jC>;(Fe6;-=!c;*{9Th$h6YM0l<>d38Y+P)WA3y%XQZ28T<|OzD+wGw^<>?pSu5zbB8v%x{WMYLMoC{+^bG2Bq`p zZjZDJyD0jmsdE;<;lKa@AOJ~3K~$Jit47QuOQ!VF_s>J-p3>~kQ6C~@#Y=wDs}=MG z|8MWQ+80UYfD8jIBXf6M(#^<&80uT1Ilz4&1W-? zz&U_$q`i!0RQfTtgP1*kX&ZhJCrZ2EFE(VYrh7 z&DU`^W`~dBr$#&=v!!JA#s8KOB8s7q0^`KmMb~e}UhpGSz zZD>KM+(jkl#xwnYEZXZ(#hR0DAKbExwv&N2wx$_@8i3`#-*jHCKMa+xI#iOLbM`3^ zyXlDbNwZR_p!U`;wpYWWoo`r6AH@}Lj}ei7H!hu5!XpjB3Uoh^J>puo zp1w8CM#&M^GNCcii`*Gyx2g8;Zs=0WOR0#_Au!(m01e@^wl@ah=eMe;1oUSnt+ckd z#-Q!H)%Mbo<9okbw*;}_exu%m+c|D|bJ`eHDmql`Uxam6uir)Q~?<km|G*4_wz)%Z6BBrqTAfjq&UB@C)9rC4oU9>X@&Y(0;#KxuEu8 zV-UX>4bU3^W-^du8_|P+6%pGqu#p_T5~P5C=6x6MDf!ae-IrwEZtDhEoZFt6*+s?WxXCoqs@v97nH8fY(ICYB3JH)Dg~%L4dD#{u#kk1 z<;v~uswrC1i!cIGS8Y9gOQJ2Qwir8qV_DO;o|GNA+G?lkQmcpzYF|yiPvV8tnl{Bj@sEDc@qWWnJVytzpP228JWvD}$8y#XIPq%5RX0Fv3#I@K(q z7yw5~D?>uV0|EN7v}YD=JE2xgO_ALhA_N%i6htq#gTr(U$FDf4KmWIP9W5Ws+F?-Y zdXaGs9!zc?Xf}y}NbP|7ymH@vw$~!5u^NB>_3M7R=@_=ec8wa!%BZG+z#?IkOjw*M^_H%dQ)Wi3E+Em*gNfT2lpuP@K3*;}`2Q^lC zUW}hpT7<8G-&@-zv@0jMGrP)M6D*9i&&lyArQ*P8e8Qy^r0n zpBczxP^R^~^Qa0Q8!Xy0Ml3mI7T>$Iu18YGg~pbaI$Hv@;*-RG#2+JT4|*4=Q+j{d zZ~;(qb~`k}U*7m}ryPwb!Pt8~FRGb?0pa=JoncQSihbud%gC+z`{q@^8)cl{e;l+s zOCIaWJpqXpSR39&WDMa*C(wX%flVx6${r0$NQWPuiM@ai0t3NDeDT4+I0Q><07w(F zF(6W%vEhuW4cfwg=x3ktMkN_!CQnC7$CT4OLre-ii{c0XGXg9}E|s~$GG__E{^)2=pq=S8d4tny@W)wDzTf;jk0Ds*z|LAac{X>jl~^IOVT$gkTj%H}iAa2+VZq3HP5FVCiuLRA=C0T9R%MiVbI78j!Z@KEZTjUVz4whqKtj|_$A@V^#>V(jSY(1M zYDB7JUZDQAwH+B5pnUOcHY{aqbW9^~(%{s<&)yD}y%+8&h|(HHxq@;Cil*@`!3doe zrt!;#6KVS23|->t-H0xY3buaP_n#tT`A{an_X}VfJ5K=eQ&HP9ntyVg@={M z$q{USUiTWZ;^=kxZF|xsFVpeT{)HG0SxZ_|7wivogz3Z?1Dn_5V*;eakQMs#tpgir zhBH2=0x0+UAy1Tx-O+8)2eswUmHVj*QpwO!79toe?dc&v&2K&kmovA5ReL=#%5h7t z4WM*7ZW02dl6QMCanO1hbL z3}-ZGX2COTJ#$C17wni}$E#^37!EcwSj#{O8x18m>R_-nIg)v}rjtFxnwZT=pPI1) z!s5kctbr#+5|f&9IQn;M7SE|E)#~F6wM|DgL|c$ChC=~RP^a&=ja>>+zp| z8`na-hpmXE5`EG6$-ohjqcr*LrgIMO1d)-YEpzjkJBqfao(^%Asqy^K2IdR~D_!%l z`DEH!^EJ}*Wy67I(HeLuPj_Le-~&jV@40YaGpF{lpWdpX@~!bLL5EIcZd5|E*MLpW zOU(sPL4|_Z6!D74%B^4nDFFR>pkot%GtzfuN32Scpx+VZnb;V}TrhV)9q=yG_dn1~ zbTv^W>_R+{r1f~Au#=20%;E_1hm(H)rF$}CgJrNA3C#(I@Kwi30?z_v3|QcZl>Q4O zG0c};J3v&pBeJ-q*PeM$#i%73|4k1tKSTNKl}ZJq@t5ZD7})9_i7&dbq*rZ!`DVj8 z-OR%I4v^}vm|8B`6?2HCtTFaM%}eP$^dbQlknyDF0apIL zWk{z8cfg|bkq4N`cVY3tSm1z=f9)IARNkMRc%VwRmNA7+B+fGeNRdqO?hAMI-;QE1 z2IkM6$vlU?_V~>>>{yO63FA0_fcux$8hlpWL3y~P*HkDwCs?J9#PsjcUkk#$wjEfo zthHt*#x&DyI@b}A+0-TJVQn}$<#kDO*8H=V%gL!5 z54AghjUws959aLCR2=tj92yxCr?BgcWt2&ACQw?9h}4)lMW1ohTd)@Fk!m#{6jO z9QSfLO@DU&d6!KoflcQCK8u}rP6xGGvufSwu=}M##xMZfYNzAq(b4W;+@AsvS&8bIv<0fr?NXn3w8Ok>RT4?`( zh3w6mUK)MSlIF-HF{J(=2WnrXpaMyGR_{Fu*B8{0YY$}Sxw|Pst3xQ##3!%nJ+m%g zH^_eNyl_`J{%tMTLw$1OOJyZv1_Mt5J;bKWiDV(jRON8bAj=M47XWi~AJ~I_mvhr@ zMr#+wMq@-PA9<~RS|M3^5*c056)_a}J$!+>nJw6zq_g(Hk8U@yUAcvcK;Ra>_c%h1UJH^HM{dN?-?jF_Tk`mS(_X8nG>Y&39ye{oOQb-y zj7n6)zfpc`_w6=);nQ9Mcm+QGNh?puTSHl{z!AXDjwBFZ9*fh*PnhXG1^rE)<9 zVbZPyP!-O918^wlz1!0eJ%TcsQX3mIIQ1Fth5-$w{^uL)Qd(Q}Q9b!{&t=Ks?kXSD zFRrDnw||Q(*kjK%OX<0Pc(bx@azFm-a7qth*Y81VUAAS$^c2eD-pA zS+MVaiY(Z7Rhs#FN@JhAN}NR6nVR~(OZT+KN!`remM@E&wDHTYQjW9%fi6bv4Sh14hdB37WAmC#~9EkCa0~%`T{lMk>3ARjGbKMY*TGO|_ zsuhxD`mb1xqB-Q-PL*vgS)9`KBZEoLIh{>^l%eiCexih8sHx4~by3wj4-EHzP8~6& z=dHtl)#URU1WW)`B`C;w!Iw_l%$-HODi4mzv+E0S%>IOe&NIos11p zIoF%0oXrhXxbyd1kwpg_qkU+2D<7#?IIBps$S+$j%CaMI)vYYCHmNxVL`Yp~dui$7 z*XP@$1qd&Zd_8kyZAXy{pT&`HS-FV?1c_}+2Ly{{GOPRx*&f~#9%akP}GC| zJ}e>Oky_g$4Q6k{SywEaOy8V$yR)Z_ zX;W5_{;$S!eC*I@V;l9)F^xvK_%Jq+qMfzlqF(rfZftwb#q``4#9{D#dKt6nrW>R}^V`{@1l-V2bpsa+pS zeVt6y6u8ly!Xrd z)YaB!Yl=}p`O3zVOfb%wcM(}aBS6`>9%Kh`l}3LFU=;;Xes=G1xCUf^^Iof3DE8lc zcf?D+x?!p8m0er$5_RZdkx}}=UFYv6dJT}%i+CCpOM6Kg_wBmH)S**v>s-@IIj(7w zLKKD6JU|;#AGYjSe7`||3Au3Rk$jRux<4E|bzMkKK+>WhN2-GkfLS{)O2`x2dU*Om zC$2atix0-78zrsGCMtf9D5NqUHZCFlzMe8;{aFPKIhwswx2O{5yfnjdI@4%-^8i7{ z!waAP=gXQ=1}r!v8&BPmS1T71deGpv*S@!G#>bpVEqK4C{JHmv{I&P0IUje5&+vRgL{)oY z@Q=Xy@?e08f)k(8FQwC_KAv%cWzP3e6K@SLGiFGu9PVrY zRvfvmT=8^qnWo+2fZ~AdPg;3O1rQQ5((Op5BJ6>x8oi3YY(1}}FQng@47$0zOuN=8 zsuzH|Jnd!F+Np6F&DcU?sv>62f|>IfqE_azV83M^t|~=;vg`aBm(HWw@PGmVp&_M6 zBusQ{En`EpZD1oMu`o5FaTt&Srff>IZb*Am+5A~$<*^&q8eWQzduT*c)e*mZFLjKB zrb=`?Aj|vIlVOXF#417k)~%ZSxcR&y-9bx3(gRSg?!@&rueTZ(i;XZE1G(KZNZ8%IQ2^oWX2mvzdHage+eD>qcxzwvlazvgcn=|qO?jKl!{8P^^7p)3!2;%DcGT!fn$9A$y-VQ!At9_7!Vf!eyv(z85_ekMEeb?ds?gLgC#W#Vh<#5 zYHyr>Os;8VV!I0BKPBmY?UY_s5R@=&k+!8Do^?REj3{u<&P#Ipk>zgwck33_G-ANi zEpdihuVij%T`_S9!Xh~{X)A^`HybHkzn10lNv}r5rTMg^OCrW|kiKHK$^+kE(gsaU zz3f*&|8J^(1vqAU$4b&{nxPe~d09^x*2+hJ)%F0$V2IwdoVLX-AUJRXj2nT9A2vHD zgJELVeQ@*ADs@Vy4AH8sjQ0rwIsGsFyc1XSuB#b4x`5&v=yC8==2(1x zNo&*ZOlVhLyNbx{k`ef@aY-d>Lnj5H8nRhN1BLIEE0cn9G02FD=W&-trSqzA7y9zx ze{z{s4$7}^Hcc%|UUgD`U&`$&7gSU{wN73JqfNA#N#m0_;9{F=WCs9< zRTyPG-QxIT!KnkZYh2pU&r98!R;W#ZC+Gjf)%W*|3BXdvOoa4K``TNp-*&dghdA=w+IY@71V;)&gLqq78=D9N2mQ+D+}~Cw=D~(1jv(F}7_v znY!k5vQVopRV<*$=_X%pO6mQV>hJmF&my#a5W&+z!I}W#Al*yp;ewecOB~km(aogz zkmb*fi5=pGj~mFBYfe9Z_drlXpZ|VM%~Hg_*-|~ZR33l`8iz|7&s^hvV)vd97JzI0 zYqx3|aT}GK`ulq;V1(ARi+3Mu8lJjY6|Wqc#)9tEmPY^dmVphG|LbG$5VMG?DiSQF{| z^KLnQJ#k9v)Xv$~-#;J2TW@Z8lx!LiIF5=|;anaWw4My6ifd!f?v3>yH;`jsyRx{d zU!hzCnbObk^gbvbH!GV@>)d2sjolRlZ_EQ1PFEMgEb;FxI=`rKFW7rUGtsq6IUkX7RWh1(97!Pas)8_Lp>>?S}##iZwjTXnD!zT92))%J$sdXfj zs-PEhPzxU!xZsec0C=!IoU>mijhUw7sV6Kta8+q284SClYeAtpp+POm$nV=PYIIAQ z0R%b@Fgf;7lajhq@8v*5A#8?>EfzQxfQ7X7?L2o!0a}TFF{F`79N_OQ^%9Y4#F_op zt-7o{dR@NTbWU$jvLRo#uc+F^5P~?G{obvb65Oy6G1tfpp=xAQc7p!5NY2c+R|?$%br+LtB)VqPg7VomtLLE@Qk- z8wWJdO)$}PLPh|g8A_kL8i^C6;lK}G4U(k?ugR+8wgF3;b6!5o9s`v(n6%8YfV^&RqYKxripG75u{Mki2z<6Tac0e%ZpBMS{G|GSL_U5fTq z3u#tj`ua1PGVjy0l$^iyNYbZsksO&_Wybn58nLr^0L1$sl$N!mQ~zYbiR7Pi=pg5C z0HC;2Vx+YSWzVEL52BHmD;11`Bs5LO6QQ$XHwDNU&&fjwnw&rV0!qp7#YYm{K)h&- zfQ_bqtUVoDlSs*YtoiyBjOxS5<+q%JK3b597neVU?>2A;5B#{Nwx039HiXY zJUB>f4q15E=8ij|HR;u`guGSDOR9eMJRd@TO4raCzektG^mS)dV8~iV%Nmi9k@2r_ znLJu!BqAKL=!m>ovxth+&}uhmp>^5M=--A8)|{8JwbsLu#|1=6P|{`Q9z871$w1cS zsV!PWlsIrG!|B9vBz^bz>p+PHjuO=5FfyHFhD`%d?wyS3)5+#Dw^f{m4dUbQr!sSY z+Xa2k0#t^`3mh40fbqFoAVKQqUrMng7*+1>^^2>2#K&?@Ky4wEW>XF(H3w3Cy68Z*C#;?qb|NJ|d&8H55zzjU3sOSYYh%MO>& zG5HS6Yw*`Q0vA9+W28kZZ&p|7Iy3pv3%ggMZ_?^ya4`DLTUE%fk-4MUw{KL^>{DuL zkB&B{)Qo52#|<=S_$DT5NzJhm`z``MM28122Wiyx@8N42ony2x!oJt?t1VW4Plx~X zW)&^50g(GI7{pc7o=FoEmGXa{L(i(nAbS3xQ)T&l)u~tj_UQkWm2XT+ z#7%wjYRfMud$NF6?uTgBm$DAbl0D}b=(lNseZ6`S>6ZX!KY=S{XKS*uP|JU}ZZU0X zi{sGgK?j9rD}@>A3pg-D%Ekj~Y;GLaLy!!o)*jjgT)+C|NlI4I%r|YkV z$iY$Ui&ra%hg(mtr&Ry|AOJ~3K~!4l{`)gDtD}s~p5s{Ar><-~eOo4fB!a`S#Msyz z|IxjMrc~$bx~ye8oH>egGq+yQ4g*^2s0WiNdk_*~72w{c0S%;nBBe4*%+uD#IPhr` z*>mZhmc5+0&62Y5o}o?jUI2T6y<4xCZUXmQGz3l%C%sXhB|$98D2@EI_Eb-npduIP(El zmRMM89HUc>!qT}$5p7o^RgLokT*x1yRU&vg37{=C7cFj$ahiKf+Q%RvsWIL%Bo(9p zr*-htbgHcYPv*>ZW|yiG`84V|5gl{B`+wmxfA^@V{PaVu)C-J%1E$77}BN?^qcx6zGJJ; z{M);Z{J!&&%-ijFxSZs!!S10=WW&ju%FKw-X3f2_(1f?7SEG`eQ9gVnND5@ns2f6p zOlsg23ujmC4)0%oduKy`daH`Kke)S7xg%DRQdYI(F6N6qPrZ>IchiMU&hg)_TU1=c zMLPcI{2~cozwW2)e0}F1dTt4fHLTjjb7>n0b!FJbcu_4r;FvWmq+h{Cya*3q&b6jw z19-ATZg&~@_hE-}=CsE(DwD@7%3*Wn`d|Ib+;^&{it)>T+;w5Y2LSbx1&89aBDE@? zPf(4tCZ*|^Hoj6IdnW0YK=x=fpv@|Uz~~3G%1ruc^VQD1WN9){x5uf z>n9E5=WQ2drUeO0;;-B0Pa0~s1Djo=!9(z7O)u$x^2_cxI_s8Rb0Rq+!T1c1oCk+~ z_SR!%nKU&=j?iEB%P$``Dk+V=uwOf{rLNJ));_|!(%6EH1TPGrroum#I+wMN^GUPP zN{t)q&?(x(4f}UI=)JWE694!l4N?mrpj~U=!o$f*bJ=>H=AQ5DxaQ(FYK;knnwA=~$X!m3AIxz+^Bq}!9b9@hRmsMhU+8YlSjw)VN5`S?di z21v{4TdbxG2pE?>bx4KCN)Bu3qou2^Gxu1fZXW+y>>ASeIllSiIP?!16xa4$fWvHH z5n+O}1JrrDZ@25|P~u{qjlbBa{|C)qJh!`ljQHo60+1)ZQbAGaD3PHyNH+~km#^0- zBG-dLwF`r?op)XjRcSOD(y6q=E{V~P!086%?{FZM{etJSmJy~3o3<7nSMF{YWc z_&?fbo|sc<$WeyKQmO==GF!ta7Np@u%?wTjwa)noQPO`VbzL~IJ?EmEyej#}EL zw67o$QPIzpGtG(6anc>D71j<8YPlnSTKg)%Z_Kh|vTs;ZZG|LlyzqnCTL10-`(Ax- zPw(ib&-AL}H)Lg>dNO{+3C&ufzzB&6ZJs#vU%FP)l(UhcY{%fns;vM>nd5C6)JSSi zSg+?c+VRl=;y-0`vWUJcy{48p9+;#x{p!nr`G?}n&l1PB_A&5tIo(~gJsfg>9JD%$ z=gzFaI0eOV!FHUxCr_iEN?s2){SYX0c7>0^BPBRALjMj5iIAJYVR9oVOkw;t?5uen zf8m%^&qgI}O8IK7i}ydj{4y}0wA8dxL~G z-)xf$cN|xTIHlKe)kpP|bmISi3Ikk9*D0~@QJaM*=>6H&>j)r92lzC2;Sm+Y__b>_ zb%rQIQnn$p_szz$Dz;=vE1D~lEbdw7xpz|h8hUu-Q>i+3t(d0V0Xxm#b49TR7&w_N z0~<;Ck*j3xyESC$+SA%rHRqigDgz7$IVt>|LmDfIQU0tMRRD-KJ&etN02@!APghF0 z0$JsoPL-vm30ouC3*PSt8KJTU-Kepr-?%2*1~!z>mY+zJV8)VbXYFGh9^tPWIhZ3I z$+*tyu-!9A9(Pyq%;u(b{G6Fx^&SAgP7wY$EK&(*qM}_CmCwdC)}fF4_qbdOdRAv* zf_Qv`*m?#%0pjX;JX{Tb2X}W>l^6Q*;4KdheIh|&Pvy?TaJlv%RGZ~5-+L^EE_d4) z=HLdr`m2pZ~wL@_WcBT z$VW}RrN0$YuzQC!(Wv-n;4>;%b0YL*AJ)-M08{0-Q)8P;#Zjx3KJ;l+lx8B~X29t~ zVnmw#`_5IQ`LxYSh62ShDR!d)o@zE_vv$n@EH#yxrE3I$6&nCL0~YMPDr--~B^qPH z0jnn)BWE{gvmu9n*>TQ#w8Zh(NV!5X<4X-b73>qO+8RVFVHW!7PbDP$sj9Bs4|$>+ zHQvSeRLUlR#!anYj!ZJBS!wM>SBD-M6(#-tJfzM!IhHo9i|!iON#w%ud*JZhBu`9) z4@a)_KaPIYt$nqO^<^|K!EGUZWe-|-(r-3%o*Ir{@#irHL^^Z^BrgS3<`pO z_oyZ1Z72d{$#p4^Eu+2!i1Hl4PK{}%87XU*`fLq6`>sPUF_p4 zVV!k%GW%ob9C#(OotMKFUQZ4hVsI0_Pc&V;HK=H%8O6kDmaqEIrS`&LGC$7Bp2+ds z9>%fz*V!r|dnCdHV7+L5=E|$MN4U`%Yf3og3#Q=#x5FuV6rD;xXNz5!IGu-gHfoiS zJY8KLAd9ES`1o{OIR1)(y~tT=6XWcQj|S98wBq6wHR@6n^R838R7=XDz9>u3Zb4J- z+>HdAi@RWhye0JUBuUX7VBMArrl(*qK5dhb5Q7Ncca1o>ntKp3kd=I`pVNIdc^}SH zx#An}o8L-qEkVCoH>Urhk3O4q9&20+u9!u+zANeJVixIicvje7j?#a$5pVXd_&z{c z&5uEgY8c8UIl=VB`(`vG*}D=k18=1+Vx##^W%X|v#z@tCUXh=I6CO8ueziJn#SEW6 z3IvIDLoE2gerFf(6$Zc|2UljdV!Ttwe@6%Yi8Z65@GL!VZrtycyA+#yZC*yp|B^7$46C9U2lBocrhQD;U3Sj#qA4*pHQ# zrhVg{-+gt@cQ)@Ri0ci1j7yocUpbB0AAl7VDNfEb^oANmdq`LzTOHPINu&3s_uqlM zp{RL1sy?TZ%P2`c;2N(uWG>zwV`E(Di0j44(9ITZ*B$IRK{Gjm0DG zT;A@vII4n7VXkmT*hD%WfD^)EC$qUyZ5r65X-Lx6q3F+NEH39h79F`i^qy+`M8m9{ zR>H_q#+j7i>D<;v)y-l{+ixB;SIs4T6m4CEG|jSaik3rJ8JD;wDhs*0L{L0bFDVH* zC^JJ}@F2rY1-ipVo(T+?B;_(VrDV89s87{?C2ss>a)0<&F;zq^c1@)quz5fLGmif+4B3 ze7))`;U%Jb3q8VbY3uXFhf2!ZM_q>}Ys47}qOKLRCGr=3-YW~`g;5C@9#TY~_aTG< zySo!kX_IJZ{LR|SxgxE!fuX(O1iil`*_IwDL~)NN>qCZG6zmBh!uy8fVk22o5<-Vr zPf{N1&LzUdf7pFJb^uGgD0cU`>ln|SU+5#Tn%qk_am?BLr?G)^_@T1Ok!~Sp%kVN0 z+o6Yf7ubs`vH8eJ<3M%MTg`q4s(jA(z?cs8$?>wdfN4k~@KR%m?U&wax>`0ZRkQ@TMQfldGn~Ust>k zVKTeD*7H^#)93FU5^Cd3&ow&jtrC)603_Wq9OPdawfd)!=#(_-FO0p)@St^ z_p^nU_J-VF=A-JesIj3$C<=M&Ie7!fci5YM_Zbhq)Q8HU)eykC4zp1%jk_Fyy+E?l z(mU_|=Vbl_+~<>P8{bdI4r%2^OV~{?rWfr#etI-I{#>ANlg(C>E(ckyOV)-;xZmt? zKk>RK4sH3=WUwr~C(VVmpG$g@xt+l<#Maf!GT@CEGFa;GEH!u$rLh{Bm2SikZ1}|) zDJMN#W!~W(eW20JZ+i?uteZRlH4VY!X*mF@F;N7BF!S_|z)KCW2adTY&L8&g9@oA) zP+9B}VpT=sU0@fy(go~jIF925Pu_zvTzb*1-Tw5%`}s4{VV}05s0jG!956~d_$t98 zeJ|vqUW5W3W4d5QE|5e>xhnWdcyD9Y1Y{vdQ^{6x-zAFMjp}<<7Asqa2hnK%DDSEv z68f>i0ZLUeyA($vv*T^wjFt-j-Tlf$Z7r}m&s+KX+xmDo*_+(p$k3Jq6DBGpk_nOLxPBE^AsBjI&ZwxP`JJ%V?bCfQ4VIN0?&cyWFOIW62DY)# zbU`pI%cUQ)@H(O|$=nhy^7W6Tg){@e0mpTT^DeN25u5Vdnl0>LI^xT*JU4;4$C~d$ z)cC5CsP+Ng1PDAWJ}1A_tTkIva)Lx>d(Fg=DiCrFOlDs@u<2gLq@{MeY<`t z*X8ToB!WI2Wfkgl1lM%ZPp%@B$YMJPEA6xybEe!o@a2K$Yx)E|CTa{qcA`G5=iz1T zUK*v}!Vu8^D&-Ul-5Z(#)%#I~IsIxfwsDoN{Oly?E`K+IQZ3eYS3w=%I|a|wdhD}T z)#yliuWP1K7oF{mRdZRH@1gaBYi6Djb9C?-Cm`<0@sNZ$$4<-bHi(<3!WW*LMyh%2 zO~BmkC0lF*BV$hQhG<)nPSImCX`MhF9f=r&DjX*dZY38eXL=7z=2PBuN=gxuM6KbErbvDRcF!29PeX(x`|2FvVhTo-dPQHETuJH>&&SQ+PtQMk#o$}QFLGR3t zNTf;#-dB5^gcvb^-zaYqL@Xtfw$R*)t1hxgAF5d z)vt9{TbbJ02L=*(fpw>U`JSyV7dUa*oT5|HrtVAhW!!oJ>P&gdNt;PGNtQSpk~Tw9 z3lSCNXlqRd{WFTot6?xr@2xW1U--+5ca@X^cAYuPX`jE}?|o%W4Br@k!2VtdreLq7 z;;KD0i4vw9{%yT4iqcjpeE4y(G_UP(M6A2LzEUcNQjhl{&}lgqirZVqT~s-xdC9VJ znNmNtdo^qh;C*NNW!AJ*hJgt(B=#oAQWhlWegCx-JYkGhH9EUz^df`Z^eo3;uyNZh z1~jm5wTzU*OF8>7>Xm5-a({M6gRNtLm}09RR0A`4-%1ftkOC2ds~`rN24a3^zm@q1 z!6kp^#MR z->(!j|0Xm({^irG`7Ar@#xq_x&hzE)*r(Ps{WfVQ4gWUvXbDR%NQH4@-<(>j+753X z%k4Aghnq_$QW~K3(o4IjTRlGsll2H9L1_{PHKGss8jWNoAE6-J!`0>7jxCBYxA!90 zN~airOI`7zN*>bkUw8fSFCEv92b|7Y=Pk)RA2q@p@L++j&t6v432`QG(3x(`c=x)% zdcLlFLgLW_6Qxk`eKa>Odi$g`^h3vHPD)E)pt#6?8j~BlNYx!rk@RWa`({+hd)mLe z0DCge*Q@BS)Ljh7MOQlk^MmG~D_$aocr`$aU~8`t*g%u5|5NYBB)HIb5YuSE=QHLM zAyp6(@)FsZ(IK&_?z1Q~B(@#E^{N7~eab--{+S?~hHu~&25VqJk87TI=R3m& z49e1-1?o50y$5?$D5&`K{C|F?g?HcNB3G0KCmLKp3tf0kBbAbsNH;;|T?WBrF8yeU zFo>UOBKm}VWTM_~d_O7QEp`Fz366Q-FoIj(Iw;&92ZbU8Bx!>%Mxe48Aof@5`n{=4 zXl?tq1$d3g4M^~BptHP1Qamy7@9NV`ZOi0g>Qv@}Ia~j)$pOaKy@Jb*2XbM_1$Oaq zpw4c&U`w9g2o9!8mSJa=JBh;DblW$BVEws&MVldoc&sHr(qcFHZ#T^J*{-}Ktrs3J z3bID4K{jwed0dj4OpjF`Xu$5Fkkzpm*5NJ(d5YyzQA}U0!acUc>4M5ALvnRfBj2A~ z_d};i^NTCE=s|pkT8`SWw`M|6q&a?Z6xtUX_^UFxku@CA4IexPMa8@@t5{Hg6fQ^K zN;O|Gar{aE8fJd1If;HFpfj1b5B+WE?iss3bwGguYpOgn02dEfLq*8ili+4zM`b59 z5jKB!{Y}J#qG8}i1Rsrt_$8k-E== zWaGl)Rixv2>Qi^PT8hKC2RGmGw3QnuBH}tto;MqzP^C)H&6XY&<+RrFQD|VXZJ<^J z`w}#^%6ghGUyBbMKdOcqFHI(VO0B&2TowH{y=+T$GZnrgXC+bM|2VB-kr#epzfJ-T z^rmHgDgBv)kdWFs)g~&>02yGC$Et5jR-mO36HwbU>pXUkCKl?gId7SMY2*b`R2g}m zlCr!$+*tIH;Ld;Kzo~+jEM!`FT2%A(;;!Jlb=rTbngE@1(C_I8W~v(BC=pq3T})b{ zu0O!6OOTwv@c1jZ_TfzCp#AU#j@(&;P*i$S6L0ROF&SoOu4=sYM++6;tyL1?l=B}^D3{z~YF`z8e98!;4=9qwNUhHD}dbVE|$5@{3 z{OVE-dhy%~RCGS+NpbQY+yyU$s-2FOMD6$E=Z9I?SzH?!exOVEu{4Quhs@P9An0Zsa`?ZC1T~UK8j2z1gi#-v60hWDLyE(ABf+@WeSj}V6T?j z@54sME3qKdW#*AAJ$k!nXIo8CTHOz80dBA1FaPlD>v8kpqx!_QCHIswhvNeLPyWeo zK&v6+*yw=)Aq4_2w|=1SfCzNr*R=59%0iuu%W8C)=w41?g_{Fm6+65#)*%{~^2z<= zUA04K90j5lHt}Cdc1pzfqF-xlLv_-M%pPSi_xl@z>+XixG+l>#z6xRoMg(*Mhkw5! zkr$$9M(90oX%NV&bSNBs*|V5@-z`}p|7bCwAk9lXCi^SJsI}y=ZdIcE{nc)i{Vd9H z0>omJ6PjDis_s!4Nl$XV`P_^qpVLZg3Lr@pgZQ-M9c)sZ$t>!CqFu%{53**$KVz#d z;Uh(J&HW&fvhX(_=93_(K}8jSin!y%#rvXNx0av~c~Y3oN=r{^$2*U@75CMD6zZoY z=4X)ISM8uaJFP+GXwjH)uh0qbAq!RhY;NbHh7q-R1ToX^L_~#pBwlY<+Krw4`-bKs zcO^hn*&cx_*$)ZWL&4a?*m>GiZRJ7px}7sg{aNV=@SHUxg8~Q%fhzz&-W#}WIqh~B z2N`qd9^dOk0XYQ|LienEN+YZGM~8An(&eei>h}o}y5(TZJHz-=r7pkry^v zVGD=RNU6ja=0UHcxB(!XQw(}?tipX+O19(3jDPm3rtr{5 z-A~6^qAA_DCquH#MFNOu+g|_b7MInUjHJj}qED1E(zy2V+KXIW*d7<2GPdvaB$|0c zVro&;Blg`s>}spB?GB`D8C>2Dfg5)C(Qba&RCB{b(20Puc)B=MW-EL4C*;Z;UXJrF zY0cMsgg@pF)IF0|7hb1WL+eLrEU65QVI^O!Z}usi_%CX*O94f?VDE+6xbYR=pEsr> zB|i&ihTY#=U&9(eO(pEvUF5Ppd>9Dwf1*R$e&t&4q)o=mP#~A6kfob8IjpratSzvc zMo8dPVX^NSr%?yx{t;hJOfr`+eBzs7z!s5eLQzyyT44!i=7<9|H^uP{1uxQMfu`%7 zqzycM!qL~Sy#W1a$k=-f<;;8h2y)`$fauIss_xveaoFB?!OU|O+#~B>%FIc`Lqqcd zu|rO5y%^5VMT{FO&o9S=7FJXJ+@5&cG`jcF`-_qX!wEmhRlj=Q9#jjmZKC*r~|wtj8r3x4o#v^5|gjT^U@(K z87XafS;HeIGmMH4SZdb6S##CSE0VZ`wJa3*vm?y+NlnBDG2(0XGp21IgWB)U@aYw0 zeH(wbgoHb4pcx{AEBqqXzSn0n%UkuCVKWCA6gRr_spbZ0&T3YglgfXZ9}-VYJo3KI?zGd#{h_21-eVow4lhTcfz79_g?$pH;46{fX1S{plD-XTa4 ziut7f0-4Z(*1IjX3ESNmE<|oJhV9oUL~J=$BguTDGfOZuKR~5OG;|Ty64lHON;>x}^;bRAU6Qb~ z0rg!@Yq}=OgGxo8Bj|ztTG_ zIQW`l>%HozwsaIFfcR9g{I1{fs(}dqsD4e9KjTyT9RCN@0Jhp#2o-8j!g6@wNY~U{ z04%a|bwedUzY?e8n6Y;YY3?UiE%e(p7&Quj@|SY-k)m5FyP-&1$Dxer%n=ub|G@-@ z7C!IA>blR4_mUQR4BZuczQR^367zWhf)FyWnQ0u{*9n>6F#)e%V#J=YJXGPMvGvcFLGzd&e$wu{#k#J#keNd%Y_(g+?T8c@l$UC&(uy^e#de_aNZg~U zAG?Icjm}O_6QVU4;p94@nG?hn$|BQIfQ7cd=To=!rb}7D){3HZG|xT2%J(aULK5eygen&5_2WUswT)0(s^!CF)F$tr?l)xw6~eT*&!J;*!UScFnX@kR*`+e+8+o z*@XiYLrB8pa>nIbUZOlGBlkH^J$13P zW&s`CD>dJ6fGBSthok=tygIDa*u$QG=HYLKV_aMg6Sddsl9ju~l|BRed-qT?**sjU z@rq?R+3s!6yc(C- zn(jS%|JAgVk;!v5FM(1Hi! zjm&4#=rs2@L;KVn_N}1ktGQqCf$7!cDFdA6ycFhipq?lRM^8`#rjk0_>_m|%T`BO) zK=nbmS+R2mt@hl>Gd+0RQ6zgu*dh*3!XMonRQZ<8jP7v4+bluP3=aZs7d~B{9LWY7FpKmnV zJ8FcwsRgLXW57lbjv-KZr4*cPbEqCaW%r(rz)C-#2RXH1CtDcW|F9;3Y(F6Y;F(+xb#*Po#(CfF64jdmQX|>3QSj80C$sb^9=4U) z@hv+%$d&b{;~CnnpJHGE$&tmjqEn8JQljW%21%svyW^0@a-b%&g5%@^8yQfA6TN;V zPk!6!HTF)Nu!O-eTY%TodYforXzH!R*;`DBAZLGeGq7&slvuM=j*--CiBXF~$TuE5 zr~f$j@V$j7$DeFM0JK!vB;m!_-w94%7ViDi;vJv;pz8kz;C0HM)gg zZhrQm&i<3a|5^j!T@YR{vJF+by!iTP>%`x`pO&ZX=u_tnF~aPpv<#`*1ML zA2S6N$H@sq3$!i8jJXklo@eTbH{-g^xk67v2Q(uNMTB>}z`+L*#$!bPcE-hM(OCTs z;{Gbw1yf-DArY_hpOB)KcQ{4AgI}UcQs%eN(;{79R0Fb=#1WI9J1*D;fKiHcvEza@ zD2Rl(mw0w98xO3967m2n{8(kRE;mg9GY*YbqGx+oXLk#ExAmS}`R#EvitJ!!mA_ZV z;|J1$qh{m0}stpp6kw!9Ji4)3`v`bgK4yTnz;bE5*m8D57`4=jtvhwG-g(ICHe zOd12W1bCxa`zwa6)y3;_Zc!g)7>Tq!je;xz>fbZwb#XiL?$!zDFgD0|mN`{W{ART! z*p$ddAFnRfVZ6R^2r8sIqPTd>Os-(B6#iN+y;zR6F-bDqs} zT*IIUI=cFg@&?JDVM{o>lE+LK=u0Jmtg@o#T!n{CdyilPE>((TnuwX0Of4a3?SJYw zswlcIThPT3M&gX*jx-j+4`Pn--wV>v09vW{`DJ;W;0okq;8oMBwE}npKNK--Mr-w* zemSf=z~*0LtTU__o(Wpy4Zn|mzkuv(XV&y- zWn(3B@JY~Bm3AAN%BOrWG3E(N1~u|+V5ZIG?L{~dmJLVZ5i}%ANTxYRK2YWWR#ke3 zs}*9T!_u=?f3# zVsFz$Cp8%ZOyc2m%bP>gZPGJFS128pfn(phi2F%hZRKCsgz^?YMq1haOpqrXgBpBD zRWo#cnNB5mNrjq#?C^Mx%Y_8MXo+AH^jZ_%qfkXO`jwvzCi&9?LcDKGVwW#9qBRCr zkRHc;zwM1t5bQ8_#x=^DyzdrIQ87Q24IgDJ3M4m9U0q|xdQ^w&tQ(!PXg)sqAmYrP zV@)ttYPtzh^LloIlYB#9o}aX35U+w1mDe;9081ptL_S$crp1iG`TPc)EIop(48?N# zS~^!ANU-MY%`zHQ0cl@|FKzFYT6#*Q60V}G)m*N^iy1AYU|g(!Z6vL{-$|`5ugq=@S2TU@f&lNA#<$lopgKUmREe`&8c6eG; z{7i~AlyfXj&xP&)y0jX=Q_#vzu40)u1*_@r6U}~#jRlu0fA%)i@oR|~vlArYX;<8} zzAqeZ2>b6rh?hi$(;znOFIwR_Y3m-bVtd{(Gl%wbB$mCI03mMGar2p73eTFNd=W?7 z4MxzbIEzrK*e;V~!n;vm(~nvW8VBX>^QQ8z6dz+v7VmHBRJKp(k6n z#KHh5Q9rIn4v9Zq85tSS!VApL@o%K>Z0#~>9F4n#5vR_6n$VK`)fvQ+xS<7pq8#r< zmp_yLm{+}N;g7{x4k*xyf|B%|q97bj(S^|SyEhUg(5d}L-MxIT!Mi>eBA?}abNZo> ziX21!@b5DVHeMh)5QbajcrMI)fjJzn4TbtqD1Yy#M#C9QL=3?KGxf%S)|GOp{=8~8 zE+z_n@uirQnmQJB0)1seDn1z?&693jqL)Uob74`-_3u`Y0hGh!Losj~$20luOdem9 zDY=X=o&4R?W@#_N$UlO{4M6o+U-0LH4~@~2?I^szqj$XTaw@Kkin>cy?_M=b%1bcA zKZKmB>hV0Iy`ckl)noU7QI8IrxVIPm)g8#X`Wb$^> z$&Fl}orBAVRD(c(X)OapD5`SDIgkE{Zzcl~jYJV6Da4iNBdMB;nJv^4WBc)h9GS{4 zWnCW|j!!3FJy5a9{|iR5DaijDeU3W@CS}AIMhB5?Qv!r?Nev|F>1V0ToC$JwAPRbP zn0(0iy%f;K)FzS8%W1*4-9?>Qo=T(bnR2hzvKCU~o_>zKC!2V55xH1Jv@$3x<>fi+ zktW$(MD;jYyPMouRV$eJ@s)}J#;Ue6jIN?fer>+8E<$eR>)|DdI$iQkgw*;byNypaY(=u^(-#5e;sdr zti=`Y-MCv@bg>!oypbI&Y;xa9d2>6anH|}FjznTh@!9+@!Wtk--l`cs;s?%_N}>d$ z5h2T1$Z=rdnMK+`3!MYwV9*mak|K`xCHs}HAI3>Qam>grWvr5RX6^6`8V5Nujn)@$ zK45^&2WKRiEk7(6L=M2O|G8TLv35{X=SH;pkf(`a8S4_O+7_- zvvKLQYu`cHD3kV9{rBwBK7Q3-I5*`pPazQ!@~dc2IGyS=)faGau%MeMe@~V?PySSE3f0DLkmcb6Q;qKWY~_CPrNe*6}Dl2Uc$6q|B%6+sQMN(8pIR559&~1 zwn)sCtupIF{jUm+I%!px)Hy1bu`o@q?ta{c9CNz^Z|drnr0zIj8#v@zXX*Fd7#I)* zWAwQ@1lRQX>xhzzP%V5`iuqVUZWXl|SB=&K+fRs8YQWC+ra4#b&-(E<2e!#d!l=~N ztZlXzR2y7Wep)?3IpyB%>#&}3-fcXL{61Cf*8wX3>v&%!7)fFZu)PV}8zx(3F`J%< zZakk;Gr98yg)L_1fO6r>)9R~gy!Wbj$XG8|DSuKQUd|jzY)>Z%F27R>aiKd=CRV7< z26>%@P+Tx{lmzYE6jm%tG_!PcUb4~Y;akTcF`>n|hcv7)eDXfWZAkO0kw?9K4sVDA zZ70&}s9j?AcAo3n1kDBkaU4s)H&yIyf#O?(XFsw-!%3(lAOkwy>5-&R|J*E=y{lw5 z`zLd=kE^CVos1AkUV+!bxC0`G%PZ;iNT%MKEZ+MaesrOGRKsjuLb~%akHjF`eaxHY z?8)Q9H~tx;$j4}hBfnGbNfxsZxohm?tB~QNUVt$65eGdvlos_;+-&3hU3z3swU||j z;#-t(HK@r2m@RUcVfDzOtC}tI_KhqN@7SZw|6s~F3_lpHIKBfAA*GtRMNL+;zOv{h zuRspg^Agx9{qPdg1dX{rI(!y{9IqT>S_XRk7 z%gY?CH0g^Hmh>dnvEoJYpZIu2J}u_zcJIyBFxwMmQwd5&kaiYkZ2YU`!T(Ws|KuHc zK>DrrwT>6InE{!(hokz=>VzI#xmm+8w8F6>98D`M;?1rA$q38*2qD&DUzC9B(Ny;^ z{)<15x{Jgz)-pFxXtgb9k#Sh{hH*r_)W z>W%xm(2z;JRF_QnjC0Tqc5xFt47Zj+mB2d|%;ZpXrT(*w#Fw3&n1^Z54M%0>D>Em&qxHY}4WOTuI9c-8URHUtcC z9!sL`1hv;luj$TNNa52ggO*&F?1Z7=T%(mfV@y)OJ?JJzf0Y`r#j{_#!?^wR=hbVl zjb$ZjI^Pgx;V(l5X*@x;Go=_V+Dp6m7eeUWos@!Sb^K0-OiT1wfk(aA{0 zc%RY#yoB}8Qxhq#5SF~c%eMmmuv^*9a_YII>{xoUi;$VzW~yZQVuxJB;YhkwIXL2tp*CZZuj8-%->yJT-e|)|vIhsa zJn)rI{fj`;?tbWBM~qsQad;FD*qB(V;B+ktwSTHsP*=>7Mgeq@kPprn*qin&nqLp& zooi;8zHdTk93h#pNm@vksniQ4CF~wPc0uP%$M&7Dm45*n$t>{XMe4wby`IEY& zS@=UOvHvhJ6%2tT=aBnjqzo9ryb5;V}28HrnL1cd_qKk@@o=il+1{U2=S)= z4i(a>wj~Kuy&pb&$YOnQC&BBNZp@f|rTh7*3NqRWW0r5&6XK1}su-H!KbOLH57Wil z4II#36F<{WBcpwNLYCJn4GPPDM+X5Cs>*OnQ}KMuP+5q&y`jqy)E9FB@><_k1gzf$ z|5fsC=KZGGaj#}QC{mn+KV^E9I8}Xt)!9I~8KUTTmAFb{ba-LgS|;A27EsFHd!k4m z%nf#hy^$(J&MJpCYs7Q#v9^q+E&oD?_;v9ZHskVF9y^|DyFvo{J8IuFSc2u7IA$T3QB6`TDZsorJq3v9r#jQsY&}Fxprxq&lk(72_WcUhnE#oN z*_Tt;XFq-s6st`X2(llGA7-Qhs6QX9!M^tT{2Rf0>{Ckp4!O`!TJ5obEG|YW#b#w= z!ga8wS&*UHV|fChP`{|!dmdxVPP#B(I?3N$%r@B-Vsw8oJin#|^=&(eVntPjIj66; zgOopSoodUH`zXT;dukN!Hy-izSF3VUG7MLqU95zb!<0KbK&aGll!5X?w#H`ZUc|mSS zAJmCRr5aX@ZRws>`dgQw+8|E@X}xMyBxhI0z)jqL%85b`>JZf>Mvd(23x2cm$iQEA z6ooj3foBLCUK#bFC08A>Tjvf2+hR+DdSztaXy(8?73{(9PVNOcfHk={)-T2V8cKfG zUc@Cot@}Gkd7Xc07I~@sQD<8Il@9UpUzC_LoGtZ6+spmL&jM_U9fIQ@d&q8JrAOU# zkwgu=G0{y5H5z0U^^BzmlpJAG^Na7yyiLKSM6b|QXenpW+N#N|y}gtd<3F~m-yD6a z@y>ck0LL~Le0CFLfJ*o$w9}V2pOu9;6B6_8BG)E^O5;6)_J2oPTb&ZFf_a{;ky*@N zcItmp-FL=!rr18+{Csf7Nkx>D+`8Rh7qZAxZvMH>%DNgLXZp0yzJz_nZu82?QE-T9 z*q9<|@WOLa@5z@K6f$hOrgwculbw1PxjXgi`gFayyV+&)6bMbV*~V-oMCB;!RZB)= zyEcNLG>y}zfx#Yel#sSB?le00{-)R>_qSOizf`HzQg%FXoTekXl9dq5@MkNblEa?Qy{R~KcDXT$#sNkIuB zBWtPRFc;^s3y?rtlb#E#Fs4o@7^@klh=`q<<`Kv)2rp#cjuGMNLTWT{s&s=lg?cwc z;=R%jE^f5k+YC<2&lIE3Gocn%ZG+gA-T791Ij8LxMxgN;pTV45H#r4yqwJr7PDBYl z9QM@_bP<&QRNH`kIXvZ0eOKtQ;eEur^sj|}?|GNt1z-=G*TYF%KA&XBOd2D8^n+1; z6=P+28)`@B!W5D^EgOXkB3e>QGJ(Ri>?S4sxRMIaj8hJjQ`6GmANE&_K{W{P+LN40 zS9oQzc+TOswj?F(!SwG)LUQg&fHg!38-L|K>Kl>3=v$9SX~U7si>vQONuc|IN@jbT zP3cjK2!Mr2P^-!t)G87TKIKKze_fE>_K;XgBn{4x}|OsdoLbAFRD&O&!>GfI&Y zRpVC60G0OVn}YzXn~<^yzTDP*!R^O_pqKOV+RKp&>EfMVzuY6_Hvy{36?G2m%tmGi zeluY#UK!K+@9E4K{}An3+&AgKWBw41ynjB@-syTb$Jtigf0jx z<>EVLqrSm_D9ULycx5GnBOs5+v%6d`d~OiWc9=^TnWX9bZ@4Kbmx^D zJl*w8k2A{TS4W^z`d(yKp8p{RfCoQyHQ8;w6vyV6<8O+pUPvYxu^gV`zZcq!ojsM7i)STtvA4R~pwibZxj|CkV}&VJ zQhSMYYnh=sJ3KWK`?>)B0Zd}kG1PI>P=lnJ8NXV z5T-ina)UaPw_x#|uf5s7oqxTrdNnRv_%b)ccXw$-*lyIO$ts2ez$g;r-`%O#;yLM; z8h9%&w5ddbxhR9yO66;*E`sl=f?+#8jS70e#3c8M-YxH48MQ)ZBZA%81-;eEsa2Mq z{_6RsJiXY-B9KhQ$jC@(CZ@A>S;vK4ZWvJv!)@30XS1jws4b3e@$C_opGikVi0$-S zr%lS-S<5!fD@U0&@H%KrM8Su2>#4;8B|Dj{RrKdG-cWYsf!g z^5mv4+RE&Utf=OjGbub-jF8WEqDk0lxL3_^6yA?*v?hH7|EM}V2?LYAT~KG-zuMCs zj;O;gsCNnie)=4=m)WV(C+B&7vb|r=R7YPC@iwY<3Vl)K2XvQln`ocVCM?WyL-mUr z23A-;I3LIk5IVpXa0z`D+9kEl{#tMR^<}^MG1C*Mzu^m6;MggT)fBWCN$$7l5R2z& z84C|9)#`bj&&mcFlJ`P=Pp>bxIJo4Br<683gFcWYJq?-LPm3~xeogOw>}SIOJ{?Qn z@0P3fBXO#a6NrZx_q^~MSlq5rpaHv=o%2G`NUm&siDvxLd&u?S%CrJcC{AaN7Mh$& zBS9Tk$sxp{KHgUYmBp!?|EH^e3Nqj>zTEOi)FiF~sY8)8u@PZVP;xARIB1#T0Oa9q_s;ecz+k9}vhjRrux88# zol4(F8+`T9>c-zW>{Ejt`%{Dg)WoQDA>`DC12c-7^j5x#t=0=ziBeiB;&jofJ-U&> zCbplNnq2(nmIIa*^K&xPP9(IsT6f7l*58@eC@Jvcc~W-kyE*Og3parDl_;*KG{khz z9w_T>AgBZOM5`?cLiB~}n1%0#G~2Z&&!|h){1z~C`Q>wvKtNHd9Ck(Z(Y2EulGAS; zNMX{qF7oxUPx*RGTu)+xx<3v$O(yrQZ6nlC)35Nvk5<1ETXj*_+CTMZszX{e%04P8 z_B`ePxBRSo^}IQSUDjQNk_~>{8BR+-DcSb`1p3e_KIGSpg(vb6*ETsYSpKAT+lePB zxC8LBiAmH6^r19%!`T(-xGNjl5HppQLW3M5?gGa-l)rV0V{bzx3sxZ21(wOcP^9+@ z$riyhDpN37juu*YF#kmn*`xV^iYcY63~-!}RcHC0OYUT83^zhT4f- zAWTjhaT)L+w=^|9ha;OnIG&Afr-RYFWXvTmZCO4g%ocO|{!|O3&?|Uhn4LYlH=|{7B4pbWPtn*H01lr z-p1HL?MMkW@^d62l=$k*9bH{D*(iA_k6$i8es+coaTA9)2I|_mY2%NdEkdF_tXE^? zq7m6o8OuKnnEW~|G%yTCdv3cY%~ViO31j2sj~@;%X)!$H#DZt&h6z=6!oknu5B}g4 z{zkcbub?rAVfbFBQWmr3n=17L+%}>pg&SX&dcb$EGH-@VQ|EOjluW#&kBk!aegMhk z0^x7b12|hkaqKHr1x9VprywN!p24%nO-DE0^6(JL3FSMISm{2-2Ybb3S{n)cKHOEP zCOj=h%(}E{AERQCwE+AcYzi_gmm9NC&nKqMcviI1t%{m?bu4j*@MRMKUqc9y@s1i| zfxnE;9m6N5F05Y33O|hn?!(_EOJ!vk@$yk2Ku!u6spA*<=#n_;tI6Reola!mZxD0qQ z^3m8>{oe^^LNO6E7I|oZHvWC1a{F?V!v#E*I2k3W+h$+ew%oYGCY0ZWUM9sdQIZcr(`%nWz($$80WbQ02KKsHZ3@92a>h%NK?E;xEyrfvnFj%8oD>7Rt z9(<2rnjs}LOCX4bOS(2@#d^BB5It*V)WJJBEEmG1r-EyXNIU_XeS0|X<-u5nX_X|C z6mX$gW$K_&if!uFl-on)+Q+VVUOIn*^w+BNc0yuW9-)IN6hWQc_iGn??uEYso+rQ0 zCw0OxM5~PmT9+&*@*2OH(f;!AqxZdc59Oggfv${o{NzwWvKU|<*W@rp2fu)32?&#+ z=J^h7QqIEF)Se5pgB2_Gj2ZO=6?TZ73RMP7g`2LK+8Dx9iOuYvQVI@}6P++1yF^c= z_6sa_PzpZL+rD3>EmZ85e+Mf%2OkN`x^p|%JkexyI!a*Aa!Vm4Ft;ETm$gtrb;xyP zlqJ`s8k1%b!hWf5DL_AdCa3$BnWEYwXl}tJ3cn!xsTL1BIK4}liJisiDnuw|QPACY z`UbL`rWR9qZZqj4`-Olx%`e{HBSQ@$$oUDLuu$AhR$1l#P*U%~^0E0h6~z|`j_>}q z%W1;FkJpsLrxqLkXKKl3+Vt7uXL46#wlY+YIR3M%!Q2~?g#*-aMj}@b!3ZwE87h%EManz2$~ol>BWFQ-s03eA{mzL5=irGb z(O%)9JK;q(wm+iqb5sJQ0-{=aOyM;n4iqL>Kg1_K#^{BJ74cy#ZoQVb zOzlxWyuVLK7(i2r^|Nzex(toR`$l*sx%Y;i1qrGeuUk7Cl;#JvM0^noQC80o8!q+e z9=}ZYO=-9!&gwp>ept&8RXX+$3HDq*W`?Q)im3Wp;Hsd=S$Z=DRW6|SKrH3_7^5v| z4{=3j5EtRV-&hdgxz)ncq+bQtr>Pxv3 z``GnlO-2DaNIwN<5_GV~{S{tiDPc>9CF9GMkpx4u57bX)_15M7){HNFqDdSE>ZjmY zhAIQorGFO6Kvt@p)y(_rrC@Wg1$;79S?d&WhcB`Yho-E6%$4gnfYiu#Hh?-NG85`c zCy|z0-wAx?R&#;lD4^$84L=txwA~EAZZM!_38)%!&N74?{B16Z7X?i&&IczQbZWn& zj7d{KXbr3_BfktvvJwoG++t?Z0q8LEy`g=ra)0O)u`WF7E3(LiysQ*VH56f_sR#pA zdFHUGuB=uc6|Y6QJ#qNJ6Rmcl0oAG6lA z*?)3bhhFx&td%Pxub9=&MBv8}G^N;ner|pjmO1#LLdZsJ6E!d}q4g(qG(}HaU8ZiP zB7ZN#@Bk#jLkAyf9i{0JXJU`I?K`Tf0p;3q;%k zZf+8OrJhp(hhczL8$i_nNDc%-u2egCs(%H)4Raa|4BQBuoXhL%oCu2?x>;0VOJ5%(ikjte5*{irLTnkKOY4qn6?SD<#3kL&L9Gun;USdGvlOi8=E|6f*$!D?n z@kS^+xKS1;x2Qzy+Ue9iG2Pn&y??mXl&xvfEwE6e9lVQAY(5+M||sJ zRn*Wq>QZS*Ne*x(FAW75N%m!!kza)L+!7>b7a*Q$*jePTDdH|<$nMr;q<`==r-uz( z*YI1feH+g>#Kiz#4YEha4cEjnJ%I*^F1MSt4g;-GHiZ!Xgr29a0KeGkb|pR*@N8vo z4B2^?0SEasI(QH}-rieb>`+NY`sqvh+cC#JbGQ^aiL|^+Mt^nFjU%1WbL&k8 zgnO6GTuTw>KI;O9ulYHg5KdrxI}>ziqYEPqc~)C~@tSkscS2IC+Uvx%XX{5evGU5w zQ*TQ2@-Zhx=V@#VdVhDm=m?2# z--9nBN_T#p2CUI)9)A$bsuwW$2cWbFIJXc8zaj3|Al&$4{s3~~xxS;tS(P&d%=k&yw;tIh+T-o{nT7uX;?|q{91SsEYu|to?eE8oKom3 zOCct+6r1{~ppBL^atq7w=ZgX;%SzxuOc8VRQ#?3yx_@6{F`V=oZ#{dFP>e&*^YLB( ziu64(&<))QNXrSkqwmCZ%%Rgt>C3NDr~I8*c>{}FI?#@xuGgInc$Xi8t^LNr?)d3O zD2_f6e9&?>Qo|T8V|29AhJl(qW1)KI$x)a;yJWbu0M2D7fAowhXYEz%Qou) z;CBqTy_Nr`=r9}b{+!z*ijLpLUJ;|&oQJ@AL;jyn)Ddm^a{w?ZQILbDlziCrY6nk@ zYJ!Yf2gwPNL+8=9-OFK7_izUVHY&L!a^^EmWq;wnNg8h;-?IwJ@X5(c937{@vVK$k z&49O=Ebc}Z!^2P-3py#YaSDp*Td*92vpMNsfcWgv>hwL8D!MIxuUgjVnX4Q+rP-;6 zyEPeAQ!3?2YNk{hTjNx33nscUPDnlR*7Uq}*RpGZJBmxn@%hm=NkhEMG%(7;2<e!xZSnSu|;ye){FAAj{Y|2vJhA$c3fss}*X3_}mj!58HM;S~;^ zYVeu$kO1{t4;Xm@cYfe)88p!RGg+AKr2uFB>L@!btppoyR!s|U?R(|C3@{2ALOz~p00J$lSV;FIUIFm(0|vu zA|kiy36RnnX}Z5hR^`wsPXFY<<5u%%)aKO9Ru?~A4~2!c62`PO!KU-IBNA#GQkLU1 z!ArSB14u@-v$b}W086WRpe8J2QU_B^?qG&~+io-J*b(kVAaN316?vxp{VX~i7hfgf zURVl~Y;En<-$@_e40S~N^_(~k-+xAXG`XWWBegkjFOm&U>TAme*u&jaoeAt*Zh>C- znO!Y0%-skBDoOx+KIiq%+QaTDjecK`eVb8l{cNO_DLJn6QF-vlCVaDPNM>5;(H zb3jT65X2wh73pgX`!gMXjZue^T(u7D#gGC#iz~*mZYnHQ9+6gpxgEF^`}vR}=E#?K zSHZQgLfnch!s=csRXcM%ybve+3$S&73d0IfN`LR;d~6$}0xL~v?mDlj0A(%SGplmw z)VlV~f3L(|YZP|>h&ps(e}B6wN?MA#E9FE92syEX8SL~`S)V)cwO6K;>5KcLPUi4j zdj&2J#pU!!*4=k*aI)_?bd1f_6GI7I(D zXUv(G0mrAmou!Z12RIA?d=7E#Ze?QX)S(ai+@~BnTmyFOwH^|SUq6Q?JuGY8L% z7~*v7czA-=HAIy|C;C@v{dxJCOH;N6+cCidi;q4>K}i{A_h^HokE2=2mLfeP4F&AK z{brkxma;69IVC-8-&XW2g7&kwy)K5j8NtI;9oourOvL3$WPcj^IO?I__qPz1(t7l_ z1wBh+KmUG=D@agh`a$uD#|(2b#Ik|**nTAhN1w#7Ivcg+b+OiFY;~j!;A*UfGcWl0 zQflaV3E5BG3KM?ehf849V0(O|7Y4~cM>ppcyuEu#a+4gx@lW608Y*WV{}*807r661 zaBUs`>me=o^nVCWjHLnlIl`ot20Q7~lk(YjPJx11_4r?L<0G1N20lCmq=a&^&b z&pefhC0&$YQ4x((bid(NF7^&rtA552KLZLHExn6kpMS5)p;KD`QKOQaXGa)$GU9sb8Fb>=of;+mU zAGTsX0#FThF@U?N2Ivryo?DEE5vi;OPJhzDg^UPULKAbarh=;WEiIR~X^AKQ(&t@y z=XS5TK!1{_{rP6t8~X4xcN<-0q~#XD(MT14JrYtZq!~|7f;H2;EqLL4_g~fyivLaL zz)bI&kvIvdj8RKjYqBZlIDw9*zYVfPC(R7>&`AS{<;?fB zM^1?p_PG01IdqbBm6IxitYjsch`%L@G*b5^fPc+E;Kl~-HWfp_tRtZB1Ssosie=>3 z<9)e5sV|;KBcNP%Asx&C--J@wXh}g;UJ~Q}PRE{MYEYA}PS-EKkcIIs-n*7HdbBEsPJba(@Naj7C&wVAv1d^Ye_-prPl}9)qBA5Rn?>DZ z^nY&zBKq%nEOHA=Fw(;q*MpK+Z}f!rrd1s4BqvJ5H>aM*vS|Hbcq*fFtR);Z+Zv6#2eT& z(ks6an20^~WLTQJ&vgH!4rWa4ZTr;_Hh&!b|J;SdnY6uQJXxW1vIrK03*sy+h zQ7Ch3?uCPa3eJA&0*Os#d~8w6jX|krYE8TS1MuL-mYY|UnW!D>qthG<+ok2e)89q8 z`^{^IYy%W^fxjm-I?fj_?eMW_3>;N+urk0FZfco09;c7rJzp>fP8u7F{Or*|BYz#k z43qFEO%2}KEl~TfZ`H)#9`l$Jkg3m2;KUaengAqNftaNSa z)`u}g*!Lt4Y`j~IkvWL;C<*!KO+W&;@Usu!w%*eqz18PQqoHCFU3?w`U68(X+`oFuI zw&8Ey6`fIvd(lO#zMfG~1_xbfxKyI(-6sO}L;0GjRgF{2p%XA}ZhwWKN#!a@CX*yb zRTX6MEGmuZOh+W=AS5XVQj!wPffM+Q>e_J``55AA#GJXct}=Gt2t#mUHgjr~h;=bNe_lXdS`y0# zJFvDSn$yuxjfsZPTz_OVA8DAoe$#S#z2r0~jZQ#45~(57`R&kT+z3i$hn331O;g_f z`OmuGzvpq-eKV{nx3|iBu6@}J-(LaLL7<1MyGhxZQ&wQQNR2Y-HS$NSJ?AJDV|Fnl*x zC#F`n22kqtu7fCSiIR11H-XC>{=gmU?1Ql>#1cQb1wdZ16qBB~;_r6P5uU4nrLSz6 zY^{!5G1H~DR?cM%YAtSztmhlx%z~y*Ew2KYcL5CCxd>iC9Y_hTj^GJB-%{3pBcN%~ zQnR(_JhdD;0e=qWAMvS0`TDW91?w=O{@uDpPK;{3R|68UptlW^L*0BnkVWj&F4U=w zHv2LqU22N%U#I7@6uXYH98+HV@p>pjs}qaYrB~I=ZtF%kv&f$g2HVEEvz}tAAZ;J- zjwS#2qM*2pkp&R@7^$mKwxH6P(;A82d(&uF^!?!`n}1UrHmSWS`Z?*tMpuPJ;Ni(R zj02s7Ovr)rDZ@Ien-yzW>$|OG1wh2HZCUfiUk-_%y+wKaw{xxA z1c1IU%YRCNJzaPQOSR}j5!>2;jX-`T7qJt=njoX{0wMSXP|xO;NMXivM<_{^Vu4iz z>{auSS|o$Tezy48?GObeX2yMq$4xmtf{3Ipp^w$uq)S5tmY2cUb)dct}+fBm0L zSqIeuZpw6N=X2ur=w!IcyPKj~tLNgd5_^l=QnyVwjR ztR^g!4jX6Zdm}t0m;H`Zf*|V~>fRUaVSjLMB_y67Zo*70c*~qe9MI_RiGZ3ZFklm~ z-K7N=Af~B2rvTlT0_o9Q#7=eL`iva_HUU343S3BZo;;@cxL}rfBt{x>G^`Q1^4Jq; z3Jb-2^h3p4?l>ia{4vd;zZfEPrF$nIyE1Q z{%PQsuaUv1%s^359|wKbc0~K&7sqLV-wR7+HSh`^8&Q_jtZVNt>&cwX@n^Bk8mBeg z{E4>(7}j9N9kDHogj#L}C*$C~NR~ArOae)*lH@9-+bI)NsnRC4MKm(-XMa80U~VsK zc0io<$5X`AlTnJ?I0#r>qvhspEVQvX2W$b_PY2E|=DzqVZPE!K@g;Ei9jf~`_MF~d z03GLW4xP~Yb?dv3=+awP+v4Lvh}jlWhDVZp}%;YfvbTW0{wBM@JN19KVQOL zPd&{KHE*%Q%F7PS_e-Q5cF zdRZeXB^L{hK1X0YhkpmzG}0Mkl%7K3*p$|?)arGNKLS{El@K$4M2cDqDno#1jtDQ2vA3@dClN$zn7|xwLxvL%hexNO5A7DFH0FehMQuyn?I5Y zWH8&;2?srWp(xEcv+qOAVXvHn0s1NI@2~Ua5SK3xdzBoh$bazgJ4HJ6>L$SbpWgbm zv(Fku@EYcTiaysGN6tOY7f22ON`=T&5W1bv`0uIJa_IDolzhylaM=zu`ZlG69}rSSROV`2uQFGVGjQQFTRGCS-CgD2Zh!n%Y{#=lbi8Wvi!*Q**sxxAKBGr)lxAi3-+I zTM3hY<%fKwz6WqKQOCA%?g&ZDW?7D!cnc~k)puBJ@r|gMkV-qB_pw1@7HKQ^;_zg9 z$RC>kM7NTI9IJ=)h4r=jsr8k)#&)>J$(r9=c|s*HPbvwjZYB(SEkZnLIs%{RZ{(CZ@IyW8qAP}|xwuWCipggPhC8llNwzRtj-h%`*; zY>tyYu?_ZAxAaEr`^XDUt1d!KUWWCwcd^j{k&CD*NaJZ_I&K6fGY9^zFv|I^>Wi6w zJi-02w3gmVvCXHhD25(!z4G zf;N=03Cjl9LAg8>~P_KoSwNybYrsW2zyWb_O)efO|WDo127Bc@o_#>6D+G^)^;7 z{y9H50GM?GeE$M2ujF+;0?Dnk3xkSu38>9&wOueQlsG^fA>qFXw8jC?7YNK&!pZ;} z9DnfOqIUw$tqicnK6gKyjMGII?R03#3K7B9T)mDhF#S4kY7S5=9&jCTl%l6> z2|4(@lsXQ+2pIooMI$w@Gq;+--f-wtXIy^bCDJRF-~R{wqant>dDozj-|#QRmqt%|a4ab6p-rhf+{cDe)E z6)l~_XlBs`a2UbW0V#Eu5e39N;v9V7nWim=(8X50Ii)R1smm&H04P%1dbC$y3zkrm z(%K0vy;e)8%io!c97h7ZRslO)tCu|O5~n+Uc@^;RXR$mA5p7O*;#SqCzR=GOQ%z%F ztDK96>FT(cq=V9O34H4ijDOVuZ7|#*5pL?7Lq8H@fSgh(Og9%GRJ7nF;Qt>Gd0Q;c zP&p{!sg_;NhNqznI+@DCR9#9u^L74=%cQ)=_J%_z^!Am2#H#kQ*7)p{K5b7ebGn=Z zr#fg*Vh#f0G7*%Rjo1pLFoDP>wl{TARoK$-<4))7CC6?%kmJ=> zHRg1!B_#m~;CcBl2QQuSC9#$hH>a^>Yt`QU~y1&_S*<(S#lsb z0Y=>B+r!N8EL{~8I)6|r*D~91=*n@t0^+hK>1uFN&8k9}3!GA4M|E!U|oXFwvMNVEY7umMLUt+cL>1w5U?Ka+b~fdlySYa9w=~xkZ9|*IUg4 zH?okulRc44(!g*VjEy%%YaMlRM+lwlc;BM+lcR9cRCz1kqB zpad&U`XM+W8-L{}Z#4k9$BR2c=js>0s}sUMKK0hB8FPweWURNc=Kog=RoQdd`)fc_ z1~~em@N+cxN|F>MAf4YojgGV})C^J*X|($yLq&0WbG_mcp~{1=W` z=MdDmv#Y$56uXF^cE>(|>?OR6{j$E!iTp)5wIiQZCFZ zYV8|>Ezw^$1@e+5SQpd=TbzRgx499LpQu}J@mo3&^zaMLW?`_c9H^;^s9Q-@O<#qF zh@E~n2+JY$eiF)5?rXgcokZtJe)Me_@m{yH)M6wq)DA}{&A|991SDj$FJ5Aq6V^zX z?Tl|6_J20O`!4J_t>rqR&D}WC1syiDLeyz9H;K9+2>2&X0v%;JY5Y5@6N>_fc!=aw z$!zsiu;l|+MkW07jWGCB0O*?eNKLw3RbCptD|