diff --git a/_plotly_utils/basevalidators.py b/_plotly_utils/basevalidators.py index b79627936d7..faecb0dd761 100644 --- a/_plotly_utils/basevalidators.py +++ b/_plotly_utils/basevalidators.py @@ -206,6 +206,7 @@ def __init__(self, plotly_name, parent_name, role=None, **_): self.parent_name = parent_name self.plotly_name = plotly_name self.role = role + self.array_ok = False def description(self): """ @@ -322,6 +323,8 @@ def __init__(self, plotly_name, parent_name, **kwargs): super(DataArrayValidator, self).__init__( plotly_name=plotly_name, parent_name=parent_name, **kwargs) + self.array_ok = True + def description(self): return ("""\ The '{plotly_name}' property is an array that may be specified as a tuple, @@ -1908,7 +1911,7 @@ def validate_coerce(self, v, skip_invalid=False): v = self.data_class() elif isinstance(v, dict): - v = self.data_class(skip_invalid=skip_invalid, **v) + v = self.data_class(v, skip_invalid=skip_invalid) elif isinstance(v, self.data_class): # Copy object @@ -1976,8 +1979,8 @@ def validate_coerce(self, v, skip_invalid=False): if isinstance(v_el, self.data_class): res.append(self.data_class(v_el)) elif isinstance(v_el, dict): - res.append(self.data_class(skip_invalid=skip_invalid, - **v_el)) + res.append(self.data_class(v_el, + skip_invalid=skip_invalid)) else: if skip_invalid: res.append(self.data_class()) @@ -2114,7 +2117,7 @@ def validate_coerce(self, v, skip_invalid=False): # Set new UIDs if self.set_uid: for trace in v: - trace.uid = str(uuid.uuid1()) + trace.uid = str(uuid.uuid4()) else: if skip_invalid: @@ -2123,3 +2126,58 @@ def validate_coerce(self, v, skip_invalid=False): self.raise_invalid_val(v) return v + + +class BaseTemplateValidator(CompoundValidator): + + def __init__(self, + plotly_name, + parent_name, + data_class_str, + data_docs, + **kwargs): + + super(BaseTemplateValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=data_class_str, + data_docs=data_docs, + **kwargs + ) + + def description(self): + compound_description = super(BaseTemplateValidator, self).description() + compound_description += """ + - The name of a registered template where current registered templates + are stored in the plotly.io.templates configuration object. The names + of all registered templates can be retrieved with: + >>> import plotly.io as pio + >>> list(pio.templates) + - A string containing multiple registered template names, joined on '+' + characters (e.g. 'template1+template2'). In this case the resulting + template is computed by merging together the collection of registered + templates""" + + return compound_description + + def validate_coerce(self, v, skip_invalid=False): + import plotly.io as pio + + try: + # Check if v is a template identifier + # (could be any hashable object) + if v in pio.templates: + return copy.deepcopy(pio.templates[v]) + # Otherwise, if v is a string, check to see if it consists of + # multiple template names joined on '+' characters + elif isinstance(v, string_types): + template_names = v.split('+') + if all([name in pio.templates for name in template_names]): + return pio.templates.merge_templates(*template_names) + + except TypeError: + # v is un-hashable + pass + + return super(BaseTemplateValidator, self).validate_coerce( + v, skip_invalid=skip_invalid) diff --git a/codegen/__init__.py b/codegen/__init__.py index 19165685f8f..6332593443b 100644 --- a/codegen/__init__.py +++ b/codegen/__init__.py @@ -8,11 +8,12 @@ DEPRECATED_DATATYPES) from codegen.figure import write_figure_classes from codegen.utils import (TraceNode, PlotlyNode, LayoutNode, FrameNode, - write_init_py) + write_init_py, ElementDefaultsNode) from codegen.validators import (write_validator_py, write_data_validator_py, get_data_validator_instance) + # Import notes # ------------ # Nothing from the plotly/ package should be imported during code @@ -22,6 +23,52 @@ # codegen/ package, and helpers used both during code generation and at # runtime should reside in the _plotly_utils/ package. # ---------------------------------------------------------------------------- +def preprocess_schema(plotly_schema): + """ + Central location to make changes to schema before it's seen by the + PlotlyNode classes + """ + + # Update template + # --------------- + layout = plotly_schema['layout']['layoutAttributes'] + + # Create codegen-friendly template scheme + template = { + "data": { + trace + 's': { + 'items': { + trace: { + }, + }, + "role": "object" + } + for trace in plotly_schema['traces'] + }, + "layout": { + }, + "description": """\ +Default attributes to be applied to the plot. +This should be a dict with format: `{'layout': layoutTemplate, 'data': +{trace_type: [traceTemplate, ...], ...}}` where `layoutTemplate` is a dict +matching the structure of `figure.layout` and `traceTemplate` is a dict +matching the structure of the trace with type `trace_type` (e.g. 'scatter'). +Alternatively, this may be specified as an instance of +plotly.graph_objs.layout.Template. + +Trace templates are applied cyclically to +traces of each type. Container arrays (eg `annotations`) have special +handling: An object ending in `defaults` (eg `annotationdefaults`) is +applied to each array item. But if an item has a `templateitemname` +key we look in the template array for an item with matching `name` and +apply that instead. If no matching `name` is found we mark the item +invisible. Any named template item not referenced is appended to the +end of the array, so this can be used to add a watermark annotation or a +logo image, for example. To omit one of these items on the plot, make +an item with matching `templateitemname` and `visible: false`.""" + } + + layout['template'] = template def perform_codegen(): @@ -52,6 +99,10 @@ def perform_codegen(): with open('plotly/package_data/plot-schema.json', 'r') as f: plotly_schema = json.load(f) + # Preprocess Schema + # ----------------- + preprocess_schema(plotly_schema) + # Build node lists # ---------------- # ### TraceNode ### @@ -81,7 +132,8 @@ def perform_codegen(): all_frame_nodes) all_compound_nodes = [node for node in all_datatype_nodes - if node.is_compound] + if node.is_compound and + not isinstance(node, ElementDefaultsNode)] # Write out validators # -------------------- diff --git a/codegen/datatypes.py b/codegen/datatypes.py index 4e88c424b1a..fb9f1c32ec2 100644 --- a/codegen/datatypes.py +++ b/codegen/datatypes.py @@ -66,6 +66,18 @@ def build_datatype_py(node): # --------------- assert node.is_compound + # Handle template traces + # ---------------------- + # We want template trace/layout classes like + # plotly.graph_objs.layout.template.data.Scatter to map to the + # corresponding trace/layout class (e.g. plotly.graph_objs.Scatter). + # So rather than generate a class definition, we just import the + # corresponding trace/layout class + if node.parent_path_str == 'layout.template.data': + return f"from plotly.graph_objs import {node.name_datatype_class}" + elif node.path_str == 'layout.template.layout': + return "from plotly.graph_objs import Layout" + # Extract node properties # ----------------------- undercase = node.name_undercase @@ -244,7 +256,17 @@ def __init__(self""") # ----------------------------------""") for subtype_node in subtype_nodes: name_prop = subtype_node.name_property - buffer.write(f""" + if name_prop == 'template': + # Special handling for layout.template to avoid infinite + # recursion. Only initialize layout.template object if non-None + # value specified + buffer.write(f""" + _v = arg.pop('{name_prop}', None) + _v = {name_prop} if {name_prop} is not None else _v + if _v is not None: + self['{name_prop}'] = _v""") + else: + buffer.write(f""" _v = arg.pop('{name_prop}', None) self['{name_prop}'] = {name_prop} \ if {name_prop} is not None else _v""") @@ -264,7 +286,8 @@ def __init__(self""") self._props['{lit_name}'] = {lit_val} self._validators['{lit_name}'] =\ LiteralValidator(plotly_name='{lit_name}',\ - parent_name='{lit_parent}', val={lit_val})""") + parent_name='{lit_parent}', val={lit_val}) + arg.pop('{lit_name}', None)""") buffer.write(f""" diff --git a/codegen/utils.py b/codegen/utils.py index a2fa7f701cb..41b1c3f218c 100644 --- a/codegen/utils.py +++ b/codegen/utils.py @@ -174,6 +174,7 @@ def format_description(desc): # Mapping from full property paths to custom validator classes CUSTOM_VALIDATOR_DATATYPES = { 'layout.image.source': '_plotly_utils.basevalidators.ImageUriValidator', + 'layout.template': '_plotly_utils.basevalidators.BaseTemplateValidator', 'frame.data': 'plotly.validators.DataValidator', 'frame.layout': 'plotly.validators.LayoutValidator' } @@ -257,9 +258,14 @@ def __init__(self, plotly_schema, node_path=(), parent=None): # Note the node_data is a property that must be computed by the # subclass based on plotly_schema and node_path if isinstance(self.node_data, dict_like): + childs_parent = ( + parent + if self.node_path and self.node_path[-1] == 'items' + else self) + self._children = [self.__class__(self.plotly_schema, node_path=self.node_path + (c,), - parent=self) + parent=childs_parent) for c in self.node_data if c and c[0] != '_'] # Sort by plotly name @@ -387,7 +393,15 @@ def name_property(self): ------- str """ - return self.plotly_name + ('s' if self.is_array_element else '') + + return self.plotly_name + ( + 's' if self.is_array_element and + # Don't add 's' to layout.template.data.scatter etc. + not (self.parent and + self.parent.parent and + self.parent.parent.parent and + self.parent.parent.parent.name_property == 'template') + else '') @property def name_validator_class(self) -> str: @@ -600,8 +614,8 @@ def is_array_element(self): ------- bool """ - if self.parent and self.parent.parent: - return self.parent.parent.is_array + if self.parent: + return self.parent.is_array else: return False @@ -774,7 +788,16 @@ def child_datatypes(self): nodes = [] for n in self.children: if n.is_array: + # Add array element node nodes.append(n.children[0].children[0]) + + # Add elementdefaults node. Require parent_path_parts not + # empty to avoid creating defaults classes for traces + if (n.parent_path_parts and + n.parent_path_parts != ('layout', 'template', 'data')): + + nodes.append(ElementDefaultsNode(n, self.plotly_schema)) + elif n.is_datatype: nodes.append(n) @@ -885,7 +908,11 @@ def get_all_compound_datatype_nodes(plotly_schema, node_class): if node.plotly_name and not node.is_array: nodes.append(node) - nodes_to_process.extend(node.child_compound_datatypes) + non_defaults_compound_children = [ + node for node in node.child_compound_datatypes + if not isinstance(node, ElementDefaultsNode)] + + nodes_to_process.extend(non_defaults_compound_children) return nodes @@ -1088,3 +1115,64 @@ def node_data(self) -> dict: node_data = node_data[prop_name] return node_data + + +class ElementDefaultsNode(PlotlyNode): + + def __init__(self, array_node, plotly_schema): + """ + Create node that represents element defaults properties + (e.g. layout.annotationdefaults). Construct as a wrapper around the + corresponding array property node (e.g. layout.annotations) + + Parameters + ---------- + array_node: PlotlyNode + """ + super().__init__(plotly_schema, + node_path=array_node.node_path, + parent=array_node.parent) + + assert array_node.is_array + self.array_node = array_node + self.element_node = array_node.children[0].children[0] + + @property + def node_data(self): + return {} + + @property + def description(self): + array_property_path = (self.parent_path_str + + '.' + self.array_node.name_property) + + if isinstance(self.array_node, TraceNode): + data_path = 'data.' + else: + data_path = '' + + defaults_property_path = ('layout.template.' + + data_path + + self.parent_path_str + + '.' + self.plotly_name) + return f"""\ +When used in a template +(as {defaults_property_path}), +sets the default property values to use for elements +of {array_property_path}""" + + @property + def name_base_datatype(self): + return self.element_node.name_base_datatype + + @property + def root_name(self): + return self.array_node.root_name + + @property + def plotly_name(self): + return self.element_node.plotly_name + 'defaults' + + @property + def name_datatype_class(self): + return self.element_node.name_datatype_class diff --git a/optional-requirements.txt b/optional-requirements.txt index f4a13ce86ec..4c6843877ff 100644 --- a/optional-requirements.txt +++ b/optional-requirements.txt @@ -24,6 +24,9 @@ psutil ## codegen dependencies ## yapf +## template generation ## +colorcet + ## ipython ## ipython diff --git a/plotly/basedatatypes.py b/plotly/basedatatypes.py index ed331290305..35019b50ad0 100644 --- a/plotly/basedatatypes.py +++ b/plotly/basedatatypes.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import + import collections import re import six @@ -20,7 +22,6 @@ from .utils import ElidedPrettyPrinter from .validators import (DataValidator, LayoutValidator, FramesValidator) - # Optional imports # ---------------- np = get_module('numpy') @@ -235,6 +236,12 @@ class is a subclass of both BaseFigure and widgets.DOMWidget. self._animation_duration_validator = animation.DurationValidator() self._animation_easing_validator = animation.EasingValidator() + # Template + # -------- + # ### Check for default template ### + self._initialize_layout_template() + + # Magic Methods # ------------- def __reduce__(self): @@ -363,8 +370,13 @@ def __repr__(self): Customize Figure representation when displayed in the terminal/notebook """ + props = self.to_plotly_json() + template_props = props.get('layout', {}).get('template', {}) + if template_props: + props['layout']['template'] = '...' + repr_str = BasePlotlyType._build_repr_for_class( - props=self.to_plotly_json(), + props=props, class_name=self.__class__.__name__) return repr_str @@ -1325,6 +1337,14 @@ def _init_child_props(self, child): # Layout # ------ + def _initialize_layout_template(self): + import plotly.io as pio + if self._layout_obj.template is None: + if pio.templates.default is not None: + self._layout_obj.template = pio.templates.default + else: + self._layout_obj.template = {} + @property def layout(self): """ @@ -1358,6 +1378,10 @@ def layout(self, new_layout): new_layout._orphan_props.clear() self._layout_obj = new_layout + # Initialize template object + # -------------------------- + self._initialize_layout_template() + # Notify JS side self._send_relayout_msg(new_layout_data) diff --git a/plotly/graph_objs/_area.py b/plotly/graph_objs/_area.py index bfb0b127606..408758acf01 100644 --- a/plotly/graph_objs/_area.py +++ b/plotly/graph_objs/_area.py @@ -806,6 +806,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='area', val='area' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_bar.py b/plotly/graph_objs/_bar.py index 0adc1c2a93b..e126b23ded9 100644 --- a/plotly/graph_objs/_bar.py +++ b/plotly/graph_objs/_bar.py @@ -2190,6 +2190,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='bar', val='bar' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_barpolar.py b/plotly/graph_objs/_barpolar.py index 061805957c4..41cab3bcc35 100644 --- a/plotly/graph_objs/_barpolar.py +++ b/plotly/graph_objs/_barpolar.py @@ -1363,6 +1363,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='barpolar', val='barpolar' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_box.py b/plotly/graph_objs/_box.py index 244541029f6..f7e514210c5 100644 --- a/plotly/graph_objs/_box.py +++ b/plotly/graph_objs/_box.py @@ -1582,6 +1582,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='box', val='box' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_candlestick.py b/plotly/graph_objs/_candlestick.py index 38570467734..126666afc2b 100644 --- a/plotly/graph_objs/_candlestick.py +++ b/plotly/graph_objs/_candlestick.py @@ -1242,6 +1242,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='candlestick', val='candlestick' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_carpet.py b/plotly/graph_objs/_carpet.py index f83a00a20df..94b3f8aefb5 100644 --- a/plotly/graph_objs/_carpet.py +++ b/plotly/graph_objs/_carpet.py @@ -225,6 +225,11 @@ def aaxis(self): tickformatstops plotly.graph_objs.carpet.aaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.carpet.aaxis.tickformatstopdefaults), sets + the default property values to use for elements + of carpet.aaxis.tickformatstops tickmode tickprefix @@ -510,6 +515,11 @@ def baxis(self): tickformatstops plotly.graph_objs.carpet.baxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.carpet.baxis.tickformatstopdefaults), sets + the default property values to use for elements + of carpet.baxis.tickformatstops tickmode tickprefix @@ -1720,6 +1730,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='carpet', val='carpet' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_choropleth.py b/plotly/graph_objs/_choropleth.py index f4281efe77d..57668cf8a74 100644 --- a/plotly/graph_objs/_choropleth.py +++ b/plotly/graph_objs/_choropleth.py @@ -170,6 +170,11 @@ def colorbar(self): plotly.graph_objs.choropleth.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.choropleth.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of choropleth.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1487,6 +1492,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='choropleth', val='choropleth' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_cone.py b/plotly/graph_objs/_cone.py index 3edbba4ff4b..0a62c33db93 100644 --- a/plotly/graph_objs/_cone.py +++ b/plotly/graph_objs/_cone.py @@ -259,6 +259,11 @@ def colorbar(self): tickformatstops plotly.graph_objs.cone.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.cone.colorbar.tickformatstopdefaults), sets + the default property values to use for elements + of cone.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1808,6 +1813,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='cone', val='cone' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_contour.py b/plotly/graph_objs/_contour.py index d646e7f8e38..df1710f1e1a 100644 --- a/plotly/graph_objs/_contour.py +++ b/plotly/graph_objs/_contour.py @@ -192,6 +192,11 @@ def colorbar(self): tickformatstops plotly.graph_objs.contour.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.contour.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of contour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2089,6 +2094,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='contour', val='contour' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_contourcarpet.py b/plotly/graph_objs/_contourcarpet.py index 5437f79269e..4bbb419c261 100644 --- a/plotly/graph_objs/_contourcarpet.py +++ b/plotly/graph_objs/_contourcarpet.py @@ -385,6 +385,12 @@ def colorbar(self): plotly.graph_objs.contourcarpet.colorbar.Tickfo rmatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.contourcarpet.colorbar.tickformatstopdefaults + ), sets the default property values to use for + elements of + contourcarpet.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1990,6 +1996,7 @@ def __init__( parent_name='contourcarpet', val='contourcarpet' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_figure.py b/plotly/graph_objs/_figure.py index 6d3873d7546..0741cf0a059 100644 --- a/plotly/graph_objs/_figure.py +++ b/plotly/graph_objs/_figure.py @@ -58,6 +58,11 @@ def __init__( annotations plotly.graph_objs.layout.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), + sets the default property values to use for + elements of layout.annotations autosize Determines whether or not a layout width or height that has been left undefined by the user @@ -208,6 +213,11 @@ def __init__( images plotly.graph_objs.layout.Image instance or dict with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the + default property values to use for elements of + layout.images legend plotly.graph_objs.layout.Legend instance or dict with compatible properties @@ -258,6 +268,11 @@ def __init__( shapes plotly.graph_objs.layout.Shape instance or dict with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the + default property values to use for elements of + layout.shapes showlegend Determines whether or not a legend is drawn. Default is `true` if there is a trace to show @@ -268,6 +283,11 @@ def __init__( sliders plotly.graph_objs.layout.Slider instance or dict with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets + the default property values to use for elements + of layout.sliders spikedistance Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no @@ -278,24 +298,27 @@ def __init__( such as scatter fills. template Default attributes to be applied to the plot. - Templates can be created from existing plots - using `Plotly.makeTemplate`, or created - manually. They should be objects with format: - `{layout: layoutTemplate, data: {[type]: - [traceTemplate, ...]}, ...}` `layoutTemplate` - and `traceTemplate` are objects matching the - attribute structure of `layout` and a data - trace. Trace templates are applied cyclically - to traces of each type. Container arrays (eg - `annotations`) have special handling: An object - ending in `defaults` (eg `annotationdefaults`) - is applied to each array item. But if an item - has a `templateitemname` key we look in the - template array for an item with matching `name` - and apply that instead. If no matching `name` - is found we mark the item invisible. Any named + This should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: + [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the + structure of `figure.layout` and + `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` + (e.g. 'scatter'). Alternatively, this may be + specified as an instance of + plotly.graph_objs.layout.Template. Trace + templates are applied cyclically to traces of + each type. Container arrays (eg `annotations`) + have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied + to each array item. But if an item has a + `templateitemname` key we look in the template + array for an item with matching `name` and + apply that instead. If no matching `name` is + found we mark the item invisible. Any named template item not referenced is appended to the - end of the array, so you can use this for a + end of the array, so this can be used to add a watermark annotation or a logo image, for example. To omit one of these items on the plot, make an item with matching @@ -310,6 +333,11 @@ def __init__( updatemenus plotly.graph_objs.layout.Updatemenu instance or dict with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), + sets the default property values to use for + elements of layout.updatemenus violingap Sets the gap (in plot fraction) between violins of adjacent location coordinates. @@ -4923,6 +4951,7 @@ def add_parcoords( customdata=None, customdatasrc=None, dimensions=None, + dimensiondefaults=None, domain=None, hoverinfo=None, hoverinfosrc=None, @@ -4964,6 +4993,11 @@ def add_parcoords( dimensions The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions domain plotly.graph_objs.parcoords.Domain instance or dict with compatible properties @@ -5038,6 +5072,7 @@ def add_parcoords( customdata=customdata, customdatasrc=customdatasrc, dimensions=dimensions, + dimensiondefaults=dimensiondefaults, domain=domain, hoverinfo=hoverinfo, hoverinfosrc=hoverinfosrc, @@ -8133,6 +8168,7 @@ def add_splom( customdatasrc=None, diagonal=None, dimensions=None, + dimensiondefaults=None, hoverinfo=None, hoverinfosrc=None, hoverlabel=None, @@ -8185,6 +8221,11 @@ def add_splom( dimensions plotly.graph_objs.splom.Dimension instance or dict with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions hoverinfo Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed @@ -8279,6 +8320,7 @@ def add_splom( customdatasrc=customdatasrc, diagonal=diagonal, dimensions=dimensions, + dimensiondefaults=dimensiondefaults, hoverinfo=hoverinfo, hoverinfosrc=hoverinfosrc, hoverlabel=hoverlabel, diff --git a/plotly/graph_objs/_figurewidget.py b/plotly/graph_objs/_figurewidget.py index 09b21f6dbe0..58bd0253ff4 100644 --- a/plotly/graph_objs/_figurewidget.py +++ b/plotly/graph_objs/_figurewidget.py @@ -58,6 +58,11 @@ def __init__( annotations plotly.graph_objs.layout.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), + sets the default property values to use for + elements of layout.annotations autosize Determines whether or not a layout width or height that has been left undefined by the user @@ -208,6 +213,11 @@ def __init__( images plotly.graph_objs.layout.Image instance or dict with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the + default property values to use for elements of + layout.images legend plotly.graph_objs.layout.Legend instance or dict with compatible properties @@ -258,6 +268,11 @@ def __init__( shapes plotly.graph_objs.layout.Shape instance or dict with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the + default property values to use for elements of + layout.shapes showlegend Determines whether or not a legend is drawn. Default is `true` if there is a trace to show @@ -268,6 +283,11 @@ def __init__( sliders plotly.graph_objs.layout.Slider instance or dict with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets + the default property values to use for elements + of layout.sliders spikedistance Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no @@ -278,24 +298,27 @@ def __init__( such as scatter fills. template Default attributes to be applied to the plot. - Templates can be created from existing plots - using `Plotly.makeTemplate`, or created - manually. They should be objects with format: - `{layout: layoutTemplate, data: {[type]: - [traceTemplate, ...]}, ...}` `layoutTemplate` - and `traceTemplate` are objects matching the - attribute structure of `layout` and a data - trace. Trace templates are applied cyclically - to traces of each type. Container arrays (eg - `annotations`) have special handling: An object - ending in `defaults` (eg `annotationdefaults`) - is applied to each array item. But if an item - has a `templateitemname` key we look in the - template array for an item with matching `name` - and apply that instead. If no matching `name` - is found we mark the item invisible. Any named + This should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: + [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the + structure of `figure.layout` and + `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` + (e.g. 'scatter'). Alternatively, this may be + specified as an instance of + plotly.graph_objs.layout.Template. Trace + templates are applied cyclically to traces of + each type. Container arrays (eg `annotations`) + have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied + to each array item. But if an item has a + `templateitemname` key we look in the template + array for an item with matching `name` and + apply that instead. If no matching `name` is + found we mark the item invisible. Any named template item not referenced is appended to the - end of the array, so you can use this for a + end of the array, so this can be used to add a watermark annotation or a logo image, for example. To omit one of these items on the plot, make an item with matching @@ -310,6 +333,11 @@ def __init__( updatemenus plotly.graph_objs.layout.Updatemenu instance or dict with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), + sets the default property values to use for + elements of layout.updatemenus violingap Sets the gap (in plot fraction) between violins of adjacent location coordinates. @@ -4923,6 +4951,7 @@ def add_parcoords( customdata=None, customdatasrc=None, dimensions=None, + dimensiondefaults=None, domain=None, hoverinfo=None, hoverinfosrc=None, @@ -4964,6 +4993,11 @@ def add_parcoords( dimensions The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions domain plotly.graph_objs.parcoords.Domain instance or dict with compatible properties @@ -5038,6 +5072,7 @@ def add_parcoords( customdata=customdata, customdatasrc=customdatasrc, dimensions=dimensions, + dimensiondefaults=dimensiondefaults, domain=domain, hoverinfo=hoverinfo, hoverinfosrc=hoverinfosrc, @@ -8133,6 +8168,7 @@ def add_splom( customdatasrc=None, diagonal=None, dimensions=None, + dimensiondefaults=None, hoverinfo=None, hoverinfosrc=None, hoverlabel=None, @@ -8185,6 +8221,11 @@ def add_splom( dimensions plotly.graph_objs.splom.Dimension instance or dict with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions hoverinfo Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed @@ -8279,6 +8320,7 @@ def add_splom( customdatasrc=customdatasrc, diagonal=diagonal, dimensions=dimensions, + dimensiondefaults=dimensiondefaults, hoverinfo=hoverinfo, hoverinfosrc=hoverinfosrc, hoverlabel=hoverlabel, diff --git a/plotly/graph_objs/_heatmap.py b/plotly/graph_objs/_heatmap.py index 201f4b60dc1..2ed8ddefdcd 100644 --- a/plotly/graph_objs/_heatmap.py +++ b/plotly/graph_objs/_heatmap.py @@ -169,6 +169,11 @@ def colorbar(self): tickformatstops plotly.graph_objs.heatmap.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.heatmap.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of heatmap.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1886,6 +1891,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='heatmap', val='heatmap' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_heatmapgl.py b/plotly/graph_objs/_heatmapgl.py index ebecf75bdb3..308aaf6bb4c 100644 --- a/plotly/graph_objs/_heatmapgl.py +++ b/plotly/graph_objs/_heatmapgl.py @@ -170,6 +170,11 @@ def colorbar(self): plotly.graph_objs.heatmapgl.colorbar.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.heatmapgl.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of heatmapgl.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1660,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='heatmapgl', val='heatmapgl' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_histogram.py b/plotly/graph_objs/_histogram.py index 5a857bc7e66..41b5b1ae28e 100644 --- a/plotly/graph_objs/_histogram.py +++ b/plotly/graph_objs/_histogram.py @@ -1762,6 +1762,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='histogram', val='histogram' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_histogram2d.py b/plotly/graph_objs/_histogram2d.py index cea5756c4f3..fb158655b0a 100644 --- a/plotly/graph_objs/_histogram2d.py +++ b/plotly/graph_objs/_histogram2d.py @@ -216,6 +216,12 @@ def colorbar(self): plotly.graph_objs.histogram2d.colorbar.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.histogram2d.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of + histogram2d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1950,6 +1956,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='histogram2d', val='histogram2d' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_histogram2dcontour.py b/plotly/graph_objs/_histogram2dcontour.py index 65e61c1258c..26cb96eebec 100644 --- a/plotly/graph_objs/_histogram2dcontour.py +++ b/plotly/graph_objs/_histogram2dcontour.py @@ -239,6 +239,12 @@ def colorbar(self): plotly.graph_objs.histogram2dcontour.colorbar.T ickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.histogram2dcontour.colorbar.tickformatstopdef + aults), sets the default property values to use + for elements of + histogram2dcontour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2101,6 +2107,7 @@ def __init__( parent_name='histogram2dcontour', val='histogram2dcontour' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_layout.py b/plotly/graph_objs/_layout.py index fab9890737d..f7f3a6dbd43 100644 --- a/plotly/graph_objs/_layout.py +++ b/plotly/graph_objs/_layout.py @@ -354,6 +354,33 @@ def annotations(self): def annotations(self, val): self['annotations'] = val + # annotationdefaults + # ------------------ + @property + def annotationdefaults(self): + """ + When used in a template (as + layout.template.layout.annotationdefaults), sets the default + property values to use for elements of layout.annotations + + The 'annotationdefaults' property is an instance of Annotation + that may be specified as: + - An instance of plotly.graph_objs.layout.Annotation + - A dict of string/value properties that will be passed + to the Annotation constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.Annotation + """ + return self['annotationdefaults'] + + @annotationdefaults.setter + def annotationdefaults(self, val): + self['annotationdefaults'] = val + # autosize # -------- @property @@ -1241,6 +1268,33 @@ def images(self): def images(self, val): self['images'] = val + # imagedefaults + # ------------- + @property + def imagedefaults(self): + """ + When used in a template (as + layout.template.layout.imagedefaults), sets the default + property values to use for elements of layout.images + + The 'imagedefaults' property is an instance of Image + that may be specified as: + - An instance of plotly.graph_objs.layout.Image + - A dict of string/value properties that will be passed + to the Image constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.Image + """ + return self['imagedefaults'] + + @imagedefaults.setter + def imagedefaults(self, val): + self['imagedefaults'] = val + # legend # ------ @property @@ -1334,6 +1388,11 @@ def mapbox(self): layers plotly.graph_objs.layout.mapbox.Layer instance or dict with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.mapbox.layerdefaults), + sets the default property values to use for + elements of layout.mapbox.layers pitch Sets the pitch angle of the map (in degrees, where 0 means perpendicular to the surface of @@ -1709,6 +1768,11 @@ def scene(self): annotations plotly.graph_objs.layout.scene.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as layout.template.lay + out.scene.annotationdefaults), sets the default + property values to use for elements of + layout.scene.annotations aspectmode If "cube", this scene's axes are drawn as a cube, regardless of the axes' ranges. If @@ -1976,6 +2040,33 @@ def shapes(self): def shapes(self, val): self['shapes'] = val + # shapedefaults + # ------------- + @property + def shapedefaults(self): + """ + When used in a template (as + layout.template.layout.shapedefaults), sets the default + property values to use for elements of layout.shapes + + The 'shapedefaults' property is an instance of Shape + that may be specified as: + - An instance of plotly.graph_objs.layout.Shape + - A dict of string/value properties that will be passed + to the Shape constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.Shape + """ + return self['shapedefaults'] + + @shapedefaults.setter + def shapedefaults(self, val): + self['shapedefaults'] = val + # showlegend # ---------- @property @@ -2060,6 +2151,11 @@ def sliders(self): steps plotly.graph_objs.layout.slider.Step instance or dict with compatible properties + stepdefaults + When used in a template (as + layout.template.layout.slider.stepdefaults), + sets the default property values to use for + elements of layout.slider.steps templateitemname Used to refer to a named item in this array in the template. Named items from the template @@ -2110,6 +2206,33 @@ def sliders(self): def sliders(self, val): self['sliders'] = val + # sliderdefaults + # -------------- + @property + def sliderdefaults(self): + """ + When used in a template (as + layout.template.layout.sliderdefaults), sets the default + property values to use for elements of layout.sliders + + The 'sliderdefaults' property is an instance of Slider + that may be specified as: + - An instance of plotly.graph_objs.layout.Slider + - A dict of string/value properties that will be passed + to the Slider constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.Slider + """ + return self['sliderdefaults'] + + @sliderdefaults.setter + def sliderdefaults(self, val): + self['sliderdefaults'] = val + # spikedistance # ------------- @property @@ -2140,30 +2263,54 @@ def spikedistance(self, val): @property def template(self): """ - Default attributes to be applied to the plot. Templates can be - created from existing plots using `Plotly.makeTemplate`, or - created manually. They should be objects with format: `{layout: - layoutTemplate, data: {[type]: [traceTemplate, ...]}, ...}` - `layoutTemplate` and `traceTemplate` are objects matching the - attribute structure of `layout` and a data trace. Trace - templates are applied cyclically to traces of each type. - Container arrays (eg `annotations`) have special handling: An - object ending in `defaults` (eg `annotationdefaults`) is - applied to each array item. But if an item has a - `templateitemname` key we look in the template array for an - item with matching `name` and apply that instead. If no - matching `name` is found we mark the item invisible. Any named - template item not referenced is appended to the end of the - array, so you can use this for a watermark annotation or a logo - image, for example. To omit one of these items on the plot, - make an item with matching `templateitemname` and `visible: - false`. - - The 'template' property accepts values of any type + Default attributes to be applied to the plot. This should be a + dict with format: `{'layout': layoutTemplate, 'data': + {trace_type: [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the structure of + `figure.layout` and `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` (e.g. 'scatter'). + Alternatively, this may be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are applied + cyclically to traces of each type. Container arrays (eg + `annotations`) have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied to each array + item. But if an item has a `templateitemname` key we look in + the template array for an item with matching `name` and apply + that instead. If no matching `name` is found we mark the item + invisible. Any named template item not referenced is appended + to the end of the array, so this can be used to add a watermark + annotation or a logo image, for example. To omit one of these + items on the plot, make an item with matching + `templateitemname` and `visible: false`. + + The 'template' property is an instance of Template + that may be specified as: + - An instance of plotly.graph_objs.layout.Template + - A dict of string/value properties that will be passed + to the Template constructor + + Supported dict properties: + + data + plotly.graph_objs.layout.template.Data instance + or dict with compatible properties + layout + plotly.graph_objs.layout.template.Layout + instance or dict with compatible properties + + - The name of a registered template where current registered templates + are stored in the plotly.io.templates configuration object. The names + of all registered templates can be retrieved with: + >>> import plotly.io as pio + >>> list(pio.templates) + - A string containing multiple registered template names, joined on '+' + characters (e.g. 'template1+template2'). In this case the resulting + template is computed by merging together the collection of registered + templates Returns ------- - Any + plotly.graph_objs.layout.Template """ return self['template'] @@ -2306,6 +2453,11 @@ def updatemenus(self): buttons plotly.graph_objs.layout.updatemenu.Button instance or dict with compatible properties + buttondefaults + When used in a template (as layout.template.lay + out.updatemenu.buttondefaults), sets the + default property values to use for elements of + layout.updatemenu.buttons direction Determines the direction in which the buttons are laid out, whether in a dropdown menu or a @@ -2375,6 +2527,33 @@ def updatemenus(self): def updatemenus(self, val): self['updatemenus'] = val + # updatemenudefaults + # ------------------ + @property + def updatemenudefaults(self): + """ + When used in a template (as + layout.template.layout.updatemenudefaults), sets the default + property values to use for elements of layout.updatemenus + + The 'updatemenudefaults' property is an instance of Updatemenu + that may be specified as: + - An instance of plotly.graph_objs.layout.Updatemenu + - A dict of string/value properties that will be passed + to the Updatemenu constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.Updatemenu + """ + return self['updatemenudefaults'] + + @updatemenudefaults.setter + def updatemenudefaults(self, val): + self['updatemenudefaults'] = val + # violingap # --------- @property @@ -2778,6 +2957,11 @@ def xaxis(self): tickformatstops plotly.graph_objs.layout.xaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.xaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -3160,6 +3344,11 @@ def yaxis(self): tickformatstops plotly.graph_objs.layout.yaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.yaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -3249,6 +3438,11 @@ def _prop_descriptions(self): annotations plotly.graph_objs.layout.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), sets the + default property values to use for elements of + layout.annotations autosize Determines whether or not a layout width or height that has been left undefined by the user is initialized on @@ -3383,6 +3577,10 @@ def _prop_descriptions(self): images plotly.graph_objs.layout.Image instance or dict with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the default + property values to use for elements of layout.images legend plotly.graph_objs.layout.Legend instance or dict with compatible properties @@ -3429,6 +3627,10 @@ def _prop_descriptions(self): shapes plotly.graph_objs.layout.Shape instance or dict with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the default + property values to use for elements of layout.shapes showlegend Determines whether or not a legend is drawn. Default is `true` if there is a trace to show and any of these: a) @@ -3438,6 +3640,11 @@ def _prop_descriptions(self): sliders plotly.graph_objs.layout.Slider instance or dict with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets the + default property values to use for elements of + layout.sliders spikedistance Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no cutoff, 0 means no @@ -3446,26 +3653,28 @@ def _prop_descriptions(self): objects can be hovered on but will not generate spikelines, such as scatter fills. template - Default attributes to be applied to the plot. Templates - can be created from existing plots using - `Plotly.makeTemplate`, or created manually. They should - be objects with format: `{layout: layoutTemplate, data: - {[type]: [traceTemplate, ...]}, ...}` `layoutTemplate` - and `traceTemplate` are objects matching the attribute - structure of `layout` and a data trace. Trace - templates are applied cyclically to traces of each - type. Container arrays (eg `annotations`) have special - handling: An object ending in `defaults` (eg - `annotationdefaults`) is applied to each array item. - But if an item has a `templateitemname` key we look in - the template array for an item with matching `name` and - apply that instead. If no matching `name` is found we - mark the item invisible. Any named template item not - referenced is appended to the end of the array, so you - can use this for a watermark annotation or a logo - image, for example. To omit one of these items on the - plot, make an item with matching `templateitemname` and - `visible: false`. + Default attributes to be applied to the plot. This + should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: [traceTemplate, + ...], ...}}` where `layoutTemplate` is a dict matching + the structure of `figure.layout` and `traceTemplate` is + a dict matching the structure of the trace with type + `trace_type` (e.g. 'scatter'). Alternatively, this may + be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are + applied cyclically to traces of each type. Container + arrays (eg `annotations`) have special handling: An + object ending in `defaults` (eg `annotationdefaults`) + is applied to each array item. But if an item has a + `templateitemname` key we look in the template array + for an item with matching `name` and apply that + instead. If no matching `name` is found we mark the + item invisible. Any named template item not referenced + is appended to the end of the array, so this can be + used to add a watermark annotation or a logo image, for + example. To omit one of these items on the plot, make + an item with matching `templateitemname` and `visible: + false`. ternary plotly.graph_objs.layout.Ternary instance or dict with compatible properties @@ -3476,6 +3685,11 @@ def _prop_descriptions(self): updatemenus plotly.graph_objs.layout.Updatemenu instance or dict with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), sets the + default property values to use for elements of + layout.updatemenus violingap Sets the gap (in plot fraction) between violins of adjacent location coordinates. @@ -3504,6 +3718,7 @@ def __init__( arg=None, angularaxis=None, annotations=None, + annotationdefaults=None, autosize=None, bargap=None, bargroupgap=None, @@ -3530,6 +3745,7 @@ def __init__( hoverlabel=None, hovermode=None, images=None, + imagedefaults=None, legend=None, mapbox=None, margin=None, @@ -3543,14 +3759,17 @@ def __init__( selectdirection=None, separators=None, shapes=None, + shapedefaults=None, showlegend=None, sliders=None, + sliderdefaults=None, spikedistance=None, template=None, ternary=None, title=None, titlefont=None, updatemenus=None, + updatemenudefaults=None, violingap=None, violingroupgap=None, violinmode=None, @@ -3573,6 +3792,11 @@ def __init__( annotations plotly.graph_objs.layout.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), sets the + default property values to use for elements of + layout.annotations autosize Determines whether or not a layout width or height that has been left undefined by the user is initialized on @@ -3707,6 +3931,10 @@ def __init__( images plotly.graph_objs.layout.Image instance or dict with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the default + property values to use for elements of layout.images legend plotly.graph_objs.layout.Legend instance or dict with compatible properties @@ -3753,6 +3981,10 @@ def __init__( shapes plotly.graph_objs.layout.Shape instance or dict with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the default + property values to use for elements of layout.shapes showlegend Determines whether or not a legend is drawn. Default is `true` if there is a trace to show and any of these: a) @@ -3762,6 +3994,11 @@ def __init__( sliders plotly.graph_objs.layout.Slider instance or dict with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets the + default property values to use for elements of + layout.sliders spikedistance Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no cutoff, 0 means no @@ -3770,26 +4007,28 @@ def __init__( objects can be hovered on but will not generate spikelines, such as scatter fills. template - Default attributes to be applied to the plot. Templates - can be created from existing plots using - `Plotly.makeTemplate`, or created manually. They should - be objects with format: `{layout: layoutTemplate, data: - {[type]: [traceTemplate, ...]}, ...}` `layoutTemplate` - and `traceTemplate` are objects matching the attribute - structure of `layout` and a data trace. Trace - templates are applied cyclically to traces of each - type. Container arrays (eg `annotations`) have special - handling: An object ending in `defaults` (eg - `annotationdefaults`) is applied to each array item. - But if an item has a `templateitemname` key we look in - the template array for an item with matching `name` and - apply that instead. If no matching `name` is found we - mark the item invisible. Any named template item not - referenced is appended to the end of the array, so you - can use this for a watermark annotation or a logo - image, for example. To omit one of these items on the - plot, make an item with matching `templateitemname` and - `visible: false`. + Default attributes to be applied to the plot. This + should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: [traceTemplate, + ...], ...}}` where `layoutTemplate` is a dict matching + the structure of `figure.layout` and `traceTemplate` is + a dict matching the structure of the trace with type + `trace_type` (e.g. 'scatter'). Alternatively, this may + be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are + applied cyclically to traces of each type. Container + arrays (eg `annotations`) have special handling: An + object ending in `defaults` (eg `annotationdefaults`) + is applied to each array item. But if an item has a + `templateitemname` key we look in the template array + for an item with matching `name` and apply that + instead. If no matching `name` is found we mark the + item invisible. Any named template item not referenced + is appended to the end of the array, so this can be + used to add a watermark annotation or a logo image, for + example. To omit one of these items on the plot, make + an item with matching `templateitemname` and `visible: + false`. ternary plotly.graph_objs.layout.Ternary instance or dict with compatible properties @@ -3800,6 +4039,11 @@ def __init__( updatemenus plotly.graph_objs.layout.Updatemenu instance or dict with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), sets the + default property values to use for elements of + layout.updatemenus violingap Sets the gap (in plot fraction) between violins of adjacent location coordinates. @@ -3856,6 +4100,7 @@ def __init__( # --------------------- self._validators['angularaxis'] = v_layout.AngularAxisValidator() self._validators['annotations'] = v_layout.AnnotationsValidator() + self._validators['annotationdefaults'] = v_layout.AnnotationValidator() self._validators['autosize'] = v_layout.AutosizeValidator() self._validators['bargap'] = v_layout.BargapValidator() self._validators['bargroupgap'] = v_layout.BargroupgapValidator() @@ -3884,6 +4129,7 @@ def __init__( self._validators['hoverlabel'] = v_layout.HoverlabelValidator() self._validators['hovermode'] = v_layout.HovermodeValidator() self._validators['images'] = v_layout.ImagesValidator() + self._validators['imagedefaults'] = v_layout.ImageValidator() self._validators['legend'] = v_layout.LegendValidator() self._validators['mapbox'] = v_layout.MapboxValidator() self._validators['margin'] = v_layout.MarginValidator() @@ -3898,14 +4144,17 @@ def __init__( ] = v_layout.SelectdirectionValidator() self._validators['separators'] = v_layout.SeparatorsValidator() self._validators['shapes'] = v_layout.ShapesValidator() + self._validators['shapedefaults'] = v_layout.ShapeValidator() self._validators['showlegend'] = v_layout.ShowlegendValidator() self._validators['sliders'] = v_layout.SlidersValidator() + self._validators['sliderdefaults'] = v_layout.SliderValidator() self._validators['spikedistance'] = v_layout.SpikedistanceValidator() self._validators['template'] = v_layout.TemplateValidator() self._validators['ternary'] = v_layout.TernaryValidator() self._validators['title'] = v_layout.TitleValidator() self._validators['titlefont'] = v_layout.TitlefontValidator() self._validators['updatemenus'] = v_layout.UpdatemenusValidator() + self._validators['updatemenudefaults'] = v_layout.UpdatemenuValidator() self._validators['violingap'] = v_layout.ViolingapValidator() self._validators['violingroupgap'] = v_layout.ViolingroupgapValidator() self._validators['violinmode'] = v_layout.ViolinmodeValidator() @@ -3919,6 +4168,9 @@ def __init__( self['angularaxis'] = angularaxis if angularaxis is not None else _v _v = arg.pop('annotations', None) self['annotations'] = annotations if annotations is not None else _v + _v = arg.pop('annotationdefaults', None) + self['annotationdefaults' + ] = annotationdefaults if annotationdefaults is not None else _v _v = arg.pop('autosize', None) self['autosize'] = autosize if autosize is not None else _v _v = arg.pop('bargap', None) @@ -3974,6 +4226,9 @@ def __init__( self['hovermode'] = hovermode if hovermode is not None else _v _v = arg.pop('images', None) self['images'] = images if images is not None else _v + _v = arg.pop('imagedefaults', None) + self['imagedefaults' + ] = imagedefaults if imagedefaults is not None else _v _v = arg.pop('legend', None) self['legend'] = legend if legend is not None else _v _v = arg.pop('mapbox', None) @@ -4002,15 +4257,23 @@ def __init__( self['separators'] = separators if separators is not None else _v _v = arg.pop('shapes', None) self['shapes'] = shapes if shapes is not None else _v + _v = arg.pop('shapedefaults', None) + self['shapedefaults' + ] = shapedefaults if shapedefaults is not None else _v _v = arg.pop('showlegend', None) self['showlegend'] = showlegend if showlegend is not None else _v _v = arg.pop('sliders', None) self['sliders'] = sliders if sliders is not None else _v + _v = arg.pop('sliderdefaults', None) + self['sliderdefaults' + ] = sliderdefaults if sliderdefaults is not None else _v _v = arg.pop('spikedistance', None) self['spikedistance' ] = spikedistance if spikedistance is not None else _v _v = arg.pop('template', None) - self['template'] = template if template is not None else _v + _v = template if template is not None else _v + if _v is not None: + self['template'] = _v _v = arg.pop('ternary', None) self['ternary'] = ternary if ternary is not None else _v _v = arg.pop('title', None) @@ -4019,6 +4282,9 @@ def __init__( self['titlefont'] = titlefont if titlefont is not None else _v _v = arg.pop('updatemenus', None) self['updatemenus'] = updatemenus if updatemenus is not None else _v + _v = arg.pop('updatemenudefaults', None) + self['updatemenudefaults' + ] = updatemenudefaults if updatemenudefaults is not None else _v _v = arg.pop('violingap', None) self['violingap'] = violingap if violingap is not None else _v _v = arg.pop('violingroupgap', None) diff --git a/plotly/graph_objs/_mesh3d.py b/plotly/graph_objs/_mesh3d.py index 941f69ba1a4..afdc8bbd12c 100644 --- a/plotly/graph_objs/_mesh3d.py +++ b/plotly/graph_objs/_mesh3d.py @@ -332,6 +332,11 @@ def colorbar(self): tickformatstops plotly.graph_objs.mesh3d.colorbar.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.mesh3d.colorbar.tickformatstopdefaults), sets + the default property values to use for elements + of mesh3d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2279,6 +2284,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='mesh3d', val='mesh3d' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_ohlc.py b/plotly/graph_objs/_ohlc.py index 70e8536d086..bf9c14defef 100644 --- a/plotly/graph_objs/_ohlc.py +++ b/plotly/graph_objs/_ohlc.py @@ -1233,6 +1233,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='ohlc', val='ohlc' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_parcoords.py b/plotly/graph_objs/_parcoords.py index 638fcdaa4e4..79dfd22ab12 100644 --- a/plotly/graph_objs/_parcoords.py +++ b/plotly/graph_objs/_parcoords.py @@ -145,6 +145,34 @@ def dimensions(self): def dimensions(self, val): self['dimensions'] = val + # dimensiondefaults + # ----------------- + @property + def dimensiondefaults(self): + """ + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets the + default property values to use for elements of + parcoords.dimensions + + The 'dimensiondefaults' property is an instance of Dimension + that may be specified as: + - An instance of plotly.graph_objs.parcoords.Dimension + - A dict of string/value properties that will be passed + to the Dimension constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.parcoords.Dimension + """ + return self['dimensiondefaults'] + + @dimensiondefaults.setter + def dimensiondefaults(self, val): + self['dimensiondefaults'] = val + # domain # ------ @property @@ -759,6 +787,11 @@ def _prop_descriptions(self): dimensions The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions domain plotly.graph_objs.parcoords.Domain instance or dict with compatible properties @@ -824,6 +857,7 @@ def __init__( customdata=None, customdatasrc=None, dimensions=None, + dimensiondefaults=None, domain=None, hoverinfo=None, hoverinfosrc=None, @@ -866,6 +900,11 @@ def __init__( dimensions The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions domain plotly.graph_objs.parcoords.Domain instance or dict with compatible properties @@ -960,6 +999,8 @@ def __init__( self._validators['customdatasrc' ] = v_parcoords.CustomdatasrcValidator() self._validators['dimensions'] = v_parcoords.DimensionsValidator() + self._validators['dimensiondefaults' + ] = v_parcoords.DimensionValidator() self._validators['domain'] = v_parcoords.DomainValidator() self._validators['hoverinfo'] = v_parcoords.HoverinfoValidator() self._validators['hoverinfosrc'] = v_parcoords.HoverinfosrcValidator() @@ -989,6 +1030,9 @@ def __init__( ] = customdatasrc if customdatasrc is not None else _v _v = arg.pop('dimensions', None) self['dimensions'] = dimensions if dimensions is not None else _v + _v = arg.pop('dimensiondefaults', None) + self['dimensiondefaults' + ] = dimensiondefaults if dimensiondefaults is not None else _v _v = arg.pop('domain', None) self['domain'] = domain if domain is not None else _v _v = arg.pop('hoverinfo', None) @@ -1034,6 +1078,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='parcoords', val='parcoords' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_pie.py b/plotly/graph_objs/_pie.py index b0e6d74e4be..0fc2b20595d 100644 --- a/plotly/graph_objs/_pie.py +++ b/plotly/graph_objs/_pie.py @@ -1516,6 +1516,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='pie', val='pie' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_pointcloud.py b/plotly/graph_objs/_pointcloud.py index 4c1d3226fa7..e88c6671ef4 100644 --- a/plotly/graph_objs/_pointcloud.py +++ b/plotly/graph_objs/_pointcloud.py @@ -1215,6 +1215,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='pointcloud', val='pointcloud' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_sankey.py b/plotly/graph_objs/_sankey.py index 953ba7e6061..cfcf67ffb69 100644 --- a/plotly/graph_objs/_sankey.py +++ b/plotly/graph_objs/_sankey.py @@ -989,6 +989,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='sankey', val='sankey' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scatter.py b/plotly/graph_objs/_scatter.py index ca55409585a..62c19c3ae38 100644 --- a/plotly/graph_objs/_scatter.py +++ b/plotly/graph_objs/_scatter.py @@ -2396,6 +2396,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='scatter', val='scatter' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scatter3d.py b/plotly/graph_objs/_scatter3d.py index 4c49c7c9dc8..acc0c296eac 100644 --- a/plotly/graph_objs/_scatter3d.py +++ b/plotly/graph_objs/_scatter3d.py @@ -1895,6 +1895,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='scatter3d', val='scatter3d' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scattercarpet.py b/plotly/graph_objs/_scattercarpet.py index dec3f375144..30b6c2a1191 100644 --- a/plotly/graph_objs/_scattercarpet.py +++ b/plotly/graph_objs/_scattercarpet.py @@ -1592,6 +1592,7 @@ def __init__( parent_name='scattercarpet', val='scattercarpet' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scattergeo.py b/plotly/graph_objs/_scattergeo.py index 1832981e05a..af5ad7bf887 100644 --- a/plotly/graph_objs/_scattergeo.py +++ b/plotly/graph_objs/_scattergeo.py @@ -1599,6 +1599,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='scattergeo', val='scattergeo' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scattergl.py b/plotly/graph_objs/_scattergl.py index f68f881b22e..0bb515c43a9 100644 --- a/plotly/graph_objs/_scattergl.py +++ b/plotly/graph_objs/_scattergl.py @@ -1930,6 +1930,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='scattergl', val='scattergl' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scattermapbox.py b/plotly/graph_objs/_scattermapbox.py index 3a4d7d07974..04de732e6fa 100644 --- a/plotly/graph_objs/_scattermapbox.py +++ b/plotly/graph_objs/_scattermapbox.py @@ -1440,6 +1440,7 @@ def __init__( parent_name='scattermapbox', val='scattermapbox' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scatterpolar.py b/plotly/graph_objs/_scatterpolar.py index f677e45dcda..8b248e2a9f4 100644 --- a/plotly/graph_objs/_scatterpolar.py +++ b/plotly/graph_objs/_scatterpolar.py @@ -1776,6 +1776,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='scatterpolar', val='scatterpolar' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scatterpolargl.py b/plotly/graph_objs/_scatterpolargl.py index 93a3e2f6046..1ebc14345d4 100644 --- a/plotly/graph_objs/_scatterpolargl.py +++ b/plotly/graph_objs/_scatterpolargl.py @@ -1716,6 +1716,7 @@ def __init__( parent_name='scatterpolargl', val='scatterpolargl' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_scatterternary.py b/plotly/graph_objs/_scatterternary.py index 9d0a9b4aae1..be65afd4502 100644 --- a/plotly/graph_objs/_scatterternary.py +++ b/plotly/graph_objs/_scatterternary.py @@ -1748,6 +1748,7 @@ def __init__( parent_name='scatterternary', val='scatterternary' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_splom.py b/plotly/graph_objs/_splom.py index 4bc4962893c..1d6cd7bed12 100644 --- a/plotly/graph_objs/_splom.py +++ b/plotly/graph_objs/_splom.py @@ -135,6 +135,33 @@ def dimensions(self): def dimensions(self, val): self['dimensions'] = val + # dimensiondefaults + # ----------------- + @property + def dimensiondefaults(self): + """ + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the default + property values to use for elements of splom.dimensions + + The 'dimensiondefaults' property is an instance of Dimension + that may be specified as: + - An instance of plotly.graph_objs.splom.Dimension + - A dict of string/value properties that will be passed + to the Dimension constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.splom.Dimension + """ + return self['dimensiondefaults'] + + @dimensiondefaults.setter + def dimensiondefaults(self, val): + self['dimensiondefaults'] = val + # hoverinfo # --------- @property @@ -812,6 +839,11 @@ def _prop_descriptions(self): dimensions plotly.graph_objs.splom.Dimension instance or dict with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions hoverinfo Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed @@ -897,6 +929,7 @@ def __init__( customdatasrc=None, diagonal=None, dimensions=None, + dimensiondefaults=None, hoverinfo=None, hoverinfosrc=None, hoverlabel=None, @@ -950,6 +983,11 @@ def __init__( dimensions plotly.graph_objs.splom.Dimension instance or dict with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions hoverinfo Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed @@ -1063,6 +1101,7 @@ def __init__( self._validators['customdatasrc'] = v_splom.CustomdatasrcValidator() self._validators['diagonal'] = v_splom.DiagonalValidator() self._validators['dimensions'] = v_splom.DimensionsValidator() + self._validators['dimensiondefaults'] = v_splom.DimensionValidator() self._validators['hoverinfo'] = v_splom.HoverinfoValidator() self._validators['hoverinfosrc'] = v_splom.HoverinfosrcValidator() self._validators['hoverlabel'] = v_splom.HoverlabelValidator() @@ -1097,6 +1136,9 @@ def __init__( self['diagonal'] = diagonal if diagonal is not None else _v _v = arg.pop('dimensions', None) self['dimensions'] = dimensions if dimensions is not None else _v + _v = arg.pop('dimensiondefaults', None) + self['dimensiondefaults' + ] = dimensiondefaults if dimensiondefaults is not None else _v _v = arg.pop('hoverinfo', None) self['hoverinfo'] = hoverinfo if hoverinfo is not None else _v _v = arg.pop('hoverinfosrc', None) @@ -1152,6 +1194,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='splom', val='splom' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_streamtube.py b/plotly/graph_objs/_streamtube.py index b43a7ecbe10..f1ae2ebc97d 100644 --- a/plotly/graph_objs/_streamtube.py +++ b/plotly/graph_objs/_streamtube.py @@ -237,6 +237,11 @@ def colorbar(self): plotly.graph_objs.streamtube.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.streamtube.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of streamtube.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1763,6 +1768,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='streamtube', val='streamtube' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_surface.py b/plotly/graph_objs/_surface.py index 482c47f88f4..f68a03f5c4c 100644 --- a/plotly/graph_objs/_surface.py +++ b/plotly/graph_objs/_surface.py @@ -236,6 +236,11 @@ def colorbar(self): tickformatstops plotly.graph_objs.surface.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.surface.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of surface.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1740,6 +1745,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='surface', val='surface' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_table.py b/plotly/graph_objs/_table.py index 1169fcbc509..a0090df5915 100644 --- a/plotly/graph_objs/_table.py +++ b/plotly/graph_objs/_table.py @@ -959,6 +959,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='table', val='table' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/_violin.py b/plotly/graph_objs/_violin.py index 1f8149d82d6..f4cb930578e 100644 --- a/plotly/graph_objs/_violin.py +++ b/plotly/graph_objs/_violin.py @@ -1717,6 +1717,7 @@ def __init__( self._validators['type'] = LiteralValidator( plotly_name='type', parent_name='violin', val='violin' ) + arg.pop('type', None) # Process unknown kwargs # ---------------------- diff --git a/plotly/graph_objs/bar/_marker.py b/plotly/graph_objs/bar/_marker.py index fedec467678..039af6cbe8a 100644 --- a/plotly/graph_objs/bar/_marker.py +++ b/plotly/graph_objs/bar/_marker.py @@ -307,6 +307,11 @@ def colorbar(self): plotly.graph_objs.bar.marker.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.bar.marker.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of bar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/bar/marker/_colorbar.py b/plotly/graph_objs/bar/marker/_colorbar.py index 39f6c4b519e..1af94049b04 100644 --- a/plotly/graph_objs/bar/marker/_colorbar.py +++ b/plotly/graph_objs/bar/marker/_colorbar.py @@ -747,6 +747,33 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.bar.marker.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of bar.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.bar.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.bar.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1327,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.bar.marker.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.bar.ma + rker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + bar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1420,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1563,11 @@ def __init__( tickformatstops plotly.graph_objs.bar.marker.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.bar.ma + rker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + bar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1690,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1767,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/barpolar/_marker.py b/plotly/graph_objs/barpolar/_marker.py index 68415ad529c..cdb1f60cfef 100644 --- a/plotly/graph_objs/barpolar/_marker.py +++ b/plotly/graph_objs/barpolar/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.barpolar.marker.colorbar.Tick formatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.barpolar.marker.colorbar.tickformatstopdefaul + ts), sets the default property values to use + for elements of + barpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/barpolar/marker/_colorbar.py b/plotly/graph_objs/barpolar/marker/_colorbar.py index a1a57b225b0..4c9cc792dda 100644 --- a/plotly/graph_objs/barpolar/marker/_colorbar.py +++ b/plotly/graph_objs/barpolar/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.barpolar.marke + r.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + barpolar.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.barpolar.marker.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.barpol + ar.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + barpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.barpolar.marker.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.barpol + ar.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + barpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1653,6 +1692,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1728,6 +1769,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/carpet/_aaxis.py b/plotly/graph_objs/carpet/_aaxis.py index 89de875f4a3..a7f24f03711 100644 --- a/plotly/graph_objs/carpet/_aaxis.py +++ b/plotly/graph_objs/carpet/_aaxis.py @@ -1235,6 +1235,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.carpet.aaxis.tickformatstopdefaults), sets + the default property values to use for elements of + carpet.aaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.carpet.aaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.carpet.aaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # tickmode # -------- @property @@ -1653,6 +1681,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.carpet.aaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.aaxis.tickformatstops tickmode tickprefix @@ -1730,6 +1763,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, tickmode=None, tickprefix=None, ticksuffix=None, @@ -1904,6 +1938,11 @@ def __init__( tickformatstops plotly.graph_objs.carpet.aaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.aaxis.tickformatstops tickmode tickprefix @@ -2012,6 +2051,8 @@ def __init__( self._validators['tickformat'] = v_aaxis.TickformatValidator() self._validators['tickformatstops' ] = v_aaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_aaxis.TickformatstopValidator() self._validators['tickmode'] = v_aaxis.TickmodeValidator() self._validators['tickprefix'] = v_aaxis.TickprefixValidator() self._validators['ticksuffix'] = v_aaxis.TicksuffixValidator() @@ -2126,6 +2167,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('tickmode', None) self['tickmode'] = tickmode if tickmode is not None else _v _v = arg.pop('tickprefix', None) diff --git a/plotly/graph_objs/carpet/_baxis.py b/plotly/graph_objs/carpet/_baxis.py index a83242836b5..480b12fef52 100644 --- a/plotly/graph_objs/carpet/_baxis.py +++ b/plotly/graph_objs/carpet/_baxis.py @@ -1235,6 +1235,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.carpet.baxis.tickformatstopdefaults), sets + the default property values to use for elements of + carpet.baxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.carpet.baxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.carpet.baxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # tickmode # -------- @property @@ -1653,6 +1681,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.carpet.baxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .baxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.baxis.tickformatstops tickmode tickprefix @@ -1730,6 +1763,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, tickmode=None, tickprefix=None, ticksuffix=None, @@ -1904,6 +1938,11 @@ def __init__( tickformatstops plotly.graph_objs.carpet.baxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .baxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.baxis.tickformatstops tickmode tickprefix @@ -2012,6 +2051,8 @@ def __init__( self._validators['tickformat'] = v_baxis.TickformatValidator() self._validators['tickformatstops' ] = v_baxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_baxis.TickformatstopValidator() self._validators['tickmode'] = v_baxis.TickmodeValidator() self._validators['tickprefix'] = v_baxis.TickprefixValidator() self._validators['ticksuffix'] = v_baxis.TicksuffixValidator() @@ -2126,6 +2167,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('tickmode', None) self['tickmode'] = tickmode if tickmode is not None else _v _v = arg.pop('tickprefix', None) diff --git a/plotly/graph_objs/choropleth/_colorbar.py b/plotly/graph_objs/choropleth/_colorbar.py index 52b00b87af7..b9bce6a9b79 100644 --- a/plotly/graph_objs/choropleth/_colorbar.py +++ b/plotly/graph_objs/choropleth/_colorbar.py @@ -747,6 +747,33 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.choropleth.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of choropleth.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.choropleth.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.choropleth.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1327,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.choropleth.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + leth.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + choropleth.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1420,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1563,11 @@ def __init__( tickformatstops plotly.graph_objs.choropleth.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + leth.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + choropleth.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1690,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1767,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/cone/_colorbar.py b/plotly/graph_objs/cone/_colorbar.py index acdc7f9215d..332c0caef13 100644 --- a/plotly/graph_objs/cone/_colorbar.py +++ b/plotly/graph_objs/cone/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.cone.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + cone.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.cone.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.cone.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.cone.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.cone.c + olorbar.tickformatstopdefaults), sets the default + property values to use for elements of + cone.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.cone.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.cone.c + olorbar.tickformatstopdefaults), sets the default + property values to use for elements of + cone.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/contour/_colorbar.py b/plotly/graph_objs/contour/_colorbar.py index 43e5dfc5ed0..2d70947a19a 100644 --- a/plotly/graph_objs/contour/_colorbar.py +++ b/plotly/graph_objs/contour/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.contour.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + contour.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.contour.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.contour.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.contour.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + r.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + contour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.contour.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + r.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + contour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/contourcarpet/_colorbar.py b/plotly/graph_objs/contourcarpet/_colorbar.py index 578cad099da..992b8103a85 100644 --- a/plotly/graph_objs/contourcarpet/_colorbar.py +++ b/plotly/graph_objs/contourcarpet/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.contourcarpet. + colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + contourcarpet.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.contourcarpet.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.contourcarpet.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.contourcarpet.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + rcarpet.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + contourcarpet.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.contourcarpet.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + rcarpet.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + contourcarpet.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/heatmap/_colorbar.py b/plotly/graph_objs/heatmap/_colorbar.py index 5f779b66346..3c413dcd88c 100644 --- a/plotly/graph_objs/heatmap/_colorbar.py +++ b/plotly/graph_objs/heatmap/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.heatmap.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + heatmap.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.heatmap.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.heatmap.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.heatmap.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.heatma + p.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + heatmap.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.heatmap.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.heatma + p.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + heatmap.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/heatmapgl/_colorbar.py b/plotly/graph_objs/heatmapgl/_colorbar.py index 5fdeb1954e6..3acb2c73c0d 100644 --- a/plotly/graph_objs/heatmapgl/_colorbar.py +++ b/plotly/graph_objs/heatmapgl/_colorbar.py @@ -747,6 +747,33 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.heatmapgl.colo + rbar.tickformatstopdefaults), sets the default property values + to use for elements of heatmapgl.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.heatmapgl.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.heatmapgl.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1327,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.heatmapgl.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.heatma + pgl.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + heatmapgl.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1420,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1563,11 @@ def __init__( tickformatstops plotly.graph_objs.heatmapgl.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.heatma + pgl.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + heatmapgl.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1690,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1767,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/histogram/_marker.py b/plotly/graph_objs/histogram/_marker.py index 41ed3b27c29..7e5457ae381 100644 --- a/plotly/graph_objs/histogram/_marker.py +++ b/plotly/graph_objs/histogram/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.histogram.marker.colorbar.Tic kformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.histogram.marker.colorbar.tickformatstopdefau + lts), sets the default property values to use + for elements of + histogram.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/histogram/marker/_colorbar.py b/plotly/graph_objs/histogram/marker/_colorbar.py index c4dd458ec20..c4c87863707 100644 --- a/plotly/graph_objs/histogram/marker/_colorbar.py +++ b/plotly/graph_objs/histogram/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.histogram.mark + er.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + histogram.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.histogram.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.histogram.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.histogram.marker.colorbar.Tickformats top instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.histogram.marker.colorbar.Tickformats top instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1653,6 +1692,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1728,6 +1769,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/histogram2d/_colorbar.py b/plotly/graph_objs/histogram2d/_colorbar.py index 7867b6ced30..514e6146c35 100644 --- a/plotly/graph_objs/histogram2d/_colorbar.py +++ b/plotly/graph_objs/histogram2d/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.histogram2d.co + lorbar.tickformatstopdefaults), sets the default property + values to use for elements of + histogram2d.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.histogram2d.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.histogram2d.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.histogram2d.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2d.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.histogram2d.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2d.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/histogram2dcontour/_colorbar.py b/plotly/graph_objs/histogram2dcontour/_colorbar.py index 7f4ce7b2ae2..2f807460769 100644 --- a/plotly/graph_objs/histogram2dcontour/_colorbar.py +++ b/plotly/graph_objs/histogram2dcontour/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.histogram2dcon + tour.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + histogram2dcontour.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.histogram2dcontour.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2dcontour.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2dcontour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.histogram2dcontour.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2dcontour.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2dcontour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/__init__.py b/plotly/graph_objs/layout/__init__.py index e0d9a7a098e..48751d14925 100644 --- a/plotly/graph_objs/layout/__init__.py +++ b/plotly/graph_objs/layout/__init__.py @@ -7,6 +7,8 @@ from ._titlefont import Titlefont from ._ternary import Ternary from plotly.graph_objs.layout import ternary +from ._template import Template +from plotly.graph_objs.layout import template from ._slider import Slider from plotly.graph_objs.layout import slider from ._shape import Shape diff --git a/plotly/graph_objs/layout/_mapbox.py b/plotly/graph_objs/layout/_mapbox.py index 2372e657f62..595e579639f 100644 --- a/plotly/graph_objs/layout/_mapbox.py +++ b/plotly/graph_objs/layout/_mapbox.py @@ -205,6 +205,33 @@ def layers(self): def layers(self, val): self['layers'] = val + # layerdefaults + # ------------- + @property + def layerdefaults(self): + """ + When used in a template (as + layout.template.layout.mapbox.layerdefaults), sets the default + property values to use for elements of layout.mapbox.layers + + The 'layerdefaults' property is an instance of Layer + that may be specified as: + - An instance of plotly.graph_objs.layout.mapbox.Layer + - A dict of string/value properties that will be passed + to the Layer constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.mapbox.Layer + """ + return self['layerdefaults'] + + @layerdefaults.setter + def layerdefaults(self, val): + self['layerdefaults'] = val + # pitch # ----- @property @@ -294,6 +321,11 @@ def _prop_descriptions(self): layers plotly.graph_objs.layout.mapbox.Layer instance or dict with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.mapbox.layerdefaults), sets the + default property values to use for elements of + layout.mapbox.layers pitch Sets the pitch angle of the map (in degrees, where 0 means perpendicular to the surface of the map). @@ -313,6 +345,7 @@ def __init__( center=None, domain=None, layers=None, + layerdefaults=None, pitch=None, style=None, zoom=None, @@ -342,6 +375,11 @@ def __init__( layers plotly.graph_objs.layout.mapbox.Layer instance or dict with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.mapbox.layerdefaults), sets the + default property values to use for elements of + layout.mapbox.layers pitch Sets the pitch angle of the map (in degrees, where 0 means perpendicular to the surface of the map). @@ -389,6 +427,7 @@ def __init__( self._validators['center'] = v_mapbox.CenterValidator() self._validators['domain'] = v_mapbox.DomainValidator() self._validators['layers'] = v_mapbox.LayersValidator() + self._validators['layerdefaults'] = v_mapbox.LayerValidator() self._validators['pitch'] = v_mapbox.PitchValidator() self._validators['style'] = v_mapbox.StyleValidator() self._validators['zoom'] = v_mapbox.ZoomValidator() @@ -405,6 +444,9 @@ def __init__( self['domain'] = domain if domain is not None else _v _v = arg.pop('layers', None) self['layers'] = layers if layers is not None else _v + _v = arg.pop('layerdefaults', None) + self['layerdefaults' + ] = layerdefaults if layerdefaults is not None else _v _v = arg.pop('pitch', None) self['pitch'] = pitch if pitch is not None else _v _v = arg.pop('style', None) diff --git a/plotly/graph_objs/layout/_polar.py b/plotly/graph_objs/layout/_polar.py index c52ec4e2cb9..b043ab189ab 100644 --- a/plotly/graph_objs/layout/_polar.py +++ b/plotly/graph_objs/layout/_polar.py @@ -198,6 +198,12 @@ def angularaxis(self): plotly.graph_objs.layout.polar.angularaxis.Tick formatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.polar.angularaxis.tickformatstopdefaults), + sets the default property values to use for + elements of + layout.polar.angularaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -664,6 +670,12 @@ def radialaxis(self): plotly.graph_objs.layout.polar.radialaxis.Tickf ormatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.polar.radialaxis.tickformatstopdefaults), + sets the default property values to use for + elements of + layout.polar.radialaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/layout/_scene.py b/plotly/graph_objs/layout/_scene.py index 0c8131baa09..e51ec1c7366 100644 --- a/plotly/graph_objs/layout/_scene.py +++ b/plotly/graph_objs/layout/_scene.py @@ -205,6 +205,34 @@ def annotations(self): def annotations(self, val): self['annotations'] = val + # annotationdefaults + # ------------------ + @property + def annotationdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.annotationdefaults), sets the + default property values to use for elements of + layout.scene.annotations + + The 'annotationdefaults' property is an instance of Annotation + that may be specified as: + - An instance of plotly.graph_objs.layout.scene.Annotation + - A dict of string/value properties that will be passed + to the Annotation constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.scene.Annotation + """ + return self['annotationdefaults'] + + @annotationdefaults.setter + def annotationdefaults(self, val): + self['annotationdefaults'] = val + # aspectmode # ---------- @property @@ -663,6 +691,11 @@ def xaxis(self): plotly.graph_objs.layout.scene.xaxis.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.scene.xaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.scene.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -958,6 +991,11 @@ def yaxis(self): plotly.graph_objs.layout.scene.yaxis.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.scene.yaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.scene.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1253,6 +1291,11 @@ def zaxis(self): plotly.graph_objs.layout.scene.zaxis.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.scene.zaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.scene.zaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1339,6 +1382,11 @@ def _prop_descriptions(self): annotations plotly.graph_objs.layout.scene.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.scene.annotationdefaults), sets + the default property values to use for elements of + layout.scene.annotations aspectmode If "cube", this scene's axes are drawn as a cube, regardless of the axes' ranges. If "data", this scene's @@ -1381,6 +1429,7 @@ def __init__( self, arg=None, annotations=None, + annotationdefaults=None, aspectmode=None, aspectratio=None, bgcolor=None, @@ -1404,6 +1453,11 @@ def __init__( annotations plotly.graph_objs.layout.scene.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.scene.annotationdefaults), sets + the default property values to use for elements of + layout.scene.annotations aspectmode If "cube", this scene's axes are drawn as a cube, regardless of the axes' ranges. If "data", this scene's @@ -1474,6 +1528,7 @@ def __init__( # Initialize validators # --------------------- self._validators['annotations'] = v_scene.AnnotationsValidator() + self._validators['annotationdefaults'] = v_scene.AnnotationValidator() self._validators['aspectmode'] = v_scene.AspectmodeValidator() self._validators['aspectratio'] = v_scene.AspectratioValidator() self._validators['bgcolor'] = v_scene.BgcolorValidator() @@ -1489,6 +1544,9 @@ def __init__( # ---------------------------------- _v = arg.pop('annotations', None) self['annotations'] = annotations if annotations is not None else _v + _v = arg.pop('annotationdefaults', None) + self['annotationdefaults' + ] = annotationdefaults if annotationdefaults is not None else _v _v = arg.pop('aspectmode', None) self['aspectmode'] = aspectmode if aspectmode is not None else _v _v = arg.pop('aspectratio', None) diff --git a/plotly/graph_objs/layout/_slider.py b/plotly/graph_objs/layout/_slider.py index b095693651c..9cfcfe82f18 100644 --- a/plotly/graph_objs/layout/_slider.py +++ b/plotly/graph_objs/layout/_slider.py @@ -512,6 +512,33 @@ def steps(self): def steps(self, val): self['steps'] = val + # stepdefaults + # ------------ + @property + def stepdefaults(self): + """ + When used in a template (as + layout.template.layout.slider.stepdefaults), sets the default + property values to use for elements of layout.slider.steps + + The 'stepdefaults' property is an instance of Step + that may be specified as: + - An instance of plotly.graph_objs.layout.slider.Step + - A dict of string/value properties that will be passed + to the Step constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.slider.Step + """ + return self['stepdefaults'] + + @stepdefaults.setter + def stepdefaults(self, val): + self['stepdefaults'] = val + # templateitemname # ---------------- @property @@ -828,6 +855,11 @@ def _prop_descriptions(self): steps plotly.graph_objs.layout.slider.Step instance or dict with compatible properties + stepdefaults + When used in a template (as + layout.template.layout.slider.stepdefaults), sets the + default property values to use for elements of + layout.slider.steps templateitemname Used to refer to a named item in this array in the template. Named items from the template will be created @@ -881,6 +913,7 @@ def __init__( name=None, pad=None, steps=None, + stepdefaults=None, templateitemname=None, tickcolor=None, ticklen=None, @@ -944,6 +977,11 @@ def __init__( steps plotly.graph_objs.layout.slider.Step instance or dict with compatible properties + stepdefaults + When used in a template (as + layout.template.layout.slider.stepdefaults), sets the + default property values to use for elements of + layout.slider.steps templateitemname Used to refer to a named item in this array in the template. Named items from the template will be created @@ -1025,6 +1063,7 @@ def __init__( self._validators['name'] = v_slider.NameValidator() self._validators['pad'] = v_slider.PadValidator() self._validators['steps'] = v_slider.StepsValidator() + self._validators['stepdefaults'] = v_slider.StepValidator() self._validators['templateitemname' ] = v_slider.TemplateitemnameValidator() self._validators['tickcolor'] = v_slider.TickcolorValidator() @@ -1066,6 +1105,8 @@ def __init__( self['pad'] = pad if pad is not None else _v _v = arg.pop('steps', None) self['steps'] = steps if steps is not None else _v + _v = arg.pop('stepdefaults', None) + self['stepdefaults'] = stepdefaults if stepdefaults is not None else _v _v = arg.pop('templateitemname', None) self['templateitemname' ] = templateitemname if templateitemname is not None else _v diff --git a/plotly/graph_objs/layout/_template.py b/plotly/graph_objs/layout/_template.py new file mode 100644 index 00000000000..625291dddbc --- /dev/null +++ b/plotly/graph_objs/layout/_template.py @@ -0,0 +1,269 @@ +from plotly.basedatatypes import BaseLayoutHierarchyType +import copy + + +class Template(BaseLayoutHierarchyType): + + # data + # ---- + @property + def data(self): + """ + The 'data' property is an instance of Data + that may be specified as: + - An instance of plotly.graph_objs.layout.template.Data + - A dict of string/value properties that will be passed + to the Data constructor + + Supported dict properties: + + area + plotly.graph_objs.layout.template.data.Area + instance or dict with compatible properties + barpolar + plotly.graph_objs.layout.template.data.Barpolar + instance or dict with compatible properties + bar + plotly.graph_objs.layout.template.data.Bar + instance or dict with compatible properties + box + plotly.graph_objs.layout.template.data.Box + instance or dict with compatible properties + candlestick + plotly.graph_objs.layout.template.data.Candlest + ick instance or dict with compatible properties + carpet + plotly.graph_objs.layout.template.data.Carpet + instance or dict with compatible properties + choropleth + plotly.graph_objs.layout.template.data.Chorople + th instance or dict with compatible properties + cone + plotly.graph_objs.layout.template.data.Cone + instance or dict with compatible properties + contourcarpet + plotly.graph_objs.layout.template.data.Contourc + arpet instance or dict with compatible + properties + contour + plotly.graph_objs.layout.template.data.Contour + instance or dict with compatible properties + heatmapgl + plotly.graph_objs.layout.template.data.Heatmapg + l instance or dict with compatible properties + heatmap + plotly.graph_objs.layout.template.data.Heatmap + instance or dict with compatible properties + histogram2dcontour + plotly.graph_objs.layout.template.data.Histogra + m2dContour instance or dict with compatible + properties + histogram2d + plotly.graph_objs.layout.template.data.Histogra + m2d instance or dict with compatible properties + histogram + plotly.graph_objs.layout.template.data.Histogra + m instance or dict with compatible properties + mesh3d + plotly.graph_objs.layout.template.data.Mesh3d + instance or dict with compatible properties + ohlc + plotly.graph_objs.layout.template.data.Ohlc + instance or dict with compatible properties + parcoords + plotly.graph_objs.layout.template.data.Parcoord + s instance or dict with compatible properties + pie + plotly.graph_objs.layout.template.data.Pie + instance or dict with compatible properties + pointcloud + plotly.graph_objs.layout.template.data.Pointclo + ud instance or dict with compatible properties + sankey + plotly.graph_objs.layout.template.data.Sankey + instance or dict with compatible properties + scatter3d + plotly.graph_objs.layout.template.data.Scatter3 + d instance or dict with compatible properties + scattercarpet + plotly.graph_objs.layout.template.data.Scatterc + arpet instance or dict with compatible + properties + scattergeo + plotly.graph_objs.layout.template.data.Scatterg + eo instance or dict with compatible properties + scattergl + plotly.graph_objs.layout.template.data.Scatterg + l instance or dict with compatible properties + scattermapbox + plotly.graph_objs.layout.template.data.Scatterm + apbox instance or dict with compatible + properties + scatterpolargl + plotly.graph_objs.layout.template.data.Scatterp + olargl instance or dict with compatible + properties + scatterpolar + plotly.graph_objs.layout.template.data.Scatterp + olar instance or dict with compatible + properties + scatter + plotly.graph_objs.layout.template.data.Scatter + instance or dict with compatible properties + scatterternary + plotly.graph_objs.layout.template.data.Scattert + ernary instance or dict with compatible + properties + splom + plotly.graph_objs.layout.template.data.Splom + instance or dict with compatible properties + streamtube + plotly.graph_objs.layout.template.data.Streamtu + be instance or dict with compatible properties + surface + plotly.graph_objs.layout.template.data.Surface + instance or dict with compatible properties + table + plotly.graph_objs.layout.template.data.Table + instance or dict with compatible properties + violin + plotly.graph_objs.layout.template.data.Violin + instance or dict with compatible properties + + Returns + ------- + plotly.graph_objs.layout.template.Data + """ + return self['data'] + + @data.setter + def data(self, val): + self['data'] = val + + # layout + # ------ + @property + def layout(self): + """ + The 'layout' property is an instance of Layout + that may be specified as: + - An instance of plotly.graph_objs.layout.template.Layout + - A dict of string/value properties that will be passed + to the Layout constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.template.Layout + """ + return self['layout'] + + @layout.setter + def layout(self, val): + self['layout'] = val + + # property parent name + # -------------------- + @property + def _parent_path_str(self): + return 'layout' + + # Self properties description + # --------------------------- + @property + def _prop_descriptions(self): + return """\ + data + plotly.graph_objs.layout.template.Data instance or dict + with compatible properties + layout + plotly.graph_objs.layout.template.Layout instance or + dict with compatible properties + """ + + def __init__(self, arg=None, data=None, layout=None, **kwargs): + """ + Construct a new Template object + + Default attributes to be applied to the plot. This should be a + dict with format: `{'layout': layoutTemplate, 'data': + {trace_type: [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the structure of + `figure.layout` and `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` (e.g. 'scatter'). + Alternatively, this may be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are applied + cyclically to traces of each type. Container arrays (eg + `annotations`) have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied to each array + item. But if an item has a `templateitemname` key we look in + the template array for an item with matching `name` and apply + that instead. If no matching `name` is found we mark the item + invisible. Any named template item not referenced is appended + to the end of the array, so this can be used to add a watermark + annotation or a logo image, for example. To omit one of these + items on the plot, make an item with matching + `templateitemname` and `visible: false`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of plotly.graph_objs.layout.Template + data + plotly.graph_objs.layout.template.Data instance or dict + with compatible properties + layout + plotly.graph_objs.layout.template.Layout instance or + dict with compatible properties + + Returns + ------- + Template + """ + super(Template, self).__init__('template') + + # Validate arg + # ------------ + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = copy.copy(arg) + else: + raise ValueError( + """\ +The first argument to the plotly.graph_objs.layout.Template +constructor must be a dict or +an instance of plotly.graph_objs.layout.Template""" + ) + + # Handle skip_invalid + # ------------------- + self._skip_invalid = kwargs.pop('skip_invalid', False) + + # Import validators + # ----------------- + from plotly.validators.layout import (template as v_template) + + # Initialize validators + # --------------------- + self._validators['data'] = v_template.DataValidator() + self._validators['layout'] = v_template.LayoutValidator() + + # Populate data dict with properties + # ---------------------------------- + _v = arg.pop('data', None) + self['data'] = data if data is not None else _v + _v = arg.pop('layout', None) + self['layout'] = layout if layout is not None else _v + + # Process unknown kwargs + # ---------------------- + self._process_kwargs(**dict(arg, **kwargs)) + + # Reset skip_invalid + # ------------------ + self._skip_invalid = False diff --git a/plotly/graph_objs/layout/_ternary.py b/plotly/graph_objs/layout/_ternary.py index 76e7f4e9312..ca3a385385d 100644 --- a/plotly/graph_objs/layout/_ternary.py +++ b/plotly/graph_objs/layout/_ternary.py @@ -162,6 +162,11 @@ def aaxis(self): plotly.graph_objs.layout.ternary.aaxis.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.ternary.aaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.ternary.aaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -374,6 +379,11 @@ def baxis(self): plotly.graph_objs.layout.ternary.baxis.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.ternary.baxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.ternary.baxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -645,6 +655,11 @@ def caxis(self): plotly.graph_objs.layout.ternary.caxis.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.ternary.caxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.ternary.caxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/layout/_updatemenu.py b/plotly/graph_objs/layout/_updatemenu.py index 75a987c5360..ca434b484f7 100644 --- a/plotly/graph_objs/layout/_updatemenu.py +++ b/plotly/graph_objs/layout/_updatemenu.py @@ -235,6 +235,34 @@ def buttons(self): def buttons(self, val): self['buttons'] = val + # buttondefaults + # -------------- + @property + def buttondefaults(self): + """ + When used in a template (as + layout.template.layout.updatemenu.buttondefaults), sets the + default property values to use for elements of + layout.updatemenu.buttons + + The 'buttondefaults' property is an instance of Button + that may be specified as: + - An instance of plotly.graph_objs.layout.updatemenu.Button + - A dict of string/value properties that will be passed + to the Button constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.updatemenu.Button + """ + return self['buttondefaults'] + + @buttondefaults.setter + def buttondefaults(self, val): + self['buttondefaults'] = val + # direction # --------- @property @@ -572,6 +600,11 @@ def _prop_descriptions(self): buttons plotly.graph_objs.layout.updatemenu.Button instance or dict with compatible properties + buttondefaults + When used in a template (as + layout.template.layout.updatemenu.buttondefaults), sets + the default property values to use for elements of + layout.updatemenu.buttons direction Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of @@ -634,6 +667,7 @@ def __init__( bordercolor=None, borderwidth=None, buttons=None, + buttondefaults=None, direction=None, font=None, name=None, @@ -669,6 +703,11 @@ def __init__( buttons plotly.graph_objs.layout.updatemenu.Button instance or dict with compatible properties + buttondefaults + When used in a template (as + layout.template.layout.updatemenu.buttondefaults), sets + the default property values to use for elements of + layout.updatemenu.buttons direction Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of @@ -759,6 +798,7 @@ def __init__( self._validators['bordercolor'] = v_updatemenu.BordercolorValidator() self._validators['borderwidth'] = v_updatemenu.BorderwidthValidator() self._validators['buttons'] = v_updatemenu.ButtonsValidator() + self._validators['buttondefaults'] = v_updatemenu.ButtonValidator() self._validators['direction'] = v_updatemenu.DirectionValidator() self._validators['font'] = v_updatemenu.FontValidator() self._validators['name'] = v_updatemenu.NameValidator() @@ -785,6 +825,9 @@ def __init__( self['borderwidth'] = borderwidth if borderwidth is not None else _v _v = arg.pop('buttons', None) self['buttons'] = buttons if buttons is not None else _v + _v = arg.pop('buttondefaults', None) + self['buttondefaults' + ] = buttondefaults if buttondefaults is not None else _v _v = arg.pop('direction', None) self['direction'] = direction if direction is not None else _v _v = arg.pop('font', None) diff --git a/plotly/graph_objs/layout/_xaxis.py b/plotly/graph_objs/layout/_xaxis.py index 87ba1b0cec6..94dfafafcd7 100644 --- a/plotly/graph_objs/layout/_xaxis.py +++ b/plotly/graph_objs/layout/_xaxis.py @@ -789,6 +789,11 @@ def rangeselector(self): Sets the specifications for each buttons. By default, a range selector comes with no buttons. + buttondefaults + When used in a template (as layout.template.lay + out.xaxis.rangeselector.buttondefaults), sets + the default property values to use for elements + of layout.xaxis.rangeselector.buttons font Sets the font of the range selector button text. @@ -1528,6 +1533,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.xaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.xaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.xaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.xaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -2237,6 +2270,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.xaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.xaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2345,6 +2383,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -2643,6 +2682,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.xaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.xaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2783,6 +2827,8 @@ def __init__( self._validators['tickformat'] = v_xaxis.TickformatValidator() self._validators['tickformatstops' ] = v_xaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_xaxis.TickformatstopValidator() self._validators['ticklen'] = v_xaxis.TicklenValidator() self._validators['tickmode'] = v_xaxis.TickmodeValidator() self._validators['tickprefix'] = v_xaxis.TickprefixValidator() @@ -2915,6 +2961,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/_yaxis.py b/plotly/graph_objs/layout/_yaxis.py index 6dba7d7dc39..5300c1e4671 100644 --- a/plotly/graph_objs/layout/_yaxis.py +++ b/plotly/graph_objs/layout/_yaxis.py @@ -1407,6 +1407,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.yaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.yaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.yaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.yaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -2110,6 +2138,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.yaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.yaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2216,6 +2249,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -2508,6 +2542,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.yaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.yaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2646,6 +2685,8 @@ def __init__( self._validators['tickformat'] = v_yaxis.TickformatValidator() self._validators['tickformatstops' ] = v_yaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_yaxis.TickformatstopValidator() self._validators['ticklen'] = v_yaxis.TicklenValidator() self._validators['tickmode'] = v_yaxis.TickmodeValidator() self._validators['tickprefix'] = v_yaxis.TickprefixValidator() @@ -2773,6 +2814,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/polar/_angularaxis.py b/plotly/graph_objs/layout/polar/_angularaxis.py index eb7d650f52d..2a386974bfb 100644 --- a/plotly/graph_objs/layout/polar/_angularaxis.py +++ b/plotly/graph_objs/layout/polar/_angularaxis.py @@ -922,6 +922,33 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.layout.polar.angula + raxis.tickformatstopdefaults), sets the default property values + to use for elements of layout.polar.angularaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.polar.angularaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.polar.angularaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1353,6 +1380,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.polar.angularaxis.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.angularaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.angularaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1430,6 +1462,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1612,6 +1645,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.polar.angularaxis.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.angularaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.angularaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1729,6 +1767,8 @@ def __init__( self._validators['tickformat'] = v_angularaxis.TickformatValidator() self._validators['tickformatstops' ] = v_angularaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_angularaxis.TickformatstopValidator() self._validators['ticklen'] = v_angularaxis.TicklenValidator() self._validators['tickmode'] = v_angularaxis.TickmodeValidator() self._validators['tickprefix'] = v_angularaxis.TickprefixValidator() @@ -1813,6 +1853,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/polar/_radialaxis.py b/plotly/graph_objs/layout/polar/_radialaxis.py index 059eaa64149..2f2c47064eb 100644 --- a/plotly/graph_objs/layout/polar/_radialaxis.py +++ b/plotly/graph_objs/layout/polar/_radialaxis.py @@ -984,6 +984,33 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.layout.polar.radial + axis.tickformatstopdefaults), sets the default property values + to use for elements of layout.polar.radialaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.polar.radialaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.polar.radialaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1500,6 +1527,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.polar.radialaxis.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.radialaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.radialaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1582,6 +1614,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1786,6 +1819,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.polar.radialaxis.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.radialaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.radialaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1905,6 +1943,8 @@ def __init__( self._validators['tickformat'] = v_radialaxis.TickformatValidator() self._validators['tickformatstops' ] = v_radialaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_radialaxis.TickformatstopValidator() self._validators['ticklen'] = v_radialaxis.TicklenValidator() self._validators['tickmode'] = v_radialaxis.TickmodeValidator() self._validators['tickprefix'] = v_radialaxis.TickprefixValidator() @@ -1995,6 +2035,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/scene/_xaxis.py b/plotly/graph_objs/layout/scene/_xaxis.py index a6b7400491f..e4617916b58 100644 --- a/plotly/graph_objs/layout/scene/_xaxis.py +++ b/plotly/graph_objs/layout/scene/_xaxis.py @@ -1156,6 +1156,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.xaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.scene.xaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.scene.xaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.scene.xaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1782,6 +1810,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.scene.xaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.xaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1877,6 +1910,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -2092,6 +2126,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.scene.xaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.xaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2219,6 +2258,8 @@ def __init__( self._validators['tickformat'] = v_xaxis.TickformatValidator() self._validators['tickformatstops' ] = v_xaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_xaxis.TickformatstopValidator() self._validators['ticklen'] = v_xaxis.TicklenValidator() self._validators['tickmode'] = v_xaxis.TickmodeValidator() self._validators['tickprefix'] = v_xaxis.TickprefixValidator() @@ -2326,6 +2367,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/scene/_yaxis.py b/plotly/graph_objs/layout/scene/_yaxis.py index dc07c68415b..bf6edaa64b7 100644 --- a/plotly/graph_objs/layout/scene/_yaxis.py +++ b/plotly/graph_objs/layout/scene/_yaxis.py @@ -1156,6 +1156,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.yaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.scene.yaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.scene.yaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.scene.yaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1782,6 +1810,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.scene.yaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.yaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1877,6 +1910,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -2092,6 +2126,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.scene.yaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.yaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2219,6 +2258,8 @@ def __init__( self._validators['tickformat'] = v_yaxis.TickformatValidator() self._validators['tickformatstops' ] = v_yaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_yaxis.TickformatstopValidator() self._validators['ticklen'] = v_yaxis.TicklenValidator() self._validators['tickmode'] = v_yaxis.TickmodeValidator() self._validators['tickprefix'] = v_yaxis.TickprefixValidator() @@ -2326,6 +2367,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/scene/_zaxis.py b/plotly/graph_objs/layout/scene/_zaxis.py index c9c66be26ff..0a0d57047d9 100644 --- a/plotly/graph_objs/layout/scene/_zaxis.py +++ b/plotly/graph_objs/layout/scene/_zaxis.py @@ -1156,6 +1156,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.zaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.scene.zaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.scene.zaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.scene.zaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1782,6 +1810,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.scene.zaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.zaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.zaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1877,6 +1910,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -2092,6 +2126,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.scene.zaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.zaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.zaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -2219,6 +2258,8 @@ def __init__( self._validators['tickformat'] = v_zaxis.TickformatValidator() self._validators['tickformatstops' ] = v_zaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_zaxis.TickformatstopValidator() self._validators['ticklen'] = v_zaxis.TicklenValidator() self._validators['tickmode'] = v_zaxis.TickmodeValidator() self._validators['tickprefix'] = v_zaxis.TickprefixValidator() @@ -2326,6 +2367,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/template/__init__.py b/plotly/graph_objs/layout/template/__init__.py new file mode 100644 index 00000000000..48e419ded9b --- /dev/null +++ b/plotly/graph_objs/layout/template/__init__.py @@ -0,0 +1,3 @@ +from ._layout import Layout +from ._data import Data +from plotly.graph_objs.layout.template import data diff --git a/plotly/graph_objs/layout/template/_data.py b/plotly/graph_objs/layout/template/_data.py new file mode 100644 index 00000000000..4c41a1cda21 --- /dev/null +++ b/plotly/graph_objs/layout/template/_data.py @@ -0,0 +1,1238 @@ +from plotly.basedatatypes import BaseLayoutHierarchyType +import copy + + +class Data(BaseLayoutHierarchyType): + + # area + # ---- + @property + def area(self): + """ + The 'area' property is a tuple of instances of + Area that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Area + - A list or tuple of dicts of string/value properties that + will be passed to the Area constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Area] + """ + return self['area'] + + @area.setter + def area(self, val): + self['area'] = val + + # barpolar + # -------- + @property + def barpolar(self): + """ + The 'barpolar' property is a tuple of instances of + Barpolar that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Barpolar + - A list or tuple of dicts of string/value properties that + will be passed to the Barpolar constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Barpolar] + """ + return self['barpolar'] + + @barpolar.setter + def barpolar(self, val): + self['barpolar'] = val + + # bar + # --- + @property + def bar(self): + """ + The 'bar' property is a tuple of instances of + Bar that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Bar + - A list or tuple of dicts of string/value properties that + will be passed to the Bar constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Bar] + """ + return self['bar'] + + @bar.setter + def bar(self, val): + self['bar'] = val + + # box + # --- + @property + def box(self): + """ + The 'box' property is a tuple of instances of + Box that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Box + - A list or tuple of dicts of string/value properties that + will be passed to the Box constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Box] + """ + return self['box'] + + @box.setter + def box(self, val): + self['box'] = val + + # candlestick + # ----------- + @property + def candlestick(self): + """ + The 'candlestick' property is a tuple of instances of + Candlestick that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Candlestick + - A list or tuple of dicts of string/value properties that + will be passed to the Candlestick constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Candlestick] + """ + return self['candlestick'] + + @candlestick.setter + def candlestick(self, val): + self['candlestick'] = val + + # carpet + # ------ + @property + def carpet(self): + """ + The 'carpet' property is a tuple of instances of + Carpet that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Carpet + - A list or tuple of dicts of string/value properties that + will be passed to the Carpet constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Carpet] + """ + return self['carpet'] + + @carpet.setter + def carpet(self, val): + self['carpet'] = val + + # choropleth + # ---------- + @property + def choropleth(self): + """ + The 'choropleth' property is a tuple of instances of + Choropleth that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Choropleth + - A list or tuple of dicts of string/value properties that + will be passed to the Choropleth constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Choropleth] + """ + return self['choropleth'] + + @choropleth.setter + def choropleth(self, val): + self['choropleth'] = val + + # cone + # ---- + @property + def cone(self): + """ + The 'cone' property is a tuple of instances of + Cone that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Cone + - A list or tuple of dicts of string/value properties that + will be passed to the Cone constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Cone] + """ + return self['cone'] + + @cone.setter + def cone(self, val): + self['cone'] = val + + # contourcarpet + # ------------- + @property + def contourcarpet(self): + """ + The 'contourcarpet' property is a tuple of instances of + Contourcarpet that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Contourcarpet + - A list or tuple of dicts of string/value properties that + will be passed to the Contourcarpet constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Contourcarpet] + """ + return self['contourcarpet'] + + @contourcarpet.setter + def contourcarpet(self, val): + self['contourcarpet'] = val + + # contour + # ------- + @property + def contour(self): + """ + The 'contour' property is a tuple of instances of + Contour that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Contour + - A list or tuple of dicts of string/value properties that + will be passed to the Contour constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Contour] + """ + return self['contour'] + + @contour.setter + def contour(self, val): + self['contour'] = val + + # heatmapgl + # --------- + @property + def heatmapgl(self): + """ + The 'heatmapgl' property is a tuple of instances of + Heatmapgl that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Heatmapgl + - A list or tuple of dicts of string/value properties that + will be passed to the Heatmapgl constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Heatmapgl] + """ + return self['heatmapgl'] + + @heatmapgl.setter + def heatmapgl(self, val): + self['heatmapgl'] = val + + # heatmap + # ------- + @property + def heatmap(self): + """ + The 'heatmap' property is a tuple of instances of + Heatmap that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Heatmap + - A list or tuple of dicts of string/value properties that + will be passed to the Heatmap constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Heatmap] + """ + return self['heatmap'] + + @heatmap.setter + def heatmap(self, val): + self['heatmap'] = val + + # histogram2dcontour + # ------------------ + @property + def histogram2dcontour(self): + """ + The 'histogram2dcontour' property is a tuple of instances of + Histogram2dContour that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Histogram2dContour + - A list or tuple of dicts of string/value properties that + will be passed to the Histogram2dContour constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Histogram2dContour] + """ + return self['histogram2dcontour'] + + @histogram2dcontour.setter + def histogram2dcontour(self, val): + self['histogram2dcontour'] = val + + # histogram2d + # ----------- + @property + def histogram2d(self): + """ + The 'histogram2d' property is a tuple of instances of + Histogram2d that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Histogram2d + - A list or tuple of dicts of string/value properties that + will be passed to the Histogram2d constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Histogram2d] + """ + return self['histogram2d'] + + @histogram2d.setter + def histogram2d(self, val): + self['histogram2d'] = val + + # histogram + # --------- + @property + def histogram(self): + """ + The 'histogram' property is a tuple of instances of + Histogram that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Histogram + - A list or tuple of dicts of string/value properties that + will be passed to the Histogram constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Histogram] + """ + return self['histogram'] + + @histogram.setter + def histogram(self, val): + self['histogram'] = val + + # mesh3d + # ------ + @property + def mesh3d(self): + """ + The 'mesh3d' property is a tuple of instances of + Mesh3d that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Mesh3d + - A list or tuple of dicts of string/value properties that + will be passed to the Mesh3d constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Mesh3d] + """ + return self['mesh3d'] + + @mesh3d.setter + def mesh3d(self, val): + self['mesh3d'] = val + + # ohlc + # ---- + @property + def ohlc(self): + """ + The 'ohlc' property is a tuple of instances of + Ohlc that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Ohlc + - A list or tuple of dicts of string/value properties that + will be passed to the Ohlc constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Ohlc] + """ + return self['ohlc'] + + @ohlc.setter + def ohlc(self, val): + self['ohlc'] = val + + # parcoords + # --------- + @property + def parcoords(self): + """ + The 'parcoords' property is a tuple of instances of + Parcoords that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Parcoords + - A list or tuple of dicts of string/value properties that + will be passed to the Parcoords constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Parcoords] + """ + return self['parcoords'] + + @parcoords.setter + def parcoords(self, val): + self['parcoords'] = val + + # pie + # --- + @property + def pie(self): + """ + The 'pie' property is a tuple of instances of + Pie that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Pie + - A list or tuple of dicts of string/value properties that + will be passed to the Pie constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Pie] + """ + return self['pie'] + + @pie.setter + def pie(self, val): + self['pie'] = val + + # pointcloud + # ---------- + @property + def pointcloud(self): + """ + The 'pointcloud' property is a tuple of instances of + Pointcloud that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Pointcloud + - A list or tuple of dicts of string/value properties that + will be passed to the Pointcloud constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Pointcloud] + """ + return self['pointcloud'] + + @pointcloud.setter + def pointcloud(self, val): + self['pointcloud'] = val + + # sankey + # ------ + @property + def sankey(self): + """ + The 'sankey' property is a tuple of instances of + Sankey that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Sankey + - A list or tuple of dicts of string/value properties that + will be passed to the Sankey constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Sankey] + """ + return self['sankey'] + + @sankey.setter + def sankey(self, val): + self['sankey'] = val + + # scatter3d + # --------- + @property + def scatter3d(self): + """ + The 'scatter3d' property is a tuple of instances of + Scatter3d that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatter3d + - A list or tuple of dicts of string/value properties that + will be passed to the Scatter3d constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatter3d] + """ + return self['scatter3d'] + + @scatter3d.setter + def scatter3d(self, val): + self['scatter3d'] = val + + # scattercarpet + # ------------- + @property + def scattercarpet(self): + """ + The 'scattercarpet' property is a tuple of instances of + Scattercarpet that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattercarpet + - A list or tuple of dicts of string/value properties that + will be passed to the Scattercarpet constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattercarpet] + """ + return self['scattercarpet'] + + @scattercarpet.setter + def scattercarpet(self, val): + self['scattercarpet'] = val + + # scattergeo + # ---------- + @property + def scattergeo(self): + """ + The 'scattergeo' property is a tuple of instances of + Scattergeo that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattergeo + - A list or tuple of dicts of string/value properties that + will be passed to the Scattergeo constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattergeo] + """ + return self['scattergeo'] + + @scattergeo.setter + def scattergeo(self, val): + self['scattergeo'] = val + + # scattergl + # --------- + @property + def scattergl(self): + """ + The 'scattergl' property is a tuple of instances of + Scattergl that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattergl + - A list or tuple of dicts of string/value properties that + will be passed to the Scattergl constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattergl] + """ + return self['scattergl'] + + @scattergl.setter + def scattergl(self, val): + self['scattergl'] = val + + # scattermapbox + # ------------- + @property + def scattermapbox(self): + """ + The 'scattermapbox' property is a tuple of instances of + Scattermapbox that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattermapbox + - A list or tuple of dicts of string/value properties that + will be passed to the Scattermapbox constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattermapbox] + """ + return self['scattermapbox'] + + @scattermapbox.setter + def scattermapbox(self, val): + self['scattermapbox'] = val + + # scatterpolargl + # -------------- + @property + def scatterpolargl(self): + """ + The 'scatterpolargl' property is a tuple of instances of + Scatterpolargl that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatterpolargl + - A list or tuple of dicts of string/value properties that + will be passed to the Scatterpolargl constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatterpolargl] + """ + return self['scatterpolargl'] + + @scatterpolargl.setter + def scatterpolargl(self, val): + self['scatterpolargl'] = val + + # scatterpolar + # ------------ + @property + def scatterpolar(self): + """ + The 'scatterpolar' property is a tuple of instances of + Scatterpolar that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatterpolar + - A list or tuple of dicts of string/value properties that + will be passed to the Scatterpolar constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatterpolar] + """ + return self['scatterpolar'] + + @scatterpolar.setter + def scatterpolar(self, val): + self['scatterpolar'] = val + + # scatter + # ------- + @property + def scatter(self): + """ + The 'scatter' property is a tuple of instances of + Scatter that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatter + - A list or tuple of dicts of string/value properties that + will be passed to the Scatter constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatter] + """ + return self['scatter'] + + @scatter.setter + def scatter(self, val): + self['scatter'] = val + + # scatterternary + # -------------- + @property + def scatterternary(self): + """ + The 'scatterternary' property is a tuple of instances of + Scatterternary that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatterternary + - A list or tuple of dicts of string/value properties that + will be passed to the Scatterternary constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatterternary] + """ + return self['scatterternary'] + + @scatterternary.setter + def scatterternary(self, val): + self['scatterternary'] = val + + # splom + # ----- + @property + def splom(self): + """ + The 'splom' property is a tuple of instances of + Splom that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Splom + - A list or tuple of dicts of string/value properties that + will be passed to the Splom constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Splom] + """ + return self['splom'] + + @splom.setter + def splom(self, val): + self['splom'] = val + + # streamtube + # ---------- + @property + def streamtube(self): + """ + The 'streamtube' property is a tuple of instances of + Streamtube that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Streamtube + - A list or tuple of dicts of string/value properties that + will be passed to the Streamtube constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Streamtube] + """ + return self['streamtube'] + + @streamtube.setter + def streamtube(self, val): + self['streamtube'] = val + + # surface + # ------- + @property + def surface(self): + """ + The 'surface' property is a tuple of instances of + Surface that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Surface + - A list or tuple of dicts of string/value properties that + will be passed to the Surface constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Surface] + """ + return self['surface'] + + @surface.setter + def surface(self, val): + self['surface'] = val + + # table + # ----- + @property + def table(self): + """ + The 'table' property is a tuple of instances of + Table that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Table + - A list or tuple of dicts of string/value properties that + will be passed to the Table constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Table] + """ + return self['table'] + + @table.setter + def table(self, val): + self['table'] = val + + # violin + # ------ + @property + def violin(self): + """ + The 'violin' property is a tuple of instances of + Violin that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Violin + - A list or tuple of dicts of string/value properties that + will be passed to the Violin constructor + + Supported dict properties: + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Violin] + """ + return self['violin'] + + @violin.setter + def violin(self, val): + self['violin'] = val + + # property parent name + # -------------------- + @property + def _parent_path_str(self): + return 'layout.template' + + # Self properties description + # --------------------------- + @property + def _prop_descriptions(self): + return """\ + area + plotly.graph_objs.layout.template.data.Area instance or + dict with compatible properties + barpolar + plotly.graph_objs.layout.template.data.Barpolar + instance or dict with compatible properties + bar + plotly.graph_objs.layout.template.data.Bar instance or + dict with compatible properties + box + plotly.graph_objs.layout.template.data.Box instance or + dict with compatible properties + candlestick + plotly.graph_objs.layout.template.data.Candlestick + instance or dict with compatible properties + carpet + plotly.graph_objs.layout.template.data.Carpet instance + or dict with compatible properties + choropleth + plotly.graph_objs.layout.template.data.Choropleth + instance or dict with compatible properties + cone + plotly.graph_objs.layout.template.data.Cone instance or + dict with compatible properties + contourcarpet + plotly.graph_objs.layout.template.data.Contourcarpet + instance or dict with compatible properties + contour + plotly.graph_objs.layout.template.data.Contour instance + or dict with compatible properties + heatmapgl + plotly.graph_objs.layout.template.data.Heatmapgl + instance or dict with compatible properties + heatmap + plotly.graph_objs.layout.template.data.Heatmap instance + or dict with compatible properties + histogram2dcontour + plotly.graph_objs.layout.template.data.Histogram2dConto + ur instance or dict with compatible properties + histogram2d + plotly.graph_objs.layout.template.data.Histogram2d + instance or dict with compatible properties + histogram + plotly.graph_objs.layout.template.data.Histogram + instance or dict with compatible properties + mesh3d + plotly.graph_objs.layout.template.data.Mesh3d instance + or dict with compatible properties + ohlc + plotly.graph_objs.layout.template.data.Ohlc instance or + dict with compatible properties + parcoords + plotly.graph_objs.layout.template.data.Parcoords + instance or dict with compatible properties + pie + plotly.graph_objs.layout.template.data.Pie instance or + dict with compatible properties + pointcloud + plotly.graph_objs.layout.template.data.Pointcloud + instance or dict with compatible properties + sankey + plotly.graph_objs.layout.template.data.Sankey instance + or dict with compatible properties + scatter3d + plotly.graph_objs.layout.template.data.Scatter3d + instance or dict with compatible properties + scattercarpet + plotly.graph_objs.layout.template.data.Scattercarpet + instance or dict with compatible properties + scattergeo + plotly.graph_objs.layout.template.data.Scattergeo + instance or dict with compatible properties + scattergl + plotly.graph_objs.layout.template.data.Scattergl + instance or dict with compatible properties + scattermapbox + plotly.graph_objs.layout.template.data.Scattermapbox + instance or dict with compatible properties + scatterpolargl + plotly.graph_objs.layout.template.data.Scatterpolargl + instance or dict with compatible properties + scatterpolar + plotly.graph_objs.layout.template.data.Scatterpolar + instance or dict with compatible properties + scatter + plotly.graph_objs.layout.template.data.Scatter instance + or dict with compatible properties + scatterternary + plotly.graph_objs.layout.template.data.Scatterternary + instance or dict with compatible properties + splom + plotly.graph_objs.layout.template.data.Splom instance + or dict with compatible properties + streamtube + plotly.graph_objs.layout.template.data.Streamtube + instance or dict with compatible properties + surface + plotly.graph_objs.layout.template.data.Surface instance + or dict with compatible properties + table + plotly.graph_objs.layout.template.data.Table instance + or dict with compatible properties + violin + plotly.graph_objs.layout.template.data.Violin instance + or dict with compatible properties + """ + + def __init__( + self, + arg=None, + area=None, + barpolar=None, + bar=None, + box=None, + candlestick=None, + carpet=None, + choropleth=None, + cone=None, + contourcarpet=None, + contour=None, + heatmapgl=None, + heatmap=None, + histogram2dcontour=None, + histogram2d=None, + histogram=None, + mesh3d=None, + ohlc=None, + parcoords=None, + pie=None, + pointcloud=None, + sankey=None, + scatter3d=None, + scattercarpet=None, + scattergeo=None, + scattergl=None, + scattermapbox=None, + scatterpolargl=None, + scatterpolar=None, + scatter=None, + scatterternary=None, + splom=None, + streamtube=None, + surface=None, + table=None, + violin=None, + **kwargs + ): + """ + Construct a new Data object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of plotly.graph_objs.layout.template.Data + area + plotly.graph_objs.layout.template.data.Area instance or + dict with compatible properties + barpolar + plotly.graph_objs.layout.template.data.Barpolar + instance or dict with compatible properties + bar + plotly.graph_objs.layout.template.data.Bar instance or + dict with compatible properties + box + plotly.graph_objs.layout.template.data.Box instance or + dict with compatible properties + candlestick + plotly.graph_objs.layout.template.data.Candlestick + instance or dict with compatible properties + carpet + plotly.graph_objs.layout.template.data.Carpet instance + or dict with compatible properties + choropleth + plotly.graph_objs.layout.template.data.Choropleth + instance or dict with compatible properties + cone + plotly.graph_objs.layout.template.data.Cone instance or + dict with compatible properties + contourcarpet + plotly.graph_objs.layout.template.data.Contourcarpet + instance or dict with compatible properties + contour + plotly.graph_objs.layout.template.data.Contour instance + or dict with compatible properties + heatmapgl + plotly.graph_objs.layout.template.data.Heatmapgl + instance or dict with compatible properties + heatmap + plotly.graph_objs.layout.template.data.Heatmap instance + or dict with compatible properties + histogram2dcontour + plotly.graph_objs.layout.template.data.Histogram2dConto + ur instance or dict with compatible properties + histogram2d + plotly.graph_objs.layout.template.data.Histogram2d + instance or dict with compatible properties + histogram + plotly.graph_objs.layout.template.data.Histogram + instance or dict with compatible properties + mesh3d + plotly.graph_objs.layout.template.data.Mesh3d instance + or dict with compatible properties + ohlc + plotly.graph_objs.layout.template.data.Ohlc instance or + dict with compatible properties + parcoords + plotly.graph_objs.layout.template.data.Parcoords + instance or dict with compatible properties + pie + plotly.graph_objs.layout.template.data.Pie instance or + dict with compatible properties + pointcloud + plotly.graph_objs.layout.template.data.Pointcloud + instance or dict with compatible properties + sankey + plotly.graph_objs.layout.template.data.Sankey instance + or dict with compatible properties + scatter3d + plotly.graph_objs.layout.template.data.Scatter3d + instance or dict with compatible properties + scattercarpet + plotly.graph_objs.layout.template.data.Scattercarpet + instance or dict with compatible properties + scattergeo + plotly.graph_objs.layout.template.data.Scattergeo + instance or dict with compatible properties + scattergl + plotly.graph_objs.layout.template.data.Scattergl + instance or dict with compatible properties + scattermapbox + plotly.graph_objs.layout.template.data.Scattermapbox + instance or dict with compatible properties + scatterpolargl + plotly.graph_objs.layout.template.data.Scatterpolargl + instance or dict with compatible properties + scatterpolar + plotly.graph_objs.layout.template.data.Scatterpolar + instance or dict with compatible properties + scatter + plotly.graph_objs.layout.template.data.Scatter instance + or dict with compatible properties + scatterternary + plotly.graph_objs.layout.template.data.Scatterternary + instance or dict with compatible properties + splom + plotly.graph_objs.layout.template.data.Splom instance + or dict with compatible properties + streamtube + plotly.graph_objs.layout.template.data.Streamtube + instance or dict with compatible properties + surface + plotly.graph_objs.layout.template.data.Surface instance + or dict with compatible properties + table + plotly.graph_objs.layout.template.data.Table instance + or dict with compatible properties + violin + plotly.graph_objs.layout.template.data.Violin instance + or dict with compatible properties + + Returns + ------- + Data + """ + super(Data, self).__init__('data') + + # Validate arg + # ------------ + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = copy.copy(arg) + else: + raise ValueError( + """\ +The first argument to the plotly.graph_objs.layout.template.Data +constructor must be a dict or +an instance of plotly.graph_objs.layout.template.Data""" + ) + + # Handle skip_invalid + # ------------------- + self._skip_invalid = kwargs.pop('skip_invalid', False) + + # Import validators + # ----------------- + from plotly.validators.layout.template import (data as v_data) + + # Initialize validators + # --------------------- + self._validators['area'] = v_data.AreasValidator() + self._validators['barpolar'] = v_data.BarpolarsValidator() + self._validators['bar'] = v_data.BarsValidator() + self._validators['box'] = v_data.BoxsValidator() + self._validators['candlestick'] = v_data.CandlesticksValidator() + self._validators['carpet'] = v_data.CarpetsValidator() + self._validators['choropleth'] = v_data.ChoroplethsValidator() + self._validators['cone'] = v_data.ConesValidator() + self._validators['contourcarpet'] = v_data.ContourcarpetsValidator() + self._validators['contour'] = v_data.ContoursValidator() + self._validators['heatmapgl'] = v_data.HeatmapglsValidator() + self._validators['heatmap'] = v_data.HeatmapsValidator() + self._validators['histogram2dcontour' + ] = v_data.Histogram2dContoursValidator() + self._validators['histogram2d'] = v_data.Histogram2dsValidator() + self._validators['histogram'] = v_data.HistogramsValidator() + self._validators['mesh3d'] = v_data.Mesh3dsValidator() + self._validators['ohlc'] = v_data.OhlcsValidator() + self._validators['parcoords'] = v_data.ParcoordssValidator() + self._validators['pie'] = v_data.PiesValidator() + self._validators['pointcloud'] = v_data.PointcloudsValidator() + self._validators['sankey'] = v_data.SankeysValidator() + self._validators['scatter3d'] = v_data.Scatter3dsValidator() + self._validators['scattercarpet'] = v_data.ScattercarpetsValidator() + self._validators['scattergeo'] = v_data.ScattergeosValidator() + self._validators['scattergl'] = v_data.ScatterglsValidator() + self._validators['scattermapbox'] = v_data.ScattermapboxsValidator() + self._validators['scatterpolargl'] = v_data.ScatterpolarglsValidator() + self._validators['scatterpolar'] = v_data.ScatterpolarsValidator() + self._validators['scatter'] = v_data.ScattersValidator() + self._validators['scatterternary'] = v_data.ScatterternarysValidator() + self._validators['splom'] = v_data.SplomsValidator() + self._validators['streamtube'] = v_data.StreamtubesValidator() + self._validators['surface'] = v_data.SurfacesValidator() + self._validators['table'] = v_data.TablesValidator() + self._validators['violin'] = v_data.ViolinsValidator() + + # Populate data dict with properties + # ---------------------------------- + _v = arg.pop('area', None) + self['area'] = area if area is not None else _v + _v = arg.pop('barpolar', None) + self['barpolar'] = barpolar if barpolar is not None else _v + _v = arg.pop('bar', None) + self['bar'] = bar if bar is not None else _v + _v = arg.pop('box', None) + self['box'] = box if box is not None else _v + _v = arg.pop('candlestick', None) + self['candlestick'] = candlestick if candlestick is not None else _v + _v = arg.pop('carpet', None) + self['carpet'] = carpet if carpet is not None else _v + _v = arg.pop('choropleth', None) + self['choropleth'] = choropleth if choropleth is not None else _v + _v = arg.pop('cone', None) + self['cone'] = cone if cone is not None else _v + _v = arg.pop('contourcarpet', None) + self['contourcarpet' + ] = contourcarpet if contourcarpet is not None else _v + _v = arg.pop('contour', None) + self['contour'] = contour if contour is not None else _v + _v = arg.pop('heatmapgl', None) + self['heatmapgl'] = heatmapgl if heatmapgl is not None else _v + _v = arg.pop('heatmap', None) + self['heatmap'] = heatmap if heatmap is not None else _v + _v = arg.pop('histogram2dcontour', None) + self['histogram2dcontour' + ] = histogram2dcontour if histogram2dcontour is not None else _v + _v = arg.pop('histogram2d', None) + self['histogram2d'] = histogram2d if histogram2d is not None else _v + _v = arg.pop('histogram', None) + self['histogram'] = histogram if histogram is not None else _v + _v = arg.pop('mesh3d', None) + self['mesh3d'] = mesh3d if mesh3d is not None else _v + _v = arg.pop('ohlc', None) + self['ohlc'] = ohlc if ohlc is not None else _v + _v = arg.pop('parcoords', None) + self['parcoords'] = parcoords if parcoords is not None else _v + _v = arg.pop('pie', None) + self['pie'] = pie if pie is not None else _v + _v = arg.pop('pointcloud', None) + self['pointcloud'] = pointcloud if pointcloud is not None else _v + _v = arg.pop('sankey', None) + self['sankey'] = sankey if sankey is not None else _v + _v = arg.pop('scatter3d', None) + self['scatter3d'] = scatter3d if scatter3d is not None else _v + _v = arg.pop('scattercarpet', None) + self['scattercarpet' + ] = scattercarpet if scattercarpet is not None else _v + _v = arg.pop('scattergeo', None) + self['scattergeo'] = scattergeo if scattergeo is not None else _v + _v = arg.pop('scattergl', None) + self['scattergl'] = scattergl if scattergl is not None else _v + _v = arg.pop('scattermapbox', None) + self['scattermapbox' + ] = scattermapbox if scattermapbox is not None else _v + _v = arg.pop('scatterpolargl', None) + self['scatterpolargl' + ] = scatterpolargl if scatterpolargl is not None else _v + _v = arg.pop('scatterpolar', None) + self['scatterpolar'] = scatterpolar if scatterpolar is not None else _v + _v = arg.pop('scatter', None) + self['scatter'] = scatter if scatter is not None else _v + _v = arg.pop('scatterternary', None) + self['scatterternary' + ] = scatterternary if scatterternary is not None else _v + _v = arg.pop('splom', None) + self['splom'] = splom if splom is not None else _v + _v = arg.pop('streamtube', None) + self['streamtube'] = streamtube if streamtube is not None else _v + _v = arg.pop('surface', None) + self['surface'] = surface if surface is not None else _v + _v = arg.pop('table', None) + self['table'] = table if table is not None else _v + _v = arg.pop('violin', None) + self['violin'] = violin if violin is not None else _v + + # Process unknown kwargs + # ---------------------- + self._process_kwargs(**dict(arg, **kwargs)) + + # Reset skip_invalid + # ------------------ + self._skip_invalid = False diff --git a/plotly/graph_objs/layout/template/_layout.py b/plotly/graph_objs/layout/template/_layout.py new file mode 100644 index 00000000000..058b60b807d --- /dev/null +++ b/plotly/graph_objs/layout/template/_layout.py @@ -0,0 +1 @@ +from plotly.graph_objs import Layout diff --git a/plotly/graph_objs/layout/template/data/__init__.py b/plotly/graph_objs/layout/template/data/__init__.py new file mode 100644 index 00000000000..88b4101a089 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/__init__.py @@ -0,0 +1,35 @@ +from ._violin import Violin +from ._table import Table +from ._surface import Surface +from ._streamtube import Streamtube +from ._splom import Splom +from ._scatterternary import Scatterternary +from ._scatter import Scatter +from ._scatterpolar import Scatterpolar +from ._scatterpolargl import Scatterpolargl +from ._scattermapbox import Scattermapbox +from ._scattergl import Scattergl +from ._scattergeo import Scattergeo +from ._scattercarpet import Scattercarpet +from ._scatter3d import Scatter3d +from ._sankey import Sankey +from ._pointcloud import Pointcloud +from ._pie import Pie +from ._parcoords import Parcoords +from ._ohlc import Ohlc +from ._mesh3d import Mesh3d +from ._histogram import Histogram +from ._histogram2d import Histogram2d +from ._histogram2dcontour import Histogram2dContour +from ._heatmap import Heatmap +from ._heatmapgl import Heatmapgl +from ._contour import Contour +from ._contourcarpet import Contourcarpet +from ._cone import Cone +from ._choropleth import Choropleth +from ._carpet import Carpet +from ._candlestick import Candlestick +from ._box import Box +from ._bar import Bar +from ._barpolar import Barpolar +from ._area import Area diff --git a/plotly/graph_objs/layout/template/data/_area.py b/plotly/graph_objs/layout/template/data/_area.py new file mode 100644 index 00000000000..ad21bdf3e8d --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_area.py @@ -0,0 +1 @@ +from plotly.graph_objs import Area diff --git a/plotly/graph_objs/layout/template/data/_bar.py b/plotly/graph_objs/layout/template/data/_bar.py new file mode 100644 index 00000000000..5a800e64085 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_bar.py @@ -0,0 +1 @@ +from plotly.graph_objs import Bar diff --git a/plotly/graph_objs/layout/template/data/_barpolar.py b/plotly/graph_objs/layout/template/data/_barpolar.py new file mode 100644 index 00000000000..18abed8bbb6 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_barpolar.py @@ -0,0 +1 @@ +from plotly.graph_objs import Barpolar diff --git a/plotly/graph_objs/layout/template/data/_box.py b/plotly/graph_objs/layout/template/data/_box.py new file mode 100644 index 00000000000..ffdd1d92139 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_box.py @@ -0,0 +1 @@ +from plotly.graph_objs import Box diff --git a/plotly/graph_objs/layout/template/data/_candlestick.py b/plotly/graph_objs/layout/template/data/_candlestick.py new file mode 100644 index 00000000000..5d11b448593 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_candlestick.py @@ -0,0 +1 @@ +from plotly.graph_objs import Candlestick diff --git a/plotly/graph_objs/layout/template/data/_carpet.py b/plotly/graph_objs/layout/template/data/_carpet.py new file mode 100644 index 00000000000..b923d73904d --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_carpet.py @@ -0,0 +1 @@ +from plotly.graph_objs import Carpet diff --git a/plotly/graph_objs/layout/template/data/_choropleth.py b/plotly/graph_objs/layout/template/data/_choropleth.py new file mode 100644 index 00000000000..733e12709cc --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_choropleth.py @@ -0,0 +1 @@ +from plotly.graph_objs import Choropleth diff --git a/plotly/graph_objs/layout/template/data/_cone.py b/plotly/graph_objs/layout/template/data/_cone.py new file mode 100644 index 00000000000..7a284527a8d --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_cone.py @@ -0,0 +1 @@ +from plotly.graph_objs import Cone diff --git a/plotly/graph_objs/layout/template/data/_contour.py b/plotly/graph_objs/layout/template/data/_contour.py new file mode 100644 index 00000000000..e474909a4d2 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_contour.py @@ -0,0 +1 @@ +from plotly.graph_objs import Contour diff --git a/plotly/graph_objs/layout/template/data/_contourcarpet.py b/plotly/graph_objs/layout/template/data/_contourcarpet.py new file mode 100644 index 00000000000..6240faf5100 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_contourcarpet.py @@ -0,0 +1 @@ +from plotly.graph_objs import Contourcarpet diff --git a/plotly/graph_objs/layout/template/data/_heatmap.py b/plotly/graph_objs/layout/template/data/_heatmap.py new file mode 100644 index 00000000000..6098ee83e70 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_heatmap.py @@ -0,0 +1 @@ +from plotly.graph_objs import Heatmap diff --git a/plotly/graph_objs/layout/template/data/_heatmapgl.py b/plotly/graph_objs/layout/template/data/_heatmapgl.py new file mode 100644 index 00000000000..625f2797d24 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_heatmapgl.py @@ -0,0 +1 @@ +from plotly.graph_objs import Heatmapgl diff --git a/plotly/graph_objs/layout/template/data/_histogram.py b/plotly/graph_objs/layout/template/data/_histogram.py new file mode 100644 index 00000000000..7ba4c6df2fe --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_histogram.py @@ -0,0 +1 @@ +from plotly.graph_objs import Histogram diff --git a/plotly/graph_objs/layout/template/data/_histogram2d.py b/plotly/graph_objs/layout/template/data/_histogram2d.py new file mode 100644 index 00000000000..710f7f99296 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_histogram2d.py @@ -0,0 +1 @@ +from plotly.graph_objs import Histogram2d diff --git a/plotly/graph_objs/layout/template/data/_histogram2dcontour.py b/plotly/graph_objs/layout/template/data/_histogram2dcontour.py new file mode 100644 index 00000000000..94af41aa922 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_histogram2dcontour.py @@ -0,0 +1 @@ +from plotly.graph_objs import Histogram2dContour diff --git a/plotly/graph_objs/layout/template/data/_mesh3d.py b/plotly/graph_objs/layout/template/data/_mesh3d.py new file mode 100644 index 00000000000..2172a23bd4b --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_mesh3d.py @@ -0,0 +1 @@ +from plotly.graph_objs import Mesh3d diff --git a/plotly/graph_objs/layout/template/data/_ohlc.py b/plotly/graph_objs/layout/template/data/_ohlc.py new file mode 100644 index 00000000000..d3f857428cc --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_ohlc.py @@ -0,0 +1 @@ +from plotly.graph_objs import Ohlc diff --git a/plotly/graph_objs/layout/template/data/_parcoords.py b/plotly/graph_objs/layout/template/data/_parcoords.py new file mode 100644 index 00000000000..ccf5629c54f --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_parcoords.py @@ -0,0 +1 @@ +from plotly.graph_objs import Parcoords diff --git a/plotly/graph_objs/layout/template/data/_pie.py b/plotly/graph_objs/layout/template/data/_pie.py new file mode 100644 index 00000000000..0625fd28881 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_pie.py @@ -0,0 +1 @@ +from plotly.graph_objs import Pie diff --git a/plotly/graph_objs/layout/template/data/_pointcloud.py b/plotly/graph_objs/layout/template/data/_pointcloud.py new file mode 100644 index 00000000000..af62ef6313d --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_pointcloud.py @@ -0,0 +1 @@ +from plotly.graph_objs import Pointcloud diff --git a/plotly/graph_objs/layout/template/data/_sankey.py b/plotly/graph_objs/layout/template/data/_sankey.py new file mode 100644 index 00000000000..b572f657ce9 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_sankey.py @@ -0,0 +1 @@ +from plotly.graph_objs import Sankey diff --git a/plotly/graph_objs/layout/template/data/_scatter.py b/plotly/graph_objs/layout/template/data/_scatter.py new file mode 100644 index 00000000000..afcfab30afa --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scatter.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatter diff --git a/plotly/graph_objs/layout/template/data/_scatter3d.py b/plotly/graph_objs/layout/template/data/_scatter3d.py new file mode 100644 index 00000000000..93146220e39 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scatter3d.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatter3d diff --git a/plotly/graph_objs/layout/template/data/_scattercarpet.py b/plotly/graph_objs/layout/template/data/_scattercarpet.py new file mode 100644 index 00000000000..26d87ca7c1c --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scattercarpet.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattercarpet diff --git a/plotly/graph_objs/layout/template/data/_scattergeo.py b/plotly/graph_objs/layout/template/data/_scattergeo.py new file mode 100644 index 00000000000..34308e1a081 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scattergeo.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattergeo diff --git a/plotly/graph_objs/layout/template/data/_scattergl.py b/plotly/graph_objs/layout/template/data/_scattergl.py new file mode 100644 index 00000000000..30bd3712b80 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scattergl.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattergl diff --git a/plotly/graph_objs/layout/template/data/_scattermapbox.py b/plotly/graph_objs/layout/template/data/_scattermapbox.py new file mode 100644 index 00000000000..6c3333aa945 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scattermapbox.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattermapbox diff --git a/plotly/graph_objs/layout/template/data/_scatterpolar.py b/plotly/graph_objs/layout/template/data/_scatterpolar.py new file mode 100644 index 00000000000..e1417b23810 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scatterpolar.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatterpolar diff --git a/plotly/graph_objs/layout/template/data/_scatterpolargl.py b/plotly/graph_objs/layout/template/data/_scatterpolargl.py new file mode 100644 index 00000000000..60b023a581b --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scatterpolargl.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatterpolargl diff --git a/plotly/graph_objs/layout/template/data/_scatterternary.py b/plotly/graph_objs/layout/template/data/_scatterternary.py new file mode 100644 index 00000000000..2221eadd54d --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_scatterternary.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatterternary diff --git a/plotly/graph_objs/layout/template/data/_splom.py b/plotly/graph_objs/layout/template/data/_splom.py new file mode 100644 index 00000000000..0909cdfd9dd --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_splom.py @@ -0,0 +1 @@ +from plotly.graph_objs import Splom diff --git a/plotly/graph_objs/layout/template/data/_streamtube.py b/plotly/graph_objs/layout/template/data/_streamtube.py new file mode 100644 index 00000000000..8b23c3161cb --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_streamtube.py @@ -0,0 +1 @@ +from plotly.graph_objs import Streamtube diff --git a/plotly/graph_objs/layout/template/data/_surface.py b/plotly/graph_objs/layout/template/data/_surface.py new file mode 100644 index 00000000000..cfaa55d7385 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_surface.py @@ -0,0 +1 @@ +from plotly.graph_objs import Surface diff --git a/plotly/graph_objs/layout/template/data/_table.py b/plotly/graph_objs/layout/template/data/_table.py new file mode 100644 index 00000000000..2b6d4ad1e57 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_table.py @@ -0,0 +1 @@ +from plotly.graph_objs import Table diff --git a/plotly/graph_objs/layout/template/data/_violin.py b/plotly/graph_objs/layout/template/data/_violin.py new file mode 100644 index 00000000000..23221b66776 --- /dev/null +++ b/plotly/graph_objs/layout/template/data/_violin.py @@ -0,0 +1 @@ +from plotly.graph_objs import Violin diff --git a/plotly/graph_objs/layout/ternary/_aaxis.py b/plotly/graph_objs/layout/ternary/_aaxis.py index b5aa87d48f3..cdad3380015 100644 --- a/plotly/graph_objs/layout/ternary/_aaxis.py +++ b/plotly/graph_objs/layout/ternary/_aaxis.py @@ -779,6 +779,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.ternary.aaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.ternary.aaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.ternary.aaxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.ternary.aaxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1199,6 +1227,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.ternary.aaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.aaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1265,6 +1298,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1415,6 +1449,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.ternary.aaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.aaxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1511,6 +1550,8 @@ def __init__( self._validators['tickformat'] = v_aaxis.TickformatValidator() self._validators['tickformatstops' ] = v_aaxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_aaxis.TickformatstopValidator() self._validators['ticklen'] = v_aaxis.TicklenValidator() self._validators['tickmode'] = v_aaxis.TickmodeValidator() self._validators['tickprefix'] = v_aaxis.TickprefixValidator() @@ -1580,6 +1621,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/ternary/_baxis.py b/plotly/graph_objs/layout/ternary/_baxis.py index b7eaa4c10cf..20461cef66c 100644 --- a/plotly/graph_objs/layout/ternary/_baxis.py +++ b/plotly/graph_objs/layout/ternary/_baxis.py @@ -779,6 +779,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.ternary.baxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.ternary.baxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.ternary.baxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.ternary.baxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1199,6 +1227,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.ternary.baxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.baxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.baxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1265,6 +1298,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1415,6 +1449,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.ternary.baxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.baxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.baxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1511,6 +1550,8 @@ def __init__( self._validators['tickformat'] = v_baxis.TickformatValidator() self._validators['tickformatstops' ] = v_baxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_baxis.TickformatstopValidator() self._validators['ticklen'] = v_baxis.TicklenValidator() self._validators['tickmode'] = v_baxis.TickmodeValidator() self._validators['tickprefix'] = v_baxis.TickprefixValidator() @@ -1580,6 +1621,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/ternary/_caxis.py b/plotly/graph_objs/layout/ternary/_caxis.py index beb922028d2..2f3cce71857 100644 --- a/plotly/graph_objs/layout/ternary/_caxis.py +++ b/plotly/graph_objs/layout/ternary/_caxis.py @@ -779,6 +779,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.ternary.caxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.ternary.caxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.layout.ternary.caxis.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.ternary.caxis.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1199,6 +1227,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.layout.ternary.caxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.caxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.caxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1265,6 +1298,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1415,6 +1449,11 @@ def __init__( tickformatstops plotly.graph_objs.layout.ternary.caxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.caxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.caxis.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1511,6 +1550,8 @@ def __init__( self._validators['tickformat'] = v_caxis.TickformatValidator() self._validators['tickformatstops' ] = v_caxis.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_caxis.TickformatstopValidator() self._validators['ticklen'] = v_caxis.TicklenValidator() self._validators['tickmode'] = v_caxis.TickmodeValidator() self._validators['tickprefix'] = v_caxis.TickprefixValidator() @@ -1580,6 +1621,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/layout/xaxis/_rangeselector.py b/plotly/graph_objs/layout/xaxis/_rangeselector.py index 590d697c390..e32823870d8 100644 --- a/plotly/graph_objs/layout/xaxis/_rangeselector.py +++ b/plotly/graph_objs/layout/xaxis/_rangeselector.py @@ -274,6 +274,34 @@ def buttons(self): def buttons(self, val): self['buttons'] = val + # buttondefaults + # -------------- + @property + def buttondefaults(self): + """ + When used in a template (as + layout.template.layout.xaxis.rangeselector.buttondefaults), + sets the default property values to use for elements of + layout.xaxis.rangeselector.buttons + + The 'buttondefaults' property is an instance of Button + that may be specified as: + - An instance of plotly.graph_objs.layout.xaxis.rangeselector.Button + - A dict of string/value properties that will be passed + to the Button constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.layout.xaxis.rangeselector.Button + """ + return self['buttondefaults'] + + @buttondefaults.setter + def buttondefaults(self, val): + self['buttondefaults'] = val + # font # ---- @property @@ -455,6 +483,11 @@ def _prop_descriptions(self): buttons Sets the specifications for each buttons. By default, a range selector comes with no buttons. + buttondefaults + When used in a template (as layout.template.layout.xaxi + s.rangeselector.buttondefaults), sets the default + property values to use for elements of + layout.xaxis.rangeselector.buttons font Sets the font of the range selector button text. visible @@ -485,6 +518,7 @@ def __init__( bordercolor=None, borderwidth=None, buttons=None, + buttondefaults=None, font=None, visible=None, x=None, @@ -517,6 +551,11 @@ def __init__( buttons Sets the specifications for each buttons. By default, a range selector comes with no buttons. + buttondefaults + When used in a template (as layout.template.layout.xaxi + s.rangeselector.buttondefaults), sets the default + property values to use for elements of + layout.xaxis.rangeselector.buttons font Sets the font of the range selector button text. visible @@ -580,6 +619,7 @@ def __init__( self._validators['borderwidth' ] = v_rangeselector.BorderwidthValidator() self._validators['buttons'] = v_rangeselector.ButtonsValidator() + self._validators['buttondefaults'] = v_rangeselector.ButtonValidator() self._validators['font'] = v_rangeselector.FontValidator() self._validators['visible'] = v_rangeselector.VisibleValidator() self._validators['x'] = v_rangeselector.XValidator() @@ -599,6 +639,9 @@ def __init__( self['borderwidth'] = borderwidth if borderwidth is not None else _v _v = arg.pop('buttons', None) self['buttons'] = buttons if buttons is not None else _v + _v = arg.pop('buttondefaults', None) + self['buttondefaults' + ] = buttondefaults if buttondefaults is not None else _v _v = arg.pop('font', None) self['font'] = font if font is not None else _v _v = arg.pop('visible', None) diff --git a/plotly/graph_objs/mesh3d/_colorbar.py b/plotly/graph_objs/mesh3d/_colorbar.py index 81ab469ff7b..4a20e6783f2 100644 --- a/plotly/graph_objs/mesh3d/_colorbar.py +++ b/plotly/graph_objs/mesh3d/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.mesh3d.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + mesh3d.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.mesh3d.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.mesh3d.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.mesh3d.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.mesh3d + .colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + mesh3d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.mesh3d.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.mesh3d + .colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + mesh3d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/parcoords/_line.py b/plotly/graph_objs/parcoords/_line.py index b3acb0b41ee..2bd3b35afae 100644 --- a/plotly/graph_objs/parcoords/_line.py +++ b/plotly/graph_objs/parcoords/_line.py @@ -306,6 +306,12 @@ def colorbar(self): plotly.graph_objs.parcoords.line.colorbar.Tickf ormatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.parcoords.line.colorbar.tickformatstopdefault + s), sets the default property values to use for + elements of + parcoords.line.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/parcoords/line/_colorbar.py b/plotly/graph_objs/parcoords/line/_colorbar.py index 03baafc8872..7c9c78d8694 100644 --- a/plotly/graph_objs/parcoords/line/_colorbar.py +++ b/plotly/graph_objs/parcoords/line/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.parcoords.line + .colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + parcoords.line.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.parcoords.line.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.parcoords.line.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.parcoords.line.colorbar.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.parcoo + rds.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + parcoords.line.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.parcoords.line.colorbar.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.parcoo + rds.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + parcoords.line.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1653,6 +1692,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1728,6 +1769,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scatter/_marker.py b/plotly/graph_objs/scatter/_marker.py index 9a36e3af089..998185b217c 100644 --- a/plotly/graph_objs/scatter/_marker.py +++ b/plotly/graph_objs/scatter/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scatter.marker.colorbar.Tickf ormatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatter.marker.colorbar.tickformatstopdefault + s), sets the default property values to use for + elements of + scatter.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scatter/marker/_colorbar.py b/plotly/graph_objs/scatter/marker/_colorbar.py index 22945008cd6..ac11da6ecb1 100644 --- a/plotly/graph_objs/scatter/marker/_colorbar.py +++ b/plotly/graph_objs/scatter/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatter.marker + .colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scatter.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scatter.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scatter.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scatter.marker.colorbar.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scatter.marker.colorbar.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1653,6 +1692,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1728,6 +1769,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scatter3d/_marker.py b/plotly/graph_objs/scatter3d/_marker.py index 1f374b6705e..7a6be276400 100644 --- a/plotly/graph_objs/scatter3d/_marker.py +++ b/plotly/graph_objs/scatter3d/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scatter3d.marker.colorbar.Tic kformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatter3d.marker.colorbar.tickformatstopdefau + lts), sets the default property values to use + for elements of + scatter3d.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scatter3d/marker/_colorbar.py b/plotly/graph_objs/scatter3d/marker/_colorbar.py index c34822f1e73..95b8a76fdb8 100644 --- a/plotly/graph_objs/scatter3d/marker/_colorbar.py +++ b/plotly/graph_objs/scatter3d/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatter3d.mark + er.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scatter3d.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scatter3d.marker.colorbar.Tickformats top instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r3d.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter3d.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scatter3d.marker.colorbar.Tickformats top instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r3d.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter3d.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1653,6 +1692,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1728,6 +1769,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scattercarpet/_marker.py b/plotly/graph_objs/scattercarpet/_marker.py index 0dcf2797415..22ccf4eeff9 100644 --- a/plotly/graph_objs/scattercarpet/_marker.py +++ b/plotly/graph_objs/scattercarpet/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scattercarpet.marker.colorbar .Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattercarpet.marker.colorbar.tickformatstopd + efaults), sets the default property values to + use for elements of + scattercarpet.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scattercarpet/marker/_colorbar.py b/plotly/graph_objs/scattercarpet/marker/_colorbar.py index 87303ce2055..58d279636c7 100644 --- a/plotly/graph_objs/scattercarpet/marker/_colorbar.py +++ b/plotly/graph_objs/scattercarpet/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattercarpet. + marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scattercarpet.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scattercarpet.marker.colorbar.Tickfor matstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rcarpet.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattercarpet.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scattercarpet.marker.colorbar.Tickfor matstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rcarpet.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattercarpet.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scattergeo/_marker.py b/plotly/graph_objs/scattergeo/_marker.py index 76fbe614261..40001bf26a3 100644 --- a/plotly/graph_objs/scattergeo/_marker.py +++ b/plotly/graph_objs/scattergeo/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scattergeo.marker.colorbar.Ti ckformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattergeo.marker.colorbar.tickformatstopdefa + ults), sets the default property values to use + for elements of + scattergeo.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scattergeo/marker/_colorbar.py b/plotly/graph_objs/scattergeo/marker/_colorbar.py index 442a13001e9..c3603f90a20 100644 --- a/plotly/graph_objs/scattergeo/marker/_colorbar.py +++ b/plotly/graph_objs/scattergeo/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattergeo.mar + ker.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scattergeo.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scattergeo.marker.colorbar.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgeo.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergeo.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scattergeo.marker.colorbar.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgeo.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergeo.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scattergl/_marker.py b/plotly/graph_objs/scattergl/_marker.py index f2b757a0568..060de11815e 100644 --- a/plotly/graph_objs/scattergl/_marker.py +++ b/plotly/graph_objs/scattergl/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scattergl.marker.colorbar.Tic kformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattergl.marker.colorbar.tickformatstopdefau + lts), sets the default property values to use + for elements of + scattergl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scattergl/marker/_colorbar.py b/plotly/graph_objs/scattergl/marker/_colorbar.py index 5ea81bfdcdf..b054d907edb 100644 --- a/plotly/graph_objs/scattergl/marker/_colorbar.py +++ b/plotly/graph_objs/scattergl/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattergl.mark + er.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scattergl.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scattergl.marker.colorbar.Tickformats top instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgl.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scattergl.marker.colorbar.Tickformats top instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgl.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1653,6 +1692,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1728,6 +1769,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scattermapbox/_marker.py b/plotly/graph_objs/scattermapbox/_marker.py index 3fb8421766c..346c5a184bc 100644 --- a/plotly/graph_objs/scattermapbox/_marker.py +++ b/plotly/graph_objs/scattermapbox/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scattermapbox.marker.colorbar .Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattermapbox.marker.colorbar.tickformatstopd + efaults), sets the default property values to + use for elements of + scattermapbox.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scattermapbox/marker/_colorbar.py b/plotly/graph_objs/scattermapbox/marker/_colorbar.py index b1af8018ed7..1f9e1371ad7 100644 --- a/plotly/graph_objs/scattermapbox/marker/_colorbar.py +++ b/plotly/graph_objs/scattermapbox/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattermapbox. + marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scattermapbox.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scattermapbox.marker.colorbar.Tickfor matstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rmapbox.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattermapbox.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scattermapbox.marker.colorbar.Tickfor matstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rmapbox.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattermapbox.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scatterpolar/_marker.py b/plotly/graph_objs/scatterpolar/_marker.py index 626d3bf34a2..c698ec6193a 100644 --- a/plotly/graph_objs/scatterpolar/_marker.py +++ b/plotly/graph_objs/scatterpolar/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scatterpolar.marker.colorbar. Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatterpolar.marker.colorbar.tickformatstopde + faults), sets the default property values to + use for elements of + scatterpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scatterpolar/marker/_colorbar.py b/plotly/graph_objs/scatterpolar/marker/_colorbar.py index 95bfc5ce33d..1decb5074c8 100644 --- a/plotly/graph_objs/scatterpolar/marker/_colorbar.py +++ b/plotly/graph_objs/scatterpolar/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatterpolar.m + arker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scatterpolar.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scatterpolar.marker.colorbar.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolar.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scatterpolar.marker.colorbar.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolar.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scatterpolargl/_marker.py b/plotly/graph_objs/scatterpolargl/_marker.py index b2a26cf9269..8a3ad1590c2 100644 --- a/plotly/graph_objs/scatterpolargl/_marker.py +++ b/plotly/graph_objs/scatterpolargl/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scatterpolargl.marker.colorba r.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatterpolargl.marker.colorbar.tickformatstop + defaults), sets the default property values to + use for elements of + scatterpolargl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scatterpolargl/marker/_colorbar.py b/plotly/graph_objs/scatterpolargl/marker/_colorbar.py index 6999786bf2c..361e609ada3 100644 --- a/plotly/graph_objs/scatterpolargl/marker/_colorbar.py +++ b/plotly/graph_objs/scatterpolargl/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatterpolargl + .marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scatterpolargl.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scatterpolargl.marker.colorbar.Tickfo rmatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolargl.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolargl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scatterpolargl.marker.colorbar.Tickfo rmatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolargl.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolargl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/scatterternary/_marker.py b/plotly/graph_objs/scatterternary/_marker.py index bea2b8dcc84..7410aa0da86 100644 --- a/plotly/graph_objs/scatterternary/_marker.py +++ b/plotly/graph_objs/scatterternary/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.scatterternary.marker.colorba r.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatterternary.marker.colorbar.tickformatstop + defaults), sets the default property values to + use for elements of + scatterternary.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/scatterternary/marker/_colorbar.py b/plotly/graph_objs/scatterternary/marker/_colorbar.py index ac3d97e2b3e..157d5b923a9 100644 --- a/plotly/graph_objs/scatterternary/marker/_colorbar.py +++ b/plotly/graph_objs/scatterternary/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatterternary + .marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scatterternary.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.scatterternary.marker.colorbar.Tickfo rmatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rternary.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterternary.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1531,6 +1565,11 @@ def __init__( tickformatstops plotly.graph_objs.scatterternary.marker.colorbar.Tickfo rmatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rternary.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterternary.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1655,6 +1694,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1730,6 +1771,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/splom/_marker.py b/plotly/graph_objs/splom/_marker.py index c54c4b6a992..2e7cd4929c2 100644 --- a/plotly/graph_objs/splom/_marker.py +++ b/plotly/graph_objs/splom/_marker.py @@ -307,6 +307,12 @@ def colorbar(self): plotly.graph_objs.splom.marker.colorbar.Tickfor matstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.splom.marker.colorbar.tickformatstopdefaults) + , sets the default property values to use for + elements of + splom.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/graph_objs/splom/marker/_colorbar.py b/plotly/graph_objs/splom/marker/_colorbar.py index fae03f9b495..fb51439c0b1 100644 --- a/plotly/graph_objs/splom/marker/_colorbar.py +++ b/plotly/graph_objs/splom/marker/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.splom.marker.c + olorbar.tickformatstopdefaults), sets the default property + values to use for elements of + splom.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.splom.marker.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.splom.marker.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.splom.marker.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.splom. + marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + splom.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.splom.marker.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.splom. + marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + splom.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/streamtube/_colorbar.py b/plotly/graph_objs/streamtube/_colorbar.py index 1c38e83de61..545b3cf43fe 100644 --- a/plotly/graph_objs/streamtube/_colorbar.py +++ b/plotly/graph_objs/streamtube/_colorbar.py @@ -747,6 +747,33 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.streamtube.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of streamtube.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.streamtube.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.streamtube.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1327,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.streamtube.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.stream + tube.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + streamtube.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1420,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1563,11 @@ def __init__( tickformatstops plotly.graph_objs.streamtube.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.stream + tube.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + streamtube.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1690,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1767,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/graph_objs/surface/_colorbar.py b/plotly/graph_objs/surface/_colorbar.py index d8c4f964dc4..3f66f4e3131 100644 --- a/plotly/graph_objs/surface/_colorbar.py +++ b/plotly/graph_objs/surface/_colorbar.py @@ -747,6 +747,34 @@ def tickformatstops(self): def tickformatstops(self, val): self['tickformatstops'] = val + # tickformatstopdefaults + # ---------------------- + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.surface.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + surface.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of plotly.graph_objs.surface.colorbar.Tickformatstop + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Supported dict properties: + + Returns + ------- + plotly.graph_objs.surface.colorbar.Tickformatstop + """ + return self['tickformatstopdefaults'] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self['tickformatstopdefaults'] = val + # ticklen # ------- @property @@ -1300,6 +1328,11 @@ def _prop_descriptions(self): tickformatstops plotly.graph_objs.surface.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.surfac + e.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + surface.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1388,6 +1421,7 @@ def __init__( tickfont=None, tickformat=None, tickformatstops=None, + tickformatstopdefaults=None, ticklen=None, tickmode=None, tickprefix=None, @@ -1530,6 +1564,11 @@ def __init__( tickformatstops plotly.graph_objs.surface.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.surfac + e.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + surface.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode @@ -1652,6 +1691,8 @@ def __init__( self._validators['tickformat'] = v_colorbar.TickformatValidator() self._validators['tickformatstops' ] = v_colorbar.TickformatstopsValidator() + self._validators['tickformatstopdefaults' + ] = v_colorbar.TickformatstopValidator() self._validators['ticklen'] = v_colorbar.TicklenValidator() self._validators['tickmode'] = v_colorbar.TickmodeValidator() self._validators['tickprefix'] = v_colorbar.TickprefixValidator() @@ -1727,6 +1768,10 @@ def __init__( _v = arg.pop('tickformatstops', None) self['tickformatstops' ] = tickformatstops if tickformatstops is not None else _v + _v = arg.pop('tickformatstopdefaults', None) + self[ + 'tickformatstopdefaults' + ] = tickformatstopdefaults if tickformatstopdefaults is not None else _v _v = arg.pop('ticklen', None) self['ticklen'] = ticklen if ticklen is not None else _v _v = arg.pop('tickmode', None) diff --git a/plotly/io/__init__.py b/plotly/io/__init__.py index b02a7e8e4d5..a7d9dacd5f4 100644 --- a/plotly/io/__init__.py +++ b/plotly/io/__init__.py @@ -2,3 +2,5 @@ from . import orca from ._json import to_json, from_json, read_json, write_json + +from ._templates import templates, to_templated diff --git a/plotly/io/_json.py b/plotly/io/_json.py index f65ecf0d07a..8561fdc8bed 100644 --- a/plotly/io/_json.py +++ b/plotly/io/_json.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import + from six import string_types import json @@ -42,7 +44,7 @@ def to_json(fig, # ---------------- if remove_uids: for trace in fig_dict.get('data', []): - trace.pop('uid') + trace.pop('uid', None) # Dump to a JSON string and return # -------------------------------- diff --git a/plotly/io/_orca.py b/plotly/io/_orca.py index 045e2407d6a..e79659a45da 100644 --- a/plotly/io/_orca.py +++ b/plotly/io/_orca.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import + import atexit import json import os diff --git a/plotly/io/_templates.py b/plotly/io/_templates.py new file mode 100644 index 00000000000..e6c25ce49e1 --- /dev/null +++ b/plotly/io/_templates.py @@ -0,0 +1,449 @@ +from __future__ import absolute_import + +from plotly.basedatatypes import BaseFigure +from plotly.graph_objs import Figure +from plotly.validators.layout import TemplateValidator +from plotly.graph_objs.layout import Template +from _plotly_utils.basevalidators import ( + CompoundValidator, CompoundArrayValidator, is_array) + +import textwrap +import pkgutil + +import copy +import os +import json +from functools import reduce + +try: + from math import gcd +except ImportError: + # Python 2 + from fractions import gcd + +# Create Lazy sentinal object to indicate that a template should be loaded +# on-demand from package_data +Lazy = object() + + +# Templates configuration class +# ----------------------------- +class TemplatesConfig(object): + """ + Singleton object containing the current figure templates (aka themes) + """ + def __init__(self): + + # Initialize properties dict + self._templates = {} + + # Initialize built-in templates + default_templates = ['ggplot2', 'seaborn', + 'plotly', 'plotly_white', + 'plotly_dark', 'presentation', 'xgridoff'] + + for template_name in default_templates: + self._templates[template_name] = Lazy + + self._validator = TemplateValidator() + self._default = None + + # ### Magic methods ### + # Make this act as a dict of templates + def __len__(self): + return len(self._templates) + + def __contains__(self, item): + return item in self._templates + + def __iter__(self): + return iter(self._templates) + + def __getitem__(self, item): + template = self._templates[item] + if template is Lazy: + # Load template from package data + path = os.path.join('package_data', 'templates', item + '.json') + template_str = pkgutil.get_data('plotly', path).decode('utf-8') + template_dict = json.loads(template_str) + template = Template(template_dict) + self._templates[item] = template + + return template + + def __setitem__(self, key, value): + self._templates[key] = self._validator.validate_coerce(value) + + def __delitem__(self, key): + # Remove template + del self._templates[key] + + # Check if we need to remove it as the default + if self._default == key: + self._default = None + + def keys(self): + return self._templates.keys() + + def items(self): + return self._templates.items() + + def update(self, d={}, **kwargs): + """ + Update one or more templates from a dict or from input keyword + arguments. + + Parameters + ---------- + d: dict + Dictionary from template names to new template values. + + kwargs + Named argument value pairs where the name is a template name + and the value is a new template value. + """ + for k, v in dict(d, **kwargs).items(): + self[k] = v + + # ### Properties ### + @property + def default(self): + """ + The name of the default template, or None if no there is no default + + If not None, the default template is automatically applied to all + figures during figure construction if no explicit template is + specified. + + The names of available templates may be retrieved with: + + >>> import plotly.io as pio + >>> list(pio.templates) + + Returns + ------- + str + """ + return self._default + + @default.setter + def default(self, value): + + # Validate value + # Could be a Template object, the key of a registered template, + # Or a string containing the names of multiple templates joined on + # '+' characters + self._validator.validate_coerce(value) + self._default = value + + def __repr__(self): + return """\ +Templates configuration +----------------------- + Default template: {default} + Available templates: +{available} +""".format(default=repr(self.default), + available=self._available_templates_str()) + + def _available_templates_str(self): + """ + Return nicely wrapped string representation of all + available template names + """ + available = '\n'.join(textwrap.wrap( + repr(list(self)), + width=79 - 8, + initial_indent=' ' * 8, + subsequent_indent=' ' * 9 + )) + return available + + def merge_templates(self, *args): + """ + Merge a collection of templates into a single combined template. + Templates are process from left to right so if multiple templates + specify the same propery, the right-most template will take + precedence. + + Parameters + ---------- + args: list of Template + Zero or more template objects (or dicts with compatible properties) + + Returns + ------- + template: + A combined template object + + Examples + -------- + >>> pio.templates.merge_templates( + ... go.layout.Template(layout={'font': {'size': 20}}), + ... go.layout.Template(data={'scatter': [{'mode': 'markers'}]}), + ... go.layout.Template(layout={'font': {'family': 'Courier'}})) + layout.Template({ + 'data': {'scatter': [{'mode': 'markers', 'type': 'scatter'}]}, + 'layout': {'font': {'family': 'Courier', 'size': 20}} + }) + """ + if args: + return reduce(self._merge_2_templates, args) + else: + return Template() + + def _merge_2_templates(self, template1, template2): + """ + Helper function for merge_templates that merges exactly two templates + + Parameters + ---------- + template1: Template + template2: Template + + Returns + ------- + Template: + merged template + """ + # Validate/copy input templates + result = self._validator.validate_coerce(template1) + other = self._validator.validate_coerce(template2) + + # Cycle traces + for trace_type in result.data: + result_traces = result.data[trace_type] + other_traces = other.data[trace_type] + + if result_traces and other_traces: + lcm = (len(result_traces) * len(other_traces) // + gcd(len(result_traces), len(other_traces))) + + # Cycle result traces + result.data[trace_type] = result_traces * ( + lcm // len(result_traces)) + + # Cycle other traces + other.data[trace_type] = other_traces * ( + lcm // len(other_traces)) + + # Perform update + result.update(other) + + return result + + +# Make config a singleton object +# ------------------------------ +templates = TemplatesConfig() +del TemplatesConfig + + +# Template utilities +# ------------------ +def walk_push_to_template(fig_obj, template_obj, skip): + """ + Move style properties from fig_obj to template_obj. + + Parameters + ---------- + fig_obj: plotly.basedatatypes.BasePlotlyType + template_obj: plotly.basedatatypes.BasePlotlyType + skip: set of str + Set of names of properties to skip + """ + for prop in list(fig_obj._props): + if prop == 'template' or prop in skip: + # Avoid infinite recursion + continue + + fig_val = fig_obj[prop] + template_val = template_obj[prop] + + validator = fig_obj._validators[prop] + + if isinstance(validator, CompoundValidator): + walk_push_to_template(fig_val, template_val, skip) + if not fig_val._props: + # Check if we can remove prop itself + fig_obj[prop] = None + elif isinstance(validator, CompoundArrayValidator) and fig_val: + template_elements = list(template_val) + template_element_names = [el.name for el in template_elements] + template_propdefaults = template_obj[prop[:-1] + 'defaults'] + + for fig_el in fig_val: + element_name = fig_el.name + if element_name: + # No properties are skipped inside a named array element + skip = set() + if fig_el.name in template_element_names: + item_index = template_element_names.index(fig_el.name) + template_el = template_elements[item_index] + walk_push_to_template(fig_el, template_el, skip) + else: + template_el = fig_el.__class__() + walk_push_to_template(fig_el, template_el, skip) + template_elements.append(template_el) + template_element_names.append(fig_el.name) + + # Restore element name + # since it was pushed to template above + fig_el.name = element_name + else: + walk_push_to_template(fig_el, template_propdefaults, skip) + + template_obj[prop] = template_elements + + elif not validator.array_ok or not is_array(fig_val): + # Move property value from figure to template + template_obj[prop] = fig_val + try: + fig_obj[prop] = None + except ValueError: + # Property cannot be set to None, move on. + pass + + +def to_templated(fig, skip=('title', 'text')): + """ + Return a copy of a figure where all styling properties have been moved + into the figure's template. The template property of the resulting figure + may then be used to set the default styling of other figures. + + Parameters + ---------- + fig + Figure object or dict representing a figure + skip + A collection of names of properties to skip when moving properties to + the template. Defaults to ('title', 'text') so that the text + of figure titles, axis titles, and annotations does not become part of + the template + + Examples + -------- + Imports + >>> import plotly.graph_objs as go + >>> import plotly.io as pio + + Construct a figure with large courier text + >>> fig = go.Figure(layout={'title': 'Figure Title', + ... 'font': {'size': 20, 'family': 'Courier'}}) + >>> fig + Figure({ + 'data': [], + 'layout': {'title': 'Figure Title', + 'font': {'family': 'Courier', 'size': 20}} + }) + + Convert to a figure with a template. Note how the 'font' properties have + been moved into the template property. + >>> templated_fig = pio.to_templated(fig) + >>> templated_fig + Figure({ + 'data': [], + 'layout': {'title': 'Figure Title', + 'template': {'layout': {'font': {'family': 'Courier', + 'size': 20}}}} + }) + + Next create a new figure with this template + + >>> fig2 = go.Figure(layout={ + ... 'title': 'Figure 2 Title', + ... 'template': templated_fig.layout.template}) + >>> fig2 + Figure({ + 'data': [], + 'layout': {'title': 'Figure 2 Title', + 'template': {'layout': {'font': {'family': 'Courier', + 'size': 20}}}} + }) + + The default font in fig2 will now be size 20 Courier. + + Next, register as a named template... + >>> pio.templates['large_courier'] = templated_fig.layout.template + + and specify this template by name when constructing a figure. + + >>> go.Figure(layout={ + ... 'title': 'Figure 3 Title', + ... 'template': 'large_courier'}) + Figure({ + 'data': [], + 'layout': {'title': 'Figure 3 Title', + 'template': {'layout': {'font': {'family': 'Courier', + 'size': 20}}}} + }) + + Finally, set this as the default template to be applied to all new figures + + >>> pio.templates.default = 'large_courier' + >>> go.Figure(layout={'title': 'Figure 4 Title'}) + Figure({ + 'data': [], + 'layout': {'title': 'Figure 4 Title', + 'template': {'layout': {'font': {'family': 'Courier', + 'size': 20}}}} + }) + + Returns + ------- + figure + """ + + # process fig + if not isinstance(fig, BaseFigure): + fig = Figure(fig) + + # Process skip + if not skip: + skip = set() + else: + skip = set(skip) + + # Always skip uids + skip.add('uid') + + # Initialize templated figure with deep copy of input figure + templated_fig = copy.deepcopy(fig) + + # Handle layout + walk_push_to_template(templated_fig.layout, + templated_fig.layout.template.layout, + skip=skip) + + # Handle traces + trace_type_indexes = {} + for trace in list(templated_fig.data): + template_index = trace_type_indexes.get(trace.type, 0) + + # Extend template traces if necessary + template_traces = list(templated_fig.layout.template.data[trace.type]) + while len(template_traces) <= template_index: + # Append empty trace + template_traces.append(trace.__class__()) + + # Get corresponding template trace + template_trace = template_traces[template_index] + + # Perform push properties to template + walk_push_to_template(trace, template_trace, skip=skip) + + # Update template traces in templated_fig + templated_fig.layout.template.data[trace.type] = template_traces + + # Update trace_type_indexes + trace_type_indexes[trace.type] = template_index + 1 + + # Remove useless trace arrays + for trace_type in templated_fig.layout.template.data: + traces = templated_fig.layout.template.data[trace_type] + is_empty = [trace.to_plotly_json() == {'type': trace_type} + for trace in traces] + if all(is_empty): + templated_fig.layout.template.data[trace_type] = None + + return templated_fig diff --git a/plotly/io/_utils.py b/plotly/io/_utils.py index 8ce4989b8bd..bdf35b04094 100644 --- a/plotly/io/_utils.py +++ b/plotly/io/_utils.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import + import plotly from plotly.basedatatypes import BaseFigure import plotly.graph_objs as go diff --git a/plotly/package_data/plot-schema.json b/plotly/package_data/plot-schema.json index 5f757066aa0..7206996c7cf 100644 --- a/plotly/package_data/plot-schema.json +++ b/plotly/package_data/plot-schema.json @@ -20407,4 +20407,28829 @@ "impliedEdits": { "tickmode": "linear" }, - "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 \ No newline at end of file + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "calc", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "calc", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "calc" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "line": { + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the lines bounding the marker points." + }, + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object", + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "gradient": { + "type": { + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ], + "arrayOk": true, + "dflt": "none", + "role": "style", + "editType": "calc", + "description": "Sets the type of gradient used to fill the markers" + }, + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "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", + "role": "object", + "typesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for type .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object", + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "fill": { + "valType": "enumerated", + "values": [ + "none", + "toself" + ], + "dflt": "none", + "role": "style", + "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.", + "editType": "calc" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of selected points." + }, + "editType": "calc", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the text font color of selected points." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "calc", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the text font color of unselected points, applied only when a selection exists." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "geo": { + "valType": "subplotid", + "role": "info", + "dflt": "geo", + "editType": "calc", + "description": "Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "lonsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for lon .", + "editType": "none" + }, + "latsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for lat .", + "editType": "none" + }, + "locationssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for locations .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + }, + "hovertextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hovertext .", + "editType": "none" + }, + "textpositionsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for textposition .", + "editType": "none" + } + } + }, + "choropleth": { + "meta": { + "description": "The data that describes the choropleth value-to-color mapping is set in `z`. The geographic locations corresponding to each value in `z` are set in `locations`." + }, + "attributes": { + "type": "choropleth", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "location", + "z", + "text", + "name", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "calc", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "locations": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the coordinates via location IDs or names. See `locationmode` for more info.", + "role": "data" + }, + "locationmode": { + "valType": "enumerated", + "values": [ + "ISO-3", + "USA-states", + "country names" + ], + "role": "info", + "dflt": "ISO-3", + "description": "Determines the set of locations used to match entries in `locations` to regions on the map.", + "editType": "calc" + }, + "z": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the color values.", + "role": "data" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "description": "Sets the text elements associated with each location." + }, + "marker": { + "line": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarker.linecolor. 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." + }, + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the lines bounding the marker points.", + "dflt": 1 + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + } + }, + "opacity": { + "valType": "number", + "arrayOk": true, + "min": 0, + "max": 1, + "dflt": 1, + "role": "style", + "editType": "style", + "description": "Sets the opacity of the locations." + }, + "editType": "calc", + "role": "object", + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + } + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of selected points." + }, + "editType": "plot", + "role": "object" + }, + "editType": "plot", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "editType": "plot", + "role": "object" + }, + "editType": "plot", + "role": "object" + }, + "zauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user." + }, + "zmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "zauto": false + }, + "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well." + }, + "zmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "zauto": false + }, + "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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`zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not a colorbar is displayed for this trace." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "colorbars" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "colorbars" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "colorbars" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "colorbars" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "colorbars" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "colorbars" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "colorbars" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "colorbars" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "colorbars" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "colorbars" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "colorbars", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "colorbars", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "colorbars", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "colorbars", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "colorbars", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "colorbars", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "colorbars" + }, + { + "valType": "any", + "editType": "colorbars" + } + ], + "editType": "colorbars", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "colorbars", + "name": { + "valType": "string", + "role": "style", + "editType": "colorbars", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "colorbars", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "colorbars", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "colorbars", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "colorbars" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "colorbars" + }, + "editType": "colorbars", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "geo": { + "valType": "subplotid", + "role": "info", + "dflt": "geo", + "editType": "calc", + "description": "Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "locationssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for locations .", + "editType": "none" + }, + "zsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for z .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + } + }, + "scattergl": { + "meta": { + "hrName": "scatter_gl", + "description": "The data visualized as scatter point or lines is set in `x` and `y` using the WebGL plotting engine. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to a numerical arrays." + }, + "attributes": { + "type": "scattergl", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "calc", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "x": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the x coordinates.", + "role": "data" + }, + "x0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step." + }, + "dx": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the x coordinate step. See `x0` for more info." + }, + "y": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the y coordinates.", + "role": "data" + }, + "y0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step." + }, + "dy": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the y coordinate step. See `y0` for more info." + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "description": "Sets text elements associated with each (x,y) pair to appear on hover. 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." + }, + "hovertext": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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." + }, + "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", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates." + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "arrayOk": true + }, + "editType": "calc", + "description": "Sets the text font.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "mode": { + "valType": "flaglist", + "flags": [ + "lines", + "markers", + "text" + ], + "extras": [ + "none" + ], + "role": "info", + "description": "Determines the drawing mode for this scatter trace.", + "editType": "calc" + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "calc", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "enumerated", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "description": "Sets the style of the lines.", + "editType": "calc" + }, + "editType": "calc", + "role": "object" + }, + "marker": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "symbol": { + "valType": "enumerated", + "values": [ + 0, + "circle", + 100, + "circle-open", + 200, + "circle-dot", + 300, + "circle-open-dot", + 1, + "square", + 101, + "square-open", + 201, + "square-dot", + 301, + "square-open-dot", + 2, + "diamond", + 102, + "diamond-open", + 202, + "diamond-dot", + 302, + "diamond-open-dot", + 3, + "cross", + 103, + "cross-open", + 203, + "cross-dot", + 303, + "cross-open-dot", + 4, + "x", + 104, + "x-open", + 204, + "x-dot", + 304, + "x-open-dot", + 5, + "triangle-up", + 105, + "triangle-up-open", + 205, + "triangle-up-dot", + 305, + "triangle-up-open-dot", + 6, + "triangle-down", + 106, + "triangle-down-open", + 206, + "triangle-down-dot", + 306, + "triangle-down-open-dot", + 7, + "triangle-left", + 107, + "triangle-left-open", + 207, + "triangle-left-dot", + 307, + "triangle-left-open-dot", + 8, + "triangle-right", + 108, + "triangle-right-open", + 208, + "triangle-right-dot", + 308, + "triangle-right-open-dot", + 9, + "triangle-ne", + 109, + "triangle-ne-open", + 209, + "triangle-ne-dot", + 309, + "triangle-ne-open-dot", + 10, + "triangle-se", + 110, + "triangle-se-open", + 210, + "triangle-se-dot", + 310, + "triangle-se-open-dot", + 11, + "triangle-sw", + 111, + "triangle-sw-open", + 211, + "triangle-sw-dot", + 311, + "triangle-sw-open-dot", + 12, + "triangle-nw", + 112, + "triangle-nw-open", + 212, + "triangle-nw-dot", + 312, + "triangle-nw-open-dot", + 13, + "pentagon", + 113, + "pentagon-open", + 213, + "pentagon-dot", + 313, + "pentagon-open-dot", + 14, + "hexagon", + 114, + "hexagon-open", + 214, + "hexagon-dot", + 314, + "hexagon-open-dot", + 15, + "hexagon2", + 115, + "hexagon2-open", + 215, + "hexagon2-dot", + 315, + "hexagon2-open-dot", + 16, + "octagon", + 116, + "octagon-open", + 216, + "octagon-dot", + 316, + "octagon-open-dot", + 17, + "star", + 117, + "star-open", + 217, + "star-dot", + 317, + "star-open-dot", + 18, + "hexagram", + 118, + "hexagram-open", + 218, + "hexagram-dot", + 318, + "hexagram-open-dot", + 19, + "star-triangle-up", + 119, + "star-triangle-up-open", + 219, + "star-triangle-up-dot", + 319, + "star-triangle-up-open-dot", + 20, + "star-triangle-down", + 120, + "star-triangle-down-open", + 220, + "star-triangle-down-dot", + 320, + "star-triangle-down-open-dot", + 21, + "star-square", + 121, + "star-square-open", + 221, + "star-square-dot", + 321, + "star-square-open-dot", + 22, + "star-diamond", + 122, + "star-diamond-open", + 222, + "star-diamond-dot", + 322, + "star-diamond-open-dot", + 23, + "diamond-tall", + 123, + "diamond-tall-open", + 223, + "diamond-tall-dot", + 323, + "diamond-tall-open-dot", + 24, + "diamond-wide", + 124, + "diamond-wide-open", + 224, + "diamond-wide-dot", + 324, + "diamond-wide-open-dot", + 25, + "hourglass", + 125, + "hourglass-open", + 26, + "bowtie", + 126, + "bowtie-open", + 27, + "circle-cross", + 127, + "circle-cross-open", + 28, + "circle-x", + 128, + "circle-x-open", + 29, + "square-cross", + 129, + "square-cross-open", + 30, + "square-x", + 130, + "square-x-open", + 31, + "diamond-cross", + 131, + "diamond-cross-open", + 32, + "diamond-x", + 132, + "diamond-x-open", + 33, + "cross-thin", + 133, + "cross-thin-open", + 34, + "x-thin", + 134, + "x-thin-open", + 35, + "asterisk", + 135, + "asterisk-open", + 36, + "hash", + 136, + "hash-open", + 236, + "hash-dot", + 336, + "hash-open-dot", + 37, + "y-up", + 137, + "y-up-open", + 38, + "y-down", + 138, + "y-down-open", + 39, + "y-left", + 139, + "y-left-open", + 40, + "y-right", + 140, + "y-right-open", + 41, + "line-ew", + 141, + "line-ew-open", + 42, + "line-ns", + 142, + "line-ns-open", + 43, + "line-ne", + 143, + "line-ne-open", + 44, + "line-nw", + 144, + "line-nw-open" + ], + "dflt": "circle", + "arrayOk": true, + "role": "style", + "editType": "calc", + "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." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker size (in px)." + }, + "sizeref": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "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`." + }, + "sizemin": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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." + }, + "sizemode": { + "valType": "enumerated", + "values": [ + "diameter", + "area" + ], + "dflt": "diameter", + "role": "info", + "editType": "calc", + "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." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "calc" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "calc" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "calc" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "calc" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "calc" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "calc" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "calc" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "calc" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "calc" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "calc" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "calc" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "calc", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "calc", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "calc", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "calc" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "line": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the lines bounding the marker points." + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + } + }, + "connectgaps": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected." + }, + "fill": { + "valType": "enumerated", + "values": [ + "none", + "tozeroy", + "tozerox", + "tonexty", + "tonextx", + "toself", + "tonext" + ], + "role": "style", + "editType": "calc", + "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" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of selected points." + }, + "editType": "calc", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the text font color of selected points." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "calc", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the text font color of unselected points, applied only when a selection exists." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "error_x": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "calc", + "description": "Determines whether or not this set of error bars is visible." + }, + "type": { + "valType": "enumerated", + "values": [ + "percent", + "constant", + "sqrt", + "data" + ], + "role": "info", + "editType": "calc", + "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the sqaure of the underlying data. If *array*, the bar lengths are set with data set `array`." + }, + "symmetric": { + "valType": "boolean", + "role": "info", + "editType": "calc", + "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars." + }, + "array": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.", + "role": "data" + }, + "arrayminus": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.", + "role": "data" + }, + "value": { + "valType": "number", + "min": 0, + "dflt": 10, + "role": "info", + "editType": "calc", + "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars." + }, + "valueminus": { + "valType": "number", + "min": 0, + "dflt": 10, + "role": "info", + "editType": "calc", + "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars" + }, + "traceref": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc" + }, + "tracerefminus": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc" + }, + "copy_ystyle": { + "valType": "boolean", + "role": "style", + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the stoke color of the error bars." + }, + "thickness": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "calc", + "description": "Sets the thickness (in px) of the error bars." + }, + "width": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the cross-bar at both ends of the error bars." + }, + "editType": "calc", + "_deprecated": { + "opacity": { + "valType": "number", + "role": "style", + "editType": "calc", + "description": "Obsolete. Use the alpha channel in error bar `color` to set the opacity." + } + }, + "role": "object", + "arraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for array .", + "editType": "none" + }, + "arrayminussrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for arrayminus .", + "editType": "none" + } + }, + "error_y": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "calc", + "description": "Determines whether or not this set of error bars is visible." + }, + "type": { + "valType": "enumerated", + "values": [ + "percent", + "constant", + "sqrt", + "data" + ], + "role": "info", + "editType": "calc", + "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the sqaure of the underlying data. If *array*, the bar lengths are set with data set `array`." + }, + "symmetric": { + "valType": "boolean", + "role": "info", + "editType": "calc", + "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars." + }, + "array": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.", + "role": "data" + }, + "arrayminus": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.", + "role": "data" + }, + "value": { + "valType": "number", + "min": 0, + "dflt": 10, + "role": "info", + "editType": "calc", + "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars." + }, + "valueminus": { + "valType": "number", + "min": 0, + "dflt": 10, + "role": "info", + "editType": "calc", + "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars" + }, + "traceref": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc" + }, + "tracerefminus": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the stoke color of the error bars." + }, + "thickness": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "calc", + "description": "Sets the thickness (in px) of the error bars." + }, + "width": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the cross-bar at both ends of the error bars." + }, + "editType": "calc", + "_deprecated": { + "opacity": { + "valType": "number", + "role": "style", + "editType": "calc", + "description": "Obsolete. Use the alpha channel in error bar `color` to set the opacity." + } + }, + "role": "object", + "arraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for array .", + "editType": "none" + }, + "arrayminussrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for arrayminus .", + "editType": "none" + } + }, + "xcalendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use with `x` date data." + }, + "ycalendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use with `y` date data." + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "xsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for x .", + "editType": "none" + }, + "ysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for y .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + }, + "hovertextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hovertext .", + "editType": "none" + }, + "textpositionsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for textposition .", + "editType": "none" + } + } + }, + "splom": { + "meta": { + "description": "Splom traces generate scatter plot matrix visualizations. Each splom `dimensions` items correspond to a generated axis. Values for each of those dimensions are set in `dimensions[i].values`. Splom traces support all `scattergl` marker style attributes. Specify `layout.grid` attributes and/or layout x-axis and y-axis attributes for more control over the axis positioning and style. " + }, + "attributes": { + "type": "splom", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "calc", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "dimensions": { + "items": { + "dimension": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace." + }, + "label": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Sets the label corresponding to this splom dimension." + }, + "values": { + "valType": "data_array", + "role": "data", + "editType": "calc+clearAxisTypes", + "description": "Sets the dimension values to be plotted." + }, + "axis": { + "type": { + "valType": "enumerated", + "values": [ + "linear", + "log", + "date", + "category" + ], + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Sets the axis type for this dimension's generated x and y axes. Note that the axis `type` values set in layout take precedence over this attribute." + }, + "editType": "calc+clearAxisTypes", + "role": "object" + }, + "editType": "calc+clearAxisTypes", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object", + "valuessrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for values .", + "editType": "none" + } + } + }, + "role": "object" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "description": "Sets text elements associated with each (x,y) pair to appear on hover. 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." + }, + "marker": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "symbol": { + "valType": "enumerated", + "values": [ + 0, + "circle", + 100, + "circle-open", + 200, + "circle-dot", + 300, + "circle-open-dot", + 1, + "square", + 101, + "square-open", + 201, + "square-dot", + 301, + "square-open-dot", + 2, + "diamond", + 102, + "diamond-open", + 202, + "diamond-dot", + 302, + "diamond-open-dot", + 3, + "cross", + 103, + "cross-open", + 203, + "cross-dot", + 303, + "cross-open-dot", + 4, + "x", + 104, + "x-open", + 204, + "x-dot", + 304, + "x-open-dot", + 5, + "triangle-up", + 105, + "triangle-up-open", + 205, + "triangle-up-dot", + 305, + "triangle-up-open-dot", + 6, + "triangle-down", + 106, + "triangle-down-open", + 206, + "triangle-down-dot", + 306, + "triangle-down-open-dot", + 7, + "triangle-left", + 107, + "triangle-left-open", + 207, + "triangle-left-dot", + 307, + "triangle-left-open-dot", + 8, + "triangle-right", + 108, + "triangle-right-open", + 208, + "triangle-right-dot", + 308, + "triangle-right-open-dot", + 9, + "triangle-ne", + 109, + "triangle-ne-open", + 209, + "triangle-ne-dot", + 309, + "triangle-ne-open-dot", + 10, + "triangle-se", + 110, + "triangle-se-open", + 210, + "triangle-se-dot", + 310, + "triangle-se-open-dot", + 11, + "triangle-sw", + 111, + "triangle-sw-open", + 211, + "triangle-sw-dot", + 311, + "triangle-sw-open-dot", + 12, + "triangle-nw", + 112, + "triangle-nw-open", + 212, + "triangle-nw-dot", + 312, + "triangle-nw-open-dot", + 13, + "pentagon", + 113, + "pentagon-open", + 213, + "pentagon-dot", + 313, + "pentagon-open-dot", + 14, + "hexagon", + 114, + "hexagon-open", + 214, + "hexagon-dot", + 314, + "hexagon-open-dot", + 15, + "hexagon2", + 115, + "hexagon2-open", + 215, + "hexagon2-dot", + 315, + "hexagon2-open-dot", + 16, + "octagon", + 116, + "octagon-open", + 216, + "octagon-dot", + 316, + "octagon-open-dot", + 17, + "star", + 117, + "star-open", + 217, + "star-dot", + 317, + "star-open-dot", + 18, + "hexagram", + 118, + "hexagram-open", + 218, + "hexagram-dot", + 318, + "hexagram-open-dot", + 19, + "star-triangle-up", + 119, + "star-triangle-up-open", + 219, + "star-triangle-up-dot", + 319, + "star-triangle-up-open-dot", + 20, + "star-triangle-down", + 120, + "star-triangle-down-open", + 220, + "star-triangle-down-dot", + 320, + "star-triangle-down-open-dot", + 21, + "star-square", + 121, + "star-square-open", + 221, + "star-square-dot", + 321, + "star-square-open-dot", + 22, + "star-diamond", + 122, + "star-diamond-open", + 222, + "star-diamond-dot", + 322, + "star-diamond-open-dot", + 23, + "diamond-tall", + 123, + "diamond-tall-open", + 223, + "diamond-tall-dot", + 323, + "diamond-tall-open-dot", + 24, + "diamond-wide", + 124, + "diamond-wide-open", + 224, + "diamond-wide-dot", + 324, + "diamond-wide-open-dot", + 25, + "hourglass", + 125, + "hourglass-open", + 26, + "bowtie", + 126, + "bowtie-open", + 27, + "circle-cross", + 127, + "circle-cross-open", + 28, + "circle-x", + 128, + "circle-x-open", + 29, + "square-cross", + 129, + "square-cross-open", + 30, + "square-x", + 130, + "square-x-open", + 31, + "diamond-cross", + 131, + "diamond-cross-open", + 32, + "diamond-x", + 132, + "diamond-x-open", + 33, + "cross-thin", + 133, + "cross-thin-open", + 34, + "x-thin", + 134, + "x-thin-open", + 35, + "asterisk", + 135, + "asterisk-open", + 36, + "hash", + 136, + "hash-open", + 236, + "hash-dot", + 336, + "hash-open-dot", + 37, + "y-up", + 137, + "y-up-open", + 38, + "y-down", + 138, + "y-down-open", + 39, + "y-left", + 139, + "y-left-open", + 40, + "y-right", + 140, + "y-right-open", + 41, + "line-ew", + 141, + "line-ew-open", + 42, + "line-ns", + 142, + "line-ns-open", + 43, + "line-ne", + 143, + "line-ne-open", + 44, + "line-nw", + 144, + "line-nw-open" + ], + "dflt": "circle", + "arrayOk": true, + "role": "style", + "editType": "calc", + "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." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker size (in px)." + }, + "sizeref": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "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`." + }, + "sizemin": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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." + }, + "sizemode": { + "valType": "enumerated", + "values": [ + "diameter", + "area" + ], + "dflt": "diameter", + "role": "info", + "editType": "calc", + "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." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "calc" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "calc" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "calc" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "calc" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "calc" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "calc" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "calc" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "calc" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "calc" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "calc" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "calc" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "calc", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "calc", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "calc", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "calc" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "line": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the lines bounding the marker points." + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + } + }, + "xaxes": { + "valType": "info_array", + "freeLength": true, + "role": "info", + "editType": "calc", + "items": { + "valType": "subplotid", + "regex": "/^x([2-9]|[1-9][0-9]+)?$/", + "editType": "plot" + }, + "description": "Sets the list of x axes corresponding to this splom trace. By default, a splom will match the first N xaxes where N is the number of input dimensions." + }, + "yaxes": { + "valType": "info_array", + "freeLength": true, + "role": "info", + "editType": "calc", + "items": { + "valType": "subplotid", + "regex": "/^y([2-9]|[1-9][0-9]+)?$/", + "editType": "plot" + }, + "description": "Sets the list of y axes corresponding to this splom trace. By default, a splom will match the first N yaxes where N is the number of input dimensions." + }, + "diagonal": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not subplots on the diagonal are displayed." + }, + "editType": "calc", + "role": "object" + }, + "showupperhalf": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not subplots on the upper half from the diagonal are displayed." + }, + "showlowerhalf": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not subplots on the lower half from the diagonal are displayed." + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of selected points." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + } + }, + "pointcloud": { + "meta": { + "description": "The data visualized as a point cloud set in `x` and `y` using the WebGl plotting engine." + }, + "attributes": { + "type": "pointcloud", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "x": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the x coordinates.", + "role": "data" + }, + "y": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the y coordinates.", + "role": "data" + }, + "xy": { + "valType": "data_array", + "editType": "calc", + "description": "Faster alternative to specifying `x` and `y` separately. If supplied, it must be a typed `Float32Array` array that represents points such that `xy[i * 2] = x[i]` and `xy[i * 2 + 1] = y[i]`", + "role": "data" + }, + "indices": { + "valType": "data_array", + "editType": "calc", + "description": "A sequential value, 0..n, supply it to avoid creating this array inside plotting. If specified, it must be a typed `Int32Array` array. Its length must be equal to or greater than the number of points. For the best performance and memory use, create one large `indices` typed array that is guaranteed to be at least as long as the largest number of points during use, and reuse it on each `Plotly.restyle()` call.", + "role": "data" + }, + "xbounds": { + "valType": "data_array", + "editType": "calc", + "description": "Specify `xbounds` in the shape of `[xMin, xMax] to avoid looping through the `xy` typed array. Use it in conjunction with `xy` and `ybounds` for the performance benefits.", + "role": "data" + }, + "ybounds": { + "valType": "data_array", + "editType": "calc", + "description": "Specify `ybounds` in the shape of `[yMin, yMax] to avoid looping through the `xy` typed array. Use it in conjunction with `xy` and `xbounds` for the performance benefits.", + "role": "data" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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." + }, + "marker": { + "color": { + "valType": "color", + "arrayOk": false, + "role": "style", + "editType": "calc", + "description": "Sets the marker fill color. It accepts a specific color.If the color is not fully opaque and there are hundreds of thousandsof points, it may cause slower zooming and panning." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 1, + "arrayOk": false, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity. The default value is `1` (fully opaque). If the markers are not fully opaque and there are hundreds of thousands of points, it may cause slower zooming and panning. Opacity fades the color even if `blend` is left on `false` even if there is no translucency effect in that case." + }, + "blend": { + "valType": "boolean", + "dflt": null, + "role": "style", + "editType": "calc", + "description": "Determines if colors are blended together for a translucency effect in case `opacity` is specified as a value less then `1`. Setting `blend` to `true` reduces zoom/pan speed if used with large numbers of points." + }, + "sizemin": { + "valType": "number", + "min": 0.1, + "max": 2, + "dflt": 0.5, + "role": "style", + "editType": "calc", + "description": "Sets the minimum size (in px) of the rendered marker points, effective when the `pointcloud` shows a million or more points." + }, + "sizemax": { + "valType": "number", + "min": 0.1, + "dflt": 20, + "role": "style", + "editType": "calc", + "description": "Sets the maximum size (in px) of the rendered marker points. Effective when the `pointcloud` shows only few points." + }, + "border": { + "color": { + "valType": "color", + "arrayOk": false, + "role": "style", + "editType": "calc", + "description": "Sets the stroke color. It accepts a specific color. If the color is not fully opaque and there are hundreds of thousands of points, it may cause slower zooming and panning." + }, + "arearatio": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Specifies what fraction of the marker area is covered with the border." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "xsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for x .", + "editType": "none" + }, + "ysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for y .", + "editType": "none" + }, + "xysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for xy .", + "editType": "none" + }, + "indicessrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for indices .", + "editType": "none" + }, + "xboundssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for xbounds .", + "editType": "none" + }, + "yboundssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ybounds .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + } + }, + "heatmapgl": { + "meta": { + "description": "WebGL version of the heatmap trace type." + }, + "attributes": { + "type": "heatmapgl", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "z": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the z data.", + "role": "data" + }, + "x": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the x coordinates.", + "impliedEdits": { + "xtype": "array" + }, + "role": "data" + }, + "x0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.", + "impliedEdits": { + "xtype": "scaled" + } + }, + "dx": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the x coordinate step. See `x0` for more info.", + "impliedEdits": { + "xtype": "scaled" + } + }, + "y": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the y coordinates.", + "impliedEdits": { + "ytype": "array" + }, + "role": "data" + }, + "y0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.", + "impliedEdits": { + "ytype": "scaled" + } + }, + "dy": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the y coordinate step. See `y0` for more info.", + "impliedEdits": { + "ytype": "scaled" + } + }, + "text": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text elements associated with each z value.", + "role": "data" + }, + "transpose": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Transposes the z data." + }, + "xtype": { + "valType": "enumerated", + "values": [ + "array", + "scaled" + ], + "role": "info", + "editType": "calc", + "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided)." + }, + "ytype": { + "valType": "enumerated", + "values": [ + "array", + "scaled" + ], + "role": "info", + "editType": "calc", + "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)" + }, + "zauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user." + }, + "zmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "zauto": false + }, + "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well." + }, + "zmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "zauto": false + }, + "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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`zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not a colorbar is displayed for this trace." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "calc" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "calc" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "calc" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "calc" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "calc" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "calc" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "calc" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "calc" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "calc" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "calc" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "calc" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "calc", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "calc", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "calc", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "calc" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "zsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for z .", + "editType": "none" + }, + "xsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for x .", + "editType": "none" + }, + "ysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for y .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + } + }, + "parcoords": { + "meta": { + "description": "Parallel coordinates for multidimensional exploratory data analysis. The samples are specified in `dimensions`. The colors are set in `line.color`." + }, + "attributes": { + "type": "parcoords", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "editType": "calc", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this parcoords trace (in plot fraction)." + }, + "y": { + "valType": "info_array", + "role": "info", + "editType": "calc", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this parcoords trace (in plot fraction)." + }, + "editType": "calc", + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace ." + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace ." + }, + "role": "object" + }, + "labelfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the font for the `dimension` labels.", + "role": "object" + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the font for the `dimension` tick values.", + "role": "object" + }, + "rangefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the font for the `dimension` range values.", + "role": "object" + }, + "dimensions": { + "items": { + "dimension": { + "label": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "The shown name of the dimension." + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "tickformat": { + "valType": "string", + "dflt": "3s", + "role": "style", + "editType": "calc", + "description": "Sets the tick label formatting rule using d3 formatting mini-language which is similar to those of Python. See https://github.com/d3/d3-format/blob/master/README.md#locale_format" + }, + "visible": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "editType": "calc" + }, + { + "valType": "number", + "editType": "calc" + } + ], + "editType": "calc", + "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." + }, + "constraintrange": { + "valType": "info_array", + "role": "info", + "freeLength": true, + "dimensions": "1-2", + "items": [ + { + "valType": "number", + "editType": "calc" + }, + { + "valType": "number", + "editType": "calc" + } + ], + "editType": "calc", + "description": "The domain range to which the filter on the dimension is constrained. Must be an array of `[fromValue, toValue]` with `fromValue <= toValue`, or if `multiselect` is not disabled, you may give an array of arrays, where each inner array is `[fromValue, toValue]`." + }, + "multiselect": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Do we allow multiple selection ranges or just a single range?" + }, + "values": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "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", + "description": "The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported.", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + }, + "valuessrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for values .", + "editType": "none" + } + } + }, + "role": "object" + }, + "line": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets thelinecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "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" + ] + ], + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "colorbars" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "colorbars" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "colorbars" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "colorbars" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "colorbars" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "colorbars" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "colorbars" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "colorbars" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "colorbars" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "colorbars" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "colorbars", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "colorbars", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "colorbars", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "colorbars", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "colorbars", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "colorbars", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "colorbars" + }, + { + "valType": "any", + "editType": "colorbars" + } + ], + "editType": "colorbars", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "colorbars", + "name": { + "valType": "string", + "role": "style", + "editType": "colorbars", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "colorbars", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "colorbars", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "colorbars", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "colorbars" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "colorbars" + }, + "editType": "colorbars", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + } + } + }, + "scattermapbox": { + "meta": { + "hrName": "scatter_mapbox", + "description": "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`." + }, + "attributes": { + "type": "scattermapbox", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "lon", + "lat", + "text", + "name", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "calc", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "lon": { + "valType": "data_array", + "description": "Sets the longitude coordinates (in degrees East).", + "editType": "calc", + "role": "data" + }, + "lat": { + "valType": "data_array", + "description": "Sets the latitude coordinates (in degrees North).", + "editType": "calc", + "role": "data" + }, + "mode": { + "valType": "flaglist", + "flags": [ + "lines", + "markers", + "text" + ], + "extras": [ + "none" + ], + "role": "info", + "editType": "calc", + "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" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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." + }, + "hovertext": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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." + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "calc", + "description": "Sets the line width (in px)." + }, + "editType": "calc", + "role": "object" + }, + "connectgaps": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected." + }, + "marker": { + "symbol": { + "valType": "string", + "dflt": "circle", + "role": "style", + "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.", + "editType": "calc" + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker size (in px)." + }, + "sizeref": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "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`." + }, + "sizemin": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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." + }, + "sizemode": { + "valType": "enumerated", + "values": [ + "diameter", + "area" + ], + "dflt": "diameter", + "role": "info", + "editType": "calc", + "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." + }, + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarkercolor. 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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "calc" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "calc" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "calc" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "calc" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "calc" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "calc" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "calc" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "calc" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "calc" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "calc" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "calc" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "calc", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "calc", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "calc", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "calc" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "fill": { + "valType": "enumerated", + "values": [ + "none", + "toself" + ], + "dflt": "none", + "role": "style", + "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.", + "editType": "calc" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the icon text font. Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "role": "object" + }, + "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", + "arrayOk": false, + "role": "style", + "editType": "calc", + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates." + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of selected points." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "calc", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "calc", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "subplot": { + "valType": "subplotid", + "role": "info", + "dflt": "mapbox", + "editType": "calc", + "description": "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "lonsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for lon .", + "editType": "none" + }, + "latsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for lat .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + }, + "hovertextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hovertext .", + "editType": "none" + } + } + }, + "sankey": { + "meta": { + "description": "Sankey plots for network flow data analysis. The nodes are specified in `nodes` and the links between sources and targets in `links`. The colors are set in `nodes[i].color` and `links[i].color`; otherwise defaults are used." + }, + "attributes": { + "type": "sankey", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "label", + "text", + "value", + "percent", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "calc", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "calc", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "calc", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "arrayOk": true + }, + "editType": "calc", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this sankey trace (in plot fraction).", + "editType": "calc" + }, + "y": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this sankey trace (in plot fraction).", + "editType": "calc" + }, + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", + "editType": "calc" + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", + "editType": "calc" + }, + "editType": "calc", + "role": "object" + }, + "orientation": { + "valType": "enumerated", + "values": [ + "v", + "h" + ], + "dflt": "h", + "role": "style", + "description": "Sets the orientation of the Sankey diagram.", + "editType": "calc" + }, + "valueformat": { + "valType": "string", + "dflt": ".3s", + "role": "style", + "description": "Sets the value formatting rule using d3 formatting mini-language which is similar to those of Python. See https://github.com/d3/d3-format/blob/master/README.md#locale_format", + "editType": "calc" + }, + "valuesuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "description": "Adds a unit to follow the value in the hover tooltip. Add a space if a separation is necessary from the value.", + "editType": "calc" + }, + "arrangement": { + "valType": "enumerated", + "values": [ + "snap", + "perpendicular", + "freeform", + "fixed" + ], + "dflt": "snap", + "role": "style", + "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.", + "editType": "calc" + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the font for node labels", + "editType": "calc", + "role": "object" + }, + "node": { + "label": { + "valType": "data_array", + "dflt": [], + "role": "data", + "description": "The shown name of the node.", + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "arrayOk": true, + "description": "Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node.", + "editType": "calc" + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "dflt": "#444", + "arrayOk": true, + "description": "Sets the color of the `line` around each `node`.", + "editType": "calc" + }, + "width": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0.5, + "arrayOk": true, + "description": "Sets the width (in px) of the `line` around each `node`.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + } + }, + "pad": { + "valType": "number", + "arrayOk": false, + "min": 0, + "dflt": 20, + "role": "style", + "description": "Sets the padding (in px) between the `nodes`.", + "editType": "calc" + }, + "thickness": { + "valType": "number", + "arrayOk": false, + "min": 1, + "dflt": 20, + "role": "style", + "description": "Sets the thickness (in px) of the `nodes`.", + "editType": "calc" + }, + "description": "The nodes of the Sankey plot.", + "editType": "calc", + "role": "object", + "labelsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for label .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "link": { + "label": { + "valType": "data_array", + "dflt": [], + "role": "data", + "description": "The shown name of the link.", + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "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" + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "dflt": "#444", + "arrayOk": true, + "description": "Sets the color of the `line` around each `link`.", + "editType": "calc" + }, + "width": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "arrayOk": true, + "description": "Sets the width (in px) of the `line` around each `link`.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + } + }, + "source": { + "valType": "data_array", + "role": "data", + "dflt": [], + "description": "An integer number `[0..nodes.length - 1]` that represents the source node.", + "editType": "calc" + }, + "target": { + "valType": "data_array", + "role": "data", + "dflt": [], + "description": "An integer number `[0..nodes.length - 1]` that represents the target node.", + "editType": "calc" + }, + "value": { + "valType": "data_array", + "dflt": [], + "role": "data", + "description": "A numeric value representing the flow volume value.", + "editType": "calc" + }, + "description": "The links of the Sankey plot.", + "editType": "calc", + "role": "object", + "labelsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for label .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "sourcesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for source .", + "editType": "none" + }, + "targetsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for target .", + "editType": "none" + }, + "valuesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for value .", + "editType": "none" + } + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + } + } + }, + "table": { + "meta": { + "description": "Table view for detailed data viewing. The data are arranged in a grid of rows and columns. Most styling can be specified for columns, rows or individual cells. Table is using a column-major order, ie. the grid is represented as a vector of column vectors." + }, + "attributes": { + "type": "table", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this table trace (in plot fraction).", + "editType": "calc" + }, + "y": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "calc" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this table trace (in plot fraction).", + "editType": "calc" + }, + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this row in the grid for this table trace .", + "editType": "calc" + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this column in the grid for this table trace .", + "editType": "calc" + }, + "editType": "calc", + "role": "object" + }, + "columnwidth": { + "valType": "number", + "arrayOk": true, + "dflt": null, + "role": "style", + "description": "The width of columns expressed as a ratio. Columns fill the available width in proportion of their specified column widths.", + "editType": "calc" + }, + "columnorder": { + "valType": "data_array", + "role": "data", + "description": "Specifies the rendered order of the data columns; for example, a value `2` at position `0` means that column index `0` in the data will be rendered as the third column, as columns have an index base of zero.", + "editType": "calc" + }, + "header": { + "values": { + "valType": "data_array", + "role": "data", + "dflt": [], + "description": "Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string.", + "editType": "calc" + }, + "format": { + "valType": "data_array", + "role": "data", + "dflt": [], + "description": "Sets the cell value formatting rule using d3 formatting mini-language which is similar to those of Python. See https://github.com/d3/d3-format/blob/master/README.md#locale_format", + "editType": "calc" + }, + "prefix": { + "valType": "string", + "arrayOk": true, + "dflt": null, + "role": "style", + "description": "Prefix for cell values.", + "editType": "calc" + }, + "suffix": { + "valType": "string", + "arrayOk": true, + "dflt": null, + "role": "style", + "description": "Suffix for cell values.", + "editType": "calc" + }, + "height": { + "valType": "number", + "dflt": 28, + "role": "style", + "description": "The height of cells.", + "editType": "calc" + }, + "align": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "center", + "role": "style", + "editType": "calc", + "description": "Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans more two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width.", + "arrayOk": true + }, + "line": { + "width": { + "valType": "number", + "arrayOk": true, + "dflt": 1, + "role": "style", + "editType": "calc" + }, + "color": { + "valType": "color", + "arrayOk": true, + "dflt": "grey", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "fill": { + "color": { + "valType": "color", + "arrayOk": true, + "dflt": "white", + "role": "style", + "description": "Sets the cell fill color. It accepts either a specific color or an array of colors.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true, + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "arrayOk": true, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "calc" + }, + "description": "", + "editType": "calc", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "valuessrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for values .", + "editType": "none" + }, + "formatsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for format .", + "editType": "none" + }, + "prefixsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for prefix .", + "editType": "none" + }, + "suffixsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for suffix .", + "editType": "none" + }, + "alignsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for align .", + "editType": "none" + } + }, + "cells": { + "values": { + "valType": "data_array", + "role": "data", + "dflt": [], + "description": "Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string.", + "editType": "calc" + }, + "format": { + "valType": "data_array", + "role": "data", + "dflt": [], + "description": "Sets the cell value formatting rule using d3 formatting mini-language which is similar to those of Python. See https://github.com/d3/d3-format/blob/master/README.md#locale_format", + "editType": "calc" + }, + "prefix": { + "valType": "string", + "arrayOk": true, + "dflt": null, + "role": "style", + "description": "Prefix for cell values.", + "editType": "calc" + }, + "suffix": { + "valType": "string", + "arrayOk": true, + "dflt": null, + "role": "style", + "description": "Suffix for cell values.", + "editType": "calc" + }, + "height": { + "valType": "number", + "dflt": 20, + "role": "style", + "description": "The height of cells.", + "editType": "calc" + }, + "align": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "center", + "role": "style", + "editType": "calc", + "description": "Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans more two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width.", + "arrayOk": true + }, + "line": { + "width": { + "valType": "number", + "arrayOk": true, + "dflt": 1, + "role": "style", + "editType": "calc" + }, + "color": { + "valType": "color", + "arrayOk": true, + "dflt": "grey", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "fill": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "dflt": "white", + "description": "Sets the cell fill color. It accepts either a specific color or an array of colors.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true, + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "arrayOk": true, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "calc" + }, + "description": "", + "editType": "calc", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "valuessrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for values .", + "editType": "none" + }, + "formatsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for format .", + "editType": "none" + }, + "prefixsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for prefix .", + "editType": "none" + }, + "suffixsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for suffix .", + "editType": "none" + }, + "alignsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for align .", + "editType": "none" + } + }, + "editType": "calc", + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "columnwidthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for columnwidth .", + "editType": "none" + }, + "columnordersrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for columnorder .", + "editType": "none" + } + } + }, + "carpet": { + "meta": { + "description": "The data describing carpet axis layout is set in `y` and (optionally) also `x`. If only `y` is present, `x` the plot is interpreted as a cheater plot and is filled in using the `y` values. `x` and `y` may either be 2D arrays matching with each dimension matching that of `a` and `b`, or they may be 1D arrays with total length equal to that of `a` and `b`." + }, + "attributes": { + "type": "carpet", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "carpet": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "An identifier for this carpet, so that `scattercarpet` and `scattercontour` traces can specify a carpet plot on which they lie" + }, + "x": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "A two dimensional array of x coordinates at each carpet point. If ommitted, the plot is a cheater plot and the xaxis is hidden by default.", + "role": "data" + }, + "y": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "A two dimensional array of y coordinates at each carpet point.", + "role": "data" + }, + "a": { + "valType": "data_array", + "editType": "calc", + "description": "An array containing values of the first parameter value", + "role": "data" + }, + "a0": { + "valType": "number", + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step." + }, + "da": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the a coordinate step. See `a0` for more info." + }, + "b": { + "valType": "data_array", + "editType": "calc", + "description": "A two dimensional array of y coordinates at each carpet point.", + "role": "data" + }, + "b0": { + "valType": "number", + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step." + }, + "db": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the b coordinate step. See `b0` for more info." + }, + "cheaterslope": { + "valType": "number", + "role": "info", + "dflt": 1, + "editType": "calc", + "description": "The shift applied to each successive row of data in creating a cheater plot. Only used if `x` is been ommitted." + }, + "aaxis": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "smoothing": { + "valType": "number", + "dflt": 1, + "min": 0, + "max": 1.3, + "role": "info", + "editType": "calc" + }, + "title": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets this axis' title font.", + "role": "object" + }, + "titleoffset": { + "valType": "number", + "role": "info", + "dflt": 10, + "editType": "calc", + "description": "An additional amount by which to offset the title from the tick labels, given in pixels" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "calc", + "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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "style", + "editType": "calc", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "editType": "calc", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "fixedrange": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled." + }, + "cheatertype": { + "valType": "enumerated", + "values": [ + "index", + "value" + ], + "dflt": "value", + "role": "info", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "linear", + "array" + ], + "dflt": "array", + "role": "info", + "editType": "calc" + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "showticklabels": { + "valType": "enumerated", + "values": [ + "start", + "end", + "both", + "none" + ], + "dflt": "start", + "role": "style", + "editType": "calc", + "description": "Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "calc", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "labelpadding": { + "valType": "integer", + "role": "style", + "dflt": 10, + "editType": "calc", + "description": "Extra padding between label and the axis" + }, + "labelprefix": { + "valType": "string", + "role": "style", + "editType": "calc", + "description": "Sets a axis label prefix." + }, + "labelsuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a axis label suffix." + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "gridcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "minorgridcount": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Sets the number of minor grid ticks per major grid tick" + }, + "minorgridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the grid lines." + }, + "minorgridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "calc", + "description": "Sets the color of the grid lines." + }, + "startline": { + "valType": "boolean", + "role": "style", + "editType": "calc", + "description": "Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines." + }, + "startlinecolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color of the start line." + }, + "startlinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the start line." + }, + "endline": { + "valType": "boolean", + "role": "style", + "editType": "calc", + "description": "Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines." + }, + "endlinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the end line." + }, + "endlinecolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color of the end line." + }, + "tick0": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "The starting index of grid lines along the axis" + }, + "dtick": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "The stride between grid lines along the axis" + }, + "arraytick0": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "The starting index of grid lines along the axis" + }, + "arraydtick": { + "valType": "integer", + "min": 1, + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "The stride between grid lines along the axis" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + }, + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + } + }, + "baxis": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "smoothing": { + "valType": "number", + "dflt": 1, + "min": 0, + "max": 1.3, + "role": "info", + "editType": "calc" + }, + "title": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets this axis' title font.", + "role": "object" + }, + "titleoffset": { + "valType": "number", + "role": "info", + "dflt": 10, + "editType": "calc", + "description": "An additional amount by which to offset the title from the tick labels, given in pixels" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "calc", + "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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "style", + "editType": "calc", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "editType": "calc", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "fixedrange": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled." + }, + "cheatertype": { + "valType": "enumerated", + "values": [ + "index", + "value" + ], + "dflt": "value", + "role": "info", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "linear", + "array" + ], + "dflt": "array", + "role": "info", + "editType": "calc" + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "showticklabels": { + "valType": "enumerated", + "values": [ + "start", + "end", + "both", + "none" + ], + "dflt": "start", + "role": "style", + "editType": "calc", + "description": "Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "calc", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "labelpadding": { + "valType": "integer", + "role": "style", + "dflt": 10, + "editType": "calc", + "description": "Extra padding between label and the axis" + }, + "labelprefix": { + "valType": "string", + "role": "style", + "editType": "calc", + "description": "Sets a axis label prefix." + }, + "labelsuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a axis label suffix." + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "gridcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "minorgridcount": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Sets the number of minor grid ticks per major grid tick" + }, + "minorgridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the grid lines." + }, + "minorgridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "calc", + "description": "Sets the color of the grid lines." + }, + "startline": { + "valType": "boolean", + "role": "style", + "editType": "calc", + "description": "Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines." + }, + "startlinecolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color of the start line." + }, + "startlinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the start line." + }, + "endline": { + "valType": "boolean", + "role": "style", + "editType": "calc", + "description": "Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines." + }, + "endlinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the end line." + }, + "endlinecolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color of the end line." + }, + "tick0": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "The starting index of grid lines along the axis" + }, + "dtick": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "The stride between grid lines along the axis" + }, + "arraytick0": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "The starting index of grid lines along the axis" + }, + "arraydtick": { + "valType": "integer", + "min": 1, + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "The stride between grid lines along the axis" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + }, + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + } + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "dflt": "\"Open Sans\", verdana, arial, sans-serif" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "dflt": 12 + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "dflt": "#444" + }, + "editType": "calc", + "description": "The default font used for axis & tick labels on this carpet", + "role": "object" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "xsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for x .", + "editType": "none" + }, + "ysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for y .", + "editType": "none" + }, + "asrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for a .", + "editType": "none" + }, + "bsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for b .", + "editType": "none" + } + } + }, + "scattercarpet": { + "meta": { + "hrName": "scatter_carpet", + "description": "Plots a scatter trace on either the first carpet axis or the carpet axis with a matching `carpet` attribute." + }, + "attributes": { + "type": "scattercarpet", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "a", + "b", + "text", + "name", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "carpet": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "An identifier for this carpet, so that `scattercarpet` and `scattercontour` traces can specify a carpet plot on which they lie" + }, + "a": { + "valType": "data_array", + "editType": "calc", + "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`.", + "role": "data" + }, + "b": { + "valType": "data_array", + "editType": "calc", + "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`.", + "role": "data" + }, + "mode": { + "valType": "flaglist", + "flags": [ + "lines", + "markers", + "text" + ], + "extras": [ + "none" + ], + "role": "info", + "editType": "calc", + "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" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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)." + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the line color." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "style", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "style", + "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*)." + }, + "shape": { + "valType": "enumerated", + "values": [ + "linear", + "spline" + ], + "dflt": "linear", + "role": "style", + "editType": "plot", + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes." + }, + "smoothing": { + "valType": "number", + "min": 0, + "max": 1.3, + "dflt": 1, + "role": "style", + "editType": "plot", + "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)." + }, + "editType": "calc", + "role": "object" + }, + "connectgaps": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected." + }, + "fill": { + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ], + "role": "style", + "editType": "calc", + "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" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "marker": { + "symbol": { + "valType": "enumerated", + "values": [ + 0, + "circle", + 100, + "circle-open", + 200, + "circle-dot", + 300, + "circle-open-dot", + 1, + "square", + 101, + "square-open", + 201, + "square-dot", + 301, + "square-open-dot", + 2, + "diamond", + 102, + "diamond-open", + 202, + "diamond-dot", + 302, + "diamond-open-dot", + 3, + "cross", + 103, + "cross-open", + 203, + "cross-dot", + 303, + "cross-open-dot", + 4, + "x", + 104, + "x-open", + 204, + "x-dot", + 304, + "x-open-dot", + 5, + "triangle-up", + 105, + "triangle-up-open", + 205, + "triangle-up-dot", + 305, + "triangle-up-open-dot", + 6, + "triangle-down", + 106, + "triangle-down-open", + 206, + "triangle-down-dot", + 306, + "triangle-down-open-dot", + 7, + "triangle-left", + 107, + "triangle-left-open", + 207, + "triangle-left-dot", + 307, + "triangle-left-open-dot", + 8, + "triangle-right", + 108, + "triangle-right-open", + 208, + "triangle-right-dot", + 308, + "triangle-right-open-dot", + 9, + "triangle-ne", + 109, + "triangle-ne-open", + 209, + "triangle-ne-dot", + 309, + "triangle-ne-open-dot", + 10, + "triangle-se", + 110, + "triangle-se-open", + 210, + "triangle-se-dot", + 310, + "triangle-se-open-dot", + 11, + "triangle-sw", + 111, + "triangle-sw-open", + 211, + "triangle-sw-dot", + 311, + "triangle-sw-open-dot", + 12, + "triangle-nw", + 112, + "triangle-nw-open", + 212, + "triangle-nw-dot", + 312, + "triangle-nw-open-dot", + 13, + "pentagon", + 113, + "pentagon-open", + 213, + "pentagon-dot", + 313, + "pentagon-open-dot", + 14, + "hexagon", + 114, + "hexagon-open", + 214, + "hexagon-dot", + 314, + "hexagon-open-dot", + 15, + "hexagon2", + 115, + "hexagon2-open", + 215, + "hexagon2-dot", + 315, + "hexagon2-open-dot", + 16, + "octagon", + 116, + "octagon-open", + 216, + "octagon-dot", + 316, + "octagon-open-dot", + 17, + "star", + 117, + "star-open", + 217, + "star-dot", + 317, + "star-open-dot", + 18, + "hexagram", + 118, + "hexagram-open", + 218, + "hexagram-dot", + 318, + "hexagram-open-dot", + 19, + "star-triangle-up", + 119, + "star-triangle-up-open", + 219, + "star-triangle-up-dot", + 319, + "star-triangle-up-open-dot", + 20, + "star-triangle-down", + 120, + "star-triangle-down-open", + 220, + "star-triangle-down-dot", + 320, + "star-triangle-down-open-dot", + 21, + "star-square", + 121, + "star-square-open", + 221, + "star-square-dot", + 321, + "star-square-open-dot", + 22, + "star-diamond", + 122, + "star-diamond-open", + 222, + "star-diamond-dot", + 322, + "star-diamond-open-dot", + 23, + "diamond-tall", + 123, + "diamond-tall-open", + 223, + "diamond-tall-dot", + 323, + "diamond-tall-open-dot", + 24, + "diamond-wide", + 124, + "diamond-wide-open", + 224, + "diamond-wide-dot", + 324, + "diamond-wide-open-dot", + 25, + "hourglass", + 125, + "hourglass-open", + 26, + "bowtie", + 126, + "bowtie-open", + 27, + "circle-cross", + 127, + "circle-cross-open", + 28, + "circle-x", + 128, + "circle-x-open", + 29, + "square-cross", + 129, + "square-cross-open", + 30, + "square-x", + 130, + "square-x-open", + 31, + "diamond-cross", + 131, + "diamond-cross-open", + 32, + "diamond-x", + 132, + "diamond-x-open", + 33, + "cross-thin", + 133, + "cross-thin-open", + 34, + "x-thin", + 134, + "x-thin-open", + 35, + "asterisk", + 135, + "asterisk-open", + 36, + "hash", + 136, + "hash-open", + 236, + "hash-dot", + 336, + "hash-open-dot", + 37, + "y-up", + 137, + "y-up-open", + 38, + "y-down", + 138, + "y-down-open", + 39, + "y-left", + 139, + "y-left-open", + 40, + "y-right", + 140, + "y-right-open", + 41, + "line-ew", + 141, + "line-ew-open", + 42, + "line-ns", + 142, + "line-ns-open", + 43, + "line-ne", + 143, + "line-ne-open", + 44, + "line-nw", + 144, + "line-nw-open" + ], + "dflt": "circle", + "arrayOk": true, + "role": "style", + "editType": "style", + "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." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity." + }, + "maxdisplayed": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker size (in px)." + }, + "sizeref": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "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`." + }, + "sizemin": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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." + }, + "sizemode": { + "valType": "enumerated", + "values": [ + "diameter", + "area" + ], + "dflt": "diameter", + "role": "info", + "editType": "calc", + "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." + }, + "line": { + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets the width (in px) of the lines bounding the marker points." + }, + "editType": "calc", + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "role": "object", + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "gradient": { + "type": { + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ], + "arrayOk": true, + "dflt": "none", + "role": "style", + "editType": "calc", + "description": "Sets the type of gradient used to fill the markers" + }, + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "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", + "role": "object", + "typesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for type .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "editType": "calc", + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "colorbars" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "colorbars" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "colorbars" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "colorbars" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "colorbars" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "colorbars" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "colorbars" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "colorbars" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "colorbars" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "colorbars" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "colorbars", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "colorbars", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "colorbars", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "colorbars", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "colorbars", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "colorbars", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "colorbars" + }, + { + "valType": "any", + "editType": "colorbars" + } + ], + "editType": "colorbars", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "colorbars", + "name": { + "valType": "string", + "role": "style", + "editType": "colorbars", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "colorbars", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "colorbars", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "colorbars", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "colorbars" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "colorbars" + }, + "editType": "colorbars", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "role": "object", + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "arrayOk": true + }, + "editType": "calc", + "description": "Sets the text font.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "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", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates." + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "style", + "description": "Sets the marker size of selected points." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of selected points." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "style", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "hoveron": { + "valType": "flaglist", + "flags": [ + "points", + "fills" + ], + "role": "info", + "editType": "style", + "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*." + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "asrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for a .", + "editType": "none" + }, + "bsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for b .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + }, + "textpositionsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for textposition .", + "editType": "none" + } + } + }, + "contourcarpet": { + "meta": { + "hrName": "contour_carpet", + "description": "Plots contours on either the first carpet axis or the carpet axis with a matching `carpet` attribute. Data `z` is interpreted as matching that of the corresponding carpet axis." + }, + "attributes": { + "type": "contourcarpet", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "carpet": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "The `carpet` of the carpet axes on which this contour trace lies" + }, + "z": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the z data.", + "role": "data" + }, + "a": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the x coordinates.", + "impliedEdits": { + "xtype": "array" + }, + "role": "data" + }, + "a0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.", + "impliedEdits": { + "xtype": "scaled" + } + }, + "da": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the x coordinate step. See `x0` for more info.", + "impliedEdits": { + "xtype": "scaled" + } + }, + "b": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the y coordinates.", + "impliedEdits": { + "ytype": "array" + }, + "role": "data" + }, + "b0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.", + "impliedEdits": { + "ytype": "scaled" + } + }, + "db": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the y coordinate step. See `y0` for more info.", + "impliedEdits": { + "ytype": "scaled" + } + }, + "text": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text elements associated with each z value.", + "role": "data" + }, + "transpose": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Transposes the z data." + }, + "atype": { + "valType": "enumerated", + "values": [ + "array", + "scaled" + ], + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided)." + }, + "btype": { + "valType": "enumerated", + "values": [ + "array", + "scaled" + ], + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "autocontour": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "impliedEdits": {}, + "description": "Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`." + }, + "ncontours": { + "valType": "integer", + "dflt": 15, + "min": 1, + "role": "style", + "editType": "calc", + "description": "Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing." + }, + "contours": { + "type": { + "valType": "enumerated", + "values": [ + "levels", + "constraint" + ], + "dflt": "levels", + "role": "info", + "editType": "calc", + "description": "If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters." + }, + "start": { + "valType": "number", + "dflt": null, + "role": "style", + "editType": "plot", + "impliedEdits": { + "^autocontour": false + }, + "description": "Sets the starting contour level value. Must be less than `contours.end`" + }, + "end": { + "valType": "number", + "dflt": null, + "role": "style", + "editType": "plot", + "impliedEdits": { + "^autocontour": false + }, + "description": "Sets the end contour level value. Must be more than `contours.start`" + }, + "size": { + "valType": "number", + "dflt": null, + "min": 0, + "role": "style", + "editType": "plot", + "impliedEdits": { + "^autocontour": false + }, + "description": "Sets the step between each contour level. Must be positive." + }, + "coloring": { + "valType": "enumerated", + "values": [ + "fill", + "lines", + "none" + ], + "dflt": "fill", + "role": "style", + "editType": "calc", + "description": "Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace." + }, + "showlines": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*." + }, + "showlabels": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines whether to label the contour lines with their values." + }, + "labelfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style" + }, + "editType": "plot", + "description": "Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`.", + "role": "object" + }, + "labelformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the contour label formatting rule using d3 formatting mini-language which is very similar to Python, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format." + }, + "operation": { + "valType": "enumerated", + "values": [ + "=", + "<", + ">=", + ">", + "<=", + "[]", + "()", + "[)", + "(]", + "][", + ")(", + "](", + ")[" + ], + "role": "info", + "dflt": "=", + "editType": "calc", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms." + }, + "value": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (=,<,>=,>,<=) *value* is expected to be a number. When `operation` is set to one of the interval values ([],(),[),(],][,)(,](,)[) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound." + }, + "editType": "calc", + "impliedEdits": { + "autocontour": false, + "role": "object" + }, + "role": "object" + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the color of the contour level. Has no if `contours.coloring` is set to *lines*." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "style", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "style", + "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*)." + }, + "smoothing": { + "valType": "number", + "min": 0, + "max": 1.3, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing." + }, + "editType": "plot", + "role": "object" + }, + "zauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user." + }, + "zmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "zauto": false + }, + "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well." + }, + "zmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "zauto": false + }, + "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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`zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not a colorbar is displayed for this trace." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "colorbars" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "colorbars" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "colorbars" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "colorbars" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "colorbars" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "colorbars" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "colorbars" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "colorbars" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "colorbars" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "colorbars" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "colorbars", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "colorbars", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "colorbars", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "colorbars", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "colorbars", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "colorbars", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "colorbars" + }, + { + "valType": "any", + "editType": "colorbars" + } + ], + "editType": "colorbars", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "colorbars", + "name": { + "valType": "string", + "role": "style", + "editType": "colorbars", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "colorbars", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "colorbars", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "colorbars", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "colorbars" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "colorbars" + }, + "editType": "colorbars", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "zsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for z .", + "editType": "none" + }, + "asrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for a .", + "editType": "none" + }, + "bsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for b .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + } + }, + "ohlc": { + "meta": { + "description": "The ohlc (short for Open-High-Low-Close) is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The tip of the lines represent the `low` and `high` values and the horizontal segments represent the `open` and `close` values. Sample points where the close value is higher (lower) then the open value are called increasing (decreasing). By default, increasing items are drawn in green whereas decreasing are drawn in red." + }, + "attributes": { + "type": "ohlc", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "x": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the x coordinates. If absent, linear coordinate will be generated.", + "role": "data" + }, + "open": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the open values.", + "role": "data" + }, + "high": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the high values.", + "role": "data" + }, + "low": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the low values.", + "role": "data" + }, + "close": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the close values.", + "role": "data" + }, + "line": { + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "style", + "description": "[object Object] Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "style", + "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*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`." + }, + "editType": "style", + "role": "object" + }, + "increasing": { + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the line color.", + "dflt": "#3D9970" + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "style", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "style", + "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*)." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "decreasing": { + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the line color.", + "dflt": "#FF4136" + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "style", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "style", + "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*)." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "description": "Sets hover text elements associated with each sample point. 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 this trace's sample points." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "max": 0.5, + "dflt": 0.3, + "role": "style", + "editType": "calc", + "description": "Sets the width of the open/close tick marks relative to the *x* minimal interval." + }, + "xcalendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use with `x` date data." + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "xsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for x .", + "editType": "none" + }, + "opensrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for open .", + "editType": "none" + }, + "highsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for high .", + "editType": "none" + }, + "lowsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for low .", + "editType": "none" + }, + "closesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for close .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + } + }, + "candlestick": { + "meta": { + "description": "The candlestick is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The boxes represent the spread between the `open` and `close` values and the lines represent the spread between the `low` and `high` values Sample points where the close value is higher (lower) then the open value are called increasing (decreasing). By default, increasing candles are drawn in green whereas decreasing are drawn in red." + }, + "attributes": { + "type": "candlestick", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "x": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the x coordinates. If absent, linear coordinate will be generated.", + "role": "data" + }, + "open": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the open values.", + "role": "data" + }, + "high": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the high values.", + "role": "data" + }, + "low": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the low values.", + "role": "data" + }, + "close": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the close values.", + "role": "data" + }, + "line": { + "width": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 2, + "editType": "style", + "description": "Sets the width (in px) of line bounding the box(es). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`." + }, + "editType": "style", + "role": "object" + }, + "increasing": { + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the color of line bounding the box(es).", + "dflt": "#3D9970" + }, + "width": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 2, + "editType": "style", + "description": "Sets the width (in px) of line bounding the box(es)." + }, + "editType": "style", + "role": "object" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "style", + "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", + "role": "object" + }, + "decreasing": { + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the color of line bounding the box(es).", + "dflt": "#FF4136" + }, + "width": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 2, + "editType": "style", + "description": "Sets the width (in px) of line bounding the box(es)." + }, + "editType": "style", + "role": "object" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "style", + "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", + "role": "object" + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "description": "Sets hover text elements associated with each sample point. 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 this trace's sample points." + }, + "whiskerwidth": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Sets the width of the whiskers relative to the box' width. For example, with 1, the whiskers are as wide as the box(es)." + }, + "xcalendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use with `x` date data." + }, + "xaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "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." + }, + "yaxis": { + "valType": "subplotid", + "role": "info", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "xsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for x .", + "editType": "none" + }, + "opensrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for open .", + "editType": "none" + }, + "highsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for high .", + "editType": "none" + }, + "lowsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for low .", + "editType": "none" + }, + "closesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for close .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + }, + "layoutAttributes": { + "boxmode": { + "valType": "enumerated", + "values": [ + "group", + "overlay" + ], + "dflt": "overlay", + "role": "info", + "editType": "calc", + "description": "Determines how boxes at the same location coordinate are displayed on the graph. If *group*, the boxes are plotted next to one another centered around the shared location. If *overlay*, the boxes are plotted over one another, you might need to set *opacity* to see them multiple boxes." + }, + "boxgap": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0.3, + "role": "style", + "editType": "calc", + "description": "Sets the gap (in plot fraction) between boxes of adjacent location coordinates." + }, + "boxgroupgap": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0.3, + "role": "style", + "editType": "calc", + "description": "Sets the gap (in plot fraction) between boxes of the same location coordinate." + } + } + }, + "scatterpolar": { + "meta": { + "hrName": "scatter_polar", + "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." + }, + "attributes": { + "type": "scatterpolar", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "r", + "theta", + "text", + "name", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "mode": { + "valType": "flaglist", + "flags": [ + "lines", + "markers", + "text" + ], + "extras": [ + "none" + ], + "role": "info", + "editType": "calc", + "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*." + }, + "r": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the radial coordinates", + "role": "data" + }, + "theta": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the angular coordinates", + "role": "data" + }, + "r0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step." + }, + "dr": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the r coordinate step." + }, + "theta0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step." + }, + "dtheta": { + "valType": "number", + "role": "info", + "editType": "calc", + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates." + }, + "thetaunit": { + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ], + "dflt": "degrees", + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes." + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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." + }, + "hovertext": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "style", + "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." + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the line color." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "style", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "style", + "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*)." + }, + "shape": { + "valType": "enumerated", + "values": [ + "linear", + "spline" + ], + "dflt": "linear", + "role": "style", + "editType": "plot", + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes." + }, + "smoothing": { + "valType": "number", + "min": 0, + "max": 1.3, + "dflt": 1, + "role": "style", + "editType": "plot", + "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)." + }, + "editType": "calc", + "role": "object" + }, + "connectgaps": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected." + }, + "marker": { + "symbol": { + "valType": "enumerated", + "values": [ + 0, + "circle", + 100, + "circle-open", + 200, + "circle-dot", + 300, + "circle-open-dot", + 1, + "square", + 101, + "square-open", + 201, + "square-dot", + 301, + "square-open-dot", + 2, + "diamond", + 102, + "diamond-open", + 202, + "diamond-dot", + 302, + "diamond-open-dot", + 3, + "cross", + 103, + "cross-open", + 203, + "cross-dot", + 303, + "cross-open-dot", + 4, + "x", + 104, + "x-open", + 204, + "x-dot", + 304, + "x-open-dot", + 5, + "triangle-up", + 105, + "triangle-up-open", + 205, + "triangle-up-dot", + 305, + "triangle-up-open-dot", + 6, + "triangle-down", + 106, + "triangle-down-open", + 206, + "triangle-down-dot", + 306, + "triangle-down-open-dot", + 7, + "triangle-left", + 107, + "triangle-left-open", + 207, + "triangle-left-dot", + 307, + "triangle-left-open-dot", + 8, + "triangle-right", + 108, + "triangle-right-open", + 208, + "triangle-right-dot", + 308, + "triangle-right-open-dot", + 9, + "triangle-ne", + 109, + "triangle-ne-open", + 209, + "triangle-ne-dot", + 309, + "triangle-ne-open-dot", + 10, + "triangle-se", + 110, + "triangle-se-open", + 210, + "triangle-se-dot", + 310, + "triangle-se-open-dot", + 11, + "triangle-sw", + 111, + "triangle-sw-open", + 211, + "triangle-sw-dot", + 311, + "triangle-sw-open-dot", + 12, + "triangle-nw", + 112, + "triangle-nw-open", + 212, + "triangle-nw-dot", + 312, + "triangle-nw-open-dot", + 13, + "pentagon", + 113, + "pentagon-open", + 213, + "pentagon-dot", + 313, + "pentagon-open-dot", + 14, + "hexagon", + 114, + "hexagon-open", + 214, + "hexagon-dot", + 314, + "hexagon-open-dot", + 15, + "hexagon2", + 115, + "hexagon2-open", + 215, + "hexagon2-dot", + 315, + "hexagon2-open-dot", + 16, + "octagon", + 116, + "octagon-open", + 216, + "octagon-dot", + 316, + "octagon-open-dot", + 17, + "star", + 117, + "star-open", + 217, + "star-dot", + 317, + "star-open-dot", + 18, + "hexagram", + 118, + "hexagram-open", + 218, + "hexagram-dot", + 318, + "hexagram-open-dot", + 19, + "star-triangle-up", + 119, + "star-triangle-up-open", + 219, + "star-triangle-up-dot", + 319, + "star-triangle-up-open-dot", + 20, + "star-triangle-down", + 120, + "star-triangle-down-open", + 220, + "star-triangle-down-dot", + 320, + "star-triangle-down-open-dot", + 21, + "star-square", + 121, + "star-square-open", + 221, + "star-square-dot", + 321, + "star-square-open-dot", + 22, + "star-diamond", + 122, + "star-diamond-open", + 222, + "star-diamond-dot", + 322, + "star-diamond-open-dot", + 23, + "diamond-tall", + 123, + "diamond-tall-open", + 223, + "diamond-tall-dot", + 323, + "diamond-tall-open-dot", + 24, + "diamond-wide", + 124, + "diamond-wide-open", + 224, + "diamond-wide-dot", + 324, + "diamond-wide-open-dot", + 25, + "hourglass", + 125, + "hourglass-open", + 26, + "bowtie", + 126, + "bowtie-open", + 27, + "circle-cross", + 127, + "circle-cross-open", + 28, + "circle-x", + 128, + "circle-x-open", + 29, + "square-cross", + 129, + "square-cross-open", + 30, + "square-x", + 130, + "square-x-open", + 31, + "diamond-cross", + 131, + "diamond-cross-open", + 32, + "diamond-x", + 132, + "diamond-x-open", + 33, + "cross-thin", + 133, + "cross-thin-open", + 34, + "x-thin", + 134, + "x-thin-open", + 35, + "asterisk", + 135, + "asterisk-open", + 36, + "hash", + 136, + "hash-open", + 236, + "hash-dot", + 336, + "hash-open-dot", + 37, + "y-up", + 137, + "y-up-open", + 38, + "y-down", + 138, + "y-down-open", + 39, + "y-left", + 139, + "y-left-open", + 40, + "y-right", + 140, + "y-right-open", + 41, + "line-ew", + 141, + "line-ew-open", + 42, + "line-ns", + 142, + "line-ns-open", + 43, + "line-ne", + 143, + "line-ne-open", + 44, + "line-nw", + 144, + "line-nw-open" + ], + "dflt": "circle", + "arrayOk": true, + "role": "style", + "editType": "style", + "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." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker size (in px)." + }, + "maxdisplayed": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit." + }, + "sizeref": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "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`." + }, + "sizemin": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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." + }, + "sizemode": { + "valType": "enumerated", + "values": [ + "diameter", + "area" + ], + "dflt": "diameter", + "role": "info", + "editType": "calc", + "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." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "colorbars" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "colorbars" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "colorbars" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "colorbars" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "colorbars" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "colorbars" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "colorbars" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "colorbars" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "colorbars" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "colorbars" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "colorbars", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "colorbars", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "colorbars", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "colorbars", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "colorbars", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "colorbars", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "colorbars" + }, + { + "valType": "any", + "editType": "colorbars" + } + ], + "editType": "colorbars", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "colorbars", + "name": { + "valType": "string", + "role": "style", + "editType": "colorbars", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "colorbars", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "colorbars", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "colorbars", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "colorbars" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "colorbars" + }, + "editType": "colorbars", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "line": { + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets the width (in px) of the lines bounding the marker points." + }, + "editType": "calc", + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "role": "object", + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "gradient": { + "type": { + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ], + "arrayOk": true, + "dflt": "none", + "role": "style", + "editType": "calc", + "description": "Sets the type of gradient used to fill the markers" + }, + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "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", + "role": "object", + "typesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for type .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "editType": "calc", + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "role": "object", + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "cliponaxis": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "plot", + "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*." + }, + "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", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates." + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "arrayOk": true + }, + "editType": "calc", + "description": "Sets the text font.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "fill": { + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ], + "role": "style", + "editType": "calc", + "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" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "hoveron": { + "valType": "flaglist", + "flags": [ + "points", + "fills" + ], + "role": "info", + "editType": "style", + "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*." + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "style", + "description": "Sets the marker size of selected points." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of selected points." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "style", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "subplot": { + "valType": "subplotid", + "role": "info", + "dflt": "polar", + "editType": "calc", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "rsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for r .", + "editType": "none" + }, + "thetasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for theta .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + }, + "hovertextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hovertext .", + "editType": "none" + }, + "textpositionsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for textposition .", + "editType": "none" + } + } + }, + "scatterpolargl": { + "meta": { + "hrName": "scatter_polar_gl", + "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." + }, + "attributes": { + "type": "scatterpolargl", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "r", + "theta", + "text", + "name", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "mode": { + "valType": "flaglist", + "flags": [ + "lines", + "markers", + "text" + ], + "extras": [ + "none" + ], + "role": "info", + "editType": "calc", + "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*." + }, + "r": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the radial coordinates", + "role": "data" + }, + "theta": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the angular coordinates", + "role": "data" + }, + "r0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step." + }, + "dr": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the r coordinate step." + }, + "theta0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step." + }, + "dtheta": { + "valType": "number", + "role": "info", + "editType": "calc", + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates." + }, + "thetaunit": { + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ], + "dflt": "degrees", + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes." + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "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." + }, + "hovertext": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "style", + "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." + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the line color." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "calc", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "enumerated", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "description": "Sets the style of the lines.", + "editType": "calc" + }, + "editType": "calc", + "role": "object" + }, + "connectgaps": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected." + }, + "marker": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "symbol": { + "valType": "enumerated", + "values": [ + 0, + "circle", + 100, + "circle-open", + 200, + "circle-dot", + 300, + "circle-open-dot", + 1, + "square", + 101, + "square-open", + 201, + "square-dot", + 301, + "square-open-dot", + 2, + "diamond", + 102, + "diamond-open", + 202, + "diamond-dot", + 302, + "diamond-open-dot", + 3, + "cross", + 103, + "cross-open", + 203, + "cross-dot", + 303, + "cross-open-dot", + 4, + "x", + 104, + "x-open", + 204, + "x-dot", + 304, + "x-open-dot", + 5, + "triangle-up", + 105, + "triangle-up-open", + 205, + "triangle-up-dot", + 305, + "triangle-up-open-dot", + 6, + "triangle-down", + 106, + "triangle-down-open", + 206, + "triangle-down-dot", + 306, + "triangle-down-open-dot", + 7, + "triangle-left", + 107, + "triangle-left-open", + 207, + "triangle-left-dot", + 307, + "triangle-left-open-dot", + 8, + "triangle-right", + 108, + "triangle-right-open", + 208, + "triangle-right-dot", + 308, + "triangle-right-open-dot", + 9, + "triangle-ne", + 109, + "triangle-ne-open", + 209, + "triangle-ne-dot", + 309, + "triangle-ne-open-dot", + 10, + "triangle-se", + 110, + "triangle-se-open", + 210, + "triangle-se-dot", + 310, + "triangle-se-open-dot", + 11, + "triangle-sw", + 111, + "triangle-sw-open", + 211, + "triangle-sw-dot", + 311, + "triangle-sw-open-dot", + 12, + "triangle-nw", + 112, + "triangle-nw-open", + 212, + "triangle-nw-dot", + 312, + "triangle-nw-open-dot", + 13, + "pentagon", + 113, + "pentagon-open", + 213, + "pentagon-dot", + 313, + "pentagon-open-dot", + 14, + "hexagon", + 114, + "hexagon-open", + 214, + "hexagon-dot", + 314, + "hexagon-open-dot", + 15, + "hexagon2", + 115, + "hexagon2-open", + 215, + "hexagon2-dot", + 315, + "hexagon2-open-dot", + 16, + "octagon", + 116, + "octagon-open", + 216, + "octagon-dot", + 316, + "octagon-open-dot", + 17, + "star", + 117, + "star-open", + 217, + "star-dot", + 317, + "star-open-dot", + 18, + "hexagram", + 118, + "hexagram-open", + 218, + "hexagram-dot", + 318, + "hexagram-open-dot", + 19, + "star-triangle-up", + 119, + "star-triangle-up-open", + 219, + "star-triangle-up-dot", + 319, + "star-triangle-up-open-dot", + 20, + "star-triangle-down", + 120, + "star-triangle-down-open", + 220, + "star-triangle-down-dot", + 320, + "star-triangle-down-open-dot", + 21, + "star-square", + 121, + "star-square-open", + 221, + "star-square-dot", + 321, + "star-square-open-dot", + 22, + "star-diamond", + 122, + "star-diamond-open", + 222, + "star-diamond-dot", + 322, + "star-diamond-open-dot", + 23, + "diamond-tall", + 123, + "diamond-tall-open", + 223, + "diamond-tall-dot", + 323, + "diamond-tall-open-dot", + 24, + "diamond-wide", + 124, + "diamond-wide-open", + 224, + "diamond-wide-dot", + 324, + "diamond-wide-open-dot", + 25, + "hourglass", + 125, + "hourglass-open", + 26, + "bowtie", + 126, + "bowtie-open", + 27, + "circle-cross", + 127, + "circle-cross-open", + 28, + "circle-x", + 128, + "circle-x-open", + 29, + "square-cross", + 129, + "square-cross-open", + 30, + "square-x", + 130, + "square-x-open", + 31, + "diamond-cross", + 131, + "diamond-cross-open", + 32, + "diamond-x", + 132, + "diamond-x-open", + 33, + "cross-thin", + 133, + "cross-thin-open", + 34, + "x-thin", + 134, + "x-thin-open", + 35, + "asterisk", + 135, + "asterisk-open", + 36, + "hash", + 136, + "hash-open", + 236, + "hash-dot", + 336, + "hash-open-dot", + 37, + "y-up", + 137, + "y-up-open", + 38, + "y-down", + 138, + "y-down-open", + 39, + "y-left", + 139, + "y-left-open", + 40, + "y-right", + 140, + "y-right-open", + 41, + "line-ew", + 141, + "line-ew-open", + 42, + "line-ns", + 142, + "line-ns-open", + 43, + "line-ne", + 143, + "line-ne-open", + 44, + "line-nw", + 144, + "line-nw-open" + ], + "dflt": "circle", + "arrayOk": true, + "role": "style", + "editType": "calc", + "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." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker size (in px)." + }, + "sizeref": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "calc", + "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`." + }, + "sizemin": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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." + }, + "sizemode": { + "valType": "enumerated", + "values": [ + "diameter", + "area" + ], + "dflt": "diameter", + "role": "info", + "editType": "calc", + "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." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the marker opacity." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "calc" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "calc" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "calc" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "calc" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "calc" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "calc" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "calc" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "calc" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "calc" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "calc" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "calc" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "calc" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "calc", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "calc", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "calc", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "calc", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "calc", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "calc", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc" + }, + { + "valType": "any", + "editType": "calc" + } + ], + "editType": "calc", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "calc", + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "calc", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "calc", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "calc", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "calc", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "calc" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "calc" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "calc" + }, + "editType": "calc", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "line": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the lines bounding the marker points." + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + } + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + } + }, + "fill": { + "valType": "enumerated", + "values": [ + "none", + "tozeroy", + "tozerox", + "tonexty", + "tonextx", + "toself", + "tonext" + ], + "role": "style", + "editType": "calc", + "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" + }, + "fillcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available." + }, + "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", + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates." + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "arrayOk": true + }, + "editType": "calc", + "description": "Sets the text font.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of selected points." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "style", + "description": "Sets the marker size of selected points." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of selected points." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "size": { + "valType": "number", + "min": 0, + "role": "style", + "editType": "style", + "description": "Sets the marker size of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "subplot": { + "valType": "subplotid", + "role": "info", + "dflt": "polar", + "editType": "calc", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "rsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for r .", + "editType": "none" + }, + "thetasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for theta .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + }, + "hovertextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hovertext .", + "editType": "none" + }, + "textpositionsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for textposition .", + "editType": "none" + } + } + }, + "barpolar": { + "meta": { + "hrName": "bar_polar", + "description": "The data visualized by the radial span of the bars is set in `r`" + }, + "attributes": { + "type": "barpolar", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "r", + "theta", + "text", + "name", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "r": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the radial coordinates", + "role": "data" + }, + "theta": { + "valType": "data_array", + "editType": "calc+clearAxisTypes", + "description": "Sets the angular coordinates", + "role": "data" + }, + "r0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step." + }, + "dr": { + "valType": "number", + "dflt": 1, + "role": "info", + "editType": "calc", + "description": "Sets the r coordinate step." + }, + "theta0": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step." + }, + "dtheta": { + "valType": "number", + "role": "info", + "editType": "calc", + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates." + }, + "thetaunit": { + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ], + "dflt": "degrees", + "role": "info", + "editType": "calc+clearAxisTypes", + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes." + }, + "base": { + "valType": "any", + "dflt": null, + "arrayOk": true, + "role": "info", + "editType": "calc", + "description": "Sets where the bar base is drawn (in radial axis units). In *stack* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead." + }, + "offset": { + "valType": "number", + "dflt": null, + "arrayOk": true, + "role": "info", + "editType": "calc", + "description": "Shifts the angular position where the bar is drawn (in *thetatunit* units)." + }, + "width": { + "valType": "number", + "dflt": null, + "min": 0, + "arrayOk": true, + "role": "info", + "editType": "calc", + "description": "Sets the bar angular width (in *thetaunit* units)." + }, + "text": { + "valType": "string", + "role": "info", + "dflt": "", + "arrayOk": true, + "editType": "calc", + "description": "Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates." + }, + "marker": { + "line": { + "width": { + "valType": "number", + "min": 0, + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets the width (in px) of the lines bounding the marker points.", + "dflt": 0 + }, + "editType": "calc", + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets themarker.linecolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "role": "object", + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "editType": "calc", + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Sets themarkercolor. 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." + }, + "cauto": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "cmin": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "cmax": { + "valType": "number", + "role": "info", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "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." + }, + "colorscale": { + "valType": "colorscale", + "role": "style", + "editType": "calc", + "dflt": null, + "impliedEdits": { + "autocolorscale": false + }, + "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: Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis." + }, + "autocolorscale": { + "valType": "boolean", + "role": "style", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "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." + }, + "reversescale": { + "valType": "boolean", + "role": "style", + "dflt": false, + "editType": "calc", + "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." + }, + "showscale": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "calc", + "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." + }, + "colorbar": { + "thicknessmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "style", + "dflt": "pixels", + "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.", + "editType": "colorbars" + }, + "thickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 30, + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "editType": "colorbars" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "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.", + "editType": "colorbars" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "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.", + "editType": "colorbars" + }, + "x": { + "valType": "number", + "dflt": 1.02, + "min": -2, + "max": 3, + "role": "style", + "description": "Sets the x position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "style", + "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.", + "editType": "colorbars" + }, + "xpad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the x direction.", + "editType": "colorbars" + }, + "y": { + "valType": "number", + "role": "style", + "dflt": 0.5, + "min": -2, + "max": 3, + "description": "Sets the y position of the color bar (in plot fraction).", + "editType": "colorbars" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "role": "style", + "dflt": "middle", + "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.", + "editType": "colorbars" + }, + "ypad": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 10, + "description": "Sets the amount of padding (in px) along the y direction.", + "editType": "colorbars" + }, + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "outlinewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the width (in px) of the axis line." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the axis line color." + }, + "borderwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 0, + "description": "Sets the width (in px) or the border enclosing this color bar.", + "editType": "colorbars" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "description": "Sets the color of padded area.", + "editType": "colorbars" + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "colorbars", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "colorbars", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "colorbars", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "colorbars", + "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": "" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "colorbars", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "colorbars", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "colorbars", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "colorbars", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "colorbars", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "colorbars" + }, + { + "valType": "any", + "editType": "colorbars" + } + ], + "editType": "colorbars", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "colorbars", + "name": { + "valType": "string", + "role": "style", + "editType": "colorbars", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "colorbars", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "colorbars", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "colorbars", + "description": "If \"true\", even 4-digit integers are separated" + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "colorbars", + "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." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "colorbars", + "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." + }, + "title": { + "valType": "string", + "role": "info", + "description": "Sets the title of the color bar.", + "editType": "colorbars" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "colorbars" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "colorbars" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "colorbars" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "role": "object" + }, + "titleside": { + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ], + "role": "style", + "dflt": "top", + "description": "Determines the location of the colorbar title with respect to the color bar.", + "editType": "colorbars" + }, + "editType": "colorbars", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "opacity": { + "valType": "number", + "arrayOk": true, + "dflt": 1, + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the opacity of the bars." + }, + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + } + }, + "selected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of selected points." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of selected points." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of selected points." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "unselected": { + "marker": { + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "role": "style", + "editType": "style", + "description": "Sets the marker opacity of unselected points, applied only when a selection exists." + }, + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the marker color of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "textfont": { + "color": { + "valType": "color", + "role": "style", + "editType": "style", + "description": "Sets the text font color of unselected points, applied only when a selection exists." + }, + "editType": "style", + "role": "object" + }, + "editType": "style", + "role": "object" + }, + "subplot": { + "valType": "subplotid", + "role": "info", + "dflt": "polar", + "editType": "calc", + "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." + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "rsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for r .", + "editType": "none" + }, + "thetasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for theta .", + "editType": "none" + }, + "basesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for base .", + "editType": "none" + }, + "offsetsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for offset .", + "editType": "none" + }, + "widthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for width .", + "editType": "none" + }, + "textsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for text .", + "editType": "none" + } + }, + "layoutAttributes": { + "barmode": { + "valType": "enumerated", + "values": [ + "stack", + "overlay" + ], + "dflt": "stack", + "role": "info", + "editType": "calc", + "description": "Determines how bars at the same location coordinate are displayed on the graph. With *stack*, the bars are stacked on top of one another With *overlay*, the bars are plotted over one another, you might need to an *opacity* to see multiple bars." + }, + "bargap": { + "valType": "number", + "dflt": 0.1, + "min": 0, + "max": 1, + "role": "style", + "editType": "calc", + "description": "Sets the gap between bars of adjacent location coordinates. Values are unitless, they represent fractions of the minimum difference in bar positions in the data." + } + } + }, + "area": { + "meta": {}, + "attributes": { + "type": "area", + "visible": { + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ], + "role": "info", + "dflt": true, + "editType": "calc", + "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)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "style", + "description": "Determines whether or not an item corresponding to this trace is shown in the legend." + }, + "legendgroup": { + "valType": "string", + "role": "info", + "dflt": "", + "editType": "style", + "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items." + }, + "opacity": { + "valType": "number", + "role": "style", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "style", + "description": "Sets the opacity of the trace." + }, + "name": { + "valType": "string", + "role": "info", + "editType": "style", + "description": "Sets the trace name. The trace name appear as the legend item and on hover." + }, + "uid": { + "valType": "string", + "role": "info", + "editType": "plot" + }, + "ids": { + "valType": "data_array", + "editType": "calc", + "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.", + "role": "data" + }, + "customdata": { + "valType": "data_array", + "editType": "calc", + "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", + "role": "data" + }, + "selectedpoints": { + "valType": "any", + "role": "info", + "editType": "calc", + "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." + }, + "hoverinfo": { + "valType": "flaglist", + "role": "info", + "flags": [ + "x", + "y", + "z", + "text", + "name" + ], + "extras": [ + "all", + "none", + "skip" + ], + "arrayOk": true, + "dflt": "all", + "editType": "none", + "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." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the background color of the hover labels for this trace" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "arrayOk": true, + "editType": "none", + "description": "Sets the border color of the hover labels for this trace." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "arrayOk": true + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "arrayOk": true + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none", + "arrayOk": true + }, + "editType": "none", + "description": "Sets the font used in hover labels.", + "role": "object", + "familysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for family .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + } + }, + "namelength": { + "valType": "integer", + "min": -1, + "arrayOk": true, + "role": "style", + "editType": "none", + "description": "Sets the length (in number of characters) of the trace name in the hover labels for this trace. -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." + }, + "editType": "calc", + "role": "object", + "bgcolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bgcolor .", + "editType": "none" + }, + "bordercolorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for bordercolor .", + "editType": "none" + }, + "namelengthsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for namelength .", + "editType": "none" + } + }, + "stream": { + "token": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "editType": "calc", + "description": "The stream id number links a data trace on a plot with a stream. See https://plot.ly/settings for more details." + }, + "maxpoints": { + "valType": "number", + "min": 0, + "max": 10000, + "dflt": 500, + "role": "info", + "editType": "calc", + "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." + }, + "editType": "calc", + "role": "object" + }, + "transforms": { + "items": { + "transform": { + "editType": "calc", + "description": "An array of operations that manipulate the trace data, for example filtering or sorting the data arrays.", + "role": "object" + } + }, + "role": "object" + }, + "r": { + "valType": "data_array", + "editType": "calc", + "description": "Area traces are deprecated! Please switch to the *barpolar* trace type. Sets the radial coordinates for legacy polar chart only.", + "role": "data" + }, + "t": { + "valType": "data_array", + "editType": "calc", + "description": "Area traces are deprecated! Please switch to the *barpolar* trace type. Sets the angular coordinates for legacy polar chart only.", + "role": "data" + }, + "marker": { + "color": { + "valType": "color", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Area traces are deprecated! Please switch to the *barpolar* trace type. Sets themarkercolor. 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." + }, + "size": { + "valType": "number", + "min": 0, + "dflt": 6, + "arrayOk": true, + "role": "style", + "editType": "calc", + "description": "Area traces are deprecated! Please switch to the *barpolar* trace type. Sets the marker size (in px)." + }, + "symbol": { + "valType": "enumerated", + "values": [ + 0, + "circle", + 100, + "circle-open", + 200, + "circle-dot", + 300, + "circle-open-dot", + 1, + "square", + 101, + "square-open", + 201, + "square-dot", + 301, + "square-open-dot", + 2, + "diamond", + 102, + "diamond-open", + 202, + "diamond-dot", + 302, + "diamond-open-dot", + 3, + "cross", + 103, + "cross-open", + 203, + "cross-dot", + 303, + "cross-open-dot", + 4, + "x", + 104, + "x-open", + 204, + "x-dot", + 304, + "x-open-dot", + 5, + "triangle-up", + 105, + "triangle-up-open", + 205, + "triangle-up-dot", + 305, + "triangle-up-open-dot", + 6, + "triangle-down", + 106, + "triangle-down-open", + 206, + "triangle-down-dot", + 306, + "triangle-down-open-dot", + 7, + "triangle-left", + 107, + "triangle-left-open", + 207, + "triangle-left-dot", + 307, + "triangle-left-open-dot", + 8, + "triangle-right", + 108, + "triangle-right-open", + 208, + "triangle-right-dot", + 308, + "triangle-right-open-dot", + 9, + "triangle-ne", + 109, + "triangle-ne-open", + 209, + "triangle-ne-dot", + 309, + "triangle-ne-open-dot", + 10, + "triangle-se", + 110, + "triangle-se-open", + 210, + "triangle-se-dot", + 310, + "triangle-se-open-dot", + 11, + "triangle-sw", + 111, + "triangle-sw-open", + 211, + "triangle-sw-dot", + 311, + "triangle-sw-open-dot", + 12, + "triangle-nw", + 112, + "triangle-nw-open", + 212, + "triangle-nw-dot", + 312, + "triangle-nw-open-dot", + 13, + "pentagon", + 113, + "pentagon-open", + 213, + "pentagon-dot", + 313, + "pentagon-open-dot", + 14, + "hexagon", + 114, + "hexagon-open", + 214, + "hexagon-dot", + 314, + "hexagon-open-dot", + 15, + "hexagon2", + 115, + "hexagon2-open", + 215, + "hexagon2-dot", + 315, + "hexagon2-open-dot", + 16, + "octagon", + 116, + "octagon-open", + 216, + "octagon-dot", + 316, + "octagon-open-dot", + 17, + "star", + 117, + "star-open", + 217, + "star-dot", + 317, + "star-open-dot", + 18, + "hexagram", + 118, + "hexagram-open", + 218, + "hexagram-dot", + 318, + "hexagram-open-dot", + 19, + "star-triangle-up", + 119, + "star-triangle-up-open", + 219, + "star-triangle-up-dot", + 319, + "star-triangle-up-open-dot", + 20, + "star-triangle-down", + 120, + "star-triangle-down-open", + 220, + "star-triangle-down-dot", + 320, + "star-triangle-down-open-dot", + 21, + "star-square", + 121, + "star-square-open", + 221, + "star-square-dot", + 321, + "star-square-open-dot", + 22, + "star-diamond", + 122, + "star-diamond-open", + 222, + "star-diamond-dot", + 322, + "star-diamond-open-dot", + 23, + "diamond-tall", + 123, + "diamond-tall-open", + 223, + "diamond-tall-dot", + 323, + "diamond-tall-open-dot", + 24, + "diamond-wide", + 124, + "diamond-wide-open", + 224, + "diamond-wide-dot", + 324, + "diamond-wide-open-dot", + 25, + "hourglass", + 125, + "hourglass-open", + 26, + "bowtie", + 126, + "bowtie-open", + 27, + "circle-cross", + 127, + "circle-cross-open", + 28, + "circle-x", + 128, + "circle-x-open", + 29, + "square-cross", + 129, + "square-cross-open", + 30, + "square-x", + 130, + "square-x-open", + 31, + "diamond-cross", + 131, + "diamond-cross-open", + 32, + "diamond-x", + 132, + "diamond-x-open", + 33, + "cross-thin", + 133, + "cross-thin-open", + 34, + "x-thin", + 134, + "x-thin-open", + 35, + "asterisk", + 135, + "asterisk-open", + 36, + "hash", + 136, + "hash-open", + 236, + "hash-dot", + 336, + "hash-open-dot", + 37, + "y-up", + 137, + "y-up-open", + 38, + "y-down", + 138, + "y-down-open", + 39, + "y-left", + 139, + "y-left-open", + 40, + "y-right", + 140, + "y-right-open", + 41, + "line-ew", + 141, + "line-ew-open", + 42, + "line-ns", + 142, + "line-ns-open", + 43, + "line-ne", + 143, + "line-ne-open", + 44, + "line-nw", + 144, + "line-nw-open" + ], + "dflt": "circle", + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Area traces are deprecated! Please switch to the *barpolar* trace type. 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." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "arrayOk": true, + "role": "style", + "editType": "style", + "description": "Area traces are deprecated! Please switch to the *barpolar* trace type. Sets the marker opacity." + }, + "editType": "calc", + "role": "object", + "colorsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for color .", + "editType": "none" + }, + "sizesrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for size .", + "editType": "none" + }, + "symbolsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for symbol .", + "editType": "none" + }, + "opacitysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for opacity .", + "editType": "none" + } + }, + "idssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ids .", + "editType": "none" + }, + "customdatasrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for customdata .", + "editType": "none" + }, + "hoverinfosrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for hoverinfo .", + "editType": "none" + }, + "rsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for r .", + "editType": "none" + }, + "tsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for t .", + "editType": "none" + } + } + } + }, + "layout": { + "layoutAttributes": { + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "dflt": "\"Open Sans\", verdana, arial, sans-serif" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc", + "dflt": 12 + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc", + "dflt": "#444" + }, + "editType": "calc", + "description": "Sets the global font. Note that fonts used in traces and other layout components inherit from the global font.", + "role": "object" + }, + "title": { + "valType": "string", + "role": "info", + "editType": "layoutstyle", + "description": "Sets the plot's title." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "layoutstyle", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "layoutstyle" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "layoutstyle" + }, + "editType": "layoutstyle", + "description": "Sets the title font.", + "role": "object" + }, + "autosize": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "none", + "description": "Determines whether or not a layout width or height that has been left undefined by the user is initialized on each relayout. Note that, regardless of this attribute, an undefined layout width or height is always initialized on the first call to plot." + }, + "width": { + "valType": "number", + "role": "info", + "min": 10, + "dflt": 700, + "editType": "plot", + "description": "Sets the plot's width (in px)." + }, + "height": { + "valType": "number", + "role": "info", + "min": 10, + "dflt": 450, + "editType": "plot", + "description": "Sets the plot's height (in px)." + }, + "margin": { + "l": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 80, + "editType": "plot", + "description": "Sets the left margin (in px)." + }, + "r": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 80, + "editType": "plot", + "description": "Sets the right margin (in px)." + }, + "t": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 100, + "editType": "plot", + "description": "Sets the top margin (in px)." + }, + "b": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 80, + "editType": "plot", + "description": "Sets the bottom margin (in px)." + }, + "pad": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 0, + "editType": "plot", + "description": "Sets the amount of padding (in px) between the plotting area and the axis lines" + }, + "autoexpand": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "paper_bgcolor": { + "valType": "color", + "role": "style", + "dflt": "#fff", + "editType": "plot", + "description": "Sets the color of paper where the graph is drawn." + }, + "plot_bgcolor": { + "valType": "color", + "role": "style", + "dflt": "#fff", + "editType": "layoutstyle", + "description": "Sets the color of plotting area in-between x and y axes." + }, + "separators": { + "valType": "string", + "role": "style", + "editType": "plot", + "description": "Sets the decimal and thousand separators. For example, *. * puts a '.' before decimals and a space between thousands. In English locales, dflt is *.,* but other locales may alter this default." + }, + "hidesources": { + "valType": "boolean", + "role": "info", + "dflt": false, + "editType": "plot", + "description": "Determines whether or not a text link citing the data source is placed at the bottom-right cored of the figure. Has only an effect only on graphs that have been generated via forked graphs from the plotly service (at https://plot.ly or on-premise)." + }, + "showlegend": { + "valType": "boolean", + "role": "info", + "editType": "legend", + "description": "Determines whether or not a legend is drawn. Default is `true` if there is a trace to show and any of these: a) Two or more traces would by default be shown in the legend. b) One pie trace is shown in the legend. c) One trace is explicitly given with `showlegend: true`." + }, + "colorway": { + "valType": "colorlist", + "dflt": [ + "#1f77b4", + "#ff7f0e", + "#2ca02c", + "#d62728", + "#9467bd", + "#8c564b", + "#e377c2", + "#7f7f7f", + "#bcbd22", + "#17becf" + ], + "role": "style", + "editType": "calc", + "description": "Sets the default trace colors." + }, + "datarevision": { + "valType": "any", + "role": "info", + "editType": "calc", + "description": "If provided, a changed value tells `Plotly.react` that one or more data arrays has changed. This way you can modify arrays in-place rather than making a complete new copy for an incremental change. If NOT provided, `Plotly.react` assumes that data arrays are being treated as immutable, thus any data array with a different identity from its predecessor contains new data." + }, + "template": { + "valType": "any", + "role": "info", + "editType": "calc", + "description": "Default attributes to be applied to the plot. Templates can be created from existing plots using `Plotly.makeTemplate`, or created manually. They should be objects with format: `{layout: layoutTemplate, data: {[type]: [traceTemplate, ...]}, ...}` `layoutTemplate` and `traceTemplate` are objects matching the attribute structure of `layout` and a data trace. Trace templates are applied cyclically to traces of each type. Container arrays (eg `annotations`) have special handling: An object ending in `defaults` (eg `annotationdefaults`) is applied to each array item. But if an item has a `templateitemname` key we look in the template array for an item with matching `name` and apply that instead. If no matching `name` is found we mark the item invisible. Any named template item not referenced is appended to the end of the array, so you can use this for a watermark annotation or a logo image, for example. To omit one of these items on the plot, make an item with matching `templateitemname` and `visible: false`." + }, + "clickmode": { + "valType": "flaglist", + "role": "info", + "flags": [ + "event", + "select" + ], + "dflt": "event", + "editType": "plot", + "extras": [ + "none" + ], + "description": "Determines the mode of single click interactions. *event* is the default value and emits the `plotly_click` event. In addition this mode emits the `plotly_selected` event in drag modes *lasso* and *select*, but with no event data attached (kept for compatibility reasons). The *select* flag enables selecting single data points via click. This mode also supports persistent selections, meaning that pressing Shift while clicking, adds to / subtracts from an existing selection. *select* with `hovermode`: *x* can be confusing, consider explicitly setting `hovermode`: *closest* when using this feature. Selection events are sent accordingly as long as *event* flag is set as well. When the *event* flag is missing, `plotly_click` and `plotly_selected` events are not fired." + }, + "dragmode": { + "valType": "enumerated", + "role": "info", + "values": [ + "zoom", + "pan", + "select", + "lasso", + "orbit", + "turntable" + ], + "dflt": "zoom", + "editType": "modebar", + "description": "Determines the mode of drag interactions. *select* and *lasso* apply only to scatter traces with markers or text. *orbit* and *turntable* apply only to 3D scenes." + }, + "hovermode": { + "valType": "enumerated", + "role": "info", + "values": [ + "x", + "y", + "closest", + false + ], + "editType": "modebar", + "description": "Determines the mode of hover interactions. If `clickmode` includes the *select* flag, `hovermode` defaults to *closest*. If `clickmode` lacks the *select* flag, it defaults to *x* or *y* (depending on the trace's `orientation` value) for plots based on cartesian coordinates. For anything else the default value is *closest*." + }, + "hoverdistance": { + "valType": "integer", + "min": -1, + "dflt": 20, + "role": "info", + "editType": "none", + "description": "Sets the default distance (in pixels) to look for data to add hover labels (-1 means no cutoff, 0 means no looking for data). This is only a real distance for hovering on point-like objects, like scatter points. For area-like objects (bars, scatter fills, etc) hovering is on inside the area and off outside, but these objects will not supersede hover on point-like objects in case of conflict." + }, + "spikedistance": { + "valType": "integer", + "min": -1, + "dflt": 20, + "role": "info", + "editType": "none", + "description": "Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no cutoff, 0 means no looking for data). As with hoverdistance, distance does not apply to area-like objects. In addition, some objects can be hovered on but will not generate spikelines, such as scatter fills." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "editType": "none", + "description": "Sets the background color of all hover labels on graph" + }, + "bordercolor": { + "valType": "color", + "role": "style", + "editType": "none", + "description": "Sets the border color of all hover labels on graph." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "none", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "dflt": "Arial, sans-serif" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "none", + "dflt": 13 + }, + "color": { + "valType": "color", + "role": "style", + "editType": "none" + }, + "editType": "none", + "description": "Sets the default hover label font used by all traces on the graph.", + "role": "object" + }, + "namelength": { + "valType": "integer", + "min": -1, + "dflt": 15, + "role": "style", + "editType": "none", + "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." + }, + "editType": "none", + "role": "object" + }, + "selectdirection": { + "valType": "enumerated", + "role": "info", + "values": [ + "h", + "v", + "d", + "any" + ], + "dflt": "any", + "description": "When \"dragmode\" is set to \"select\", this limits the selection of the drag to horizontal, vertical or diagonal. \"h\" only allows horizontal selection, \"v\" only vertical, \"d\" only diagonal and \"any\" sets no limit.", + "editType": "none" + }, + "grid": { + "rows": { + "valType": "integer", + "min": 1, + "role": "info", + "editType": "plot", + "description": "The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots." + }, + "roworder": { + "valType": "enumerated", + "values": [ + "top to bottom", + "bottom to top" + ], + "dflt": "top to bottom", + "role": "info", + "editType": "plot", + "description": "Is the first row the top or the bottom? Note that columns are always enumerated from left to right." + }, + "columns": { + "valType": "integer", + "min": 1, + "role": "info", + "editType": "plot", + "description": "The number of columns in the grid. If you provide a 2D `subplots` array, the length of its longest row is used as the default. If you give an `xaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots." + }, + "subplots": { + "valType": "info_array", + "freeLength": true, + "dimensions": 2, + "items": { + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?$/", + "" + ], + "editType": "plot" + }, + "role": "info", + "editType": "plot", + "description": "Used for freeform grids, where some axes may be shared across subplots but others are not. Each entry should be a cartesian subplot id, like *xy* or *x3y2*, or ** to leave that cell empty. You may reuse x axes within the same column, and y axes within the same row. Non-cartesian subplots and traces that support `domain` can place themselves in this grid separately using the `gridcell` attribute." + }, + "xaxes": { + "valType": "info_array", + "freeLength": true, + "items": { + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?$/", + "" + ], + "editType": "plot" + }, + "role": "info", + "editType": "plot", + "description": "Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an x axis id like *x*, *x2*, etc., or ** to not put an x axis in that column. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `yaxes` is present, will generate consecutive IDs." + }, + "yaxes": { + "valType": "info_array", + "freeLength": true, + "items": { + "valType": "enumerated", + "values": [ + "/^y([2-9]|[1-9][0-9]+)?$/", + "" + ], + "editType": "plot" + }, + "role": "info", + "editType": "plot", + "description": "Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an y axis id like *y*, *y2*, etc., or ** to not put a y axis in that row. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `xaxes` is present, will generate consecutive IDs." + }, + "pattern": { + "valType": "enumerated", + "values": [ + "independent", + "coupled" + ], + "dflt": "coupled", + "role": "info", + "editType": "plot", + "description": "If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`, we can generate defaults using consecutive axis IDs, in two ways: *coupled* gives one x axis per column and one y axis per row. *independent* uses a new xy pair for each cell, left-to-right across each row then iterating rows according to `roworder`." + }, + "xgap": { + "valType": "number", + "min": 0, + "max": 1, + "role": "info", + "editType": "plot", + "description": "Horizontal space between grid cells, expressed as a fraction of the total width available to one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids." + }, + "ygap": { + "valType": "number", + "min": 0, + "max": 1, + "role": "info", + "editType": "plot", + "description": "Vertical space between grid cells, expressed as a fraction of the total height available to one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids." + }, + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "editType": "plot", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges." + }, + "y": { + "valType": "info_array", + "role": "info", + "editType": "plot", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges." + }, + "editType": "plot", + "role": "object" + }, + "xside": { + "valType": "enumerated", + "values": [ + "bottom", + "bottom plot", + "top plot", + "top" + ], + "dflt": "bottom plot", + "role": "info", + "editType": "plot", + "description": "Sets where the x axis labels and titles go. *bottom* means the very bottom of the grid. *bottom plot* is the lowest plot that each x axis is used in. *top* and *top plot* are similar." + }, + "yside": { + "valType": "enumerated", + "values": [ + "left", + "left plot", + "right plot", + "right" + ], + "dflt": "left plot", + "role": "info", + "editType": "plot", + "description": "Sets where the y axis labels and titles go. *left* means the very left edge of the grid. *left plot* is the leftmost plot that each y axis is used in. *right* and *right plot* are similar." + }, + "editType": "plot", + "role": "object" + }, + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the default calendar system to use for interpreting and displaying dates throughout the plot." + }, + "xaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "ticks", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "title": { + "valType": "string", + "role": "info", + "editType": "ticks", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "ticks", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "ticks" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "ticks" + }, + "editType": "ticks", + "description": "Sets this axis' title font.", + "role": "object" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "log", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "calc", + "_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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "info", + "editType": "axrange", + "impliedEdits": {}, + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "info", + "editType": "plot", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "axrange", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "axrange", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "axrange", + "impliedEdits": { + "autorange": false + }, + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "fixedrange": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled." + }, + "scaleanchor": { + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?$/", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "plot", + "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`." + }, + "scaleratio": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "info", + "editType": "plot", + "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." + }, + "constrain": { + "valType": "enumerated", + "values": [ + "range", + "domain" + ], + "dflt": "range", + "role": "info", + "editType": "plot", + "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range* (default), or by decreasing the *domain*." + }, + "constraintoward": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right", + "top", + "middle", + "bottom" + ], + "role": "info", + "editType": "plot", + "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "ticks", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "ticks", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "ticks", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "ticks", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "ticks", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "ticks", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "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." + }, + "mirror": { + "valType": "enumerated", + "values": [ + true, + "ticks", + false, + "all", + "allticks" + ], + "dflt": false, + "role": "style", + "editType": "ticks+layoutstyle", + "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "ticks", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "ticks", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "ticks", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "ticks", + "description": "Determines whether or not the tick labels are drawn." + }, + "automargin": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "ticks", + "description": "Determines whether long tick labels automatically grow the figure margins." + }, + "showspikes": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "modebar", + "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest" + }, + "spikecolor": { + "valType": "color", + "dflt": null, + "role": "style", + "editType": "none", + "description": "Sets the spike color. If undefined, will use the series color" + }, + "spikethickness": { + "valType": "number", + "dflt": 3, + "role": "style", + "editType": "none", + "description": "Sets the width (in px) of the zero line." + }, + "spikedash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "dash", + "role": "style", + "editType": "none", + "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*)." + }, + "spikemode": { + "valType": "flaglist", + "flags": [ + "toaxis", + "across", + "marker" + ], + "role": "style", + "dflt": "toaxis", + "editType": "none", + "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" + }, + "spikesnap": { + "valType": "enumerated", + "values": [ + "data", + "cursor" + ], + "dflt": "data", + "role": "style", + "editType": "none", + "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "ticks", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "ticks" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "ticks" + }, + "editType": "ticks", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "ticks", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "ticks", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "ticks", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "ticks", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "ticks", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "ticks", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "ticks", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "ticks" + }, + { + "valType": "any", + "editType": "ticks" + } + ], + "editType": "ticks", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "ticks", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "none", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "ticks+layoutstyle", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "layoutstyle", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "ticks+layoutstyle", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "ticks", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "ticks", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "ticks", + "description": "Sets the width (in px) of the grid lines." + }, + "zeroline": { + "valType": "boolean", + "role": "style", + "editType": "ticks", + "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines." + }, + "zerolinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "ticks", + "description": "Sets the line color of the zero line." + }, + "zerolinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "ticks", + "description": "Sets the width (in px) of the zero line." + }, + "anchor": { + "valType": "enumerated", + "values": [ + "free", + "/^x([2-9]|[1-9][0-9]+)?$/", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "plot", + "description": "If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`." + }, + "side": { + "valType": "enumerated", + "values": [ + "top", + "bottom", + "left", + "right" + ], + "role": "info", + "editType": "plot", + "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area." + }, + "overlaying": { + "valType": "enumerated", + "values": [ + "free", + "/^x([2-9]|[1-9][0-9]+)?$/", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "plot", + "description": "If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis. If *false*, this axis does not overlay any same-letter axes." + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "domain": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "description": "Sets the domain of this axis (in plot fraction)." + }, + "position": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0, + "role": "style", + "editType": "plot", + "description": "Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "calc", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "editType": "calc", + "_deprecated": { + "autotick": { + "valType": "boolean", + "role": "info", + "editType": "ticks", + "description": "Obsolete. Set `tickmode` to *auto* for old `autotick` *true* behavior. Set `tickmode` to *linear* for `autotick` *false*." + } + }, + "rangeslider": { + "bgcolor": { + "valType": "color", + "dflt": "#fff", + "role": "style", + "editType": "plot", + "description": "Sets the background color of the range slider." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the border color of the range slider." + }, + "borderwidth": { + "valType": "integer", + "dflt": 0, + "min": 0, + "role": "style", + "editType": "plot", + "description": "Sets the border color of the range slider." + }, + "autorange": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "impliedEdits": {}, + "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*." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "calc", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "calc", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "calc", + "impliedEdits": { + "autorange": false + }, + "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." + }, + "thickness": { + "valType": "number", + "dflt": 0.15, + "min": 0, + "max": 1, + "role": "style", + "editType": "plot", + "description": "The height of the range slider as a fraction of the total plot area height." + }, + "visible": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`" + }, + "editType": "calc", + "yaxis": { + "_isSubplotObj": true, + "rangemode": { + "valType": "enumerated", + "values": [ + "auto", + "fixed", + "match" + ], + "dflt": "match", + "role": "style", + "editType": "calc", + "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." + }, + "range": { + "valType": "info_array", + "role": "style", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "description": "Sets the range of this axis for the rangeslider." + }, + "editType": "calc", + "role": "object" + }, + "role": "object" + }, + "rangeselector": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "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*." + }, + "buttons": { + "items": { + "button": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this button is visible." + }, + "step": { + "valType": "enumerated", + "role": "info", + "values": [ + "month", + "year", + "day", + "hour", + "minute", + "second", + "all" + ], + "dflt": "month", + "editType": "plot", + "description": "The unit of measurement that the `count` value will set the range by." + }, + "stepmode": { + "valType": "enumerated", + "role": "info", + "values": [ + "backward", + "todate" + ], + "dflt": "backward", + "editType": "plot", + "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." + }, + "count": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 1, + "editType": "plot", + "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval." + }, + "label": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the text label to appear on the button." + }, + "editType": "plot", + "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "x": { + "valType": "number", + "min": -2, + "max": 3, + "role": "style", + "editType": "plot", + "description": "Sets the x position (in normalized coordinates) of the range selector." + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ], + "dflt": "left", + "role": "info", + "editType": "plot", + "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." + }, + "y": { + "valType": "number", + "min": -2, + "max": 3, + "role": "style", + "editType": "plot", + "description": "Sets the y position (in normalized coordinates) of the range selector." + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ], + "dflt": "bottom", + "role": "info", + "editType": "plot", + "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." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the font of the range selector button text.", + "role": "object" + }, + "bgcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "plot", + "description": "Sets the background color of the range selector buttons." + }, + "activecolor": { + "valType": "color", + "role": "style", + "editType": "plot", + "description": "Sets the background color of the active range selector button." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the color of the border enclosing the range selector." + }, + "borderwidth": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the border enclosing the range selector." + }, + "editType": "plot", + "role": "object" + }, + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`" + }, + "_isSubplotObj": true, + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + }, + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + } + }, + "yaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "ticks", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "title": { + "valType": "string", + "role": "info", + "editType": "ticks", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "ticks", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "ticks" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "ticks" + }, + "editType": "ticks", + "description": "Sets this axis' title font.", + "role": "object" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "log", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "calc", + "_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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "info", + "editType": "axrange", + "impliedEdits": {}, + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "info", + "editType": "plot", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "axrange", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "axrange", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "axrange", + "impliedEdits": { + "autorange": false + }, + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "fixedrange": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled." + }, + "scaleanchor": { + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?$/", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "plot", + "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`." + }, + "scaleratio": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "info", + "editType": "plot", + "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." + }, + "constrain": { + "valType": "enumerated", + "values": [ + "range", + "domain" + ], + "dflt": "range", + "role": "info", + "editType": "plot", + "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range* (default), or by decreasing the *domain*." + }, + "constraintoward": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right", + "top", + "middle", + "bottom" + ], + "role": "info", + "editType": "plot", + "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "ticks", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "ticks", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "ticks", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "ticks", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "ticks", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "ticks", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "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." + }, + "mirror": { + "valType": "enumerated", + "values": [ + true, + "ticks", + false, + "all", + "allticks" + ], + "dflt": false, + "role": "style", + "editType": "ticks+layoutstyle", + "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "ticks", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "ticks", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "ticks", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "ticks", + "description": "Determines whether or not the tick labels are drawn." + }, + "automargin": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "ticks", + "description": "Determines whether long tick labels automatically grow the figure margins." + }, + "showspikes": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "modebar", + "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest" + }, + "spikecolor": { + "valType": "color", + "dflt": null, + "role": "style", + "editType": "none", + "description": "Sets the spike color. If undefined, will use the series color" + }, + "spikethickness": { + "valType": "number", + "dflt": 3, + "role": "style", + "editType": "none", + "description": "Sets the width (in px) of the zero line." + }, + "spikedash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "dash", + "role": "style", + "editType": "none", + "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*)." + }, + "spikemode": { + "valType": "flaglist", + "flags": [ + "toaxis", + "across", + "marker" + ], + "role": "style", + "dflt": "toaxis", + "editType": "none", + "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" + }, + "spikesnap": { + "valType": "enumerated", + "values": [ + "data", + "cursor" + ], + "dflt": "data", + "role": "style", + "editType": "none", + "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "ticks", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "ticks" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "ticks" + }, + "editType": "ticks", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "ticks", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "ticks", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "ticks", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "ticks", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "ticks", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "ticks", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "ticks", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "ticks" + }, + { + "valType": "any", + "editType": "ticks" + } + ], + "editType": "ticks", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "ticks", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "ticks", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "none", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "ticks+layoutstyle", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "layoutstyle", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "ticks+layoutstyle", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "ticks", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "ticks", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "ticks", + "description": "Sets the width (in px) of the grid lines." + }, + "zeroline": { + "valType": "boolean", + "role": "style", + "editType": "ticks", + "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines." + }, + "zerolinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "ticks", + "description": "Sets the line color of the zero line." + }, + "zerolinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "ticks", + "description": "Sets the width (in px) of the zero line." + }, + "anchor": { + "valType": "enumerated", + "values": [ + "free", + "/^x([2-9]|[1-9][0-9]+)?$/", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "plot", + "description": "If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`." + }, + "side": { + "valType": "enumerated", + "values": [ + "top", + "bottom", + "left", + "right" + ], + "role": "info", + "editType": "plot", + "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area." + }, + "overlaying": { + "valType": "enumerated", + "values": [ + "free", + "/^x([2-9]|[1-9][0-9]+)?$/", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "plot", + "description": "If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis. If *false*, this axis does not overlay any same-letter axes." + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "domain": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "description": "Sets the domain of this axis (in plot fraction)." + }, + "position": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0, + "role": "style", + "editType": "plot", + "description": "Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "calc", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "editType": "calc", + "_deprecated": { + "autotick": { + "valType": "boolean", + "role": "info", + "editType": "ticks", + "description": "Obsolete. Set `tickmode` to *auto* for old `autotick` *true* behavior. Set `tickmode` to *linear* for `autotick` *false*." + } + }, + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`" + }, + "_isSubplotObj": true, + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + }, + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + } + }, + "ternary": { + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this ternary subplot (in plot fraction).", + "editType": "plot" + }, + "y": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this ternary subplot (in plot fraction).", + "editType": "plot" + }, + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this row in the grid for this ternary subplot .", + "editType": "plot" + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this column in the grid for this ternary subplot .", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "#fff", + "description": "Set the background color of the subplot", + "editType": "plot" + }, + "sum": { + "valType": "number", + "role": "info", + "dflt": 1, + "min": 0, + "description": "The number each triplet should sum to, and the maximum range of each axis", + "editType": "plot" + }, + "aaxis": { + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 1, + "dflt": 6, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "dflt": true + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "min": { + "valType": "number", + "dflt": 0, + "role": "info", + "min": 0, + "description": "The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero.", + "editType": "plot" + }, + "editType": "plot", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "baxis": { + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 1, + "dflt": 6, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "dflt": true + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "min": { + "valType": "number", + "dflt": 0, + "role": "info", + "min": 0, + "description": "The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero.", + "editType": "plot" + }, + "editType": "plot", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "caxis": { + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 1, + "dflt": 6, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "dflt": true + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "min": { + "valType": "number", + "dflt": 0, + "role": "info", + "min": 0, + "description": "The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero.", + "editType": "plot" + }, + "editType": "plot", + "role": "object", + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "editType": "plot", + "_isSubplotObj": true, + "role": "object" + }, + "scene": { + "_arrayAttrRegexps": [ + {} + ], + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(0,0,0,0)", + "editType": "plot" + }, + "camera": { + "up": { + "x": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "camera" + }, + "y": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "camera" + }, + "z": { + "valType": "number", + "role": "info", + "dflt": 1, + "editType": "camera" + }, + "editType": "camera", + "description": "Sets the (x,y,z) components of the 'up' camera vector. This vector determines the up direction of this scene with respect to the page. The default is *{x: 0, y: 0, z: 1}* which means that the z axis points up.", + "role": "object" + }, + "center": { + "x": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "camera" + }, + "y": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "camera" + }, + "z": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "camera" + }, + "editType": "camera", + "description": "Sets the (x,y,z) components of the 'center' camera vector This vector determines the translation (x,y,z) space about the center of this scene. By default, there is no such translation.", + "role": "object" + }, + "eye": { + "x": { + "valType": "number", + "role": "info", + "dflt": 1.25, + "editType": "camera" + }, + "y": { + "valType": "number", + "role": "info", + "dflt": 1.25, + "editType": "camera" + }, + "z": { + "valType": "number", + "role": "info", + "dflt": 1.25, + "editType": "camera" + }, + "editType": "camera", + "description": "Sets the (x,y,z) components of the 'eye' camera vector. This vector determines the view point about the origin of this scene.", + "role": "object" + }, + "editType": "camera", + "role": "object" + }, + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "editType": "plot", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this scene subplot (in plot fraction)." + }, + "y": { + "valType": "info_array", + "role": "info", + "editType": "plot", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this scene subplot (in plot fraction)." + }, + "editType": "plot", + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "plot", + "description": "If there is a layout grid, use the domain for this row in the grid for this scene subplot ." + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "plot", + "description": "If there is a layout grid, use the domain for this column in the grid for this scene subplot ." + }, + "role": "object" + }, + "aspectmode": { + "valType": "enumerated", + "role": "info", + "values": [ + "auto", + "cube", + "data", + "manual" + ], + "dflt": "auto", + "editType": "plot", + "impliedEdits": {}, + "description": "If *cube*, this scene's axes are drawn as a cube, regardless of the axes' ranges. If *data*, this scene's axes are drawn in proportion with the axes' ranges. If *manual*, this scene's axes are drawn in proportion with the input of *aspectratio* (the default behavior if *aspectratio* is provided). If *auto*, this scene's axes are drawn using the results of *data* except when one axis is more than four times the size of the two others, where in that case the results of *cube* are used." + }, + "aspectratio": { + "x": { + "valType": "number", + "role": "info", + "min": 0, + "editType": "plot", + "impliedEdits": { + "^aspectmode": "manual" + } + }, + "y": { + "valType": "number", + "role": "info", + "min": 0, + "editType": "plot", + "impliedEdits": { + "^aspectmode": "manual" + } + }, + "z": { + "valType": "number", + "role": "info", + "min": 0, + "editType": "plot", + "impliedEdits": { + "^aspectmode": "manual" + } + }, + "editType": "plot", + "impliedEdits": { + "aspectmode": "manual", + "role": "object" + }, + "description": "Sets this scene's axis aspectratio.", + "role": "object" + }, + "xaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false" + }, + "showspikes": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not spikes starting from data points to this axis' wall are shown on hover.", + "editType": "plot" + }, + "spikesides": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover.", + "editType": "plot" + }, + "spikethickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 2, + "description": "Sets the thickness (in px) of the spikes.", + "editType": "plot" + }, + "spikecolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets the color of the spikes.", + "editType": "plot" + }, + "showbackground": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not this axis' wall has a background color.", + "editType": "plot" + }, + "backgroundcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(204, 204, 204, 0.5)", + "description": "Sets the background color of this axis' wall.", + "editType": "plot" + }, + "showaxeslabels": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not this axis is labeled", + "editType": "plot" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "plot", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "plot", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "log", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "plot", + "_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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "info", + "editType": "plot", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "plot", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "plot", + "impliedEdits": { + "autorange": false + }, + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "mirror": { + "valType": "enumerated", + "values": [ + true, + "ticks", + false, + "all", + "allticks" + ], + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "gridcolor": { + "valType": "color", + "dflt": "rgb(204, 204, 204)", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "zeroline": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines." + }, + "zerolinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the line color of the zero line." + }, + "zerolinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the zero line." + }, + "editType": "plot", + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`" + }, + "role": "object", + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + }, + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "yaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false" + }, + "showspikes": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not spikes starting from data points to this axis' wall are shown on hover.", + "editType": "plot" + }, + "spikesides": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover.", + "editType": "plot" + }, + "spikethickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 2, + "description": "Sets the thickness (in px) of the spikes.", + "editType": "plot" + }, + "spikecolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets the color of the spikes.", + "editType": "plot" + }, + "showbackground": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not this axis' wall has a background color.", + "editType": "plot" + }, + "backgroundcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(204, 204, 204, 0.5)", + "description": "Sets the background color of this axis' wall.", + "editType": "plot" + }, + "showaxeslabels": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not this axis is labeled", + "editType": "plot" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "plot", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "plot", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "log", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "plot", + "_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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "info", + "editType": "plot", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "plot", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "plot", + "impliedEdits": { + "autorange": false + }, + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "mirror": { + "valType": "enumerated", + "values": [ + true, + "ticks", + false, + "all", + "allticks" + ], + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "gridcolor": { + "valType": "color", + "dflt": "rgb(204, 204, 204)", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "zeroline": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines." + }, + "zerolinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the line color of the zero line." + }, + "zerolinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the zero line." + }, + "editType": "plot", + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`" + }, + "role": "object", + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + }, + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "zaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false" + }, + "showspikes": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not spikes starting from data points to this axis' wall are shown on hover.", + "editType": "plot" + }, + "spikesides": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover.", + "editType": "plot" + }, + "spikethickness": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 2, + "description": "Sets the thickness (in px) of the spikes.", + "editType": "plot" + }, + "spikecolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets the color of the spikes.", + "editType": "plot" + }, + "showbackground": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not this axis' wall has a background color.", + "editType": "plot" + }, + "backgroundcolor": { + "valType": "color", + "role": "style", + "dflt": "rgba(204, 204, 204, 0.5)", + "description": "Sets the background color of this axis' wall.", + "editType": "plot" + }, + "showaxeslabels": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Sets whether or not this axis is labeled", + "editType": "plot" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "plot", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "plot", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis." + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "log", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "plot", + "_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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "normal", + "tozero", + "nonnegative" + ], + "dflt": "normal", + "role": "info", + "editType": "plot", + "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." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "plot", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "plot", + "impliedEdits": { + "autorange": false + }, + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "mirror": { + "valType": "enumerated", + "values": [ + true, + "ticks", + false, + "all", + "allticks" + ], + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "showline": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark." + }, + "gridcolor": { + "valType": "color", + "dflt": "rgb(204, 204, 204)", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "zeroline": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines." + }, + "zerolinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the line color of the zero line." + }, + "zerolinewidth": { + "valType": "number", + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the zero line." + }, + "editType": "plot", + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`" + }, + "role": "object", + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + }, + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "dragmode": { + "valType": "enumerated", + "role": "info", + "values": [ + "orbit", + "turntable", + "zoom", + "pan", + false + ], + "dflt": "turntable", + "editType": "plot", + "description": "Determines the mode of drag interactions for this scene." + }, + "hovermode": { + "valType": "enumerated", + "role": "info", + "values": [ + "closest", + false + ], + "dflt": "closest", + "editType": "modebar", + "description": "Determines the mode of hover interactions for this scene." + }, + "editType": "plot", + "_deprecated": { + "cameraposition": { + "valType": "info_array", + "role": "info", + "editType": "camera", + "description": "Obsolete. Use `camera` instead." + } + }, + "annotations": { + "items": { + "annotation": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc", + "description": "Determines whether or not this annotation is visible." + }, + "x": { + "valType": "any", + "role": "info", + "description": "Sets the annotation's x position.", + "editType": "calc" + }, + "y": { + "valType": "any", + "role": "info", + "description": "Sets the annotation's y position.", + "editType": "calc" + }, + "z": { + "valType": "any", + "role": "info", + "description": "Sets the annotation's z position.", + "editType": "calc" + }, + "ax": { + "valType": "number", + "role": "info", + "description": "Sets the x component of the arrow tail about the arrow head (in pixels).", + "editType": "calc" + }, + "ay": { + "valType": "number", + "role": "info", + "description": "Sets the y component of the arrow tail about the arrow head (in pixels).", + "editType": "calc" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ], + "dflt": "auto", + "role": "info", + "editType": "calc", + "description": "Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side." + }, + "xshift": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels." + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ], + "dflt": "auto", + "role": "info", + "editType": "calc", + "description": "Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side." + }, + "yshift": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels." + }, + "text": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (
), bold (), italics (), hyperlinks (). Tags , , are also supported." + }, + "textangle": { + "valType": "angle", + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Sets the angle at which the `text` is drawn with respect to the horizontal." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the annotation text font.", + "role": "object" + }, + "width": { + "valType": "number", + "min": 1, + "dflt": null, + "role": "style", + "editType": "calc", + "description": "Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line." + }, + "height": { + "valType": "number", + "min": 1, + "dflt": null, + "role": "style", + "editType": "calc", + "description": "Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the opacity of the annotation (text + arrow)." + }, + "align": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "center", + "role": "style", + "editType": "calc", + "description": "Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans more two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width." + }, + "valign": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "dflt": "middle", + "role": "style", + "editType": "calc", + "description": "Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height." + }, + "bgcolor": { + "valType": "color", + "dflt": "rgba(0,0,0,0)", + "role": "style", + "editType": "calc", + "description": "Sets the background color of the annotation." + }, + "bordercolor": { + "valType": "color", + "dflt": "rgba(0,0,0,0)", + "role": "style", + "editType": "calc", + "description": "Sets the color of the border enclosing the annotation `text`." + }, + "borderpad": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the padding (in px) between the `text` and the enclosing border." + }, + "borderwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of the border enclosing the annotation `text`." + }, + "showarrow": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc", + "description": "Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided." + }, + "arrowcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the color of the annotation arrow." + }, + "arrowhead": { + "valType": "integer", + "min": 0, + "max": 8, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the end annotation arrow head style." + }, + "startarrowhead": { + "valType": "integer", + "min": 0, + "max": 8, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the start annotation arrow head style." + }, + "arrowside": { + "valType": "flaglist", + "flags": [ + "end", + "start" + ], + "extras": [ + "none" + ], + "dflt": "end", + "role": "style", + "editType": "calc", + "description": "Sets the annotation arrow head position." + }, + "arrowsize": { + "valType": "number", + "min": 0.3, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line." + }, + "startarrowsize": { + "valType": "number", + "min": 0.3, + "dflt": 1, + "role": "style", + "editType": "calc", + "description": "Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line." + }, + "arrowwidth": { + "valType": "number", + "min": 0.1, + "role": "style", + "editType": "calc", + "description": "Sets the width (in px) of annotation arrow line." + }, + "standoff": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount." + }, + "startstandoff": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc", + "description": "Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount." + }, + "hovertext": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent." + }, + "bordercolor": { + "valType": "color", + "role": "style", + "editType": "calc", + "description": "Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "calc" + }, + "editType": "calc", + "description": "Sets the hover label text font. By default uses the global hover font and size, with color from `hoverlabel.bordercolor`.", + "role": "object" + }, + "editType": "calc", + "role": "object" + }, + "captureevents": { + "valType": "boolean", + "role": "info", + "editType": "calc", + "description": "Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`." + }, + "name": { + "valType": "string", + "role": "style", + "editType": "calc", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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", + "role": "object" + } + }, + "role": "object" + }, + "_isSubplotObj": true, + "role": "object" + }, + "geo": { + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this geo subplot (in plot fraction). Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", + "editType": "plot" + }, + "y": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this geo subplot (in plot fraction). Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", + "editType": "plot" + }, + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this row in the grid for this geo subplot . Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", + "editType": "plot" + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this column in the grid for this geo subplot . Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "resolution": { + "valType": "enumerated", + "values": [ + 110, + 50 + ], + "role": "info", + "dflt": 110, + "coerceNumber": true, + "description": "Sets the resolution of the base layers. The values have units of km/mm e.g. 110 corresponds to a scale ratio of 1:110,000,000.", + "editType": "plot" + }, + "scope": { + "valType": "enumerated", + "role": "info", + "values": [ + "world", + "usa", + "europe", + "asia", + "africa", + "north america", + "south america" + ], + "dflt": "world", + "description": "Set the scope of the map.", + "editType": "plot" + }, + "projection": { + "type": { + "valType": "enumerated", + "role": "info", + "values": [ + "equirectangular", + "mercator", + "orthographic", + "natural earth", + "kavrayskiy7", + "miller", + "robinson", + "eckert4", + "azimuthal equal area", + "azimuthal equidistant", + "conic equal area", + "conic conformal", + "conic equidistant", + "gnomonic", + "stereographic", + "mollweide", + "hammer", + "transverse mercator", + "albers usa", + "winkel tripel", + "aitoff", + "sinusoidal" + ], + "description": "Sets the projection type.", + "editType": "plot" + }, + "rotation": { + "lon": { + "valType": "number", + "role": "info", + "description": "Rotates the map along parallels (in degrees East). Defaults to the center of the `lonaxis.range` values.", + "editType": "plot" + }, + "lat": { + "valType": "number", + "role": "info", + "description": "Rotates the map along meridians (in degrees North).", + "editType": "plot" + }, + "roll": { + "valType": "number", + "role": "info", + "description": "Roll the map (in degrees) For example, a roll of *180* makes the map appear upside down.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "parallels": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "editType": "plot" + }, + { + "valType": "number", + "editType": "plot" + } + ], + "description": "For conic projection types only. Sets the parallels (tangent, secant) where the cone intersects the sphere.", + "editType": "plot" + }, + "scale": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 1, + "description": "Zooms in or out on the map view. A scale of *1* corresponds to the largest zoom level that fits the map's lon and lat ranges. ", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "center": { + "lon": { + "valType": "number", + "role": "info", + "description": "Sets the longitude of the map's center. By default, the map's longitude center lies at the middle of the longitude range for scoped projection and above `projection.rotation.lon` otherwise.", + "editType": "plot" + }, + "lat": { + "valType": "number", + "role": "info", + "description": "Sets the latitude of the map's center. For all projection types, the map's latitude center lies at the middle of the latitude range by default.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "showcoastlines": { + "valType": "boolean", + "role": "info", + "description": "Sets whether or not the coastlines are drawn.", + "editType": "plot" + }, + "coastlinecolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets the coastline color.", + "editType": "plot" + }, + "coastlinewidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets the coastline stroke width (in px).", + "editType": "plot" + }, + "showland": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not land masses are filled in color.", + "editType": "plot" + }, + "landcolor": { + "valType": "color", + "role": "style", + "dflt": "#F0DC82", + "description": "Sets the land mass color.", + "editType": "plot" + }, + "showocean": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not oceans are filled in color.", + "editType": "plot" + }, + "oceancolor": { + "valType": "color", + "role": "style", + "dflt": "#3399FF", + "description": "Sets the ocean color", + "editType": "plot" + }, + "showlakes": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not lakes are drawn.", + "editType": "plot" + }, + "lakecolor": { + "valType": "color", + "role": "style", + "dflt": "#3399FF", + "description": "Sets the color of the lakes.", + "editType": "plot" + }, + "showrivers": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not rivers are drawn.", + "editType": "plot" + }, + "rivercolor": { + "valType": "color", + "role": "style", + "dflt": "#3399FF", + "description": "Sets color of the rivers.", + "editType": "plot" + }, + "riverwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets the stroke width (in px) of the rivers.", + "editType": "plot" + }, + "showcountries": { + "valType": "boolean", + "role": "info", + "description": "Sets whether or not country boundaries are drawn.", + "editType": "plot" + }, + "countrycolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets line color of the country boundaries.", + "editType": "plot" + }, + "countrywidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets line width (in px) of the country boundaries.", + "editType": "plot" + }, + "showsubunits": { + "valType": "boolean", + "role": "info", + "description": "Sets whether or not boundaries of subunits within countries (e.g. states, provinces) are drawn.", + "editType": "plot" + }, + "subunitcolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets the color of the subunits boundaries.", + "editType": "plot" + }, + "subunitwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets the stroke width (in px) of the subunits boundaries.", + "editType": "plot" + }, + "showframe": { + "valType": "boolean", + "role": "info", + "description": "Sets whether or not a frame is drawn around the map.", + "editType": "plot" + }, + "framecolor": { + "valType": "color", + "role": "style", + "dflt": "#444", + "description": "Sets the color the frame.", + "editType": "plot" + }, + "framewidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets the stroke width (in px) of the frame.", + "editType": "plot" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "#fff", + "description": "Set the background color of the map", + "editType": "plot" + }, + "lonaxis": { + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "editType": "plot" + }, + { + "valType": "number", + "editType": "plot" + } + ], + "description": "Sets the range of this axis (in degrees), sets the map's clipped coordinates.", + "editType": "plot" + }, + "showgrid": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not graticule are shown on the map.", + "editType": "plot" + }, + "tick0": { + "valType": "number", + "role": "info", + "description": "Sets the graticule's starting tick longitude/latitude.", + "editType": "plot" + }, + "dtick": { + "valType": "number", + "role": "info", + "description": "Sets the graticule's longitude/latitude tick step.", + "editType": "plot" + }, + "gridcolor": { + "valType": "color", + "role": "style", + "dflt": "#eee", + "description": "Sets the graticule's stroke color.", + "editType": "plot" + }, + "gridwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets the graticule's stroke width (in px).", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "lataxis": { + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "editType": "plot" + }, + { + "valType": "number", + "editType": "plot" + } + ], + "description": "Sets the range of this axis (in degrees), sets the map's clipped coordinates.", + "editType": "plot" + }, + "showgrid": { + "valType": "boolean", + "role": "info", + "dflt": false, + "description": "Sets whether or not graticule are shown on the map.", + "editType": "plot" + }, + "tick0": { + "valType": "number", + "role": "info", + "description": "Sets the graticule's starting tick longitude/latitude.", + "editType": "plot" + }, + "dtick": { + "valType": "number", + "role": "info", + "description": "Sets the graticule's longitude/latitude tick step.", + "editType": "plot" + }, + "gridcolor": { + "valType": "color", + "role": "style", + "dflt": "#eee", + "description": "Sets the graticule's stroke color.", + "editType": "plot" + }, + "gridwidth": { + "valType": "number", + "role": "style", + "min": 0, + "dflt": 1, + "description": "Sets the graticule's stroke width (in px).", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "editType": "plot", + "_isSubplotObj": true, + "role": "object" + }, + "mapbox": { + "_arrayAttrRegexps": [ + {} + ], + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this mapbox subplot (in plot fraction).", + "editType": "plot" + }, + "y": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this mapbox subplot (in plot fraction).", + "editType": "plot" + }, + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this row in the grid for this mapbox subplot .", + "editType": "plot" + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "description": "If there is a layout grid, use the domain for this column in the grid for this mapbox subplot .", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "accesstoken": { + "valType": "string", + "noBlank": true, + "strict": true, + "role": "info", + "description": "Sets the mapbox access token to be used for this mapbox map. Alternatively, the mapbox access token can be set in the configuration options under `mapboxAccessToken`.", + "editType": "plot" + }, + "style": { + "valType": "any", + "values": [ + "basic", + "streets", + "outdoors", + "light", + "dark", + "satellite", + "satellite-streets" + ], + "dflt": "basic", + "role": "style", + "description": "Sets the Mapbox map style. Either input one of the default Mapbox style names or the URL to a custom style or a valid Mapbox style JSON.", + "editType": "plot" + }, + "center": { + "lon": { + "valType": "number", + "dflt": 0, + "role": "info", + "description": "Sets the longitude of the center of the map (in degrees East).", + "editType": "plot" + }, + "lat": { + "valType": "number", + "dflt": 0, + "role": "info", + "description": "Sets the latitude of the center of the map (in degrees North).", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "zoom": { + "valType": "number", + "dflt": 1, + "role": "info", + "description": "Sets the zoom level of the map.", + "editType": "plot" + }, + "bearing": { + "valType": "number", + "dflt": 0, + "role": "info", + "description": "Sets the bearing angle of the map (in degrees counter-clockwise from North).", + "editType": "plot" + }, + "pitch": { + "valType": "number", + "dflt": 0, + "role": "info", + "description": "Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map).", + "editType": "plot" + }, + "layers": { + "items": { + "layer": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Determines whether this layer is displayed", + "editType": "plot" + }, + "sourcetype": { + "valType": "enumerated", + "values": [ + "geojson", + "vector" + ], + "dflt": "geojson", + "role": "info", + "description": "Sets the source type for this layer. Support for *raster*, *image* and *video* source types is coming soon.", + "editType": "plot" + }, + "source": { + "valType": "any", + "role": "info", + "description": "Sets the source data for this layer. Source can be either a URL, a geojson object (with `sourcetype` set to *geojson*) or an array of tile URLS (with `sourcetype` set to *vector*).", + "editType": "plot" + }, + "sourcelayer": { + "valType": "string", + "dflt": "", + "role": "info", + "description": "Specifies the layer to use from a vector tile source. Required for *vector* source type that supports multiple layers.", + "editType": "plot" + }, + "type": { + "valType": "enumerated", + "values": [ + "circle", + "line", + "fill", + "symbol" + ], + "dflt": "circle", + "role": "info", + "description": "Sets the layer type. Support for *raster*, *background* types is coming soon. Note that *line* and *fill* are not compatible with Point GeoJSON geometries.", + "editType": "plot" + }, + "below": { + "valType": "string", + "dflt": "", + "role": "info", + "description": "Determines if the layer will be inserted before the layer with the specified ID. If omitted or set to '', the layer will be inserted above every existing layer.", + "editType": "plot" + }, + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "description": "Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color If `type` is *line*, color corresponds to the line color If `type` is *fill*, color corresponds to the fill color If `type` is *symbol*, color corresponds to the icon color", + "editType": "plot" + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 1, + "role": "info", + "description": "Sets the opacity of the layer.", + "editType": "plot" + }, + "circle": { + "radius": { + "valType": "number", + "dflt": 15, + "role": "style", + "description": "Sets the circle radius. Has an effect only when `type` is set to *circle*.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "line": { + "width": { + "valType": "number", + "dflt": 2, + "role": "style", + "description": "Sets the line width. Has an effect only when `type` is set to *line*.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "fill": { + "outlinecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "description": "Sets the fill outline color. Has an effect only when `type` is set to *fill*.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "symbol": { + "icon": { + "valType": "string", + "dflt": "marker", + "role": "style", + "description": "Sets the symbol icon image. Full list: https://www.mapbox.com/maki-icons/", + "editType": "plot" + }, + "iconsize": { + "valType": "number", + "dflt": 10, + "role": "style", + "description": "Sets the symbol icon size. Has an effect only when `type` is set to *symbol*.", + "editType": "plot" + }, + "text": { + "valType": "string", + "dflt": "", + "role": "info", + "description": "Sets the symbol text.", + "editType": "plot" + }, + "textfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "plot" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "description": "Sets the icon text font. Has an effect only when `type` is set to *symbol*.", + "editType": "plot", + "role": "object" + }, + "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", + "arrayOk": false, + "role": "style", + "editType": "plot", + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates." + }, + "editType": "plot", + "role": "object" + }, + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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": "plot", + "role": "object" + } + }, + "role": "object" + }, + "editType": "plot", + "_isSubplotObj": true, + "role": "object" + }, + "polar": { + "domain": { + "x": { + "valType": "info_array", + "role": "info", + "editType": "plot", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the horizontal domain of this polar subplot (in plot fraction)." + }, + "y": { + "valType": "info_array", + "role": "info", + "editType": "plot", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "description": "Sets the vertical domain of this polar subplot (in plot fraction)." + }, + "editType": "plot", + "row": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "plot", + "description": "If there is a layout grid, use the domain for this row in the grid for this polar subplot ." + }, + "column": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "info", + "editType": "plot", + "description": "If there is a layout grid, use the domain for this column in the grid for this polar subplot ." + }, + "role": "object" + }, + "sector": { + "valType": "info_array", + "items": [ + { + "valType": "number", + "editType": "plot" + }, + { + "valType": "number", + "editType": "plot" + } + ], + "dflt": [ + 0, + 360 + ], + "role": "info", + "editType": "plot", + "description": "Sets angular span of this polar subplot with two angles (in degrees). Sector are assumed to be spanned in the counterclockwise direction with *0* corresponding to rightmost limit of the polar subplot." + }, + "hole": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 0, + "editType": "plot", + "role": "info", + "description": "Sets the fraction of the radius to cut out of the polar subplot." + }, + "bgcolor": { + "valType": "color", + "role": "style", + "editType": "plot", + "dflt": "#fff", + "description": "Set the background color of the subplot" + }, + "radialaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false", + "dflt": true + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "log", + "date", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "calc", + "_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." + }, + "autorange": { + "valType": "enumerated", + "values": [ + true, + false, + "reversed" + ], + "dflt": true, + "role": "info", + "editType": "axrange", + "impliedEdits": {}, + "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*." + }, + "rangemode": { + "valType": "enumerated", + "values": [ + "tozero", + "nonnegative", + "normal" + ], + "dflt": "tozero", + "role": "style", + "editType": "calc", + "description": "If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. If *normal*, the range is computed in relation to the extrema of the input data (same behavior as for cartesian axes)." + }, + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "axrange", + "impliedEdits": { + "^autorange": false + } + }, + { + "valType": "any", + "editType": "axrange", + "impliedEdits": { + "^autorange": false + } + } + ], + "editType": "axrange", + "impliedEdits": { + "autorange": false + }, + "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). 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." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "calc", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "angle": { + "valType": "angle", + "editType": "plot", + "role": "info", + "description": "Sets the angle (in degrees) from which the radial axis is drawn. Note that by default, radial axis line on the theta=0 line corresponds to a line pointing right (like what mathematicians prefer). Defaults to the first `polar.sector` angle." + }, + "side": { + "valType": "enumerated", + "values": [ + "clockwise", + "counterclockwise" + ], + "dflt": "clockwise", + "editType": "plot", + "role": "info", + "description": "Determines on which side of radial axis line the tick and tick labels appear." + }, + "title": { + "valType": "string", + "role": "info", + "editType": "plot", + "description": "Sets the title of this axis.", + "dflt": "" + }, + "titlefont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets this axis' title font.", + "role": "object" + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "none", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "editType": "plot", + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "showline": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "dflt": true + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "calendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`" + }, + "role": "object", + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + }, + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "angularaxis": { + "visible": { + "valType": "boolean", + "role": "info", + "editType": "plot", + "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false", + "dflt": true + }, + "type": { + "valType": "enumerated", + "values": [ + "-", + "linear", + "category" + ], + "dflt": "-", + "role": "info", + "editType": "calc", + "_noTemplating": true, + "description": "Sets the angular axis type. If *linear*, set `thetaunit` to determine the unit in which axis value are shown. If *category, use `period` to set the number of integer coordinates around polar axis." + }, + "categoryorder": { + "valType": "enumerated", + "values": [ + "trace", + "category ascending", + "category descending", + "array" + ], + "dflt": "trace", + "role": "info", + "editType": "calc", + "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`." + }, + "categoryarray": { + "valType": "data_array", + "role": "data", + "editType": "calc", + "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`." + }, + "thetaunit": { + "valType": "enumerated", + "values": [ + "radians", + "degrees" + ], + "dflt": "degrees", + "role": "info", + "editType": "calc", + "description": "Sets the format unit of the formatted *theta* values. Has an effect only when `angularaxis.type` is *linear*." + }, + "period": { + "valType": "number", + "editType": "calc", + "min": 0, + "role": "info", + "description": "Set the angular period. Has an effect only when `angularaxis.type` is *category*." + }, + "direction": { + "valType": "enumerated", + "values": [ + "counterclockwise", + "clockwise" + ], + "dflt": "counterclockwise", + "role": "info", + "editType": "calc", + "description": "Sets the direction corresponding to positive angles." + }, + "rotation": { + "valType": "angle", + "editType": "calc", + "role": "info", + "description": "Sets that start position (in degrees) of the angular axis By default, polar subplots with `direction` set to *counterclockwise* get a `rotation` of *0* which corresponds to due East (like what mathematicians prefer). In turn, polar with `direction` set to *clockwise* get a rotation of *90* which corresponds to due North (like on a compass)," + }, + "hoverformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "none", + "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "editType": "plot", + "color": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this." + }, + "showline": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not a line bounding this axis is drawn." + }, + "linecolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the axis line color." + }, + "linewidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the axis line." + }, + "showgrid": { + "valType": "boolean", + "role": "style", + "editType": "plot", + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "dflt": true + }, + "gridcolor": { + "valType": "color", + "dflt": "#eee", + "role": "style", + "editType": "plot", + "description": "Sets the color of the grid lines." + }, + "gridwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the width (in px) of the grid lines." + }, + "tickmode": { + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ], + "role": "info", + "editType": "plot", + "impliedEdits": {}, + "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)." + }, + "nticks": { + "valType": "integer", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "plot", + "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*." + }, + "tick0": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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." + }, + "dtick": { + "valType": "any", + "role": "style", + "editType": "plot", + "impliedEdits": { + "tickmode": "linear" + }, + "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*" + }, + "tickvals": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "role": "data" + }, + "ticktext": { + "valType": "data_array", + "editType": "plot", + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "role": "data" + }, + "ticks": { + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ], + "role": "style", + "editType": "plot", + "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." + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 5, + "role": "style", + "editType": "plot", + "description": "Sets the tick length (in px)." + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "plot", + "description": "Sets the tick width (in px)." + }, + "tickcolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "plot", + "description": "Sets the tick color." + }, + "showticklabels": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "plot", + "description": "Determines whether or not the tick labels are drawn." + }, + "showtickprefix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "tickprefix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label prefix." + }, + "showticksuffix": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "description": "Same as `showtickprefix` but for tick suffixes." + }, + "ticksuffix": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "Sets a tick label suffix." + }, + "showexponent": { + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ], + "dflt": "all", + "role": "style", + "editType": "plot", + "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." + }, + "exponentformat": { + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B" + ], + "dflt": "B", + "role": "style", + "editType": "plot", + "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." + }, + "separatethousands": { + "valType": "boolean", + "dflt": false, + "role": "style", + "editType": "plot", + "description": "If \"true\", even 4-digit integers are separated" + }, + "tickfont": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "plot", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "plot" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "plot" + }, + "editType": "plot", + "description": "Sets the tick font.", + "role": "object" + }, + "tickangle": { + "valType": "angle", + "dflt": "auto", + "role": "style", + "editType": "plot", + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically." + }, + "tickformat": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "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/blob/master/README.md#locale_format And for dates see: https://github.com/d3/d3-time-format/blob/master/README.md#locale_format We add one item to d3's date formatter: *%{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*" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "enabled": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "plot", + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`." + }, + "dtickrange": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "any", + "editType": "plot" + }, + { + "valType": "any", + "editType": "plot" + } + ], + "editType": "plot", + "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*" + }, + "value": { + "valType": "string", + "dflt": "", + "role": "style", + "editType": "plot", + "description": "string - dtickformat for described zoom level, the same as *tickformat*" + }, + "editType": "plot", + "name": { + "valType": "string", + "role": "style", + "editType": "plot", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "plot", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "layer": { + "valType": "enumerated", + "values": [ + "above traces", + "below traces" + ], + "dflt": "above traces", + "role": "info", + "editType": "plot", + "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis." + }, + "role": "object", + "categoryarraysrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for categoryarray .", + "editType": "none" + }, + "tickvalssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for tickvals .", + "editType": "none" + }, + "ticktextsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for ticktext .", + "editType": "none" + } + }, + "gridshape": { + "valType": "enumerated", + "values": [ + "circular", + "linear" + ], + "dflt": "circular", + "role": "style", + "editType": "plot", + "description": "Determines if the radial axis grid lines and angular axis line are drawn as *circular* sectors or as *linear* (polygon) sectors. Has an effect only when the angular axis has `type` *category*. Note that `radialaxis.angle` is snapped to the angle of the closest vertex when `gridshape` is *circular* (so that radial axis scale is the same as the data scale)." + }, + "editType": "calc", + "_isSubplotObj": true, + "role": "object" + }, + "radialaxis": { + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "editType": "plot" + }, + { + "valType": "number", + "editType": "plot" + } + ], + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Defines the start and end point of this radial axis.", + "editType": "plot" + }, + "domain": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "description": "Polar chart subplots are not supported yet. This key has currently no effect." + }, + "orientation": { + "valType": "number", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the orientation (an angle with respect to the origin) of the radial axis.", + "editType": "plot" + }, + "showline": { + "valType": "boolean", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Determines whether or not the line bounding this radial axis will be shown on the figure.", + "editType": "plot" + }, + "showticklabels": { + "valType": "boolean", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Determines whether or not the radial axis ticks will feature tick labels.", + "editType": "plot" + }, + "tickorientation": { + "valType": "enumerated", + "values": [ + "horizontal", + "vertical" + ], + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the orientation (from the paper perspective) of the radial axis tick labels.", + "editType": "plot" + }, + "ticklen": { + "valType": "number", + "min": 0, + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the length of the tick lines on this radial axis.", + "editType": "plot" + }, + "tickcolor": { + "valType": "color", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the color of the tick lines on this radial axis.", + "editType": "plot" + }, + "ticksuffix": { + "valType": "string", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the length of the tick lines on this radial axis.", + "editType": "plot" + }, + "endpadding": { + "valType": "number", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots.", + "editType": "plot" + }, + "visible": { + "valType": "boolean", + "role": "info", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Determines whether or not this axis will be visible.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "angularaxis": { + "range": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "dflt": 0, + "editType": "plot" + }, + { + "valType": "number", + "dflt": 360, + "editType": "plot" + } + ], + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Defines the start and end point of this angular axis.", + "editType": "plot" + }, + "domain": { + "valType": "info_array", + "role": "info", + "items": [ + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + }, + { + "valType": "number", + "min": 0, + "max": 1, + "editType": "plot" + } + ], + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "description": "Polar chart subplots are not supported yet. This key has currently no effect." + }, + "showline": { + "valType": "boolean", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Determines whether or not the line bounding this angular axis will be shown on the figure.", + "editType": "plot" + }, + "showticklabels": { + "valType": "boolean", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Determines whether or not the angular axis ticks will feature tick labels.", + "editType": "plot" + }, + "tickorientation": { + "valType": "enumerated", + "values": [ + "horizontal", + "vertical" + ], + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the orientation (from the paper perspective) of the angular axis tick labels.", + "editType": "plot" + }, + "ticklen": { + "valType": "number", + "min": 0, + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the length of the tick lines on this angular axis.", + "editType": "plot" + }, + "tickcolor": { + "valType": "color", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the color of the tick lines on this angular axis.", + "editType": "plot" + }, + "ticksuffix": { + "valType": "string", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the length of the tick lines on this angular axis.", + "editType": "plot" + }, + "endpadding": { + "valType": "number", + "role": "style", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots.", + "editType": "plot" + }, + "visible": { + "valType": "boolean", + "role": "info", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Determines whether or not this axis will be visible.", + "editType": "plot" + }, + "editType": "plot", + "role": "object" + }, + "direction": { + "valType": "enumerated", + "values": [ + "clockwise", + "counterclockwise" + ], + "role": "info", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Sets the direction corresponding to positive angles in legacy polar charts.", + "editType": "plot" + }, + "orientation": { + "valType": "angle", + "role": "info", + "description": "Legacy polar charts are deprecated! Please switch to *polar* subplots. Rotates the entire polar by the given angle in legacy polar charts.", + "editType": "plot" + }, + "editType": "plot", + "legend": { + "bgcolor": { + "valType": "color", + "role": "style", + "editType": "legend", + "description": "Sets the legend background color." + }, + "bordercolor": { + "valType": "color", + "dflt": "#444", + "role": "style", + "editType": "legend", + "description": "Sets the color of the border enclosing the legend." + }, + "borderwidth": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "legend", + "description": "Sets the width (in px) of the border enclosing the legend." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "legend", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "legend" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "legend" + }, + "editType": "legend", + "description": "Sets the font used to text the legend items.", + "role": "object" + }, + "orientation": { + "valType": "enumerated", + "values": [ + "v", + "h" + ], + "dflt": "v", + "role": "info", + "editType": "legend", + "description": "Sets the orientation of the legend." + }, + "traceorder": { + "valType": "flaglist", + "flags": [ + "reversed", + "grouped" + ], + "extras": [ + "normal" + ], + "role": "style", + "editType": "legend", + "description": "Determines the order at which the legend items are displayed. If *normal*, the items are displayed top-to-bottom in the same order as the input data. If *reversed*, the items are displayed in the opposite order as *normal*. If *grouped*, the items are displayed in groups (when a trace `legendgroup` is provided). if *grouped+reversed*, the items are displayed in the opposite order as *grouped*." + }, + "tracegroupgap": { + "valType": "number", + "min": 0, + "dflt": 10, + "role": "style", + "editType": "legend", + "description": "Sets the amount of vertical space (in px) between legend groups." + }, + "x": { + "valType": "number", + "min": -2, + "max": 3, + "dflt": 1.02, + "role": "style", + "editType": "legend", + "description": "Sets the x position (in normalized coordinates) of the legend." + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ], + "dflt": "left", + "role": "info", + "editType": "legend", + "description": "Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend." + }, + "y": { + "valType": "number", + "min": -2, + "max": 3, + "dflt": 1, + "role": "style", + "editType": "legend", + "description": "Sets the y position (in normalized coordinates) of the legend." + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ], + "dflt": "auto", + "role": "info", + "editType": "legend", + "description": "Sets the legend's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the legend." + }, + "editType": "legend", + "role": "object" + }, + "annotations": { + "items": { + "annotation": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc+arraydraw", + "description": "Determines whether or not this annotation is visible." + }, + "text": { + "valType": "string", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (
), bold (), italics (), hyperlinks (). Tags , , are also supported." + }, + "textangle": { + "valType": "angle", + "dflt": 0, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the angle at which the `text` is drawn with respect to the horizontal." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "calc+arraydraw", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "calc+arraydraw" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "arraydraw" + }, + "editType": "calc+arraydraw", + "description": "Sets the annotation text font.", + "role": "object" + }, + "width": { + "valType": "number", + "min": 1, + "dflt": null, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line." + }, + "height": { + "valType": "number", + "min": 1, + "dflt": null, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped." + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 1, + "role": "style", + "editType": "arraydraw", + "description": "Sets the opacity of the annotation (text + arrow)." + }, + "align": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "center", + "role": "style", + "editType": "arraydraw", + "description": "Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans more two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width." + }, + "valign": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "dflt": "middle", + "role": "style", + "editType": "arraydraw", + "description": "Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height." + }, + "bgcolor": { + "valType": "color", + "dflt": "rgba(0,0,0,0)", + "role": "style", + "editType": "arraydraw", + "description": "Sets the background color of the annotation." + }, + "bordercolor": { + "valType": "color", + "dflt": "rgba(0,0,0,0)", + "role": "style", + "editType": "arraydraw", + "description": "Sets the color of the border enclosing the annotation `text`." + }, + "borderpad": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the padding (in px) between the `text` and the enclosing border." + }, + "borderwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the width (in px) of the border enclosing the annotation `text`." + }, + "showarrow": { + "valType": "boolean", + "dflt": true, + "role": "style", + "editType": "calc+arraydraw", + "description": "Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided." + }, + "arrowcolor": { + "valType": "color", + "role": "style", + "editType": "arraydraw", + "description": "Sets the color of the annotation arrow." + }, + "arrowhead": { + "valType": "integer", + "min": 0, + "max": 8, + "dflt": 1, + "role": "style", + "editType": "arraydraw", + "description": "Sets the end annotation arrow head style." + }, + "startarrowhead": { + "valType": "integer", + "min": 0, + "max": 8, + "dflt": 1, + "role": "style", + "editType": "arraydraw", + "description": "Sets the start annotation arrow head style." + }, + "arrowside": { + "valType": "flaglist", + "flags": [ + "end", + "start" + ], + "extras": [ + "none" + ], + "dflt": "end", + "role": "style", + "editType": "arraydraw", + "description": "Sets the annotation arrow head position." + }, + "arrowsize": { + "valType": "number", + "min": 0.3, + "dflt": 1, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line." + }, + "startarrowsize": { + "valType": "number", + "min": 0.3, + "dflt": 1, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line." + }, + "arrowwidth": { + "valType": "number", + "min": 0.1, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the width (in px) of annotation arrow line." + }, + "standoff": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount." + }, + "startstandoff": { + "valType": "number", + "min": 0, + "dflt": 0, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount." + }, + "ax": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is an axis, this is an absolute value on that axis, like `x`, NOT a relative value." + }, + "ay": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is an axis, this is an absolute value on that axis, like `y`, NOT a relative value." + }, + "axref": { + "valType": "enumerated", + "dflt": "pixel", + "values": [ + "pixel", + "/^x([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "calc", + "description": "Indicates in what terms the tail of the annotation (ax,ay) is specified. If `pixel`, `ax` is a relative offset in pixels from `x`. If set to an x axis id (e.g. *x* or *x2*), `ax` is specified in the same terms as that axis. This is useful for trendline annotations which should continue to indicate the correct trend when zoomed." + }, + "ayref": { + "valType": "enumerated", + "dflt": "pixel", + "values": [ + "pixel", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "calc", + "description": "Indicates in what terms the tail of the annotation (ax,ay) is specified. If `pixel`, `ay` is a relative offset in pixels from `y`. If set to a y axis id (e.g. *y* or *y2*), `ay` is specified in the same terms as that axis. This is useful for trendline annotations which should continue to indicate the correct trend when zoomed." + }, + "xref": { + "valType": "enumerated", + "values": [ + "paper", + "/^x([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "calc", + "description": "Sets the annotation's x coordinate axis. If set to an x axis id (e.g. *x* or *x2*), the `x` position refers to an x coordinate If set to *paper*, the `x` position refers to the distance from the left side of the plotting area in normalized coordinates where 0 (1) corresponds to the left (right) side." + }, + "x": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the annotation's x position. 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." + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ], + "dflt": "auto", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side." + }, + "xshift": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "calc+arraydraw", + "description": "Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels." + }, + "yref": { + "valType": "enumerated", + "values": [ + "paper", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "calc", + "description": "Sets the annotation's y coordinate axis. If set to an y axis id (e.g. *y* or *y2*), the `y` position refers to an y coordinate If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where 0 (1) corresponds to the bottom (top)." + }, + "y": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the annotation's y position. 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." + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ], + "dflt": "auto", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side." + }, + "yshift": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "calc+arraydraw", + "description": "Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels." + }, + "clicktoshow": { + "valType": "enumerated", + "values": [ + false, + "onoff", + "onout" + ], + "dflt": false, + "role": "style", + "editType": "arraydraw", + "description": "Makes this annotation respond to clicks on the plot. If you click a data point that exactly matches the `x` and `y` values of this annotation, and it is hidden (visible: false), it will appear. In *onoff* mode, you must click the same point again to make it disappear, so if you click multiple points, you can show multiple annotations. In *onout* mode, a click anywhere else in the plot (on another data point or not) will hide this annotation. If you need to show/hide this annotation in response to different `x` or `y` values, you can set `xclick` and/or `yclick`. This is useful for example to label the side of a bar. To label markers though, `standoff` is preferred over `xclick` and `yclick`." + }, + "xclick": { + "valType": "any", + "role": "info", + "editType": "arraydraw", + "description": "Toggle this annotation when clicking a data point whose `x` value is `xclick` rather than the annotation's `x` value." + }, + "yclick": { + "valType": "any", + "role": "info", + "editType": "arraydraw", + "description": "Toggle this annotation when clicking a data point whose `y` value is `yclick` rather than the annotation's `y` value." + }, + "hovertext": { + "valType": "string", + "role": "info", + "editType": "arraydraw", + "description": "Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear." + }, + "hoverlabel": { + "bgcolor": { + "valType": "color", + "role": "style", + "editType": "arraydraw", + "description": "Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent." + }, + "bordercolor": { + "valType": "color", + "role": "style", + "editType": "arraydraw", + "description": "Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`." + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "editType": "arraydraw", + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*." + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "arraydraw" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "arraydraw" + }, + "editType": "arraydraw", + "description": "Sets the hover label text font. By default uses the global hover font and size, with color from `hoverlabel.bordercolor`.", + "role": "object" + }, + "editType": "arraydraw", + "role": "object" + }, + "captureevents": { + "valType": "boolean", + "role": "info", + "editType": "arraydraw", + "description": "Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`." + }, + "editType": "calc", + "_deprecated": { + "ref": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Obsolete. Set `xref` and `yref` separately instead." + } + }, + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "shapes": { + "items": { + "shape": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "calc+arraydraw", + "description": "Determines whether or not this shape is visible." + }, + "type": { + "valType": "enumerated", + "values": [ + "circle", + "rect", + "path", + "line" + ], + "role": "info", + "editType": "calc+arraydraw", + "description": "Specifies the shape type to be drawn. If *line*, a line is drawn from (`x0`,`y0`) to (`x1`,`y1`) with respect to the axes' sizing mode. If *circle*, a circle is drawn from ((`x0`+`x1`)/2, (`y0`+`y1`)/2)) with radius (|(`x0`+`x1`)/2 - `x0`|, |(`y0`+`y1`)/2 -`y0`)|) with respect to the axes' sizing mode. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`), (`x0`,`y1`), (`x0`,`y0`) with respect to the axes' sizing mode. If *path*, draw a custom SVG path using `path`. with respect to the axes' sizing mode." + }, + "layer": { + "valType": "enumerated", + "values": [ + "below", + "above" + ], + "dflt": "above", + "role": "info", + "editType": "arraydraw", + "description": "Specifies whether shapes are drawn below or above traces." + }, + "xref": { + "valType": "enumerated", + "values": [ + "paper", + "/^x([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "calc", + "description": "Sets the shape's x coordinate axis. If set to an x axis id (e.g. *x* or *x2*), the `x` position refers to an x coordinate. If set to *paper*, the `x` position refers to the distance from the left side of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right) side. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, then you must convert the date to unix time in milliseconds." + }, + "xsizemode": { + "valType": "enumerated", + "values": [ + "scaled", + "pixel" + ], + "dflt": "scaled", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction." + }, + "xanchor": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Only relevant in conjunction with `xsizemode` set to *pixel*. Specifies the anchor point on the x axis to which `x0`, `x1` and x coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `xsizemode` not set to *pixel*." + }, + "x0": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the shape's starting x position. See `type` and `xsizemode` for more info." + }, + "x1": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the shape's end x position. See `type` and `xsizemode` for more info." + }, + "yref": { + "valType": "enumerated", + "values": [ + "paper", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "role": "info", + "editType": "calc", + "description": "Sets the annotation's y coordinate axis. If set to an y axis id (e.g. *y* or *y2*), the `y` position refers to an y coordinate If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top)." + }, + "ysizemode": { + "valType": "enumerated", + "values": [ + "scaled", + "pixel" + ], + "dflt": "scaled", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction." + }, + "yanchor": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Only relevant in conjunction with `ysizemode` set to *pixel*. Specifies the anchor point on the y axis to which `y0`, `y1` and y coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `ysizemode` not set to *pixel*." + }, + "y0": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the shape's starting y position. See `type` and `ysizemode` for more info." + }, + "y1": { + "valType": "any", + "role": "info", + "editType": "calc+arraydraw", + "description": "Sets the shape's end y position. See `type` and `ysizemode` for more info." + }, + "path": { + "valType": "string", + "role": "info", + "editType": "calc+arraydraw", + "description": "For `type` *path* - a valid SVG path with the pixel values replaced by data values in `xsizemode`/`ysizemode` being *scaled* and taken unmodified as pixels relative to `xanchor` and `yanchor` in case of *pixel* size mode. There are a few restrictions / quirks only absolute instructions, not relative. So the allowed segments are: M, L, H, V, Q, C, T, S, and Z arcs (A) are not allowed because radius rx and ry are relative. In the future we could consider supporting relative commands, but we would have to decide on how to handle date and log axes. Note that even as is, Q and C Bezier paths that are smooth on linear axes may not be smooth on log, and vice versa. no chained \"polybezier\" commands - specify the segment type for each one. On category axes, values are numbers scaled to the serial numbers of categories because using the categories themselves there would be no way to describe fractional positions On data axes: because space and T are both normal components of path strings, we can't use either to separate date from time parts. Therefore we'll use underscore for this purpose: 2015-02-21_13:45:56.789" + }, + "opacity": { + "valType": "number", + "min": 0, + "max": 1, + "dflt": 1, + "role": "info", + "editType": "arraydraw", + "description": "Sets the opacity of the shape." + }, + "line": { + "color": { + "valType": "color", + "role": "style", + "editType": "arraydraw", + "description": "Sets the line color." + }, + "width": { + "valType": "number", + "min": 0, + "dflt": 2, + "role": "style", + "editType": "calc+arraydraw", + "description": "Sets the line width (in px)." + }, + "dash": { + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ], + "dflt": "solid", + "role": "style", + "editType": "arraydraw", + "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*)." + }, + "role": "object", + "editType": "calc+arraydraw" + }, + "fillcolor": { + "valType": "color", + "dflt": "rgba(0,0,0,0)", + "role": "info", + "editType": "arraydraw", + "description": "Sets the color filling the shape's interior." + }, + "editType": "arraydraw", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "images": { + "items": { + "image": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "editType": "arraydraw", + "description": "Determines whether or not this image is visible." + }, + "source": { + "valType": "string", + "role": "info", + "editType": "arraydraw", + "description": "Specifies the URL of the image to be used. The URL must be accessible from the domain where the plot code is run, and can be either relative or absolute." + }, + "layer": { + "valType": "enumerated", + "values": [ + "below", + "above" + ], + "dflt": "above", + "role": "info", + "editType": "arraydraw", + "description": "Specifies whether images are drawn below or above traces. When `xref` and `yref` are both set to `paper`, image is drawn below the entire plot area." + }, + "sizex": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "arraydraw", + "description": "Sets the image container size horizontally. The image will be sized based on the `position` value. When `xref` is set to `paper`, units are sized relative to the plot width." + }, + "sizey": { + "valType": "number", + "role": "info", + "dflt": 0, + "editType": "arraydraw", + "description": "Sets the image container size vertically. The image will be sized based on the `position` value. When `yref` is set to `paper`, units are sized relative to the plot height." + }, + "sizing": { + "valType": "enumerated", + "values": [ + "fill", + "contain", + "stretch" + ], + "dflt": "contain", + "role": "info", + "editType": "arraydraw", + "description": "Specifies which dimension of the image to constrain." + }, + "opacity": { + "valType": "number", + "role": "info", + "min": 0, + "max": 1, + "dflt": 1, + "editType": "arraydraw", + "description": "Sets the opacity of the image." + }, + "x": { + "valType": "any", + "role": "info", + "dflt": 0, + "editType": "arraydraw", + "description": "Sets the image's x position. When `xref` is set to `paper`, units are sized relative to the plot height. See `xref` for more info" + }, + "y": { + "valType": "any", + "role": "info", + "dflt": 0, + "editType": "arraydraw", + "description": "Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "info", + "editType": "arraydraw", + "description": "Sets the anchor for the x position" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ], + "dflt": "top", + "role": "info", + "editType": "arraydraw", + "description": "Sets the anchor for the y position." + }, + "xref": { + "valType": "enumerated", + "values": [ + "paper", + "/^x([2-9]|[1-9][0-9]+)?$/" + ], + "dflt": "paper", + "role": "info", + "editType": "arraydraw", + "description": "Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to an x data coordinate If set to *paper*, the `x` position refers to the distance from the left of plot in normalized coordinates where *0* (*1*) corresponds to the left (right)." + }, + "yref": { + "valType": "enumerated", + "values": [ + "paper", + "/^y([2-9]|[1-9][0-9]+)?$/" + ], + "dflt": "paper", + "role": "info", + "editType": "arraydraw", + "description": "Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y data coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plot in normalized coordinates where *0* (*1*) corresponds to the bottom (top)." + }, + "editType": "arraydraw", + "name": { + "valType": "string", + "role": "style", + "editType": "none", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "calc", + "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`." + }, + "role": "object" + } + }, + "role": "object" + }, + "updatemenus": { + "items": { + "updatemenu": { + "_arrayAttrRegexps": [ + {} + ], + "visible": { + "valType": "boolean", + "role": "info", + "description": "Determines whether or not the update menu is visible.", + "editType": "arraydraw" + }, + "type": { + "valType": "enumerated", + "values": [ + "dropdown", + "buttons" + ], + "dflt": "dropdown", + "role": "info", + "description": "Determines whether the buttons are accessible via a dropdown menu or whether the buttons are stacked horizontally or vertically", + "editType": "arraydraw" + }, + "direction": { + "valType": "enumerated", + "values": [ + "left", + "right", + "up", + "down" + ], + "dflt": "down", + "role": "info", + "description": "Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of buttons. For `left` and `up`, the buttons will still appear in left-to-right or top-to-bottom order respectively.", + "editType": "arraydraw" + }, + "active": { + "valType": "integer", + "role": "info", + "min": -1, + "dflt": 0, + "description": "Determines which button (by index starting from 0) is considered active.", + "editType": "arraydraw" + }, + "showactive": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Highlights active dropdown item or active button if true.", + "editType": "arraydraw" + }, + "buttons": { + "items": { + "button": { + "visible": { + "valType": "boolean", + "role": "info", + "description": "Determines whether or not this button is visible.", + "editType": "arraydraw" + }, + "method": { + "valType": "enumerated", + "values": [ + "restyle", + "relayout", + "animate", + "update", + "skip" + ], + "dflt": "restyle", + "role": "info", + "description": "Sets the Plotly method to be called on click. If the `skip` method is used, the API updatemenu will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to updatemenu events manually via JavaScript.", + "editType": "arraydraw" + }, + "args": { + "valType": "info_array", + "role": "info", + "freeLength": true, + "items": [ + { + "valType": "any", + "editType": "arraydraw" + }, + { + "valType": "any", + "editType": "arraydraw" + }, + { + "valType": "any", + "editType": "arraydraw" + } + ], + "description": "Sets the arguments values to be passed to the Plotly method set in `method` on click.", + "editType": "arraydraw" + }, + "label": { + "valType": "string", + "role": "info", + "dflt": "", + "description": "Sets the text label to appear on the button.", + "editType": "arraydraw" + }, + "execute": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_buttonclicked` method and executing the API command manually without losing the benefit of the updatemenu automatically binding to the state of the plot through the specification of `method` and `args`.", + "editType": "arraydraw" + }, + "name": { + "valType": "string", + "role": "style", + "editType": "arraydraw", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "arraydraw", + "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": "arraydraw", + "role": "object" + } + }, + "role": "object" + }, + "x": { + "valType": "number", + "min": -2, + "max": 3, + "dflt": -0.05, + "role": "style", + "description": "Sets the x position (in normalized coordinates) of the update menu.", + "editType": "arraydraw" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ], + "dflt": "right", + "role": "info", + "description": "Sets the update menu's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", + "editType": "arraydraw" + }, + "y": { + "valType": "number", + "min": -2, + "max": 3, + "dflt": 1, + "role": "style", + "description": "Sets the y position (in normalized coordinates) of the update menu.", + "editType": "arraydraw" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ], + "dflt": "top", + "role": "info", + "description": "Sets the update menu's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", + "editType": "arraydraw" + }, + "pad": { + "t": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) along the top of the component." + }, + "r": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) on the right side of the component." + }, + "b": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) along the bottom of the component." + }, + "l": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) on the left side of the component." + }, + "editType": "arraydraw", + "description": "Sets the padding around the buttons or dropdown menu.", + "role": "object" + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "arraydraw" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "arraydraw" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "arraydraw" + }, + "description": "Sets the font of the update menu button text.", + "editType": "arraydraw", + "role": "object" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "description": "Sets the background color of the update menu buttons.", + "editType": "arraydraw" + }, + "bordercolor": { + "valType": "color", + "dflt": "#BEC8D9", + "role": "style", + "description": "Sets the color of the border enclosing the update menu.", + "editType": "arraydraw" + }, + "borderwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "editType": "arraydraw", + "description": "Sets the width (in px) of the border enclosing the update menu." + }, + "name": { + "valType": "string", + "role": "style", + "editType": "arraydraw", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "arraydraw", + "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": "arraydraw", + "role": "object" + } + }, + "role": "object" + }, + "sliders": { + "items": { + "slider": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Determines whether or not the slider is visible.", + "editType": "arraydraw" + }, + "active": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 0, + "description": "Determines which button (by index starting from 0) is considered active.", + "editType": "arraydraw" + }, + "steps": { + "items": { + "step": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Determines whether or not this step is included in the slider.", + "editType": "arraydraw" + }, + "method": { + "valType": "enumerated", + "values": [ + "restyle", + "relayout", + "animate", + "update", + "skip" + ], + "dflt": "restyle", + "role": "info", + "description": "Sets the Plotly method to be called when the slider value is changed. If the `skip` method is used, the API slider will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to slider events manually via JavaScript.", + "editType": "arraydraw" + }, + "args": { + "valType": "info_array", + "role": "info", + "freeLength": true, + "items": [ + { + "valType": "any", + "editType": "arraydraw" + }, + { + "valType": "any", + "editType": "arraydraw" + }, + { + "valType": "any", + "editType": "arraydraw" + } + ], + "description": "Sets the arguments values to be passed to the Plotly method set in `method` on slide.", + "editType": "arraydraw" + }, + "label": { + "valType": "string", + "role": "info", + "description": "Sets the text label to appear on the slider", + "editType": "arraydraw" + }, + "value": { + "valType": "string", + "role": "info", + "description": "Sets the value of the slider step, used to refer to the step programatically. Defaults to the slider label if not provided.", + "editType": "arraydraw" + }, + "execute": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_sliderchange` method and executing the API command manually without losing the benefit of the slider automatically binding to the state of the plot through the specification of `method` and `args`.", + "editType": "arraydraw" + }, + "name": { + "valType": "string", + "role": "style", + "editType": "arraydraw", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "arraydraw", + "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": "arraydraw", + "role": "object" + } + }, + "role": "object" + }, + "lenmode": { + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ], + "role": "info", + "dflt": "fraction", + "description": "Determines whether this slider length is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "editType": "arraydraw" + }, + "len": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "description": "Sets the length of the slider This measure excludes the padding of both ends. That is, the slider's length is this length minus the padding on both ends.", + "editType": "arraydraw" + }, + "x": { + "valType": "number", + "min": -2, + "max": 3, + "dflt": 0, + "role": "style", + "description": "Sets the x position (in normalized coordinates) of the slider.", + "editType": "arraydraw" + }, + "pad": { + "t": { + "valType": "number", + "dflt": 20, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) along the top of the component." + }, + "r": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) on the right side of the component." + }, + "b": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) along the bottom of the component." + }, + "l": { + "valType": "number", + "dflt": 0, + "role": "style", + "editType": "arraydraw", + "description": "The amount of padding (in px) on the left side of the component." + }, + "editType": "arraydraw", + "description": "Set the padding of the slider component along each side.", + "role": "object" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ], + "dflt": "left", + "role": "info", + "description": "Sets the slider's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", + "editType": "arraydraw" + }, + "y": { + "valType": "number", + "min": -2, + "max": 3, + "dflt": 0, + "role": "style", + "description": "Sets the y position (in normalized coordinates) of the slider.", + "editType": "arraydraw" + }, + "yanchor": { + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ], + "dflt": "top", + "role": "info", + "description": "Sets the slider's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", + "editType": "arraydraw" + }, + "transition": { + "duration": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 150, + "description": "Sets the duration of the slider transition", + "editType": "arraydraw" + }, + "easing": { + "valType": "enumerated", + "values": [ + "linear", + "quad", + "cubic", + "sin", + "exp", + "circle", + "elastic", + "back", + "bounce", + "linear-in", + "quad-in", + "cubic-in", + "sin-in", + "exp-in", + "circle-in", + "elastic-in", + "back-in", + "bounce-in", + "linear-out", + "quad-out", + "cubic-out", + "sin-out", + "exp-out", + "circle-out", + "elastic-out", + "back-out", + "bounce-out", + "linear-in-out", + "quad-in-out", + "cubic-in-out", + "sin-in-out", + "exp-in-out", + "circle-in-out", + "elastic-in-out", + "back-in-out", + "bounce-in-out" + ], + "role": "info", + "dflt": "cubic-in-out", + "description": "Sets the easing function of the slider transition", + "editType": "arraydraw" + }, + "editType": "arraydraw", + "role": "object" + }, + "currentvalue": { + "visible": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Shows the currently-selected value above the slider.", + "editType": "arraydraw" + }, + "xanchor": { + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ], + "dflt": "left", + "role": "info", + "description": "The alignment of the value readout relative to the length of the slider.", + "editType": "arraydraw" + }, + "offset": { + "valType": "number", + "dflt": 10, + "role": "info", + "description": "The amount of space, in pixels, between the current value label and the slider.", + "editType": "arraydraw" + }, + "prefix": { + "valType": "string", + "role": "info", + "description": "When currentvalue.visible is true, this sets the prefix of the label.", + "editType": "arraydraw" + }, + "suffix": { + "valType": "string", + "role": "info", + "description": "When currentvalue.visible is true, this sets the suffix of the label.", + "editType": "arraydraw" + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "arraydraw" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "arraydraw" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "arraydraw" + }, + "description": "Sets the font of the current value label text.", + "editType": "arraydraw", + "role": "object" + }, + "editType": "arraydraw", + "role": "object" + }, + "font": { + "family": { + "valType": "string", + "role": "style", + "noBlank": true, + "strict": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser will only be able to apply a font if it is available on the system which it operates. Provide multiple font families, separated by commas, to indicate the preference in which to apply fonts if they aren't available on the system. The plotly service (at https://plot.ly or on-premise) generates images on a server, where only a select number of fonts are installed and supported. These include *Arial*, *Balto*, *Courier New*, *Droid Sans*,, *Droid Serif*, *Droid Sans Mono*, *Gravitas One*, *Old Standard TT*, *Open Sans*, *Overpass*, *PT Sans Narrow*, *Raleway*, *Times New Roman*.", + "editType": "arraydraw" + }, + "size": { + "valType": "number", + "role": "style", + "min": 1, + "editType": "arraydraw" + }, + "color": { + "valType": "color", + "role": "style", + "editType": "arraydraw" + }, + "description": "Sets the font of the slider step labels.", + "editType": "arraydraw", + "role": "object" + }, + "activebgcolor": { + "valType": "color", + "role": "style", + "dflt": "#dbdde0", + "description": "Sets the background color of the slider grip while dragging.", + "editType": "arraydraw" + }, + "bgcolor": { + "valType": "color", + "role": "style", + "dflt": "#f8fafc", + "description": "Sets the background color of the slider.", + "editType": "arraydraw" + }, + "bordercolor": { + "valType": "color", + "dflt": "#bec8d9", + "role": "style", + "description": "Sets the color of the border enclosing the slider.", + "editType": "arraydraw" + }, + "borderwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "description": "Sets the width (in px) of the border enclosing the slider.", + "editType": "arraydraw" + }, + "ticklen": { + "valType": "number", + "min": 0, + "dflt": 7, + "role": "style", + "description": "Sets the length in pixels of step tick marks", + "editType": "arraydraw" + }, + "tickcolor": { + "valType": "color", + "dflt": "#333", + "role": "style", + "description": "Sets the color of the border enclosing the slider.", + "editType": "arraydraw" + }, + "tickwidth": { + "valType": "number", + "min": 0, + "dflt": 1, + "role": "style", + "description": "Sets the tick width (in px).", + "editType": "arraydraw" + }, + "minorticklen": { + "valType": "number", + "min": 0, + "dflt": 4, + "role": "style", + "description": "Sets the length in pixels of minor step tick marks", + "editType": "arraydraw" + }, + "name": { + "valType": "string", + "role": "style", + "editType": "arraydraw", + "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." + }, + "templateitemname": { + "valType": "string", + "role": "info", + "editType": "arraydraw", + "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": "arraydraw", + "role": "object" + } + }, + "role": "object" + } + } + }, + "transforms": { + "aggregate": { + "attributes": { + "enabled": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Determines whether this aggregate transform is enabled or disabled." + }, + "groups": { + "valType": "string", + "strict": true, + "noBlank": true, + "arrayOk": true, + "dflt": "x", + "role": "info", + "editType": "calc", + "description": "Sets the grouping target to which the aggregation is applied. Data points with matching group values will be coalesced into one point, using the supplied aggregation functions to reduce data in other data arrays. If a string, `groups` is assumed to be a reference to a data array in the parent trace object. To aggregate by nested variables, use *.* to access them. For example, set `groups` to *marker.color* to aggregate about the marker color array. If an array, `groups` is itself the data array by which we aggregate." + }, + "aggregations": { + "items": { + "aggregation": { + "target": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "A reference to the data array in the parent trace to aggregate. To aggregate by nested variables, use *.* to access them. For example, set `groups` to *marker.color* to aggregate over the marker color array. The referenced array must already exist, unless `func` is *count*, and each array may only be referenced once." + }, + "func": { + "valType": "enumerated", + "values": [ + "count", + "sum", + "avg", + "median", + "mode", + "rms", + "stddev", + "min", + "max", + "first", + "last", + "change", + "range" + ], + "dflt": "first", + "role": "info", + "editType": "calc", + "description": "Sets the aggregation function. All values from the linked `target`, corresponding to the same value in the `groups` array, are collected and reduced by this function. *count* is simply the number of values in the `groups` array, so does not even require the linked array to exist. *first* (*last*) is just the first (last) linked value. Invalid values are ignored, so for example in *avg* they do not contribute to either the numerator or the denominator. Any data type (numeric, date, category) may be aggregated with any function, even though in certain cases it is unlikely to make sense, for example a sum of dates or average of categories. *median* will return the average of the two central values if there is an even count. *mode* will return the first value to reach the maximum count, in case of a tie. *change* will return the difference between the first and last linked values. *range* will return the difference between the min and max linked values." + }, + "funcmode": { + "valType": "enumerated", + "values": [ + "sample", + "population" + ], + "dflt": "sample", + "role": "info", + "editType": "calc", + "description": "*stddev* supports two formula variants: *sample* (normalize by N-1) and *population* (normalize by N)." + }, + "enabled": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Determines whether this aggregation function is enabled or disabled." + }, + "editType": "calc", + "role": "object" + } + }, + "role": "object" + }, + "editType": "calc", + "groupssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for groups .", + "editType": "none" + } + } + }, + "filter": { + "attributes": { + "enabled": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Determines whether this filter transform is enabled or disabled." + }, + "target": { + "valType": "string", + "strict": true, + "noBlank": true, + "arrayOk": true, + "dflt": "x", + "role": "info", + "editType": "calc", + "description": "Sets the filter target by which the filter is applied. If a string, `target` is assumed to be a reference to a data array in the parent trace object. To filter about nested variables, use *.* to access them. For example, set `target` to *marker.color* to filter about the marker color array. If an array, `target` is then the data array by which the filter is applied." + }, + "operation": { + "valType": "enumerated", + "values": [ + "=", + "!=", + "<", + ">=", + ">", + "<=", + "[]", + "()", + "[)", + "(]", + "][", + ")(", + "](", + ")[", + "{}", + "}{" + ], + "dflt": "=", + "role": "info", + "editType": "calc", + "description": "Sets the filter operation. *=* keeps items equal to `value` *!=* keeps items not equal to `value` *<* keeps items less than `value` *<=* keeps items less than or equal to `value` *>* keeps items greater than `value` *>=* keeps items greater than or equal to `value` *[]* keeps items inside `value[0]` to `value[1]` including both bounds *()* keeps items inside `value[0]` to `value[1]` excluding both bounds *[)* keeps items inside `value[0]` to `value[1]` including `value[0]` but excluding `value[1] *(]* keeps items inside `value[0]` to `value[1]` excluding `value[0]` but including `value[1] *][* keeps items outside `value[0]` to `value[1]` and equal to both bounds *)(* keeps items outside `value[0]` to `value[1]` *](* keeps items outside `value[0]` to `value[1]` and equal to `value[0]` *)[* keeps items outside `value[0]` to `value[1]` and equal to `value[1]` *{}* keeps items present in a set of values *}{* keeps items not present in a set of values" + }, + "value": { + "valType": "any", + "dflt": 0, + "role": "info", + "editType": "calc", + "description": "Sets the value or values by which to filter. Values are expected to be in the same type as the data linked to `target`. When `operation` is set to one of the comparison values (=,!=,<,>=,>,<=) `value` is expected to be a number or a string. When `operation` is set to one of the interval values ([],(),[),(],][,)(,](,)[) `value` is expected to be 2-item array where the first item is the lower bound and the second item is the upper bound. When `operation`, is set to one of the set values ({},}{) `value` is expected to be an array with as many items as the desired set elements." + }, + "preservegaps": { + "valType": "boolean", + "dflt": false, + "role": "info", + "editType": "calc", + "description": "Determines whether or not gaps in data arrays produced by the filter operation are preserved. Setting this to *true* might be useful when plotting a line chart with `connectgaps` set to *false*." + }, + "editType": "calc", + "valuecalendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `value`, if it is a date." + }, + "targetcalendar": { + "valType": "enumerated", + "values": [ + "gregorian", + "chinese", + "coptic", + "discworld", + "ethiopian", + "hebrew", + "islamic", + "julian", + "mayan", + "nanakshahi", + "nepali", + "persian", + "jalali", + "taiwan", + "thai", + "ummalqura" + ], + "role": "info", + "editType": "calc", + "dflt": "gregorian", + "description": "Sets the calendar system to use for `target`, if it is an array of dates. If `target` is a string (eg *x*) we use the corresponding trace attribute (eg `xcalendar`) if it exists, even if `targetcalendar` is provided." + }, + "targetsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for target .", + "editType": "none" + } + } + }, + "groupby": { + "attributes": { + "enabled": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Determines whether this group-by transform is enabled or disabled." + }, + "groups": { + "valType": "data_array", + "dflt": [], + "role": "data", + "editType": "calc", + "description": "Sets the groups in which the trace data will be split. For example, with `x` set to *[1, 2, 3, 4]* and `groups` set to *['a', 'b', 'a', 'b']*, the groupby transform with split in one trace with `x` [1, 3] and one trace with `x` [2, 4]." + }, + "nameformat": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "Pattern by which grouped traces are named. If only one trace is present, defaults to the group name (`\"%{group}\"`), otherwise defaults to the group name with trace name (`\"%{group} (%{trace})\"`). Available escape sequences are `%{group}`, which inserts the group name, and `%{trace}`, which inserts the trace name. If grouping GDP data by country when more than one trace is present, for example, the default \"%{group} (%{trace})\" would return \"Monaco (GDP per capita)\"." + }, + "styles": { + "items": { + "style": { + "target": { + "valType": "string", + "role": "info", + "editType": "calc", + "description": "The group value which receives these styles." + }, + "value": { + "valType": "any", + "role": "info", + "dflt": {}, + "editType": "calc", + "description": "Sets each group styles. For example, with `groups` set to *['a', 'b', 'a', 'b']* and `styles` set to *[{target: 'a', value: { marker: { color: 'red' } }}] marker points in group *'a'* will be drawn in red.", + "_compareAsJSON": true + }, + "editType": "calc", + "role": "object" + } + }, + "role": "object" + }, + "editType": "calc", + "groupssrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for groups .", + "editType": "none" + } + } + }, + "sort": { + "attributes": { + "enabled": { + "valType": "boolean", + "dflt": true, + "role": "info", + "editType": "calc", + "description": "Determines whether this sort transform is enabled or disabled." + }, + "target": { + "valType": "string", + "strict": true, + "noBlank": true, + "arrayOk": true, + "dflt": "x", + "role": "info", + "editType": "calc", + "description": "Sets the target by which the sort transform is applied. If a string, *target* is assumed to be a reference to a data array in the parent trace object. To sort about nested variables, use *.* to access them. For example, set `target` to *marker.size* to sort about the marker size array. If an array, *target* is then the data array by which the sort transform is applied." + }, + "order": { + "valType": "enumerated", + "values": [ + "ascending", + "descending" + ], + "dflt": "ascending", + "role": "info", + "editType": "calc", + "description": "Sets the sort transform order." + }, + "editType": "calc", + "targetsrc": { + "valType": "string", + "role": "info", + "description": "Sets the source reference on plot.ly for target .", + "editType": "none" + } + } + } + }, + "frames": { + "items": { + "frames_entry": { + "group": { + "valType": "string", + "role": "info", + "description": "An identifier that specifies the group to which the frame belongs, used by animate to select a subset of frames." + }, + "name": { + "valType": "string", + "role": "info", + "description": "A label by which to identify the frame" + }, + "traces": { + "valType": "any", + "role": "info", + "description": "A list of trace indices that identify the respective traces in the data attribute" + }, + "baseframe": { + "valType": "string", + "role": "info", + "description": "The name of the frame into which this frame's properties are merged before applying. This is used to unify properties and avoid needing to specify the same values for the same properties in multiple frames." + }, + "data": { + "valType": "any", + "role": "object", + "description": "A list of traces this frame modifies. The format is identical to the normal trace definition." + }, + "layout": { + "valType": "any", + "role": "object", + "description": "Layout properties which this frame modifies. The format is identical to the normal layout definition." + }, + "role": "object" + } + }, + "role": "object" + }, + "animation": { + "mode": { + "valType": "enumerated", + "dflt": "afterall", + "role": "info", + "values": [ + "immediate", + "next", + "afterall" + ], + "description": "Describes how a new animate call interacts with currently-running animations. If `immediate`, current animations are interrupted and the new animation is started. If `next`, the current frame is allowed to complete, after which the new animation is started. If `afterall` all existing frames are animated to completion before the new animation is started." + }, + "direction": { + "valType": "enumerated", + "role": "info", + "values": [ + "forward", + "reverse" + ], + "dflt": "forward", + "description": "The direction in which to play the frames triggered by the animation call" + }, + "fromcurrent": { + "valType": "boolean", + "dflt": false, + "role": "info", + "description": "Play frames starting at the current frame instead of the beginning." + }, + "frame": { + "duration": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 500, + "description": "The duration in milliseconds of each frame. If greater than the frame duration, it will be limited to the frame duration." + }, + "redraw": { + "valType": "boolean", + "role": "info", + "dflt": true, + "description": "Redraw the plot at completion of the transition. This is desirable for transitions that include properties that cannot be transitioned, but may significantly slow down updates that do not require a full redraw of the plot" + }, + "role": "object" + }, + "transition": { + "duration": { + "valType": "number", + "role": "info", + "min": 0, + "dflt": 500, + "description": "The duration of the transition, in milliseconds. If equal to zero, updates are synchronous." + }, + "easing": { + "valType": "enumerated", + "dflt": "cubic-in-out", + "values": [ + "linear", + "quad", + "cubic", + "sin", + "exp", + "circle", + "elastic", + "back", + "bounce", + "linear-in", + "quad-in", + "cubic-in", + "sin-in", + "exp-in", + "circle-in", + "elastic-in", + "back-in", + "bounce-in", + "linear-out", + "quad-out", + "cubic-out", + "sin-out", + "exp-out", + "circle-out", + "elastic-out", + "back-out", + "bounce-out", + "linear-in-out", + "quad-in-out", + "cubic-in-out", + "sin-in-out", + "exp-in-out", + "circle-in-out", + "elastic-in-out", + "back-in-out", + "bounce-in-out" + ], + "role": "info", + "description": "The easing function used for the transition" + }, + "role": "object" + } + } +} \ No newline at end of file diff --git a/plotly/package_data/templates/ggplot2.json b/plotly/package_data/templates/ggplot2.json new file mode 100644 index 00000000000..526134d875d --- /dev/null +++ b/plotly/package_data/templates/ggplot2.json @@ -0,0 +1 @@ +{"layout": {"colorway": ["#F8766D", "#A3A500", "#00BF7D", "#00B0F6", "#E76BF3"], "font": {"color": "rgb(51,51,51)"}, "paper_bgcolor": "white", "plot_bgcolor": "rgb(237,237,237)", "polar": {"bgcolor": "rgb(237,237,237)", "angularaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside"}, "radialaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside"}}, "ternary": {"bgcolor": "rgb(237,237,237)", "aaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside"}, "baxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside"}, "caxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside"}}, "xaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside", "zerolinecolor": "white"}, "yaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside", "zerolinecolor": "white"}, "scene": {"xaxis": {"backgroundcolor": "rgb(237,237,237)", "gridcolor": "white", "linecolor": "white", "showbackground": true, "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside", "zerolinecolor": "white", "gridwidth": 2}, "yaxis": {"backgroundcolor": "rgb(237,237,237)", "gridcolor": "white", "linecolor": "white", "showbackground": true, "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside", "zerolinecolor": "white", "gridwidth": 2}, "zaxis": {"backgroundcolor": "rgb(237,237,237)", "gridcolor": "white", "linecolor": "white", "showbackground": true, "showgrid": true, "tickcolor": "rgb(51,51,51)", "ticks": "outside", "zerolinecolor": "white", "gridwidth": 2}}, "shapedefaults": {"fillcolor": "black", "line": {"width": 0}, "opacity": 0.3}, "annotationdefaults": {"arrowhead": 0, "arrowwidth": 1}, "geo": {"bgcolor": "white", "landcolor": "rgb(237,237,237)", "subunitcolor": "white", "showland": true, "showlakes": true, "lakecolor": "white"}}, "data": {"histogram2dcontour": [{"type": "histogram2dcontour", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "choropleth": [{"type": "choropleth", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "histogram2d": [{"type": "histogram2d", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "heatmap": [{"type": "heatmap", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "heatmapgl": [{"type": "heatmapgl", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "contourcarpet": [{"type": "contourcarpet", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "contour": [{"type": "contour", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "surface": [{"type": "surface", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "mesh3d": [{"type": "mesh3d", "colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}], "scatter": [{"type": "scatter", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "line": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false}, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "parcoords": [{"type": "parcoords", "line": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scatterpolargl": [{"type": "scatterpolargl", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "line": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false}, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "bar": [{"type": "bar", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "line": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false}, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scattergeo": [{"type": "scattergeo", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scatterpolar": [{"type": "scatterpolar", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "histogram": [{"type": "histogram", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scattergl": [{"type": "scattergl", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scatter3d": [{"type": "scatter3d", "line": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false}, "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scattermapbox": [{"type": "scattermapbox", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scatterternary": [{"type": "scatterternary", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "scattercarpet": [{"type": "scattercarpet", "marker": {"colorscale": [[0, "rgb(20,44,66)"], [1, "rgb(90,179,244)"]], "autocolorscale": false, "colorbar": {"len": 0.2, "outlinewidth": 0, "tickcolor": "rgb(237,237,237)", "ticklen": 6, "ticks": "inside"}}}], "carpet": [{"aaxis": {"endlinecolor": "rgb(51,51,51)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(51,51,51)"}, "baxis": {"endlinecolor": "rgb(51,51,51)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(51,51,51)"}, "type": "carpet"}], "table": [{"cells": {"fill": {"color": "rgb(237,237,237)"}, "line": {"color": "white"}}, "header": {"fill": {"color": "rgb(217,217,217)"}, "line": {"color": "white"}}, "type": "table"}]}} \ No newline at end of file diff --git a/plotly/package_data/templates/plotly.json b/plotly/package_data/templates/plotly.json new file mode 100644 index 00000000000..e063cc41a6f --- /dev/null +++ b/plotly/package_data/templates/plotly.json @@ -0,0 +1 @@ +{"layout": {"colorway": ["#636efa", "#EF553B", "#00cc96", "#ab63fa", "#19d3f3", "#e763fa"], "font": {"color": "#2a3f5f"}, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": {"bgcolor": "#E5ECF6", "angularaxis": {"gridcolor": "white", "linecolor": "white", "ticks": ""}, "radialaxis": {"gridcolor": "white", "linecolor": "white", "ticks": ""}}, "ternary": {"bgcolor": "#E5ECF6", "aaxis": {"gridcolor": "white", "linecolor": "white", "ticks": ""}, "baxis": {"gridcolor": "white", "linecolor": "white", "ticks": ""}, "caxis": {"gridcolor": "white", "linecolor": "white", "ticks": ""}}, "xaxis": {"gridcolor": "white", "linecolor": "white", "ticks": "", "zerolinecolor": "white", "zerolinewidth": 2}, "yaxis": {"gridcolor": "white", "linecolor": "white", "ticks": "", "zerolinecolor": "white", "zerolinewidth": 2}, "scene": {"xaxis": {"backgroundcolor": "#E5ECF6", "gridcolor": "white", "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white", "gridwidth": 2}, "yaxis": {"backgroundcolor": "#E5ECF6", "gridcolor": "white", "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white", "gridwidth": 2}, "zaxis": {"backgroundcolor": "#E5ECF6", "gridcolor": "white", "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white", "gridwidth": 2}}, "shapedefaults": {"fillcolor": "#506784", "line": {"width": 0}, "opacity": 0.4}, "annotationdefaults": {"arrowcolor": "#506784", "arrowhead": 0, "arrowwidth": 1}, "geo": {"bgcolor": "white", "landcolor": "#E5ECF6", "subunitcolor": "white", "showland": true, "showlakes": true, "lakecolor": "white"}}, "data": {"histogram2dcontour": [{"type": "histogram2dcontour", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "choropleth": [{"type": "choropleth", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "histogram2d": [{"type": "histogram2d", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "heatmap": [{"type": "heatmap", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "heatmapgl": [{"type": "heatmapgl", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "contourcarpet": [{"type": "contourcarpet", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "contour": [{"type": "contour", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "surface": [{"type": "surface", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "mesh3d": [{"type": "mesh3d", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "scatter": [{"type": "scatter", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "parcoords": [{"type": "parcoords", "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterpolargl": [{"type": "scatterpolargl", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "bar": [{"type": "bar", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattergeo": [{"type": "scattergeo", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterpolar": [{"type": "scatterpolar", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "histogram": [{"type": "histogram", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattergl": [{"type": "scattergl", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatter3d": [{"type": "scatter3d", "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattermapbox": [{"type": "scattermapbox", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterternary": [{"type": "scatterternary", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattercarpet": [{"type": "scattercarpet", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "carpet": [{"aaxis": {"endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f"}, "baxis": {"endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f"}, "type": "carpet"}], "table": [{"cells": {"fill": {"color": "#EBF0F8"}, "line": {"color": "white"}}, "header": {"fill": {"color": "#C8D4E3"}, "line": {"color": "white"}}, "type": "table"}]}} \ No newline at end of file diff --git a/plotly/package_data/templates/plotly_dark.json b/plotly/package_data/templates/plotly_dark.json new file mode 100644 index 00000000000..3b98e60b8ae --- /dev/null +++ b/plotly/package_data/templates/plotly_dark.json @@ -0,0 +1 @@ +{"layout": {"colorway": ["#636efa", "#EF553B", "#00cc96", "#ab63fa", "#19d3f3", "#e763fa"], "font": {"color": "#f2f5fa"}, "paper_bgcolor": "rgb(17,17,17)", "plot_bgcolor": "rgb(17,17,17)", "polar": {"bgcolor": "rgb(17,17,17)", "angularaxis": {"gridcolor": "#506784", "linecolor": "#506784", "ticks": ""}, "radialaxis": {"gridcolor": "#506784", "linecolor": "#506784", "ticks": ""}}, "ternary": {"bgcolor": "rgb(17,17,17)", "aaxis": {"gridcolor": "#506784", "linecolor": "#506784", "ticks": ""}, "baxis": {"gridcolor": "#506784", "linecolor": "#506784", "ticks": ""}, "caxis": {"gridcolor": "#506784", "linecolor": "#506784", "ticks": ""}}, "xaxis": {"gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "zerolinecolor": "#283442", "zerolinewidth": 2}, "yaxis": {"gridcolor": "#283442", "linecolor": "#506784", "ticks": "", "zerolinecolor": "#283442", "zerolinewidth": 2}, "scene": {"xaxis": {"backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2}, "yaxis": {"backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2}, "zaxis": {"backgroundcolor": "rgb(17,17,17)", "gridcolor": "#506784", "linecolor": "#506784", "showbackground": true, "ticks": "", "zerolinecolor": "#C8D4E3", "gridwidth": 2}}, "shapedefaults": {"fillcolor": "#f2f5fa", "line": {"width": 0}, "opacity": 0.4}, "annotationdefaults": {"arrowcolor": "#f2f5fa", "arrowhead": 0, "arrowwidth": 1}, "geo": {"bgcolor": "rgb(17,17,17)", "landcolor": "rgb(17,17,17)", "subunitcolor": "#506784", "showland": true, "showlakes": true, "lakecolor": "rgb(17,17,17)"}, "updatemenudefaults": {"bgcolor": "#506784", "borderwidth": 0}, "sliderdefaults": {"bgcolor": "#C8D4E3", "borderwidth": 1, "bordercolor": "rgb(17,17,17)", "tickwidth": 0}}, "data": {"histogram2dcontour": [{"type": "histogram2dcontour", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "choropleth": [{"type": "choropleth", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "histogram2d": [{"type": "histogram2d", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "heatmap": [{"type": "heatmap", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "heatmapgl": [{"type": "heatmapgl", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "contourcarpet": [{"type": "contourcarpet", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "contour": [{"type": "contour", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "surface": [{"type": "surface", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "mesh3d": [{"type": "mesh3d", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "scatter": [{"type": "scatter", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "parcoords": [{"type": "parcoords", "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterpolargl": [{"type": "scatterpolargl", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "bar": [{"type": "bar", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattergeo": [{"type": "scattergeo", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterpolar": [{"type": "scatterpolar", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "histogram": [{"type": "histogram", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattergl": [{"type": "scattergl", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatter3d": [{"type": "scatter3d", "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattermapbox": [{"type": "scattermapbox", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterternary": [{"type": "scatterternary", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattercarpet": [{"type": "scattercarpet", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "carpet": [{"aaxis": {"endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6"}, "baxis": {"endlinecolor": "#A2B1C6", "gridcolor": "#506784", "linecolor": "#506784", "minorgridcolor": "#506784", "startlinecolor": "#A2B1C6"}, "type": "carpet"}], "table": [{"cells": {"fill": {"color": "#506784"}, "line": {"color": "rgb(17,17,17)"}}, "header": {"fill": {"color": "#2a3f5f"}, "line": {"color": "rgb(17,17,17)"}}, "type": "table"}]}} \ No newline at end of file diff --git a/plotly/package_data/templates/plotly_white.json b/plotly/package_data/templates/plotly_white.json new file mode 100644 index 00000000000..e0179c562eb --- /dev/null +++ b/plotly/package_data/templates/plotly_white.json @@ -0,0 +1 @@ +{"layout": {"colorway": ["#636efa", "#EF553B", "#00cc96", "#ab63fa", "#19d3f3", "#e763fa"], "font": {"color": "#2a3f5f"}, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": {"bgcolor": "white", "angularaxis": {"gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": ""}, "radialaxis": {"gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": ""}}, "ternary": {"bgcolor": "white", "aaxis": {"gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": ""}, "baxis": {"gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": ""}, "caxis": {"gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": ""}}, "xaxis": {"gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "", "zerolinecolor": "#EBF0F8", "zerolinewidth": 2}, "yaxis": {"gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "", "zerolinecolor": "#EBF0F8", "zerolinewidth": 2}, "scene": {"xaxis": {"backgroundcolor": "white", "gridcolor": "#DFE8F3", "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8", "gridwidth": 2}, "yaxis": {"backgroundcolor": "white", "gridcolor": "#DFE8F3", "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8", "gridwidth": 2}, "zaxis": {"backgroundcolor": "white", "gridcolor": "#DFE8F3", "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8", "gridwidth": 2}}, "shapedefaults": {"fillcolor": "#506784", "line": {"width": 0}, "opacity": 0.4}, "annotationdefaults": {"arrowcolor": "#506784", "arrowhead": 0, "arrowwidth": 1}, "geo": {"bgcolor": "white", "landcolor": "white", "subunitcolor": "#C8D4E3", "showland": true, "showlakes": true, "lakecolor": "white"}}, "data": {"histogram2dcontour": [{"type": "histogram2dcontour", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "choropleth": [{"type": "choropleth", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "histogram2d": [{"type": "histogram2d", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "heatmap": [{"type": "heatmap", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "heatmapgl": [{"type": "heatmapgl", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "contourcarpet": [{"type": "contourcarpet", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "contour": [{"type": "contour", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "surface": [{"type": "surface", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "mesh3d": [{"type": "mesh3d", "colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}], "scatter": [{"type": "scatter", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "parcoords": [{"type": "parcoords", "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterpolargl": [{"type": "scatterpolargl", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "bar": [{"type": "bar", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattergeo": [{"type": "scattergeo", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterpolar": [{"type": "scatterpolar", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "histogram": [{"type": "histogram", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattergl": [{"type": "scattergl", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatter3d": [{"type": "scatter3d", "line": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false}, "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattermapbox": [{"type": "scattermapbox", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scatterternary": [{"type": "scatterternary", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "scattercarpet": [{"type": "scattercarpet", "marker": {"colorscale": [[0.0, "#0508b8"], [0.0893854748603352, "#1910d8"], [0.1787709497206704, "#3c19f0"], [0.2681564245810056, "#6b1cfb"], [0.3575418994413408, "#981cfd"], [0.44692737430167595, "#bf1cfd"], [0.5363128491620112, "#dd2bfd"], [0.6256983240223464, "#f246fe"], [0.7150837988826816, "#fc67fd"], [0.8044692737430168, "#fe88fc"], [0.8938547486033519, "#fea5fd"], [0.9832402234636871, "#febefe"], [1.0, "#fec3fe"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "ticks": ""}}}], "carpet": [{"aaxis": {"endlinecolor": "#2a3f5f", "gridcolor": "#C8D4E3", "linecolor": "#C8D4E3", "minorgridcolor": "#C8D4E3", "startlinecolor": "#2a3f5f"}, "baxis": {"endlinecolor": "#2a3f5f", "gridcolor": "#C8D4E3", "linecolor": "#C8D4E3", "minorgridcolor": "#C8D4E3", "startlinecolor": "#2a3f5f"}, "type": "carpet"}], "table": [{"cells": {"fill": {"color": "#EBF0F8"}, "line": {"color": "white"}}, "header": {"fill": {"color": "#C8D4E3"}, "line": {"color": "white"}}, "type": "table"}]}} \ No newline at end of file diff --git a/plotly/package_data/templates/presentation.json b/plotly/package_data/templates/presentation.json new file mode 100644 index 00000000000..516ac5227db --- /dev/null +++ b/plotly/package_data/templates/presentation.json @@ -0,0 +1 @@ +{"layout": {"font": {"size": 18}, "xaxis": {"automargin": true}, "yaxis": {"automargin": true}}, "data": {"scatter": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scatter"}], "scattergl": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scattergl"}], "scatter3d": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scatter3d"}], "scatterpolar": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scatterpolar"}], "scatterpolargl": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scatterpolargl"}], "scatterternary": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scatterternary"}], "scattergeo": [{"line": {"width": 3}, "marker": {"size": 9}, "type": "scattergeo"}], "table": [{"cells": {"height": 30}, "header": {"height": 36}, "type": "table"}]}} \ No newline at end of file diff --git a/plotly/package_data/templates/seaborn.json b/plotly/package_data/templates/seaborn.json new file mode 100644 index 00000000000..637657f88fa --- /dev/null +++ b/plotly/package_data/templates/seaborn.json @@ -0,0 +1 @@ +{"layout": {"colorway": ["rgb(76,114,176)", "rgb(221,132,82)", "rgb(85,168,104)", "rgb(196,78,82)", "rgb(129,114,179)", "rgb(147,120,96)", "rgb(218,139,195)", "rgb(140,140,140)", "rgb(204,185,116)", "rgb(100,181,205)"], "font": {"color": "rgb(36,36,36)"}, "paper_bgcolor": "white", "plot_bgcolor": "rgb(234,234,242)", "polar": {"bgcolor": "rgb(234,234,242)", "angularaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": ""}, "radialaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": ""}}, "ternary": {"bgcolor": "rgb(234,234,242)", "aaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": ""}, "baxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": ""}, "caxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": ""}}, "xaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": "", "zerolinecolor": "white"}, "yaxis": {"gridcolor": "white", "linecolor": "white", "showgrid": true, "ticks": "", "zerolinecolor": "white"}, "scene": {"xaxis": {"backgroundcolor": "rgb(234,234,242)", "gridcolor": "white", "linecolor": "white", "showbackground": true, "showgrid": true, "ticks": "", "zerolinecolor": "white", "gridwidth": 2}, "yaxis": {"backgroundcolor": "rgb(234,234,242)", "gridcolor": "white", "linecolor": "white", "showbackground": true, "showgrid": true, "ticks": "", "zerolinecolor": "white", "gridwidth": 2}, "zaxis": {"backgroundcolor": "rgb(234,234,242)", "gridcolor": "white", "linecolor": "white", "showbackground": true, "showgrid": true, "ticks": "", "zerolinecolor": "white", "gridwidth": 2}}, "shapedefaults": {"fillcolor": "rgb(67,103,167)", "line": {"width": 0}, "opacity": 0.5}, "annotationdefaults": {"arrowcolor": "rgb(67,103,167)"}, "geo": {"bgcolor": "white", "landcolor": "rgb(234,234,242)", "subunitcolor": "white", "showland": true, "showlakes": true, "lakecolor": "white"}}, "data": {"histogram2dcontour": [{"type": "histogram2dcontour", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "choropleth": [{"type": "choropleth", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "histogram2d": [{"type": "histogram2d", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "heatmap": [{"type": "heatmap", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "heatmapgl": [{"type": "heatmapgl", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "contourcarpet": [{"type": "contourcarpet", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "contour": [{"type": "contour", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "surface": [{"type": "surface", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "mesh3d": [{"type": "mesh3d", "colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}], "scatter": [{"type": "scatter", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "parcoords": [{"type": "parcoords", "line": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scatterpolargl": [{"type": "scatterpolargl", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "bar": [{"type": "bar", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "line": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false}, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scattergeo": [{"type": "scattergeo", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scatterpolar": [{"type": "scatterpolar", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "histogram": [{"type": "histogram", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scattergl": [{"type": "scattergl", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scatter3d": [{"type": "scatter3d", "line": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false}, "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scattermapbox": [{"type": "scattermapbox", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scatterternary": [{"type": "scatterternary", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "scattercarpet": [{"type": "scattercarpet", "marker": {"colorscale": [[0.0, "rgb(2,4,25)"], [0.06274509803921569, "rgb(24,15,41)"], [0.12549019607843137, "rgb(47,23,57)"], [0.18823529411764706, "rgb(71,28,72)"], [0.25098039215686274, "rgb(97,30,82)"], [0.3137254901960784, "rgb(123,30,89)"], [0.3764705882352941, "rgb(150,27,91)"], [0.4392156862745098, "rgb(177,22,88)"], [0.5019607843137255, "rgb(203,26,79)"], [0.5647058823529412, "rgb(223,47,67)"], [0.6274509803921569, "rgb(236,76,61)"], [0.6901960784313725, "rgb(242,107,73)"], [0.7529411764705882, "rgb(244,135,95)"], [0.8156862745098039, "rgb(245,162,122)"], [0.8784313725490196, "rgb(246,188,153)"], [0.9411764705882353, "rgb(247,212,187)"], [1.0, "rgb(250,234,220)"]], "autocolorscale": false, "colorbar": {"outlinewidth": 0, "tickcolor": "rgb(36,36,36)", "ticklen": 8, "ticks": "outside", "tickwidth": 2}}}], "carpet": [{"aaxis": {"endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)"}, "baxis": {"endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)"}, "type": "carpet"}], "table": [{"cells": {"fill": {"color": "rgb(231,231,240)"}, "line": {"color": "white"}}, "header": {"fill": {"color": "rgb(183,183,191)"}, "line": {"color": "white"}}, "type": "table"}]}} \ No newline at end of file diff --git a/plotly/package_data/templates/xgridoff.json b/plotly/package_data/templates/xgridoff.json new file mode 100644 index 00000000000..9ebcc718e4d --- /dev/null +++ b/plotly/package_data/templates/xgridoff.json @@ -0,0 +1 @@ +{"layout": {"xaxis": {"showgrid": false}}} \ No newline at end of file diff --git a/plotly/tests/test_core/test_figure_messages/test_plotly_relayout.py b/plotly/tests/test_core/test_figure_messages/test_plotly_relayout.py index 26cfde31c03..97a5fe0adeb 100644 --- a/plotly/tests/test_core/test_figure_messages/test_plotly_relayout.py +++ b/plotly/tests/test_core/test_figure_messages/test_plotly_relayout.py @@ -59,6 +59,38 @@ def test_property_assignment_nested_array(self): self.figure._send_relayout_msg.assert_called_once_with( {'updatemenus.1.buttons.0.method': 'restyle'}) + def test_property_assignment_template(self): + # Initialize template object + self.figure.layout.template = {'layout': { + 'xaxis': {'title': 'x-label'}}} + self.figure._send_relayout_msg.assert_called_with( + {'template': {'layout': {'xaxis': {'title': 'x-label'}}}}) + + # template layout property + self.figure.layout.template.layout.title = 'Template Title' + self.figure._send_relayout_msg.assert_called_with( + {'template.layout.title': 'Template Title'}) + + # template add trace + self.figure.layout.template.data = {'bar': [ + {'marker': {'color': 'blue'}}, + {'marker': {'color': 'yellow'}}]} + + self.figure._send_relayout_msg.assert_called_with( + {'template.data': {'bar': [ + {'type': 'bar', 'marker': {'color': 'blue'}}, + {'type': 'bar', 'marker': {'color': 'yellow'}}]}}) + + # template set trace property + self.figure.layout.template.data.bar[1].marker.opacity = 0.5 + self.figure._send_relayout_msg.assert_called_with( + {'template.data.bar.1.marker.opacity': 0.5}) + + # Set elementdefaults property + self.figure.layout.template.layout.imagedefaults.sizex = 300 + self.figure._send_relayout_msg.assert_called_with( + {'template.layout.imagedefaults.sizex': 300}) + def test_plotly_relayout_toplevel(self): self.figure.plotly_relayout({'title': 'hello'}) self.figure._send_relayout_msg.assert_called_once_with( diff --git a/plotly/tests/test_core/test_graph_objs/test_template.py b/plotly/tests/test_core/test_graph_objs/test_template.py new file mode 100644 index 00000000000..b03ad579e51 --- /dev/null +++ b/plotly/tests/test_core/test_graph_objs/test_template.py @@ -0,0 +1,467 @@ +from __future__ import absolute_import + +import copy +from unittest import TestCase +from nose.tools import raises + +import plotly.io as pio +import plotly.graph_objs as go + + +class TemplateTest(TestCase): + + # Fixtures + # -------- + def setUp(self): + pio.templates['test_template'] = { + 'layout': {'font': {'family': 'Rockwell'}}} + + def tearDown(self): + try: + del pio.templates['test_template'] + except KeyError: + pass + + # template graph_objs tests + # ------------------------- + def test_starts_as_empty(self): + fig = go.Figure() + self.assertEqual(fig.layout.template, go.layout.Template()) + + def test_init_in_figure_constructor(self): + fig = go.Figure(layout={ + 'template': {'layout': {'title': 'Hello, world'}}}) + + self.assertEqual(fig.layout.template, + go.layout.Template(layout={'title': 'Hello, world'})) + + self.assertEqual(fig.to_dict(), + {'data': [], + 'layout': { + 'template': { + 'layout': {'title': 'Hello, world'}}}}) + + def test_init_in_property_assignment(self): + fig = go.Figure() + + fig.layout.template = go.layout.Template( + layout={'title': 'Hello, world'}) + + self.assertEqual(fig.layout.template, + go.layout.Template(layout={'title': 'Hello, world'})) + + self.assertEqual(fig.to_dict(), + {'data': [], + 'layout': { + 'template': { + 'layout': {'title': 'Hello, world'}}}}) + + def test_defaults_in_constructor(self): + fig = go.Figure(layout={ + 'template': { + 'layout': { + 'imagedefaults': {'sizex': 500}}}}) + + self.assertEqual(fig.layout.template.layout.imagedefaults, + go.layout.Image(sizex=500)) + + self.assertEqual(fig.to_dict(), + {'data': [], + 'layout': { + 'template': { + 'layout': { + 'imagedefaults': {'sizex': 500}}}}}) + + def test_defaults_in_property_assignment(self): + fig = go.Figure() + + fig.layout.template.layout.sliderdefaults = \ + go.layout.Slider(bgcolor='green') + + self.assertEqual(fig.layout.template.layout.sliderdefaults, + go.layout.Slider(bgcolor='green')) + + self.assertEqual(fig.to_dict(), + {'data': [], + 'layout': { + 'template': { + 'layout': { + 'sliderdefaults': { + 'bgcolor': 'green'}}}}}) + + @raises(ValueError) + def test_invalid_defaults_property_name_constructor(self): + go.Figure(layout={ + 'template': { + 'layout': { + 'imagedefaults': {'bogus': 500}}}}) + + @raises(ValueError) + def test_invalid_defaults_property_value_constructor(self): + go.Figure(layout={ + 'template': { + 'layout': { + 'imagedefaults': {'sizex': 'str not number'}}}}) + + @raises(ValueError) + def test_invalid_defaults_property_name_constructor(self): + go.Figure(layout={ + 'template': { + 'layout': { + 'xaxis': {'bogus': 500}}}}) + + @raises(ValueError) + def test_invalid_defaults_property_value_constructor(self): + go.Figure(layout={ + 'template': { + 'layout': { + 'xaxis': {'range': 'str not tuple'}}}}) + + # plotly.io.template tests + # ------------------------ + def test_template_as_name_constructor(self): + fig = go.Figure(layout={'template': 'test_template'}) + self.assertEqual(fig.layout.template, pio.templates['test_template']) + + def test_template_as_name_assignment(self): + fig = go.Figure() + self.assertEqual(fig.layout.template, go.layout.Template()) + + fig.layout.template = 'test_template' + self.assertEqual(fig.layout.template, pio.templates['test_template']) + + def test_template_default(self): + pio.templates.default = 'test_template' + fig = go.Figure() + self.assertEqual(fig.layout.template, pio.templates['test_template']) + + def test_template_default_override(self): + pio.templates.default = 'test_template' + template = go.layout.Template(layout={'font': {'size': 30}}) + fig = go.Figure(layout={'template': template}) + self.assertEqual(fig.layout.template, template) + + def test_template_default_override_empty(self): + pio.templates.default = 'test_template' + fig = go.Figure(layout={'template': {}}) + self.assertEqual(fig.layout.template, go.layout.Template()) + + def test_delete_default_template(self): + pio.templates.default = 'test_template' + self.assertEqual(pio.templates.default, 'test_template') + + del pio.templates['test_template'] + self.assertIsNone(pio.templates.default) + + def test_template_in(self): + self.assertTrue('test_template' in pio.templates) + self.assertFalse('bogus' in pio.templates) + self.assertFalse(42 in pio.templates) + + def test_template_iter(self): + self.assertIn('test_template', set(pio.templates)) + + +class TestToTemplated(TestCase): + + def test_move_layout_nested_properties(self): + fig = go.Figure(layout={'font': {'family': 'Courier New'}, + 'paper_bgcolor': 'yellow', + 'title': 'Hello'}) + templated_fig = pio.to_templated(fig) + + # Note that properties named 'title' are not moved to template by + # default + expected_fig = go.Figure(layout={ + 'template': {'layout': {'font': {'family': 'Courier New'}, + 'paper_bgcolor': 'yellow'}}, + 'title': 'Hello'}) + self.assertEqual(templated_fig, expected_fig) + + def test_move_layout_nested_properties_no_skip(self): + fig = go.Figure(layout={'font': {'family': 'Courier New'}, + 'paper_bgcolor': 'yellow', + 'title': 'Hello'}) + templated_fig = pio.to_templated(fig, skip=None) + + # With skip=None properties named 'title' should be moved to template + expected_fig = go.Figure(layout={ + 'template': {'layout': {'font': {'family': 'Courier New'}, + 'paper_bgcolor': 'yellow', + 'title': 'Hello'}}}) + self.assertEqual(templated_fig, expected_fig) + + def test_move_layout_nested_with_existing_template(self): + fig = go.Figure(layout={'font': {'family': 'Courier New'}, + 'title': 'Hello', + 'template': {'layout': { + 'font': {'family': 'Arial', + 'size': 10}}}}) + + templated_fig = pio.to_templated(fig) + + expected_fig = go.Figure(layout={ + 'template': {'layout': {'font': {'family': 'Courier New', + 'size': 10}}}, + 'title': 'Hello'}) + self.assertEqual(templated_fig, expected_fig) + + def test_move_unnamed_annotation_property(self): + fig = go.Figure(layout={ + 'annotations': [{'arrowcolor': 'blue', + 'text': 'First one', + 'font': {'size': 23}}, + {'arrowcolor': 'green', + 'text': 'Second one', + 'font': {'family': 'Rockwell'}}]}) + + templated_fig = pio.to_templated(fig) + + # Note that properties named 'text' are not moved to template by + # default, unless they are part of a named array element + expected_fig = go.Figure(layout={ + 'annotations': [{'text': 'First one'}, {'text': 'Second one'}], + 'template': {'layout': {'annotationdefaults': { + 'arrowcolor': 'green', + 'font': {'size': 23, 'family': 'Rockwell'} + }}} + }) + self.assertEqual(templated_fig, expected_fig) + + def test_move_named_annotation_property(self): + fig = go.Figure(layout={ + 'annotations': [{'arrowcolor': 'blue', + 'text': 'First one', + 'font': {'size': 23}}, + {'arrowcolor': 'green', + 'text': 'Second one', + 'font': {'family': 'Rockwell'}, + 'name': 'First'}]}) + + templated_fig = pio.to_templated(fig) + + expected_fig = go.Figure(layout={ + 'annotations': [{'text': 'First one'}, {'name': 'First'}], + 'template': {'layout': { + 'annotationdefaults': { + 'arrowcolor': 'blue', + 'font': {'size': 23} + }, + 'annotations': [{'arrowcolor': 'green', + 'font': {'family': 'Rockwell'}, + 'text': 'Second one', + 'name': 'First'}] + }} + }) + self.assertEqual(templated_fig, expected_fig) + + def test_move_nested_trace_properties(self): + fig = go.Figure( + data=[ + go.Bar(y=[1, 2, 3], + marker={'opacity': 0.6, + 'color': 'green'}), + go.Scatter(x=[1, 3, 2], + marker={'size': 30, + 'color': [1, 1, 0]}), + go.Bar(y=[3, 2, 1], + marker={'opacity': 0.4, + 'color': [1, 0.5, 0]}) + ], + layout={'barmode': 'group'} + ) + + templated_fig = pio.to_templated(fig) + + expected_fig = go.Figure( + data=[ + go.Bar(y=[1, 2, 3]), + go.Scatter(x=[1, 3, 2], marker={'color': [1, 1, 0]}), + go.Bar(y=[3, 2, 1], marker={'color': [1, 0.5, 0]}) + ], + layout={ + 'template': { + 'data': { + 'scatter': [go.Scatter(marker={'size': 30})], + 'bar': [ + go.Bar(marker={'opacity': 0.6, + 'color': 'green'}), + go.Bar(marker={'opacity': 0.4}) + ]}, + 'layout': { + 'barmode': 'group' + } + } + } + ) + + self.assertEqual(pio.to_json(templated_fig), + pio.to_json(expected_fig)) + + def test_move_nested_trace_properties_existing_traces(self): + fig = go.Figure( + data=[ + go.Bar(y=[1, 2, 3], + marker={'opacity': 0.6, + 'color': 'green'}), + go.Scatter(x=[1, 3, 2], + marker={'size': 30, + 'color': [1, 1, 0]}), + go.Bar(y=[3, 2, 1], + marker={'opacity': 0.4, + 'color': [1, 0.5, 0]}) + ], + layout={'barmode': 'group', + 'template': { + 'data': { + 'bar': [go.Bar(marker={ + 'line': {'color': 'purple'}})] + } + }} + ) + + templated_fig = pio.to_templated(fig) + + expected_fig = go.Figure( + data=[ + go.Bar(y=[1, 2, 3]), + go.Scatter(x=[1, 3, 2], marker={'color': [1, 1, 0]}), + go.Bar(y=[3, 2, 1], marker={'color': [1, 0.5, 0]}) + ], + layout={ + 'template': { + 'data': { + 'scatter': [go.Scatter(marker={'size': 30})], + 'bar': [ + go.Bar(marker={'opacity': 0.6, + 'color': 'green', + 'line': { + 'color': 'purple' + }}), + go.Bar(marker={'opacity': 0.4}) + ]}, + 'layout': { + 'barmode': 'group' + } + } + } + ) + + self.assertEqual(pio.to_json(templated_fig), + pio.to_json(expected_fig)) + + +class TestMergeTemplates(TestCase): + + def setUp(self): + + self.template1 = go.layout.Template( + layout={'font': {'size': 20, 'family': 'Rockwell'}}, + data={ + 'scatter': [go.Scatter(line={'dash': 'solid'}), + go.Scatter(line={'dash': 'dot'})], + 'bar': [go.Bar(marker={'opacity': 0.7}), + go.Bar(marker={'opacity': 0.4})], + 'parcoords': [ + go.Parcoords(dimensiondefaults={'multiselect': True}) + ] + # no 'scattergl' + } + ) + pio.templates['template1'] = self.template1 + self.template1_orig = copy.deepcopy(self.template1) + + self.template2 = go.layout.Template( + layout={'paper_bgcolor': 'green', + 'font': {'size': 14, 'color': 'yellow'}}, + data={ + 'scatter': [go.Scatter(marker={'color': 'red'}), + go.Scatter(marker={'color': 'green'}), + go.Scatter(marker={'color': 'blue'})], + # no 'bar' + 'parcoords': [ + go.Parcoords(line={'colorscale': 'Viridis'}), + go.Parcoords(line={'colorscale': 'Blues'}) + ], + 'scattergl': [go.Scattergl(hoverinfo='x+y')] + } + ) + pio.templates['template2'] = self.template2 + self.template2_orig = copy.deepcopy(self.template2) + + self.expected1_2 = go.layout.Template( + layout={'paper_bgcolor': 'green', + 'font': {'size': 14, + 'color': 'yellow', + 'family': 'Rockwell'}}, + data={ + 'scatter': [ + go.Scatter(marker={'color': 'red'}, + line={'dash': 'solid'}), + go.Scatter(marker={'color': 'green'}, + line={'dash': 'dot'}), + go.Scatter(marker={'color': 'blue'}, + line={'dash': 'solid'}), + go.Scatter(marker={'color': 'red'}, + line={'dash': 'dot'}), + go.Scatter(marker={'color': 'green'}, + line={'dash': 'solid'}), + go.Scatter(marker={'color': 'blue'}, + line={'dash': 'dot'}), + ], + 'bar': [go.Bar(marker={'opacity': 0.7}), + go.Bar(marker={'opacity': 0.4})], + 'parcoords': [ + go.Parcoords(dimensiondefaults={'multiselect': True}, + line={'colorscale': 'Viridis'}), + go.Parcoords(dimensiondefaults={'multiselect': True}, + line={'colorscale': 'Blues'}) + ], + 'scattergl': [go.Scattergl(hoverinfo='x+y')] + } + ) + + def test_merge_0(self): + self.assertEqual(pio.templates.merge_templates(), + go.layout.Template()) + + def test_merge_1(self): + self.assertEqual(pio.templates.merge_templates(self.template1), + self.template1) + + def test_merge_2(self): + result = pio.templates.merge_templates(self.template1, self.template2) + expected = self.expected1_2 + + self.assertEqual(result, expected) + + # Make sure input templates weren't modified + self.assertEqual(self.template1, self.template1_orig) + self.assertEqual(self.template2, self.template2_orig) + + def test_merge_3(self): + template3 = go.layout.Template(layout={'margin': {'l': 0, 'r': 0}}) + result = pio.templates.merge_templates( + self.template1, + self.template2, + template3) + + expected = self.expected1_2 + expected.update(template3) + self.assertEqual(result, expected) + + # Make sure input templates weren't modified + self.assertEqual(self.template1, self.template1_orig) + self.assertEqual(self.template2, self.template2_orig) + + def test_merge_by_flaglist_string(self): + layout = go.Layout() + layout.template = 'template1+template2' + result = layout.template + expected = self.expected1_2 + + self.assertEqual(result, expected) + + # Make sure input templates weren't modified + self.assertEqual(self.template1, self.template1_orig) + self.assertEqual(self.template2, self.template2_orig) diff --git a/plotly/tests/test_optional/test_figure_factory/test_utils.py b/plotly/tests/test_optional/test_figure_factory/test_utils.py deleted file mode 100644 index ccdd2ee2759..00000000000 --- a/plotly/tests/test_optional/test_figure_factory/test_utils.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -Module to test plotly.utils with optional dependencies. - -""" -from __future__ import absolute_import - -from unittest import TestCase -from plotly.exceptions import PlotlyError - -import plotly.figure_factory.utils as utils - -import pandas as pd - - -class TestFigureFactoryUtils(TestCase): - - def test_validate_index(self): - pattern = ( - "Error in indexing column. " - "Make sure all entries of each " - "column are all numbers or " - "all strings." - ) - - index = [1, 'b', 3] - index_series = pd.Series([1, 'a', 3], index=[7, 3, 7]) - - self.assertRaisesRegexp(PlotlyError, pattern, - utils.validate_index, index) - - self.assertRaisesRegexp(PlotlyError, pattern, - utils.validate_index, index_series) - - def test_validate_dataframe(self): - pattern = ( - "Error in dataframe. " - "Make sure all entries of " - "each column are either " - "numbers or strings." - ) - - df1 = [[1, 'b', 3], ['a', 2, 'c']] - df2 = pd.DataFrame(df1, index=[3, 4]) - - self.assertRaisesRegexp(PlotlyError, pattern, - utils.validate_dataframe, df1) - - self.assertRaisesRegexp(PlotlyError, pattern, - utils.validate_dataframe, df2) - - -# TODO: transfer all tests from test_optional/test_tools/test_figurefactory.py -# and test_optional/test_figurefactory/test_figurefactory.py to this module diff --git a/plotly/tests/test_orca/images/darwin/fig1.jpeg b/plotly/tests/test_orca/images/darwin/fig1.jpeg deleted file mode 100644 index 910ef01f542..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/fig1.jpeg and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/fig1.jpg b/plotly/tests/test_orca/images/darwin/fig1.jpg deleted file mode 100644 index 910ef01f542..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/fig1.jpg and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/fig1.png b/plotly/tests/test_orca/images/darwin/fig1.png deleted file mode 100644 index fb0da492dfc..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/fig1.png and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/fig1.webp b/plotly/tests/test_orca/images/darwin/fig1.webp deleted file mode 100644 index 67e4a2057c7..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/fig1.webp and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/latexfig.jpeg b/plotly/tests/test_orca/images/darwin/latexfig.jpeg deleted file mode 100644 index 030a84c1998..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/latexfig.jpeg and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/latexfig.jpg b/plotly/tests/test_orca/images/darwin/latexfig.jpg deleted file mode 100644 index 030a84c1998..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/latexfig.jpg and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/latexfig.png b/plotly/tests/test_orca/images/darwin/latexfig.png deleted file mode 100644 index fcf6ffa14f4..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/latexfig.png and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/latexfig.webp b/plotly/tests/test_orca/images/darwin/latexfig.webp deleted file mode 100644 index dbf80ded0d8..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/latexfig.webp and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/topofig.jpeg b/plotly/tests/test_orca/images/darwin/topofig.jpeg deleted file mode 100644 index 82c2e2e3de7..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/topofig.jpeg and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/topofig.jpg b/plotly/tests/test_orca/images/darwin/topofig.jpg deleted file mode 100644 index 82c2e2e3de7..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/topofig.jpg and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/topofig.png b/plotly/tests/test_orca/images/darwin/topofig.png deleted file mode 100644 index 1aeb3f136e8..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/topofig.png and /dev/null differ diff --git a/plotly/tests/test_orca/images/darwin/topofig.webp b/plotly/tests/test_orca/images/darwin/topofig.webp deleted file mode 100644 index 6ae7a6aaa8f..00000000000 Binary files a/plotly/tests/test_orca/images/darwin/topofig.webp and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/fig1.jpeg b/plotly/tests/test_orca/images/linux/fig1.jpeg deleted file mode 100644 index 0dcf2e9344b..00000000000 Binary files a/plotly/tests/test_orca/images/linux/fig1.jpeg and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/fig1.jpg b/plotly/tests/test_orca/images/linux/fig1.jpg deleted file mode 100644 index 0dcf2e9344b..00000000000 Binary files a/plotly/tests/test_orca/images/linux/fig1.jpg and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/fig1.png b/plotly/tests/test_orca/images/linux/fig1.png deleted file mode 100644 index 1f0df13a980..00000000000 Binary files a/plotly/tests/test_orca/images/linux/fig1.png and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/fig1.webp b/plotly/tests/test_orca/images/linux/fig1.webp deleted file mode 100644 index 6d566fb9ee0..00000000000 Binary files a/plotly/tests/test_orca/images/linux/fig1.webp and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/latexfig.jpeg b/plotly/tests/test_orca/images/linux/latexfig.jpeg deleted file mode 100644 index d64be03fe20..00000000000 Binary files a/plotly/tests/test_orca/images/linux/latexfig.jpeg and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/latexfig.jpg b/plotly/tests/test_orca/images/linux/latexfig.jpg deleted file mode 100644 index d64be03fe20..00000000000 Binary files a/plotly/tests/test_orca/images/linux/latexfig.jpg and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/latexfig.png b/plotly/tests/test_orca/images/linux/latexfig.png deleted file mode 100644 index 7e0480556fa..00000000000 Binary files a/plotly/tests/test_orca/images/linux/latexfig.png and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/latexfig.webp b/plotly/tests/test_orca/images/linux/latexfig.webp deleted file mode 100644 index 5991aabf02a..00000000000 Binary files a/plotly/tests/test_orca/images/linux/latexfig.webp and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/topofig.jpeg b/plotly/tests/test_orca/images/linux/topofig.jpeg deleted file mode 100644 index bce04dfcf05..00000000000 Binary files a/plotly/tests/test_orca/images/linux/topofig.jpeg and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/topofig.jpg b/plotly/tests/test_orca/images/linux/topofig.jpg deleted file mode 100644 index bce04dfcf05..00000000000 Binary files a/plotly/tests/test_orca/images/linux/topofig.jpg and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/topofig.png b/plotly/tests/test_orca/images/linux/topofig.png deleted file mode 100644 index a779cf80121..00000000000 Binary files a/plotly/tests/test_orca/images/linux/topofig.png and /dev/null differ diff --git a/plotly/tests/test_orca/images/linux/topofig.webp b/plotly/tests/test_orca/images/linux/topofig.webp deleted file mode 100644 index e7b1f7a8174..00000000000 Binary files a/plotly/tests/test_orca/images/linux/topofig.webp and /dev/null differ diff --git a/plotly/tests/test_orca/test_to_image.py b/plotly/tests/test_orca/test_to_image.py index fc456bf490f..7eb5d8d84b7 100644 --- a/plotly/tests/test_orca/test_to_image.py +++ b/plotly/tests/test_orca/test_to_image.py @@ -28,7 +28,7 @@ failed_dir = images_dir + 'failed/' tmp_dir = images_dir + 'tmp/' # These formats are deterministic. PDF and svg don't seem to be -image_formats = ['png', 'jpg', 'jpeg', 'webp', 'eps'] +image_formats = ['eps'] topo_df = pd.read_csv('plotly/tests/test_orca/resources/2011_us_ag_exports.csv') # Fixtures @@ -260,12 +260,12 @@ def test_write_image_string_bad_extension_override(fig1): file_name = 'fig1.bogus' tmp_path = tmp_dir + file_name - pio.write_image(fig1, tmp_path, format='jpg', width=700, height=500) + pio.write_image(fig1, tmp_path, format='eps', width=700, height=500) with open(tmp_path, 'rb') as f: written_bytes = f.read() - with open(images_dir + 'fig1.jpg', 'rb') as f: + with open(images_dir + 'fig1.eps', 'rb') as f: expected_bytes = f.read() assert written_bytes == expected_bytes diff --git a/plotly/validators/_layout.py b/plotly/validators/_layout.py index 4a5963b1153..6ff5d9c7d68 100644 --- a/plotly/validators/_layout.py +++ b/plotly/validators/_layout.py @@ -16,6 +16,11 @@ def __init__(self, plotly_name='layout', parent_name='', **kwargs): annotations plotly.graph_objs.layout.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), + sets the default property values to use for + elements of layout.annotations autosize Determines whether or not a layout width or height that has been left undefined by the user @@ -166,6 +171,11 @@ def __init__(self, plotly_name='layout', parent_name='', **kwargs): images plotly.graph_objs.layout.Image instance or dict with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the + default property values to use for elements of + layout.images legend plotly.graph_objs.layout.Legend instance or dict with compatible properties @@ -216,6 +226,11 @@ def __init__(self, plotly_name='layout', parent_name='', **kwargs): shapes plotly.graph_objs.layout.Shape instance or dict with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the + default property values to use for elements of + layout.shapes showlegend Determines whether or not a legend is drawn. Default is `true` if there is a trace to show @@ -226,6 +241,11 @@ def __init__(self, plotly_name='layout', parent_name='', **kwargs): sliders plotly.graph_objs.layout.Slider instance or dict with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets + the default property values to use for elements + of layout.sliders spikedistance Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no @@ -236,24 +256,27 @@ def __init__(self, plotly_name='layout', parent_name='', **kwargs): such as scatter fills. template Default attributes to be applied to the plot. - Templates can be created from existing plots - using `Plotly.makeTemplate`, or created - manually. They should be objects with format: - `{layout: layoutTemplate, data: {[type]: - [traceTemplate, ...]}, ...}` `layoutTemplate` - and `traceTemplate` are objects matching the - attribute structure of `layout` and a data - trace. Trace templates are applied cyclically - to traces of each type. Container arrays (eg - `annotations`) have special handling: An object - ending in `defaults` (eg `annotationdefaults`) - is applied to each array item. But if an item - has a `templateitemname` key we look in the - template array for an item with matching `name` - and apply that instead. If no matching `name` - is found we mark the item invisible. Any named + This should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: + [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the + structure of `figure.layout` and + `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` + (e.g. 'scatter'). Alternatively, this may be + specified as an instance of + plotly.graph_objs.layout.Template. Trace + templates are applied cyclically to traces of + each type. Container arrays (eg `annotations`) + have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied + to each array item. But if an item has a + `templateitemname` key we look in the template + array for an item with matching `name` and + apply that instead. If no matching `name` is + found we mark the item invisible. Any named template item not referenced is appended to the - end of the array, so you can use this for a + end of the array, so this can be used to add a watermark annotation or a logo image, for example. To omit one of these items on the plot, make an item with matching @@ -268,6 +291,11 @@ def __init__(self, plotly_name='layout', parent_name='', **kwargs): updatemenus plotly.graph_objs.layout.Updatemenu instance or dict with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), + sets the default property values to use for + elements of layout.updatemenus violingap Sets the gap (in plot fraction) between violins of adjacent location coordinates. diff --git a/plotly/validators/_parcoords.py b/plotly/validators/_parcoords.py index 0bfbd94e4aa..7a6eed3c3f6 100644 --- a/plotly/validators/_parcoords.py +++ b/plotly/validators/_parcoords.py @@ -23,6 +23,11 @@ def __init__(self, plotly_name='parcoords', parent_name='', **kwargs): The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as layout.template.dat + a.parcoords.dimensiondefaults), sets the + default property values to use for elements of + parcoords.dimensions domain plotly.graph_objs.parcoords.Domain instance or dict with compatible properties diff --git a/plotly/validators/_splom.py b/plotly/validators/_splom.py index 02d400304f4..d3963eda516 100644 --- a/plotly/validators/_splom.py +++ b/plotly/validators/_splom.py @@ -25,6 +25,11 @@ def __init__(self, plotly_name='splom', parent_name='', **kwargs): dimensions plotly.graph_objs.splom.Dimension instance or dict with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), + sets the default property values to use for + elements of splom.dimensions hoverinfo Determines which trace information appear on hover. If `none` or `skip` are set, no diff --git a/plotly/validators/bar/marker/_colorbar.py b/plotly/validators/bar/marker/_colorbar.py index 561631e4fdf..56fd5193d4d 100644 --- a/plotly/validators/bar/marker/_colorbar.py +++ b/plotly/validators/bar/marker/_colorbar.py @@ -140,6 +140,11 @@ def __init__( plotly.graph_objs.bar.marker.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.bar.marker.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of bar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/bar/marker/colorbar/__init__.py b/plotly/validators/bar/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/bar/marker/colorbar/__init__.py +++ b/plotly/validators/bar/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..dd2cd157a69 --- /dev/null +++ b/plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='bar.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/barpolar/marker/_colorbar.py b/plotly/validators/barpolar/marker/_colorbar.py index 4debe96c3ad..2df0892cc55 100644 --- a/plotly/validators/barpolar/marker/_colorbar.py +++ b/plotly/validators/barpolar/marker/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.barpolar.marker.colorbar.Tick formatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.barpolar.marker.colorbar.tickformatstopdefaul + ts), sets the default property values to use + for elements of + barpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/barpolar/marker/colorbar/__init__.py b/plotly/validators/barpolar/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/barpolar/marker/colorbar/__init__.py +++ b/plotly/validators/barpolar/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..8105fedf1c6 --- /dev/null +++ b/plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='barpolar.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/carpet/_aaxis.py b/plotly/validators/carpet/_aaxis.py index 6a9d2647ed8..8c3e523ea76 100644 --- a/plotly/validators/carpet/_aaxis.py +++ b/plotly/validators/carpet/_aaxis.py @@ -176,6 +176,11 @@ def __init__(self, plotly_name='aaxis', parent_name='carpet', **kwargs): tickformatstops plotly.graph_objs.carpet.aaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.carpet.aaxis.tickformatstopdefaults), sets + the default property values to use for elements + of carpet.aaxis.tickformatstops tickmode tickprefix diff --git a/plotly/validators/carpet/_baxis.py b/plotly/validators/carpet/_baxis.py index 798e611e1be..078af35e19f 100644 --- a/plotly/validators/carpet/_baxis.py +++ b/plotly/validators/carpet/_baxis.py @@ -176,6 +176,11 @@ def __init__(self, plotly_name='baxis', parent_name='carpet', **kwargs): tickformatstops plotly.graph_objs.carpet.baxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.carpet.baxis.tickformatstopdefaults), sets + the default property values to use for elements + of carpet.baxis.tickformatstops tickmode tickprefix diff --git a/plotly/validators/carpet/aaxis/__init__.py b/plotly/validators/carpet/aaxis/__init__.py index 40cab15907e..0d2a8a912e2 100644 --- a/plotly/validators/carpet/aaxis/__init__.py +++ b/plotly/validators/carpet/aaxis/__init__.py @@ -9,6 +9,7 @@ from ._ticksuffix import TicksuffixValidator from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/carpet/aaxis/_tickformatstopdefaults.py b/plotly/validators/carpet/aaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..517d3fc4f6e --- /dev/null +++ b/plotly/validators/carpet/aaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='carpet.aaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/carpet/baxis/__init__.py b/plotly/validators/carpet/baxis/__init__.py index 40cab15907e..0d2a8a912e2 100644 --- a/plotly/validators/carpet/baxis/__init__.py +++ b/plotly/validators/carpet/baxis/__init__.py @@ -9,6 +9,7 @@ from ._ticksuffix import TicksuffixValidator from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/carpet/baxis/_tickformatstopdefaults.py b/plotly/validators/carpet/baxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..755c66c46b2 --- /dev/null +++ b/plotly/validators/carpet/baxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='carpet.baxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/choropleth/_colorbar.py b/plotly/validators/choropleth/_colorbar.py index 56dae5c1176..0bca56e538e 100644 --- a/plotly/validators/choropleth/_colorbar.py +++ b/plotly/validators/choropleth/_colorbar.py @@ -140,6 +140,11 @@ def __init__( plotly.graph_objs.choropleth.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.choropleth.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of choropleth.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/choropleth/colorbar/__init__.py b/plotly/validators/choropleth/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/choropleth/colorbar/__init__.py +++ b/plotly/validators/choropleth/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py b/plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..7e76ceefb67 --- /dev/null +++ b/plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='choropleth.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/cone/_colorbar.py b/plotly/validators/cone/_colorbar.py index 38b33db2894..235bafd1f23 100644 --- a/plotly/validators/cone/_colorbar.py +++ b/plotly/validators/cone/_colorbar.py @@ -137,6 +137,11 @@ def __init__(self, plotly_name='colorbar', parent_name='cone', **kwargs): tickformatstops plotly.graph_objs.cone.colorbar.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.cone.colorbar.tickformatstopdefaults), sets + the default property values to use for elements + of cone.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/cone/colorbar/__init__.py b/plotly/validators/cone/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/cone/colorbar/__init__.py +++ b/plotly/validators/cone/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/cone/colorbar/_tickformatstopdefaults.py b/plotly/validators/cone/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..c6899b55e3a --- /dev/null +++ b/plotly/validators/cone/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='cone.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/contour/_colorbar.py b/plotly/validators/contour/_colorbar.py index f362222836b..20c013fcd6d 100644 --- a/plotly/validators/contour/_colorbar.py +++ b/plotly/validators/contour/_colorbar.py @@ -139,6 +139,11 @@ def __init__( tickformatstops plotly.graph_objs.contour.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.contour.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of contour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/contour/colorbar/__init__.py b/plotly/validators/contour/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/contour/colorbar/__init__.py +++ b/plotly/validators/contour/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/contour/colorbar/_tickformatstopdefaults.py b/plotly/validators/contour/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..5b4480fa5de --- /dev/null +++ b/plotly/validators/contour/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='contour.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/contourcarpet/_colorbar.py b/plotly/validators/contourcarpet/_colorbar.py index bddb856cb0a..92712289753 100644 --- a/plotly/validators/contourcarpet/_colorbar.py +++ b/plotly/validators/contourcarpet/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.contourcarpet.colorbar.Tickfo rmatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.contourcarpet.colorbar.tickformatstopdefaults + ), sets the default property values to use for + elements of + contourcarpet.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/contourcarpet/colorbar/__init__.py b/plotly/validators/contourcarpet/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/contourcarpet/colorbar/__init__.py +++ b/plotly/validators/contourcarpet/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py b/plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..9a73310453e --- /dev/null +++ b/plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='contourcarpet.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/heatmap/_colorbar.py b/plotly/validators/heatmap/_colorbar.py index 78a98a77750..78d937903a0 100644 --- a/plotly/validators/heatmap/_colorbar.py +++ b/plotly/validators/heatmap/_colorbar.py @@ -139,6 +139,11 @@ def __init__( tickformatstops plotly.graph_objs.heatmap.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.heatmap.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of heatmap.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/heatmap/colorbar/__init__.py b/plotly/validators/heatmap/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/heatmap/colorbar/__init__.py +++ b/plotly/validators/heatmap/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py b/plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..559a3739b03 --- /dev/null +++ b/plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='heatmap.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/heatmapgl/_colorbar.py b/plotly/validators/heatmapgl/_colorbar.py index dd795866c08..ec8431023cb 100644 --- a/plotly/validators/heatmapgl/_colorbar.py +++ b/plotly/validators/heatmapgl/_colorbar.py @@ -140,6 +140,11 @@ def __init__( plotly.graph_objs.heatmapgl.colorbar.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.heatmapgl.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of heatmapgl.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/heatmapgl/colorbar/__init__.py b/plotly/validators/heatmapgl/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/heatmapgl/colorbar/__init__.py +++ b/plotly/validators/heatmapgl/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/heatmapgl/colorbar/_tickformatstopdefaults.py b/plotly/validators/heatmapgl/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..026bfd1ed12 --- /dev/null +++ b/plotly/validators/heatmapgl/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='heatmapgl.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/histogram/marker/_colorbar.py b/plotly/validators/histogram/marker/_colorbar.py index 1f7c21405e5..54d343ceea2 100644 --- a/plotly/validators/histogram/marker/_colorbar.py +++ b/plotly/validators/histogram/marker/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.histogram.marker.colorbar.Tic kformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.histogram.marker.colorbar.tickformatstopdefau + lts), sets the default property values to use + for elements of + histogram.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/histogram/marker/colorbar/__init__.py b/plotly/validators/histogram/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/histogram/marker/colorbar/__init__.py +++ b/plotly/validators/histogram/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..acd068fc127 --- /dev/null +++ b/plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='histogram.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/histogram2d/_colorbar.py b/plotly/validators/histogram2d/_colorbar.py index 6e63356c3cb..d698a33361e 100644 --- a/plotly/validators/histogram2d/_colorbar.py +++ b/plotly/validators/histogram2d/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.histogram2d.colorbar.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.histogram2d.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of + histogram2d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/histogram2d/colorbar/__init__.py b/plotly/validators/histogram2d/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/histogram2d/colorbar/__init__.py +++ b/plotly/validators/histogram2d/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py b/plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..7ef78eb924d --- /dev/null +++ b/plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='histogram2d.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/histogram2dcontour/_colorbar.py b/plotly/validators/histogram2dcontour/_colorbar.py index b48eb3d3f5f..b4fb13baab1 100644 --- a/plotly/validators/histogram2dcontour/_colorbar.py +++ b/plotly/validators/histogram2dcontour/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.histogram2dcontour.colorbar.T ickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.histogram2dcontour.colorbar.tickformatstopdef + aults), sets the default property values to use + for elements of + histogram2dcontour.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/histogram2dcontour/colorbar/__init__.py b/plotly/validators/histogram2dcontour/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/histogram2dcontour/colorbar/__init__.py +++ b/plotly/validators/histogram2dcontour/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py b/plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..e81f516dacc --- /dev/null +++ b/plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='histogram2dcontour.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/__init__.py b/plotly/validators/layout/__init__.py index 265fc76bc0d..6076289e27c 100644 --- a/plotly/validators/layout/__init__.py +++ b/plotly/validators/layout/__init__.py @@ -4,14 +4,17 @@ from ._violinmode import ViolinmodeValidator from ._violingroupgap import ViolingroupgapValidator from ._violingap import ViolingapValidator +from ._updatemenudefaults import UpdatemenuValidator from ._updatemenus import UpdatemenusValidator from ._titlefont import TitlefontValidator from ._title import TitleValidator from ._ternary import TernaryValidator from ._template import TemplateValidator from ._spikedistance import SpikedistanceValidator +from ._sliderdefaults import SliderValidator from ._sliders import SlidersValidator from ._showlegend import ShowlegendValidator +from ._shapedefaults import ShapeValidator from ._shapes import ShapesValidator from ._separators import SeparatorsValidator from ._selectdirection import SelectdirectionValidator @@ -25,6 +28,7 @@ from ._margin import MarginValidator from ._mapbox import MapboxValidator from ._legend import LegendValidator +from ._imagedefaults import ImageValidator from ._images import ImagesValidator from ._hovermode import HovermodeValidator from ._hoverlabel import HoverlabelValidator @@ -51,5 +55,6 @@ from ._bargroupgap import BargroupgapValidator from ._bargap import BargapValidator from ._autosize import AutosizeValidator +from ._annotationdefaults import AnnotationValidator from ._annotations import AnnotationsValidator from ._angularaxis import AngularAxisValidator diff --git a/plotly/validators/layout/_annotationdefaults.py b/plotly/validators/layout/_annotationdefaults.py new file mode 100644 index 00000000000..4d5680a395f --- /dev/null +++ b/plotly/validators/layout/_annotationdefaults.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class AnnotationValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='annotationdefaults', parent_name='layout', **kwargs + ): + super(AnnotationValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Annotation'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/_imagedefaults.py b/plotly/validators/layout/_imagedefaults.py new file mode 100644 index 00000000000..e9bf8128944 --- /dev/null +++ b/plotly/validators/layout/_imagedefaults.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class ImageValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='imagedefaults', parent_name='layout', **kwargs + ): + super(ImageValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Image'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/_mapbox.py b/plotly/validators/layout/_mapbox.py index f836e63ab94..0b4167753b4 100644 --- a/plotly/validators/layout/_mapbox.py +++ b/plotly/validators/layout/_mapbox.py @@ -27,6 +27,11 @@ def __init__(self, plotly_name='mapbox', parent_name='layout', **kwargs): layers plotly.graph_objs.layout.mapbox.Layer instance or dict with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.mapbox.layerdefaults), + sets the default property values to use for + elements of layout.mapbox.layers pitch Sets the pitch angle of the map (in degrees, where 0 means perpendicular to the surface of diff --git a/plotly/validators/layout/_scene.py b/plotly/validators/layout/_scene.py index 8852c47562b..c5bfe7194a1 100644 --- a/plotly/validators/layout/_scene.py +++ b/plotly/validators/layout/_scene.py @@ -13,6 +13,11 @@ def __init__(self, plotly_name='scene', parent_name='layout', **kwargs): annotations plotly.graph_objs.layout.scene.Annotation instance or dict with compatible properties + annotationdefaults + When used in a template (as layout.template.lay + out.scene.annotationdefaults), sets the default + property values to use for elements of + layout.scene.annotations aspectmode If "cube", this scene's axes are drawn as a cube, regardless of the axes' ranges. If diff --git a/plotly/validators/layout/_shapedefaults.py b/plotly/validators/layout/_shapedefaults.py new file mode 100644 index 00000000000..05185137b47 --- /dev/null +++ b/plotly/validators/layout/_shapedefaults.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class ShapeValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='shapedefaults', parent_name='layout', **kwargs + ): + super(ShapeValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Shape'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/_sliderdefaults.py b/plotly/validators/layout/_sliderdefaults.py new file mode 100644 index 00000000000..76cef00d805 --- /dev/null +++ b/plotly/validators/layout/_sliderdefaults.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class SliderValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='sliderdefaults', parent_name='layout', **kwargs + ): + super(SliderValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Slider'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/_sliders.py b/plotly/validators/layout/_sliders.py index f4b4fe8f262..ce1e3b564d9 100644 --- a/plotly/validators/layout/_sliders.py +++ b/plotly/validators/layout/_sliders.py @@ -57,6 +57,11 @@ def __init__(self, plotly_name='sliders', parent_name='layout', **kwargs): steps plotly.graph_objs.layout.slider.Step instance or dict with compatible properties + stepdefaults + When used in a template (as + layout.template.layout.slider.stepdefaults), + sets the default property values to use for + elements of layout.slider.steps templateitemname Used to refer to a named item in this array in the template. Named items from the template diff --git a/plotly/validators/layout/_template.py b/plotly/validators/layout/_template.py index 23df413ccc5..0decffc279b 100644 --- a/plotly/validators/layout/_template.py +++ b/plotly/validators/layout/_template.py @@ -1,13 +1,22 @@ import _plotly_utils.basevalidators -class TemplateValidator(_plotly_utils.basevalidators.AnyValidator): +class TemplateValidator(_plotly_utils.basevalidators.BaseTemplateValidator): def __init__(self, plotly_name='template', parent_name='layout', **kwargs): super(TemplateValidator, self).__init__( plotly_name=plotly_name, parent_name=parent_name, - edit_type=kwargs.pop('edit_type', 'calc'), - role=kwargs.pop('role', 'info'), + data_class_str=kwargs.pop('data_class_str', 'Template'), + data_docs=kwargs.pop( + 'data_docs', """ + data + plotly.graph_objs.layout.template.Data instance + or dict with compatible properties + layout + plotly.graph_objs.layout.template.Layout + instance or dict with compatible properties +""" + ), **kwargs ) diff --git a/plotly/validators/layout/_updatemenudefaults.py b/plotly/validators/layout/_updatemenudefaults.py new file mode 100644 index 00000000000..95a0878c069 --- /dev/null +++ b/plotly/validators/layout/_updatemenudefaults.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class UpdatemenuValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='updatemenudefaults', parent_name='layout', **kwargs + ): + super(UpdatemenuValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Updatemenu'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/_updatemenus.py b/plotly/validators/layout/_updatemenus.py index ee0e5fcb1e6..710a0deddf0 100644 --- a/plotly/validators/layout/_updatemenus.py +++ b/plotly/validators/layout/_updatemenus.py @@ -29,6 +29,11 @@ def __init__( buttons plotly.graph_objs.layout.updatemenu.Button instance or dict with compatible properties + buttondefaults + When used in a template (as layout.template.lay + out.updatemenu.buttondefaults), sets the + default property values to use for elements of + layout.updatemenu.buttons direction Determines the direction in which the buttons are laid out, whether in a dropdown menu or a diff --git a/plotly/validators/layout/_xaxis.py b/plotly/validators/layout/_xaxis.py index 55567d81650..53a6ce6fa92 100644 --- a/plotly/validators/layout/_xaxis.py +++ b/plotly/validators/layout/_xaxis.py @@ -313,6 +313,11 @@ def __init__(self, plotly_name='xaxis', parent_name='layout', **kwargs): tickformatstops plotly.graph_objs.layout.xaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.xaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/_yaxis.py b/plotly/validators/layout/_yaxis.py index 1920d096182..039625d0b2f 100644 --- a/plotly/validators/layout/_yaxis.py +++ b/plotly/validators/layout/_yaxis.py @@ -307,6 +307,11 @@ def __init__(self, plotly_name='yaxis', parent_name='layout', **kwargs): tickformatstops plotly.graph_objs.layout.yaxis.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.yaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/mapbox/__init__.py b/plotly/validators/layout/mapbox/__init__.py index dbf4ef83e5f..0831abdeff4 100644 --- a/plotly/validators/layout/mapbox/__init__.py +++ b/plotly/validators/layout/mapbox/__init__.py @@ -1,6 +1,7 @@ from ._zoom import ZoomValidator from ._style import StyleValidator from ._pitch import PitchValidator +from ._layerdefaults import LayerValidator from ._layers import LayersValidator from ._domain import DomainValidator from ._center import CenterValidator diff --git a/plotly/validators/layout/mapbox/_layerdefaults.py b/plotly/validators/layout/mapbox/_layerdefaults.py new file mode 100644 index 00000000000..3453b59e4b7 --- /dev/null +++ b/plotly/validators/layout/mapbox/_layerdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class LayerValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='layerdefaults', + parent_name='layout.mapbox', + **kwargs + ): + super(LayerValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Layer'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/polar/_angularaxis.py b/plotly/validators/layout/polar/_angularaxis.py index df41ba6600e..225494a1cd3 100644 --- a/plotly/validators/layout/polar/_angularaxis.py +++ b/plotly/validators/layout/polar/_angularaxis.py @@ -193,6 +193,12 @@ def __init__( plotly.graph_objs.layout.polar.angularaxis.Tick formatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.polar.angularaxis.tickformatstopdefaults), + sets the default property values to use for + elements of + layout.polar.angularaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/polar/_radialaxis.py b/plotly/validators/layout/polar/_radialaxis.py index 0cace96f2de..0255ef3df14 100644 --- a/plotly/validators/layout/polar/_radialaxis.py +++ b/plotly/validators/layout/polar/_radialaxis.py @@ -214,6 +214,12 @@ def __init__( plotly.graph_objs.layout.polar.radialaxis.Tickf ormatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.polar.radialaxis.tickformatstopdefaults), + sets the default property values to use for + elements of + layout.polar.radialaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/polar/angularaxis/__init__.py b/plotly/validators/layout/polar/angularaxis/__init__.py index 2d78e912f53..4a47ce509c8 100644 --- a/plotly/validators/layout/polar/angularaxis/__init__.py +++ b/plotly/validators/layout/polar/angularaxis/__init__.py @@ -10,6 +10,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py b/plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..ad71a3c4b26 --- /dev/null +++ b/plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.polar.angularaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/polar/radialaxis/__init__.py b/plotly/validators/layout/polar/radialaxis/__init__.py index 90c2868eab8..64d4131f231 100644 --- a/plotly/validators/layout/polar/radialaxis/__init__.py +++ b/plotly/validators/layout/polar/radialaxis/__init__.py @@ -12,6 +12,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py b/plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..170d853e8ba --- /dev/null +++ b/plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.polar.radialaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/scene/__init__.py b/plotly/validators/layout/scene/__init__.py index 43ee26f8d2f..428e15940ba 100644 --- a/plotly/validators/layout/scene/__init__.py +++ b/plotly/validators/layout/scene/__init__.py @@ -8,4 +8,5 @@ from ._bgcolor import BgcolorValidator from ._aspectratio import AspectratioValidator from ._aspectmode import AspectmodeValidator +from ._annotationdefaults import AnnotationValidator from ._annotations import AnnotationsValidator diff --git a/plotly/validators/layout/scene/_annotationdefaults.py b/plotly/validators/layout/scene/_annotationdefaults.py new file mode 100644 index 00000000000..811cf1c9a6e --- /dev/null +++ b/plotly/validators/layout/scene/_annotationdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class AnnotationValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='annotationdefaults', + parent_name='layout.scene', + **kwargs + ): + super(AnnotationValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Annotation'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/scene/_xaxis.py b/plotly/validators/layout/scene/_xaxis.py index e2cd31c5000..1b9ad8e4ba6 100644 --- a/plotly/validators/layout/scene/_xaxis.py +++ b/plotly/validators/layout/scene/_xaxis.py @@ -222,6 +222,11 @@ def __init__( plotly.graph_objs.layout.scene.xaxis.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.scene.xaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.scene.xaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/scene/_yaxis.py b/plotly/validators/layout/scene/_yaxis.py index d7317af308f..ffe7c5f084a 100644 --- a/plotly/validators/layout/scene/_yaxis.py +++ b/plotly/validators/layout/scene/_yaxis.py @@ -222,6 +222,11 @@ def __init__( plotly.graph_objs.layout.scene.yaxis.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.scene.yaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.scene.yaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/scene/_zaxis.py b/plotly/validators/layout/scene/_zaxis.py index f67c01c8a6e..ca4893f78eb 100644 --- a/plotly/validators/layout/scene/_zaxis.py +++ b/plotly/validators/layout/scene/_zaxis.py @@ -222,6 +222,11 @@ def __init__( plotly.graph_objs.layout.scene.zaxis.Tickformat stop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.scene.zaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.scene.zaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/scene/xaxis/__init__.py b/plotly/validators/layout/scene/xaxis/__init__.py index d5feb7a0b23..a524a7e4e3b 100644 --- a/plotly/validators/layout/scene/xaxis/__init__.py +++ b/plotly/validators/layout/scene/xaxis/__init__.py @@ -15,6 +15,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py b/plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..1c8e6ccd2bc --- /dev/null +++ b/plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.scene.xaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/scene/yaxis/__init__.py b/plotly/validators/layout/scene/yaxis/__init__.py index d5feb7a0b23..a524a7e4e3b 100644 --- a/plotly/validators/layout/scene/yaxis/__init__.py +++ b/plotly/validators/layout/scene/yaxis/__init__.py @@ -15,6 +15,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py b/plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..0ea1d73ef97 --- /dev/null +++ b/plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.scene.yaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/scene/zaxis/__init__.py b/plotly/validators/layout/scene/zaxis/__init__.py index d5feb7a0b23..a524a7e4e3b 100644 --- a/plotly/validators/layout/scene/zaxis/__init__.py +++ b/plotly/validators/layout/scene/zaxis/__init__.py @@ -15,6 +15,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py b/plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..eb6c1963dad --- /dev/null +++ b/plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.scene.zaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/slider/__init__.py b/plotly/validators/layout/slider/__init__.py index d8f66bd81e8..11039560539 100644 --- a/plotly/validators/layout/slider/__init__.py +++ b/plotly/validators/layout/slider/__init__.py @@ -8,6 +8,7 @@ from ._ticklen import TicklenValidator from ._tickcolor import TickcolorValidator from ._templateitemname import TemplateitemnameValidator +from ._stepdefaults import StepValidator from ._steps import StepsValidator from ._pad import PadValidator from ._name import NameValidator diff --git a/plotly/validators/layout/slider/_stepdefaults.py b/plotly/validators/layout/slider/_stepdefaults.py new file mode 100644 index 00000000000..1642076074e --- /dev/null +++ b/plotly/validators/layout/slider/_stepdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class StepValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='stepdefaults', + parent_name='layout.slider', + **kwargs + ): + super(StepValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Step'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/__init__.py b/plotly/validators/layout/template/__init__.py new file mode 100644 index 00000000000..720a1c7931c --- /dev/null +++ b/plotly/validators/layout/template/__init__.py @@ -0,0 +1,2 @@ +from ._layout import LayoutValidator +from ._data import DataValidator diff --git a/plotly/validators/layout/template/_data.py b/plotly/validators/layout/template/_data.py new file mode 100644 index 00000000000..3d4bc2589d7 --- /dev/null +++ b/plotly/validators/layout/template/_data.py @@ -0,0 +1,130 @@ +import _plotly_utils.basevalidators + + +class DataValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='data', parent_name='layout.template', **kwargs + ): + super(DataValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Data'), + data_docs=kwargs.pop( + 'data_docs', """ + area + plotly.graph_objs.layout.template.data.Area + instance or dict with compatible properties + barpolar + plotly.graph_objs.layout.template.data.Barpolar + instance or dict with compatible properties + bar + plotly.graph_objs.layout.template.data.Bar + instance or dict with compatible properties + box + plotly.graph_objs.layout.template.data.Box + instance or dict with compatible properties + candlestick + plotly.graph_objs.layout.template.data.Candlest + ick instance or dict with compatible properties + carpet + plotly.graph_objs.layout.template.data.Carpet + instance or dict with compatible properties + choropleth + plotly.graph_objs.layout.template.data.Chorople + th instance or dict with compatible properties + cone + plotly.graph_objs.layout.template.data.Cone + instance or dict with compatible properties + contourcarpet + plotly.graph_objs.layout.template.data.Contourc + arpet instance or dict with compatible + properties + contour + plotly.graph_objs.layout.template.data.Contour + instance or dict with compatible properties + heatmapgl + plotly.graph_objs.layout.template.data.Heatmapg + l instance or dict with compatible properties + heatmap + plotly.graph_objs.layout.template.data.Heatmap + instance or dict with compatible properties + histogram2dcontour + plotly.graph_objs.layout.template.data.Histogra + m2dContour instance or dict with compatible + properties + histogram2d + plotly.graph_objs.layout.template.data.Histogra + m2d instance or dict with compatible properties + histogram + plotly.graph_objs.layout.template.data.Histogra + m instance or dict with compatible properties + mesh3d + plotly.graph_objs.layout.template.data.Mesh3d + instance or dict with compatible properties + ohlc + plotly.graph_objs.layout.template.data.Ohlc + instance or dict with compatible properties + parcoords + plotly.graph_objs.layout.template.data.Parcoord + s instance or dict with compatible properties + pie + plotly.graph_objs.layout.template.data.Pie + instance or dict with compatible properties + pointcloud + plotly.graph_objs.layout.template.data.Pointclo + ud instance or dict with compatible properties + sankey + plotly.graph_objs.layout.template.data.Sankey + instance or dict with compatible properties + scatter3d + plotly.graph_objs.layout.template.data.Scatter3 + d instance or dict with compatible properties + scattercarpet + plotly.graph_objs.layout.template.data.Scatterc + arpet instance or dict with compatible + properties + scattergeo + plotly.graph_objs.layout.template.data.Scatterg + eo instance or dict with compatible properties + scattergl + plotly.graph_objs.layout.template.data.Scatterg + l instance or dict with compatible properties + scattermapbox + plotly.graph_objs.layout.template.data.Scatterm + apbox instance or dict with compatible + properties + scatterpolargl + plotly.graph_objs.layout.template.data.Scatterp + olargl instance or dict with compatible + properties + scatterpolar + plotly.graph_objs.layout.template.data.Scatterp + olar instance or dict with compatible + properties + scatter + plotly.graph_objs.layout.template.data.Scatter + instance or dict with compatible properties + scatterternary + plotly.graph_objs.layout.template.data.Scattert + ernary instance or dict with compatible + properties + splom + plotly.graph_objs.layout.template.data.Splom + instance or dict with compatible properties + streamtube + plotly.graph_objs.layout.template.data.Streamtu + be instance or dict with compatible properties + surface + plotly.graph_objs.layout.template.data.Surface + instance or dict with compatible properties + table + plotly.graph_objs.layout.template.data.Table + instance or dict with compatible properties + violin + plotly.graph_objs.layout.template.data.Violin + instance or dict with compatible properties +""" + ), + **kwargs + ) diff --git a/plotly/validators/layout/template/_layout.py b/plotly/validators/layout/template/_layout.py new file mode 100644 index 00000000000..324aaee33d5 --- /dev/null +++ b/plotly/validators/layout/template/_layout.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class LayoutValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='layout', parent_name='layout.template', **kwargs + ): + super(LayoutValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Layout'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/__init__.py b/plotly/validators/layout/template/data/__init__.py new file mode 100644 index 00000000000..892a666f035 --- /dev/null +++ b/plotly/validators/layout/template/data/__init__.py @@ -0,0 +1,35 @@ +from ._violin import ViolinsValidator +from ._table import TablesValidator +from ._surface import SurfacesValidator +from ._streamtube import StreamtubesValidator +from ._splom import SplomsValidator +from ._scatterternary import ScatterternarysValidator +from ._scatter import ScattersValidator +from ._scatterpolar import ScatterpolarsValidator +from ._scatterpolargl import ScatterpolarglsValidator +from ._scattermapbox import ScattermapboxsValidator +from ._scattergl import ScatterglsValidator +from ._scattergeo import ScattergeosValidator +from ._scattercarpet import ScattercarpetsValidator +from ._scatter3d import Scatter3dsValidator +from ._sankey import SankeysValidator +from ._pointcloud import PointcloudsValidator +from ._pie import PiesValidator +from ._parcoords import ParcoordssValidator +from ._ohlc import OhlcsValidator +from ._mesh3d import Mesh3dsValidator +from ._histogram import HistogramsValidator +from ._histogram2d import Histogram2dsValidator +from ._histogram2dcontour import Histogram2dContoursValidator +from ._heatmap import HeatmapsValidator +from ._heatmapgl import HeatmapglsValidator +from ._contour import ContoursValidator +from ._contourcarpet import ContourcarpetsValidator +from ._cone import ConesValidator +from ._choropleth import ChoroplethsValidator +from ._carpet import CarpetsValidator +from ._candlestick import CandlesticksValidator +from ._box import BoxsValidator +from ._bar import BarsValidator +from ._barpolar import BarpolarsValidator +from ._area import AreasValidator diff --git a/plotly/validators/layout/template/data/_area.py b/plotly/validators/layout/template/data/_area.py new file mode 100644 index 00000000000..3727d62c703 --- /dev/null +++ b/plotly/validators/layout/template/data/_area.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class AreasValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, plotly_name='area', parent_name='layout.template.data', **kwargs + ): + super(AreasValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Area'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_bar.py b/plotly/validators/layout/template/data/_bar.py new file mode 100644 index 00000000000..1478fdad61e --- /dev/null +++ b/plotly/validators/layout/template/data/_bar.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class BarsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, plotly_name='bar', parent_name='layout.template.data', **kwargs + ): + super(BarsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Bar'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_barpolar.py b/plotly/validators/layout/template/data/_barpolar.py new file mode 100644 index 00000000000..a7e1fefab9e --- /dev/null +++ b/plotly/validators/layout/template/data/_barpolar.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class BarpolarsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='barpolar', + parent_name='layout.template.data', + **kwargs + ): + super(BarpolarsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Barpolar'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_box.py b/plotly/validators/layout/template/data/_box.py new file mode 100644 index 00000000000..f6b02732158 --- /dev/null +++ b/plotly/validators/layout/template/data/_box.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class BoxsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, plotly_name='box', parent_name='layout.template.data', **kwargs + ): + super(BoxsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Box'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_candlestick.py b/plotly/validators/layout/template/data/_candlestick.py new file mode 100644 index 00000000000..c621904edb4 --- /dev/null +++ b/plotly/validators/layout/template/data/_candlestick.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class CandlesticksValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='candlestick', + parent_name='layout.template.data', + **kwargs + ): + super(CandlesticksValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Candlestick'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_carpet.py b/plotly/validators/layout/template/data/_carpet.py new file mode 100644 index 00000000000..b8e8406d594 --- /dev/null +++ b/plotly/validators/layout/template/data/_carpet.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class CarpetsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='carpet', + parent_name='layout.template.data', + **kwargs + ): + super(CarpetsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Carpet'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_choropleth.py b/plotly/validators/layout/template/data/_choropleth.py new file mode 100644 index 00000000000..e86be98dc02 --- /dev/null +++ b/plotly/validators/layout/template/data/_choropleth.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ChoroplethsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='choropleth', + parent_name='layout.template.data', + **kwargs + ): + super(ChoroplethsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Choropleth'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_cone.py b/plotly/validators/layout/template/data/_cone.py new file mode 100644 index 00000000000..9d4e1d042ad --- /dev/null +++ b/plotly/validators/layout/template/data/_cone.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class ConesValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, plotly_name='cone', parent_name='layout.template.data', **kwargs + ): + super(ConesValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Cone'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_contour.py b/plotly/validators/layout/template/data/_contour.py new file mode 100644 index 00000000000..a0744beb8db --- /dev/null +++ b/plotly/validators/layout/template/data/_contour.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ContoursValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='contour', + parent_name='layout.template.data', + **kwargs + ): + super(ContoursValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Contour'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_contourcarpet.py b/plotly/validators/layout/template/data/_contourcarpet.py new file mode 100644 index 00000000000..2311351de9a --- /dev/null +++ b/plotly/validators/layout/template/data/_contourcarpet.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ContourcarpetsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='contourcarpet', + parent_name='layout.template.data', + **kwargs + ): + super(ContourcarpetsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Contourcarpet'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_heatmap.py b/plotly/validators/layout/template/data/_heatmap.py new file mode 100644 index 00000000000..33d42a10b8f --- /dev/null +++ b/plotly/validators/layout/template/data/_heatmap.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class HeatmapsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='heatmap', + parent_name='layout.template.data', + **kwargs + ): + super(HeatmapsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Heatmap'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_heatmapgl.py b/plotly/validators/layout/template/data/_heatmapgl.py new file mode 100644 index 00000000000..bedab12f860 --- /dev/null +++ b/plotly/validators/layout/template/data/_heatmapgl.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class HeatmapglsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='heatmapgl', + parent_name='layout.template.data', + **kwargs + ): + super(HeatmapglsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Heatmapgl'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_histogram.py b/plotly/validators/layout/template/data/_histogram.py new file mode 100644 index 00000000000..60561f47dcd --- /dev/null +++ b/plotly/validators/layout/template/data/_histogram.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class HistogramsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='histogram', + parent_name='layout.template.data', + **kwargs + ): + super(HistogramsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Histogram'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_histogram2d.py b/plotly/validators/layout/template/data/_histogram2d.py new file mode 100644 index 00000000000..f50ed4930ae --- /dev/null +++ b/plotly/validators/layout/template/data/_histogram2d.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class Histogram2dsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='histogram2d', + parent_name='layout.template.data', + **kwargs + ): + super(Histogram2dsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Histogram2d'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_histogram2dcontour.py b/plotly/validators/layout/template/data/_histogram2dcontour.py new file mode 100644 index 00000000000..8f74e42f14b --- /dev/null +++ b/plotly/validators/layout/template/data/_histogram2dcontour.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class Histogram2dContoursValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='histogram2dcontour', + parent_name='layout.template.data', + **kwargs + ): + super(Histogram2dContoursValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Histogram2dContour'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_mesh3d.py b/plotly/validators/layout/template/data/_mesh3d.py new file mode 100644 index 00000000000..71757acf2c7 --- /dev/null +++ b/plotly/validators/layout/template/data/_mesh3d.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class Mesh3dsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='mesh3d', + parent_name='layout.template.data', + **kwargs + ): + super(Mesh3dsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Mesh3d'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_ohlc.py b/plotly/validators/layout/template/data/_ohlc.py new file mode 100644 index 00000000000..f63d92d8743 --- /dev/null +++ b/plotly/validators/layout/template/data/_ohlc.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class OhlcsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, plotly_name='ohlc', parent_name='layout.template.data', **kwargs + ): + super(OhlcsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Ohlc'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_parcoords.py b/plotly/validators/layout/template/data/_parcoords.py new file mode 100644 index 00000000000..82fea9e4221 --- /dev/null +++ b/plotly/validators/layout/template/data/_parcoords.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ParcoordssValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='parcoords', + parent_name='layout.template.data', + **kwargs + ): + super(ParcoordssValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Parcoords'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_pie.py b/plotly/validators/layout/template/data/_pie.py new file mode 100644 index 00000000000..c5ba5fb4a66 --- /dev/null +++ b/plotly/validators/layout/template/data/_pie.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class PiesValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, plotly_name='pie', parent_name='layout.template.data', **kwargs + ): + super(PiesValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Pie'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_pointcloud.py b/plotly/validators/layout/template/data/_pointcloud.py new file mode 100644 index 00000000000..cb844fb28c0 --- /dev/null +++ b/plotly/validators/layout/template/data/_pointcloud.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class PointcloudsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='pointcloud', + parent_name='layout.template.data', + **kwargs + ): + super(PointcloudsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Pointcloud'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_sankey.py b/plotly/validators/layout/template/data/_sankey.py new file mode 100644 index 00000000000..8683e2bb3ea --- /dev/null +++ b/plotly/validators/layout/template/data/_sankey.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class SankeysValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='sankey', + parent_name='layout.template.data', + **kwargs + ): + super(SankeysValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Sankey'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scatter.py b/plotly/validators/layout/template/data/_scatter.py new file mode 100644 index 00000000000..338fd68ffc6 --- /dev/null +++ b/plotly/validators/layout/template/data/_scatter.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ScattersValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='scatter', + parent_name='layout.template.data', + **kwargs + ): + super(ScattersValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scatter'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scatter3d.py b/plotly/validators/layout/template/data/_scatter3d.py new file mode 100644 index 00000000000..2b3c170ec5e --- /dev/null +++ b/plotly/validators/layout/template/data/_scatter3d.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class Scatter3dsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='scatter3d', + parent_name='layout.template.data', + **kwargs + ): + super(Scatter3dsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scatter3d'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scattercarpet.py b/plotly/validators/layout/template/data/_scattercarpet.py new file mode 100644 index 00000000000..527101a8e8d --- /dev/null +++ b/plotly/validators/layout/template/data/_scattercarpet.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ScattercarpetsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='scattercarpet', + parent_name='layout.template.data', + **kwargs + ): + super(ScattercarpetsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scattercarpet'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scattergeo.py b/plotly/validators/layout/template/data/_scattergeo.py new file mode 100644 index 00000000000..f385ba29066 --- /dev/null +++ b/plotly/validators/layout/template/data/_scattergeo.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ScattergeosValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='scattergeo', + parent_name='layout.template.data', + **kwargs + ): + super(ScattergeosValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scattergeo'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scattergl.py b/plotly/validators/layout/template/data/_scattergl.py new file mode 100644 index 00000000000..5bd24288917 --- /dev/null +++ b/plotly/validators/layout/template/data/_scattergl.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ScatterglsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='scattergl', + parent_name='layout.template.data', + **kwargs + ): + super(ScatterglsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scattergl'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scattermapbox.py b/plotly/validators/layout/template/data/_scattermapbox.py new file mode 100644 index 00000000000..693177ae287 --- /dev/null +++ b/plotly/validators/layout/template/data/_scattermapbox.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ScattermapboxsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='scattermapbox', + parent_name='layout.template.data', + **kwargs + ): + super(ScattermapboxsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scattermapbox'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scatterpolar.py b/plotly/validators/layout/template/data/_scatterpolar.py new file mode 100644 index 00000000000..97881bc95e5 --- /dev/null +++ b/plotly/validators/layout/template/data/_scatterpolar.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ScatterpolarsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='scatterpolar', + parent_name='layout.template.data', + **kwargs + ): + super(ScatterpolarsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scatterpolar'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scatterpolargl.py b/plotly/validators/layout/template/data/_scatterpolargl.py new file mode 100644 index 00000000000..ceb4d8ddb29 --- /dev/null +++ b/plotly/validators/layout/template/data/_scatterpolargl.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ScatterpolarglsValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='scatterpolargl', + parent_name='layout.template.data', + **kwargs + ): + super(ScatterpolarglsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scatterpolargl'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_scatterternary.py b/plotly/validators/layout/template/data/_scatterternary.py new file mode 100644 index 00000000000..0b69c9c23c7 --- /dev/null +++ b/plotly/validators/layout/template/data/_scatterternary.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class ScatterternarysValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='scatterternary', + parent_name='layout.template.data', + **kwargs + ): + super(ScatterternarysValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Scatterternary'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_splom.py b/plotly/validators/layout/template/data/_splom.py new file mode 100644 index 00000000000..e8ed88229bc --- /dev/null +++ b/plotly/validators/layout/template/data/_splom.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class SplomsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='splom', + parent_name='layout.template.data', + **kwargs + ): + super(SplomsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Splom'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_streamtube.py b/plotly/validators/layout/template/data/_streamtube.py new file mode 100644 index 00000000000..2070888cc91 --- /dev/null +++ b/plotly/validators/layout/template/data/_streamtube.py @@ -0,0 +1,21 @@ +import _plotly_utils.basevalidators + + +class StreamtubesValidator( + _plotly_utils.basevalidators.CompoundArrayValidator +): + + def __init__( + self, + plotly_name='streamtube', + parent_name='layout.template.data', + **kwargs + ): + super(StreamtubesValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Streamtube'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_surface.py b/plotly/validators/layout/template/data/_surface.py new file mode 100644 index 00000000000..104f08b8569 --- /dev/null +++ b/plotly/validators/layout/template/data/_surface.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class SurfacesValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='surface', + parent_name='layout.template.data', + **kwargs + ): + super(SurfacesValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Surface'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_table.py b/plotly/validators/layout/template/data/_table.py new file mode 100644 index 00000000000..e58e8081fd7 --- /dev/null +++ b/plotly/validators/layout/template/data/_table.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TablesValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='table', + parent_name='layout.template.data', + **kwargs + ): + super(TablesValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Table'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/template/data/_violin.py b/plotly/validators/layout/template/data/_violin.py new file mode 100644 index 00000000000..b3e1c8396f6 --- /dev/null +++ b/plotly/validators/layout/template/data/_violin.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ViolinsValidator(_plotly_utils.basevalidators.CompoundArrayValidator): + + def __init__( + self, + plotly_name='violin', + parent_name='layout.template.data', + **kwargs + ): + super(ViolinsValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Violin'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/ternary/_aaxis.py b/plotly/validators/layout/ternary/_aaxis.py index 8be4a9137f3..83e26c69bee 100644 --- a/plotly/validators/layout/ternary/_aaxis.py +++ b/plotly/validators/layout/ternary/_aaxis.py @@ -157,6 +157,11 @@ def __init__( plotly.graph_objs.layout.ternary.aaxis.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.ternary.aaxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.ternary.aaxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/ternary/_baxis.py b/plotly/validators/layout/ternary/_baxis.py index ad298abfea7..2c48381d021 100644 --- a/plotly/validators/layout/ternary/_baxis.py +++ b/plotly/validators/layout/ternary/_baxis.py @@ -157,6 +157,11 @@ def __init__( plotly.graph_objs.layout.ternary.baxis.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.ternary.baxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.ternary.baxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/ternary/_caxis.py b/plotly/validators/layout/ternary/_caxis.py index aa9836599f8..46153cfe787 100644 --- a/plotly/validators/layout/ternary/_caxis.py +++ b/plotly/validators/layout/ternary/_caxis.py @@ -157,6 +157,11 @@ def __init__( plotly.graph_objs.layout.ternary.caxis.Tickform atstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.lay + out.ternary.caxis.tickformatstopdefaults), sets + the default property values to use for elements + of layout.ternary.caxis.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/layout/ternary/aaxis/__init__.py b/plotly/validators/layout/ternary/aaxis/__init__.py index 5160bfc643f..74bd6aefad5 100644 --- a/plotly/validators/layout/ternary/aaxis/__init__.py +++ b/plotly/validators/layout/ternary/aaxis/__init__.py @@ -10,6 +10,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py b/plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..84a65926d93 --- /dev/null +++ b/plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.ternary.aaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/ternary/baxis/__init__.py b/plotly/validators/layout/ternary/baxis/__init__.py index 5160bfc643f..74bd6aefad5 100644 --- a/plotly/validators/layout/ternary/baxis/__init__.py +++ b/plotly/validators/layout/ternary/baxis/__init__.py @@ -10,6 +10,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py b/plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..9db908b046b --- /dev/null +++ b/plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.ternary.baxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/ternary/caxis/__init__.py b/plotly/validators/layout/ternary/caxis/__init__.py index 5160bfc643f..74bd6aefad5 100644 --- a/plotly/validators/layout/ternary/caxis/__init__.py +++ b/plotly/validators/layout/ternary/caxis/__init__.py @@ -10,6 +10,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py b/plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..69a1b69e43a --- /dev/null +++ b/plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.ternary.caxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/updatemenu/__init__.py b/plotly/validators/layout/updatemenu/__init__.py index 0258a9167b2..cdac88a09e1 100644 --- a/plotly/validators/layout/updatemenu/__init__.py +++ b/plotly/validators/layout/updatemenu/__init__.py @@ -10,6 +10,7 @@ from ._name import NameValidator from ._font import FontValidator from ._direction import DirectionValidator +from ._buttondefaults import ButtonValidator from ._buttons import ButtonsValidator from ._borderwidth import BorderwidthValidator from ._bordercolor import BordercolorValidator diff --git a/plotly/validators/layout/updatemenu/_buttondefaults.py b/plotly/validators/layout/updatemenu/_buttondefaults.py new file mode 100644 index 00000000000..a6f003c503b --- /dev/null +++ b/plotly/validators/layout/updatemenu/_buttondefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ButtonValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='buttondefaults', + parent_name='layout.updatemenu', + **kwargs + ): + super(ButtonValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Button'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/xaxis/__init__.py b/plotly/validators/layout/xaxis/__init__.py index 4af4c7585fe..5b47d40e99e 100644 --- a/plotly/validators/layout/xaxis/__init__.py +++ b/plotly/validators/layout/xaxis/__init__.py @@ -15,6 +15,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/xaxis/_rangeselector.py b/plotly/validators/layout/xaxis/_rangeselector.py index f6313481b45..e90c08d2847 100644 --- a/plotly/validators/layout/xaxis/_rangeselector.py +++ b/plotly/validators/layout/xaxis/_rangeselector.py @@ -31,6 +31,11 @@ def __init__( Sets the specifications for each buttons. By default, a range selector comes with no buttons. + buttondefaults + When used in a template (as layout.template.lay + out.xaxis.rangeselector.buttondefaults), sets + the default property values to use for elements + of layout.xaxis.rangeselector.buttons font Sets the font of the range selector button text. diff --git a/plotly/validators/layout/xaxis/_tickformatstopdefaults.py b/plotly/validators/layout/xaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..10472ae7c11 --- /dev/null +++ b/plotly/validators/layout/xaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.xaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/xaxis/rangeselector/__init__.py b/plotly/validators/layout/xaxis/rangeselector/__init__.py index 2f846ea48dd..7d3ef7db357 100644 --- a/plotly/validators/layout/xaxis/rangeselector/__init__.py +++ b/plotly/validators/layout/xaxis/rangeselector/__init__.py @@ -4,6 +4,7 @@ from ._x import XValidator from ._visible import VisibleValidator from ._font import FontValidator +from ._buttondefaults import ButtonValidator from ._buttons import ButtonsValidator from ._borderwidth import BorderwidthValidator from ._bordercolor import BordercolorValidator diff --git a/plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py b/plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py new file mode 100644 index 00000000000..1a6ea38d79a --- /dev/null +++ b/plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class ButtonValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='buttondefaults', + parent_name='layout.xaxis.rangeselector', + **kwargs + ): + super(ButtonValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Button'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/layout/yaxis/__init__.py b/plotly/validators/layout/yaxis/__init__.py index c927e92e2a7..eb902752468 100644 --- a/plotly/validators/layout/yaxis/__init__.py +++ b/plotly/validators/layout/yaxis/__init__.py @@ -15,6 +15,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/layout/yaxis/_tickformatstopdefaults.py b/plotly/validators/layout/yaxis/_tickformatstopdefaults.py new file mode 100644 index 00000000000..cb24e598be0 --- /dev/null +++ b/plotly/validators/layout/yaxis/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='layout.yaxis', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/mesh3d/_colorbar.py b/plotly/validators/mesh3d/_colorbar.py index 939d5923c34..503901b6a32 100644 --- a/plotly/validators/mesh3d/_colorbar.py +++ b/plotly/validators/mesh3d/_colorbar.py @@ -137,6 +137,11 @@ def __init__(self, plotly_name='colorbar', parent_name='mesh3d', **kwargs): tickformatstops plotly.graph_objs.mesh3d.colorbar.Tickformatsto p instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.mesh3d.colorbar.tickformatstopdefaults), sets + the default property values to use for elements + of mesh3d.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/mesh3d/colorbar/__init__.py b/plotly/validators/mesh3d/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/mesh3d/colorbar/__init__.py +++ b/plotly/validators/mesh3d/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py b/plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..a6d4fad7bd0 --- /dev/null +++ b/plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='mesh3d.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/parcoords/__init__.py b/plotly/validators/parcoords/__init__.py index 423d615d513..794c4495c48 100644 --- a/plotly/validators/parcoords/__init__.py +++ b/plotly/validators/parcoords/__init__.py @@ -16,6 +16,7 @@ from ._hoverinfosrc import HoverinfosrcValidator from ._hoverinfo import HoverinfoValidator from ._domain import DomainValidator +from ._dimensiondefaults import DimensionValidator from ._dimensions import DimensionsValidator from ._customdatasrc import CustomdatasrcValidator from ._customdata import CustomdataValidator diff --git a/plotly/validators/parcoords/_dimensiondefaults.py b/plotly/validators/parcoords/_dimensiondefaults.py new file mode 100644 index 00000000000..f75fa95ffae --- /dev/null +++ b/plotly/validators/parcoords/_dimensiondefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class DimensionValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='dimensiondefaults', + parent_name='parcoords', + **kwargs + ): + super(DimensionValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Dimension'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/parcoords/line/_colorbar.py b/plotly/validators/parcoords/line/_colorbar.py index f55d53fd74d..28644af68b6 100644 --- a/plotly/validators/parcoords/line/_colorbar.py +++ b/plotly/validators/parcoords/line/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.parcoords.line.colorbar.Tickf ormatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.parcoords.line.colorbar.tickformatstopdefault + s), sets the default property values to use for + elements of + parcoords.line.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/parcoords/line/colorbar/__init__.py b/plotly/validators/parcoords/line/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/parcoords/line/colorbar/__init__.py +++ b/plotly/validators/parcoords/line/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py b/plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..d9922e138ba --- /dev/null +++ b/plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='parcoords.line.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scatter/marker/_colorbar.py b/plotly/validators/scatter/marker/_colorbar.py index f3f8d8c418a..4510a77e451 100644 --- a/plotly/validators/scatter/marker/_colorbar.py +++ b/plotly/validators/scatter/marker/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.scatter.marker.colorbar.Tickf ormatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatter.marker.colorbar.tickformatstopdefault + s), sets the default property values to use for + elements of + scatter.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scatter/marker/colorbar/__init__.py b/plotly/validators/scatter/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scatter/marker/colorbar/__init__.py +++ b/plotly/validators/scatter/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..07195576b22 --- /dev/null +++ b/plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scatter.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scatter3d/marker/_colorbar.py b/plotly/validators/scatter3d/marker/_colorbar.py index 60a7f691218..2bf59a6ed24 100644 --- a/plotly/validators/scatter3d/marker/_colorbar.py +++ b/plotly/validators/scatter3d/marker/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.scatter3d.marker.colorbar.Tic kformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatter3d.marker.colorbar.tickformatstopdefau + lts), sets the default property values to use + for elements of + scatter3d.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scatter3d/marker/colorbar/__init__.py b/plotly/validators/scatter3d/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scatter3d/marker/colorbar/__init__.py +++ b/plotly/validators/scatter3d/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..5e60f9076c1 --- /dev/null +++ b/plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scatter3d.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scattercarpet/marker/_colorbar.py b/plotly/validators/scattercarpet/marker/_colorbar.py index 660bd16e0fc..e7f405f5855 100644 --- a/plotly/validators/scattercarpet/marker/_colorbar.py +++ b/plotly/validators/scattercarpet/marker/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.scattercarpet.marker.colorbar .Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattercarpet.marker.colorbar.tickformatstopd + efaults), sets the default property values to + use for elements of + scattercarpet.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scattercarpet/marker/colorbar/__init__.py b/plotly/validators/scattercarpet/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scattercarpet/marker/colorbar/__init__.py +++ b/plotly/validators/scattercarpet/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..711ea67d50a --- /dev/null +++ b/plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scattercarpet.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scattergeo/marker/_colorbar.py b/plotly/validators/scattergeo/marker/_colorbar.py index a2f882da078..8022c5ea038 100644 --- a/plotly/validators/scattergeo/marker/_colorbar.py +++ b/plotly/validators/scattergeo/marker/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.scattergeo.marker.colorbar.Ti ckformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattergeo.marker.colorbar.tickformatstopdefa + ults), sets the default property values to use + for elements of + scattergeo.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scattergeo/marker/colorbar/__init__.py b/plotly/validators/scattergeo/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scattergeo/marker/colorbar/__init__.py +++ b/plotly/validators/scattergeo/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..c0dafaae8f0 --- /dev/null +++ b/plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scattergeo.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scattergl/marker/_colorbar.py b/plotly/validators/scattergl/marker/_colorbar.py index 189ed55360b..b3a88a86bc5 100644 --- a/plotly/validators/scattergl/marker/_colorbar.py +++ b/plotly/validators/scattergl/marker/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.scattergl.marker.colorbar.Tic kformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattergl.marker.colorbar.tickformatstopdefau + lts), sets the default property values to use + for elements of + scattergl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scattergl/marker/colorbar/__init__.py b/plotly/validators/scattergl/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scattergl/marker/colorbar/__init__.py +++ b/plotly/validators/scattergl/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..313a8c6c5fc --- /dev/null +++ b/plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scattergl.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scattermapbox/marker/_colorbar.py b/plotly/validators/scattermapbox/marker/_colorbar.py index cdc6b01b190..6f46bc4173e 100644 --- a/plotly/validators/scattermapbox/marker/_colorbar.py +++ b/plotly/validators/scattermapbox/marker/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.scattermapbox.marker.colorbar .Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scattermapbox.marker.colorbar.tickformatstopd + efaults), sets the default property values to + use for elements of + scattermapbox.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scattermapbox/marker/colorbar/__init__.py b/plotly/validators/scattermapbox/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scattermapbox/marker/colorbar/__init__.py +++ b/plotly/validators/scattermapbox/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..abf92069ba9 --- /dev/null +++ b/plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scattermapbox.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scatterpolar/marker/_colorbar.py b/plotly/validators/scatterpolar/marker/_colorbar.py index eee5a09d210..7463e6f21c4 100644 --- a/plotly/validators/scatterpolar/marker/_colorbar.py +++ b/plotly/validators/scatterpolar/marker/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.scatterpolar.marker.colorbar. Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatterpolar.marker.colorbar.tickformatstopde + faults), sets the default property values to + use for elements of + scatterpolar.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scatterpolar/marker/colorbar/__init__.py b/plotly/validators/scatterpolar/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scatterpolar/marker/colorbar/__init__.py +++ b/plotly/validators/scatterpolar/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..ab41b0ea49a --- /dev/null +++ b/plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scatterpolar.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scatterpolargl/marker/_colorbar.py b/plotly/validators/scatterpolargl/marker/_colorbar.py index f392aa5bc6d..ed83d757da9 100644 --- a/plotly/validators/scatterpolargl/marker/_colorbar.py +++ b/plotly/validators/scatterpolargl/marker/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.scatterpolargl.marker.colorba r.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatterpolargl.marker.colorbar.tickformatstop + defaults), sets the default property values to + use for elements of + scatterpolargl.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scatterpolargl/marker/colorbar/__init__.py b/plotly/validators/scatterpolargl/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scatterpolargl/marker/colorbar/__init__.py +++ b/plotly/validators/scatterpolargl/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..18f41f907f4 --- /dev/null +++ b/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scatterpolargl.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/scatterternary/marker/_colorbar.py b/plotly/validators/scatterternary/marker/_colorbar.py index ecdc23a29c3..856f92ab719 100644 --- a/plotly/validators/scatterternary/marker/_colorbar.py +++ b/plotly/validators/scatterternary/marker/_colorbar.py @@ -143,6 +143,12 @@ def __init__( plotly.graph_objs.scatterternary.marker.colorba r.Tickformatstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.scatterternary.marker.colorbar.tickformatstop + defaults), sets the default property values to + use for elements of + scatterternary.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/scatterternary/marker/colorbar/__init__.py b/plotly/validators/scatterternary/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/scatterternary/marker/colorbar/__init__.py +++ b/plotly/validators/scatterternary/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..3e98505da41 --- /dev/null +++ b/plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='scatterternary.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/splom/__init__.py b/plotly/validators/splom/__init__.py index 31ab26e62f6..602760b5a9a 100644 --- a/plotly/validators/splom/__init__.py +++ b/plotly/validators/splom/__init__.py @@ -20,6 +20,7 @@ from ._hoverlabel import HoverlabelValidator from ._hoverinfosrc import HoverinfosrcValidator from ._hoverinfo import HoverinfoValidator +from ._dimensiondefaults import DimensionValidator from ._dimensions import DimensionsValidator from ._diagonal import DiagonalValidator from ._customdatasrc import CustomdatasrcValidator diff --git a/plotly/validators/splom/_dimensiondefaults.py b/plotly/validators/splom/_dimensiondefaults.py new file mode 100644 index 00000000000..25d9852c8aa --- /dev/null +++ b/plotly/validators/splom/_dimensiondefaults.py @@ -0,0 +1,16 @@ +import _plotly_utils.basevalidators + + +class DimensionValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, plotly_name='dimensiondefaults', parent_name='splom', **kwargs + ): + super(DimensionValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Dimension'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/splom/marker/_colorbar.py b/plotly/validators/splom/marker/_colorbar.py index 365ff1347e6..47c1a368d2d 100644 --- a/plotly/validators/splom/marker/_colorbar.py +++ b/plotly/validators/splom/marker/_colorbar.py @@ -140,6 +140,12 @@ def __init__( plotly.graph_objs.splom.marker.colorbar.Tickfor matstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.splom.marker.colorbar.tickformatstopdefaults) + , sets the default property values to use for + elements of + splom.marker.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/splom/marker/colorbar/__init__.py b/plotly/validators/splom/marker/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/splom/marker/colorbar/__init__.py +++ b/plotly/validators/splom/marker/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..61d2a1b4f67 --- /dev/null +++ b/plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='splom.marker.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/streamtube/_colorbar.py b/plotly/validators/streamtube/_colorbar.py index f4a5dfab51e..24ecc310720 100644 --- a/plotly/validators/streamtube/_colorbar.py +++ b/plotly/validators/streamtube/_colorbar.py @@ -140,6 +140,11 @@ def __init__( plotly.graph_objs.streamtube.colorbar.Tickforma tstop instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.streamtube.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of streamtube.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/streamtube/colorbar/__init__.py b/plotly/validators/streamtube/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/streamtube/colorbar/__init__.py +++ b/plotly/validators/streamtube/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py b/plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..ea07d04922b --- /dev/null +++ b/plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='streamtube.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/plotly/validators/surface/_colorbar.py b/plotly/validators/surface/_colorbar.py index 96c56d73b21..aab5617f712 100644 --- a/plotly/validators/surface/_colorbar.py +++ b/plotly/validators/surface/_colorbar.py @@ -139,6 +139,11 @@ def __init__( tickformatstops plotly.graph_objs.surface.colorbar.Tickformatst op instance or dict with compatible properties + tickformatstopdefaults + When used in a template (as layout.template.dat + a.surface.colorbar.tickformatstopdefaults), + sets the default property values to use for + elements of surface.colorbar.tickformatstops ticklen Sets the tick length (in px). tickmode diff --git a/plotly/validators/surface/colorbar/__init__.py b/plotly/validators/surface/colorbar/__init__.py index 5c903426b19..7b362d36cb4 100644 --- a/plotly/validators/surface/colorbar/__init__.py +++ b/plotly/validators/surface/colorbar/__init__.py @@ -17,6 +17,7 @@ from ._tickprefix import TickprefixValidator from ._tickmode import TickmodeValidator from ._ticklen import TicklenValidator +from ._tickformatstopdefaults import TickformatstopValidator from ._tickformatstops import TickformatstopsValidator from ._tickformat import TickformatValidator from ._tickfont import TickfontValidator diff --git a/plotly/validators/surface/colorbar/_tickformatstopdefaults.py b/plotly/validators/surface/colorbar/_tickformatstopdefaults.py new file mode 100644 index 00000000000..9597117ff2d --- /dev/null +++ b/plotly/validators/surface/colorbar/_tickformatstopdefaults.py @@ -0,0 +1,19 @@ +import _plotly_utils.basevalidators + + +class TickformatstopValidator(_plotly_utils.basevalidators.CompoundValidator): + + def __init__( + self, + plotly_name='tickformatstopdefaults', + parent_name='surface.colorbar', + **kwargs + ): + super(TickformatstopValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + data_class_str=kwargs.pop('data_class_str', 'Tickformatstop'), + data_docs=kwargs.pop('data_docs', """ +"""), + **kwargs + ) diff --git a/setup.py b/setup.py index 97a149dce93..e6dc61dd443 100644 --- a/setup.py +++ b/setup.py @@ -266,7 +266,7 @@ def run(self): 'plotly/matplotlylib/mplexporter', 'plotly/matplotlylib/mplexporter/renderers', '_plotly_utils'] + graph_objs_packages + validator_packages, - package_data={'plotly': ['package_data/*'], + package_data={'plotly': ['package_data/*', 'package_data/templates/*'], 'plotlywidget': ['static/*']}, data_files=[ ('share/jupyter/nbextensions/plotlywidget', [ diff --git a/templategen/__init__.py b/templategen/__init__.py new file mode 100644 index 00000000000..5d553e2459b --- /dev/null +++ b/templategen/__init__.py @@ -0,0 +1,12 @@ +from plotly.utils import PlotlyJSONEncoder +import json +from templategen.definitions import builders + +if __name__ == '__main__': + + for template_name in builders: + template = builders[template_name]() + + with open('plotly/package_data/templates/%s.json' % template_name, + 'w') as f: + plotly_schema = json.dump(template, f, cls=PlotlyJSONEncoder) diff --git a/templategen/definitions.py b/templategen/definitions.py new file mode 100644 index 00000000000..409bb7c1a00 --- /dev/null +++ b/templategen/definitions.py @@ -0,0 +1,523 @@ +from plotly.graph_objs.layout import Template +from templategen.utils import initialize_template +from .utils.colors import colors +import colorcet as cc + +# dict of template builder functions +# This way we can loop over definitions in __init__.py +builders = {} + + +def ggplot2(): + # Define colors + # ------------- + # Based on theme_gray from + # https://github.com/tidyverse/ggplot2/blob/master/R/theme-defaults.r + + # Set colorscale + # Colors picked using colorpicker from + # https://ggplot2.tidyverse.org/reference/scale_colour_continuous.html + colorscale = [[0, 'rgb(20,44,66)'], [1, 'rgb(90,179,244)']] + + # Hue cycle for 5 categories + colorway = ["#F8766D", "#A3A500", "#00BF7D", "#00B0F6", "#E76BF3"] + + # Set colorbar_common + # Note the light inward ticks in + # https://ggplot2.tidyverse.org/reference/scale_colour_continuous.html + colorbar_common = dict( + outlinewidth=0, + tickcolor=colors['gray93'], + ticks='inside', + len=0.2, + ticklen=6) + + # Common axis common properties + axis_common = dict( + showgrid=True, + gridcolor='white', + linecolor='white', + tickcolor=colors['gray20'], + ticks="outside") + + # semi-transparent black and no outline + shape_defaults = dict( + fillcolor='black', + line={'width': 0}, + opacity=0.3) + + # Remove arrow head and make line thinner + annotation_defaults = { + 'arrowhead': 0, + 'arrowwidth': 1} + + template = initialize_template( + paper_clr='white', + font_clr=colors['gray20'], + panel_background_clr=colors['gray93'], + panel_grid_clr='white', + axis_ticks_clr=colors['gray20'], + zerolinecolor_clr='white', + table_cell_clr=colors['gray93'], + table_header_clr=colors['gray85'], + table_line_clr='white', + colorway=colorway, + colorbar_common=colorbar_common, + colorscale=colorscale, + axis_common=axis_common, + annotation_defaults=annotation_defaults, + shape_defaults=shape_defaults + ) + + # Increase grid width for 3d plots + template.layout.scene.xaxis.gridwidth = 2 + template.layout.scene.yaxis.gridwidth = 2 + template.layout.scene.zaxis.gridwidth = 2 + + return template + + +builders['ggplot2'] = ggplot2 + + +def seaborn(): + # Define colors + # ------------- + # Set colorscale + # N = len(sns.cm.rocket.colors) + # [[i/(N-1), f'rgb({int(r*255)},{int(g*255)},{int(b*255)})'] + # for i, (r,g,b) in enumerate(sns.cm.rocket.colors) + # if i % 16 == 0 or i == 255] + colorscale = [ + [0.0, 'rgb(2,4,25)'], + [0.06274509803921569, 'rgb(24,15,41)'], + [0.12549019607843137, 'rgb(47,23,57)'], + [0.18823529411764706, 'rgb(71,28,72)'], + [0.25098039215686274, 'rgb(97,30,82)'], + [0.3137254901960784, 'rgb(123,30,89)'], + [0.3764705882352941, 'rgb(150,27,91)'], + [0.4392156862745098, 'rgb(177,22,88)'], + [0.5019607843137255, 'rgb(203,26,79)'], + [0.5647058823529412, 'rgb(223,47,67)'], + [0.6274509803921569, 'rgb(236,76,61)'], + [0.6901960784313725, 'rgb(242,107,73)'], + [0.7529411764705882, 'rgb(244,135,95)'], + [0.8156862745098039, 'rgb(245,162,122)'], + [0.8784313725490196, 'rgb(246,188,153)'], + [0.9411764705882353, 'rgb(247,212,187)'], + [1.0, 'rgb(250,234,220)']] + + # Hue cycle for 3 categories + # + # Created with: + # import seaborn as sns + # sns.set() + # [f'rgb({int(r*255)},{int(g*255)},{int(b*255)})' + # for r, g, b in sns.color_palette()] + colorway = [ + 'rgb(76,114,176)', + 'rgb(221,132,82)', + 'rgb(85,168,104)', + 'rgb(196,78,82)', + 'rgb(129,114,179)', + 'rgb(147,120,96)', + 'rgb(218,139,195)', + 'rgb(140,140,140)', + 'rgb(204,185,116)', + 'rgb(100,181,205)'] + + # Set colorbar_common + # Note the light inward ticks in + # https://ggplot2.tidyverse.org/reference/scale_colour_continuous.html + colorbar_common = dict( + outlinewidth=0, + tickcolor=colors['gray14'], + ticks='outside', + tickwidth=2, + ticklen=8) + + # Common axis common properties + axis_common = dict( + showgrid=True, + gridcolor='white', + linecolor='white', + ticks='') + + # semi-transparent black and no outline + annotation_clr = 'rgb(67,103,167)' + shape_defaults = dict( + fillcolor=annotation_clr, + line={'width': 0}, + opacity=0.5) + + # Remove arrow head and make line thinner + annotation_defaults = { + 'arrowcolor': annotation_clr} + + template = initialize_template( + paper_clr='white', + font_clr=colors['gray14'], + panel_background_clr='rgb(234,234,242)', + panel_grid_clr='white', + axis_ticks_clr=colors['gray14'], + zerolinecolor_clr='white', + table_cell_clr='rgb(231,231,240)', + table_header_clr='rgb(183,183,191)', + table_line_clr='white', + colorway=colorway, + colorbar_common=colorbar_common, + colorscale=colorscale, + axis_common=axis_common, + annotation_defaults=annotation_defaults, + shape_defaults=shape_defaults + ) + + # Increase grid width for 3d plots + template.layout.scene.xaxis.gridwidth = 2 + template.layout.scene.yaxis.gridwidth = 2 + template.layout.scene.zaxis.gridwidth = 2 + + # Set table header font color to white + return template + + +builders['seaborn'] = seaborn + + +# https://brand.plot.ly/ +plotly_clrs = { + 'Rhino Light 4': '#f2f5fa', + 'Rhino Light 3': '#F3F6FA', + 'Rhino Light 2': '#EBF0F8', + 'Rhino Light 1': '#DFE8F3', + 'Rhino Medium 2': '#C8D4E3', + 'Rhino Medium 1': '#A2B1C6', + 'Rhino Dark': '#506784', + 'Rhino Core': '#2a3f5f', + 'Dodger': '#119DFF', + 'Dodger Shade': '#0D76BF', + 'Aqua': '#09ffff', + 'Aqua Shade': '#19d3f3', + 'Lavender': '#e763fa', + 'Lavender Shade': '#ab63fa', + 'Cornflower': '#636efa', + 'Emerald': '#00cc96', + 'Sienna': '#EF553B' +} + +# ## Add interpolated theme colors +# +# Interpolate from Rhino Dark to 0.5 of the way toward Black +# https://meyerweb.com/eric/tools/color-blend/#506784:000000:1:hex +plotly_clrs['Rhino Darker'] = '#283442' + +# https://meyerweb.com/eric/tools/color-blend/#DFE8F3:EBF0F8:1:hex +plotly_clrs['Rhino Light 1.5'] = '#E5ECF6' + +# Perceptually uniform colorscale that matches brand colors really well. +# Trim the upper and lower ends so that it doesn't go so close to black and +# white. This makes the scale more visible on both white and black +# backgrounds +bmw_subset = cc.b_linear_bmw_5_95_c86[50:230] +linear_bmw_5_95_c86_n256 = [ + [i/(len(bmw_subset)-1), clr] for i, clr in enumerate(bmw_subset) + if i % 16 == 0 or i == (len(bmw_subset)-1)] + +jupyterlab_output_clr = 'rgb(17,17,17)' + + +def plotly(): + # Define colors + # ------------- + colorscale = linear_bmw_5_95_c86_n256 + + colorway = [ + plotly_clrs['Cornflower'], + plotly_clrs['Sienna'], + plotly_clrs['Emerald'], + plotly_clrs['Lavender Shade'], + plotly_clrs['Aqua Shade'], + plotly_clrs['Lavender'] + ] + + # Set colorbar_common + colorbar_common = dict( + outlinewidth=0, + ticks='') + + # Common axis common properties + axis_common = dict( + gridcolor='white', + linecolor='white', + ticks='') + + # semi-transparent black and no outline + annotation_clr = plotly_clrs['Rhino Dark'] + shape_defaults = dict( + fillcolor=annotation_clr, + line={'width': 0}, + opacity=0.4) + + # Remove arrow head and make line thinner + annotation_defaults = { + 'arrowcolor': annotation_clr, + 'arrowhead': 0, + 'arrowwidth': 1 + + } + + template = initialize_template( + paper_clr='white', + font_clr=plotly_clrs['Rhino Core'], + panel_background_clr=plotly_clrs['Rhino Light 1.5'], + panel_grid_clr='white', + axis_ticks_clr=plotly_clrs['Rhino Core'], + zerolinecolor_clr='white', + table_cell_clr=plotly_clrs['Rhino Light 2'], + table_header_clr=plotly_clrs['Rhino Medium 2'], + table_line_clr='white', + colorway=colorway, + colorbar_common=colorbar_common, + colorscale=colorscale, + axis_common=axis_common, + annotation_defaults=annotation_defaults, + shape_defaults=shape_defaults + ) + + # Increase grid width for 3d plots + template.layout.scene.xaxis.gridwidth = 2 + template.layout.scene.yaxis.gridwidth = 2 + template.layout.scene.zaxis.gridwidth = 2 + + # Increase width of cartesian zero lines + template.layout.xaxis.zerolinewidth = 2 + template.layout.yaxis.zerolinewidth = 2 + + # Set table header font color to white + return template + + +builders['plotly'] = plotly + + +def plotly_white(): + # Define colors + # ------------- + colorscale = linear_bmw_5_95_c86_n256 + + colorway = [ + plotly_clrs['Cornflower'], + plotly_clrs['Sienna'], + plotly_clrs['Emerald'], + plotly_clrs['Lavender Shade'], + plotly_clrs['Aqua Shade'], + plotly_clrs['Lavender'] + ] + + # Set colorbar_common + colorbar_common = dict( + outlinewidth=0, + ticks='') + + # Common axis common properties + axis_common = dict( + gridcolor=plotly_clrs['Rhino Light 2'], + linecolor=plotly_clrs['Rhino Light 2'], + ticks='') + + # semi-transparent black and no outline + annotation_clr = plotly_clrs['Rhino Dark'] + shape_defaults = dict( + fillcolor=annotation_clr, + line={'width': 0}, + opacity=0.4) + + # Remove arrow head and make line thinner + annotation_defaults = { + 'arrowcolor': annotation_clr, + 'arrowhead': 0, + 'arrowwidth': 1 + + } + + template = initialize_template( + paper_clr='white', + font_clr=plotly_clrs['Rhino Core'], + panel_background_clr='white', + panel_grid_clr=plotly_clrs['Rhino Medium 2'], + axis_ticks_clr=plotly_clrs['Rhino Core'], + zerolinecolor_clr=plotly_clrs['Rhino Light 2'], + table_cell_clr=plotly_clrs['Rhino Light 2'], + table_header_clr=plotly_clrs['Rhino Medium 2'], + table_line_clr='white', + colorway=colorway, + colorbar_common=colorbar_common, + colorscale=colorscale, + axis_common=axis_common, + annotation_defaults=annotation_defaults, + shape_defaults=shape_defaults + ) + + # Increase grid width for 3d plots + opts = dict(gridwidth=2, gridcolor=plotly_clrs['Rhino Light 1']) + template.layout.scene.xaxis.update(opts) + template.layout.scene.yaxis.update(opts) + template.layout.scene.zaxis.update(opts) + + # Darken ternary + opts = dict(linecolor=plotly_clrs['Rhino Medium 1'], + gridcolor=plotly_clrs['Rhino Light 1']) + template.layout.ternary.aaxis.update(opts) + template.layout.ternary.baxis.update(opts) + template.layout.ternary.caxis.update(opts) + + # Increase width of cartesian zero lines + template.layout.xaxis.zerolinewidth = 2 + template.layout.yaxis.zerolinewidth = 2 + + # Set table header font color to white + return template + + +builders['plotly_white'] = plotly_white + + +def plotly_dark(): + # Define colors + # ------------- + colorscale = linear_bmw_5_95_c86_n256 + + colorway = [ + plotly_clrs['Cornflower'], + plotly_clrs['Sienna'], + plotly_clrs['Emerald'], + plotly_clrs['Lavender Shade'], + plotly_clrs['Aqua Shade'], + plotly_clrs['Lavender'] + ] + + # Set colorbar_common + colorbar_common = dict( + outlinewidth=0, + ticks='') + + # Common axis common properties + grid_color = plotly_clrs['Rhino Dark'] + axis_common = dict( + gridcolor=grid_color, + linecolor=grid_color, + ticks='') + + # semi-transparent black and no outline + annotation_clr = plotly_clrs['Rhino Light 4'] + shape_defaults = dict( + fillcolor=annotation_clr, + line={'width': 0}, + opacity=0.4) + + # Remove arrow head and make line thinner + annotation_defaults = { + 'arrowcolor': annotation_clr, + 'arrowhead': 0, + 'arrowwidth': 1 + } + + template = initialize_template( + paper_clr=jupyterlab_output_clr, + font_clr=plotly_clrs['Rhino Light 4'], + panel_background_clr=jupyterlab_output_clr, + panel_grid_clr=grid_color, + axis_ticks_clr=plotly_clrs['Rhino Medium 1'], + zerolinecolor_clr=plotly_clrs['Rhino Medium 2'], + table_cell_clr=plotly_clrs['Rhino Dark'], + table_header_clr=plotly_clrs['Rhino Core'], + table_line_clr=jupyterlab_output_clr, + colorway=colorway, + colorbar_common=colorbar_common, + colorscale=colorscale, + axis_common=axis_common, + annotation_defaults=annotation_defaults, + shape_defaults=shape_defaults + ) + + # Increase grid width for 3d plots + template.layout.scene.xaxis.gridwidth = 2 + template.layout.scene.yaxis.gridwidth = 2 + template.layout.scene.zaxis.gridwidth = 2 + + # Button styling + template.layout.updatemenudefaults.bgcolor = plotly_clrs['Rhino Dark'] + template.layout.updatemenudefaults.borderwidth = 0 + + # Slider styling + template.layout.sliderdefaults.bgcolor = '#C8D4E3' + template.layout.sliderdefaults.borderwidth = 1 + template.layout.sliderdefaults.bordercolor = 'rgb(17,17,17)' + template.layout.sliderdefaults.tickwidth = 0 + + # Darken cartesian grid lines a little more + template.layout.xaxis.gridcolor = plotly_clrs['Rhino Darker'] + template.layout.yaxis.gridcolor = plotly_clrs['Rhino Darker'] + + # Increase width of cartesian zero lines + template.layout.xaxis.zerolinecolor = plotly_clrs['Rhino Darker'] + template.layout.yaxis.zerolinecolor = plotly_clrs['Rhino Darker'] + template.layout.xaxis.zerolinewidth = 2 + template.layout.yaxis.zerolinewidth = 2 + + # Set table header font color to white + return template + + +builders['plotly_dark'] = plotly_dark + + +def presentation(): + """ + Template that increases the size of text and markers/lines for certain + trace types + """ + + # Create blank template + template = Template() + + # Increase global font size by 1.5x (12->18) + template.layout.font.size = 18 + + # Set automargin to true in case we need to adjust margins for + # larger font size + template.layout.xaxis.automargin = True + template.layout.yaxis.automargin = True + + # Increase scatter markers and lines by 1.5x + opts = {'marker': {'size': 9}, 'line': {'width': 3}} + template.data.scatter = [opts] + template.data.scattergl = [opts] + template.data.scatter3d = [opts] + template.data.scatterpolar = [opts] + template.data.scatterpolargl = [opts] + template.data.scatterternary = [opts] + template.data.scattergeo = [opts] + + # Increase default height of table cells + template.data.table = [{'header': {'height': 36}, + 'cells': {'height': 30}}] + + return template + + +builders['presentation'] = presentation + + +def xgridoff(): + """ + Tempalate to disable x-grid by default + """ + # Create blank template + template = Template() + template.layout.xaxis.showgrid = False + + return template + + +builders['xgridoff'] = xgridoff diff --git a/templategen/utils/__init__.py b/templategen/utils/__init__.py new file mode 100644 index 00000000000..2c00f08db94 --- /dev/null +++ b/templategen/utils/__init__.py @@ -0,0 +1,143 @@ +from plotly import graph_objs as go + +colorscale_parent_paths = [ + ('histogram2dcontour',), + ('choropleth',), + ('histogram2d',), + ('heatmap',), + ('heatmapgl',), + ('contourcarpet',), + ('contour',), + ('surface',), + ('mesh3d',), + ('scatter', 'marker'), + ('parcoords', 'line'), + ('scatterpolargl', 'marker'), + ('bar', 'marker'), + ('scattergeo', 'marker'), + ('scatterpolar', 'marker'), + ('histogram', 'marker'), + ('scattergl', 'marker'), + ('scatter3d', 'line'), + ('scatter3d', 'marker'), + ('scattermapbox', 'marker'), + ('scatterternary', 'marker'), + ('scattercarpet', 'marker'), + ('scatter', 'marker', 'line'), + ('scatterpolargl', 'marker', 'line'), + ('bar', 'marker', 'line') +] + + +def set_all_colorscales(template, colorscale): + for parent_path in colorscale_parent_paths: + if not template.data[parent_path[0]]: + template.data[parent_path[0]] = [{}] + + for trace in template.data[parent_path[0]]: + parent = trace[parent_path[1:]] + if 'colorscale' in parent: + parent.colorscale = colorscale + parent.autocolorscale = False + + +def set_all_colorbars(template, colorbar): + for parent_path in colorscale_parent_paths: + if not template.data[parent_path[0]]: + template.data[parent_path[0]] = [{}] + + for trace in template.data[parent_path[0]]: + parent = trace[parent_path[1:]] + + if 'colorbar' in parent: + parent.colorbar = colorbar + + +def initialize_template(annotation_defaults, + axis_common, + axis_ticks_clr, + colorbar_common, + colorscale, + colorway, + font_clr, + panel_background_clr, + panel_grid_clr, + paper_clr, + shape_defaults, + table_cell_clr, + table_header_clr, + table_line_clr, + zerolinecolor_clr): + + # Initialize template + # ------------------- + template = go.layout.Template() + + # trace cycle color + template.layout.colorway = colorway + + # Set global font color + template.layout.font.color = font_clr + + # Set background colors + template.layout.paper_bgcolor = paper_clr + template.layout.plot_bgcolor = panel_background_clr + template.layout.polar.bgcolor = panel_background_clr + template.layout.ternary.bgcolor = panel_background_clr + set_all_colorscales(template, colorscale) + set_all_colorbars(template, colorbar_common) + cartesian_axis = dict(axis_common, zerolinecolor=zerolinecolor_clr) + + # Cartesian + template.layout.xaxis = cartesian_axis + template.layout.yaxis = cartesian_axis + + # 3D + axis_3d = dict(cartesian_axis) + if panel_background_clr: + axis_3d['backgroundcolor'] = panel_background_clr + axis_3d['showbackground'] = True + template.layout.scene.xaxis = axis_3d + template.layout.scene.yaxis = axis_3d + template.layout.scene.zaxis = axis_3d + + # Ternary + template.layout.ternary.aaxis = axis_common + template.layout.ternary.baxis = axis_common + template.layout.ternary.caxis = axis_common + + # Polar + template.layout.polar.angularaxis = axis_common + template.layout.polar.radialaxis = axis_common + + # Carpet + carpet_axis = dict( + gridcolor=panel_grid_clr, + linecolor=panel_grid_clr, + startlinecolor=axis_ticks_clr, + endlinecolor=axis_ticks_clr, + minorgridcolor=panel_grid_clr) + template.data.carpet = [{ + 'aaxis': carpet_axis, + 'baxis': carpet_axis}] + + # Shape defaults + template.layout.shapedefaults = shape_defaults + + # Annotation defaults + template.layout.annotationdefaults = annotation_defaults + + # Geo + template.layout.geo.bgcolor = paper_clr + template.layout.geo.landcolor = panel_background_clr + template.layout.geo.subunitcolor = panel_grid_clr + template.layout.geo.showland = True + template.layout.geo.showlakes = True + template.layout.geo.lakecolor = paper_clr + + # Table + template.data.table = [{'header': {'fill': {'color': table_header_clr}, + 'line': {'color': table_line_clr},}, + 'cells': {'fill': {'color': table_cell_clr}, + 'line': {'color': table_line_clr}}}] + return template \ No newline at end of file diff --git a/templategen/utils/colors.py b/templategen/utils/colors.py new file mode 100644 index 00000000000..8131dd86aa5 --- /dev/null +++ b/templategen/utils/colors.py @@ -0,0 +1,1124 @@ +""" +Provide RGB color constants and a colors dictionary with +elements formatted: colors[colorname] = CONSTANT + +Used https://www.webucator.com/blog/2015/03/python-color-constants-module/ as +a starting point, but it doesn't bear much resemblance to this any more. +""" + +colors = {} + + +def rgb_str(red, green, blue): + return 'rgb({},{},{})'.format(red, green, blue) + + +ALICEBLUE = rgb_str(240, 248, 255) +ANTIQUEWHITE = rgb_str(250, 235, 215) +ANTIQUEWHITE1 = rgb_str(255, 239, 219) +ANTIQUEWHITE2 = rgb_str(238, 223, 204) +ANTIQUEWHITE3 = rgb_str(205, 192, 176) +ANTIQUEWHITE4 = rgb_str(139, 131, 120) +AQUA = rgb_str(0, 255, 255) +AQUAMARINE1 = rgb_str(127, 255, 212) +AQUAMARINE2 = rgb_str(118, 238, 198) +AQUAMARINE3 = rgb_str(102, 205, 170) +AQUAMARINE4 = rgb_str(69, 139, 116) +AZURE1 = rgb_str(240, 255, 255) +AZURE2 = rgb_str(224, 238, 238) +AZURE3 = rgb_str(193, 205, 205) +AZURE4 = rgb_str(131, 139, 139) +BANANA = rgb_str(227, 207, 87) +BEIGE = rgb_str(245, 245, 220) +BISQUE1 = rgb_str(255, 228, 196) +BISQUE2 = rgb_str(238, 213, 183) +BISQUE3 = rgb_str(205, 183, 158) +BISQUE4 = rgb_str(139, 125, 107) +BLACK = rgb_str(0, 0, 0) +BLANCHEDALMOND = rgb_str(255, 235, 205) +BLUE = rgb_str(0, 0, 255) +BLUE2 = rgb_str(0, 0, 238) +BLUE3 = rgb_str(0, 0, 205) +BLUE4 = rgb_str(0, 0, 139) +BLUEVIOLET = rgb_str(138, 43, 226) +BRICK = rgb_str(156, 102, 31) +BROWN = rgb_str(165, 42, 42) +BROWN1 = rgb_str(255, 64, 64) +BROWN2 = rgb_str(238, 59, 59) +BROWN3 = rgb_str(205, 51, 51) +BROWN4 = rgb_str(139, 35, 35) +BURLYWOOD = rgb_str(222, 184, 135) +BURLYWOOD1 = rgb_str(255, 211, 155) +BURLYWOOD2 = rgb_str(238, 197, 145) +BURLYWOOD3 = rgb_str(205, 170, 125) +BURLYWOOD4 = rgb_str(139, 115, 85) +BURNTSIENNA = rgb_str(138, 54, 15) +BURNTUMBER = rgb_str(138, 51, 36) +CADETBLUE = rgb_str(95, 158, 160) +CADETBLUE1 = rgb_str(152, 245, 255) +CADETBLUE2 = rgb_str(142, 229, 238) +CADETBLUE3 = rgb_str(122, 197, 205) +CADETBLUE4 = rgb_str(83, 134, 139) +CADMIUMORANGE = rgb_str(255, 97, 3) +CADMIUMYELLOW = rgb_str(255, 153, 18) +CARROT = rgb_str(237, 145, 33) +CHARTREUSE1 = rgb_str(127, 255, 0) +CHARTREUSE2 = rgb_str(118, 238, 0) +CHARTREUSE3 = rgb_str(102, 205, 0) +CHARTREUSE4 = rgb_str(69, 139, 0) +CHOCOLATE = rgb_str(210, 105, 30) +CHOCOLATE1 = rgb_str(255, 127, 36) +CHOCOLATE2 = rgb_str(238, 118, 33) +CHOCOLATE3 = rgb_str(205, 102, 29) +CHOCOLATE4 = rgb_str(139, 69, 19) +COBALT = rgb_str(61, 89, 171) +COBALTGREEN = rgb_str(61, 145, 64) +COLDGREY = rgb_str(128, 138, 135) +CORAL = rgb_str(255, 127, 80) +CORAL1 = rgb_str(255, 114, 86) +CORAL2 = rgb_str(238, 106, 80) +CORAL3 = rgb_str(205, 91, 69) +CORAL4 = rgb_str(139, 62, 47) +CORNFLOWERBLUE = rgb_str(100, 149, 237) +CORNSILK1 = rgb_str(255, 248, 220) +CORNSILK2 = rgb_str(238, 232, 205) +CORNSILK3 = rgb_str(205, 200, 177) +CORNSILK4 = rgb_str(139, 136, 120) +CRIMSON = rgb_str(220, 20, 60) +CYAN2 = rgb_str(0, 238, 238) +CYAN3 = rgb_str(0, 205, 205) +CYAN4 = rgb_str(0, 139, 139) +DARKGOLDENROD = rgb_str(184, 134, 11) +DARKGOLDENROD1 = rgb_str(255, 185, 15) +DARKGOLDENROD2 = rgb_str(238, 173, 14) +DARKGOLDENROD3 = rgb_str(205, 149, 12) +DARKGOLDENROD4 = rgb_str(139, 101, 8) +DARKGRAY = rgb_str(169, 169, 169) +DARKGREEN = rgb_str(0, 100, 0) +DARKKHAKI = rgb_str(189, 183, 107) +DARKOLIVEGREEN = rgb_str(85, 107, 47) +DARKOLIVEGREEN1 = rgb_str(202, 255, 112) +DARKOLIVEGREEN2 = rgb_str(188, 238, 104) +DARKOLIVEGREEN3 = rgb_str(162, 205, 90) +DARKOLIVEGREEN4 = rgb_str(110, 139, 61) +DARKORANGE = rgb_str(255, 140, 0) +DARKORANGE1 = rgb_str(255, 127, 0) +DARKORANGE2 = rgb_str(238, 118, 0) +DARKORANGE3 = rgb_str(205, 102, 0) +DARKORANGE4 = rgb_str(139, 69, 0) +DARKORCHID = rgb_str(153, 50, 204) +DARKORCHID1 = rgb_str(191, 62, 255) +DARKORCHID2 = rgb_str(178, 58, 238) +DARKORCHID3 = rgb_str(154, 50, 205) +DARKORCHID4 = rgb_str(104, 34, 139) +DARKSALMON = rgb_str(233, 150, 122) +DARKSEAGREEN = rgb_str(143, 188, 143) +DARKSEAGREEN1 = rgb_str(193, 255, 193) +DARKSEAGREEN2 = rgb_str(180, 238, 180) +DARKSEAGREEN3 = rgb_str(155, 205, 155) +DARKSEAGREEN4 = rgb_str(105, 139, 105) +DARKSLATEBLUE = rgb_str(72, 61, 139) +DARKSLATEGRAY = rgb_str(47, 79, 79) +DARKSLATEGRAY1 = rgb_str(151, 255, 255) +DARKSLATEGRAY2 = rgb_str(141, 238, 238) +DARKSLATEGRAY3 = rgb_str(121, 205, 205) +DARKSLATEGRAY4 = rgb_str(82, 139, 139) +DARKTURQUOISE = rgb_str(0, 206, 209) +DARKVIOLET = rgb_str(148, 0, 211) +DEEPPINK1 = rgb_str(255, 20, 147) +DEEPPINK2 = rgb_str(238, 18, 137) +DEEPPINK3 = rgb_str(205, 16, 118) +DEEPPINK4 = rgb_str(139, 10, 80) +DEEPSKYBLUE1 = rgb_str(0, 191, 255) +DEEPSKYBLUE2 = rgb_str(0, 178, 238) +DEEPSKYBLUE3 = rgb_str(0, 154, 205) +DEEPSKYBLUE4 = rgb_str(0, 104, 139) +DIMGRAY = rgb_str(105, 105, 105) +DIMGRAY = rgb_str(105, 105, 105) +DODGERBLUE1 = rgb_str(30, 144, 255) +DODGERBLUE2 = rgb_str(28, 134, 238) +DODGERBLUE3 = rgb_str(24, 116, 205) +DODGERBLUE4 = rgb_str(16, 78, 139) +EGGSHELL = rgb_str(252, 230, 201) +EMERALDGREEN = rgb_str(0, 201, 87) +FIREBRICK = rgb_str(178, 34, 34) +FIREBRICK1 = rgb_str(255, 48, 48) +FIREBRICK2 = rgb_str(238, 44, 44) +FIREBRICK3 = rgb_str(205, 38, 38) +FIREBRICK4 = rgb_str(139, 26, 26) +FLESH = rgb_str(255, 125, 64) +FLORALWHITE = rgb_str(255, 250, 240) +FORESTGREEN = rgb_str(34, 139, 34) +GAINSBORO = rgb_str(220, 220, 220) +GHOSTWHITE = rgb_str(248, 248, 255) +GOLD1 = rgb_str(255, 215, 0) +GOLD2 = rgb_str(238, 201, 0) +GOLD3 = rgb_str(205, 173, 0) +GOLD4 = rgb_str(139, 117, 0) +GOLDENROD = rgb_str(218, 165, 32) +GOLDENROD1 = rgb_str(255, 193, 37) +GOLDENROD2 = rgb_str(238, 180, 34) +GOLDENROD3 = rgb_str(205, 155, 29) +GOLDENROD4 = rgb_str(139, 105, 20) +GRAY = rgb_str(128, 128, 128) +GRAY1 = rgb_str(3, 3, 3) +GRAY10 = rgb_str(26, 26, 26) +GRAY11 = rgb_str(28, 28, 28) +GRAY12 = rgb_str(31, 31, 31) +GRAY13 = rgb_str(33, 33, 33) +GRAY14 = rgb_str(36, 36, 36) +GRAY15 = rgb_str(38, 38, 38) +GRAY16 = rgb_str(41, 41, 41) +GRAY17 = rgb_str(43, 43, 43) +GRAY18 = rgb_str(46, 46, 46) +GRAY19 = rgb_str(48, 48, 48) +GRAY2 = rgb_str(5, 5, 5) +GRAY20 = rgb_str(51, 51, 51) +GRAY21 = rgb_str(54, 54, 54) +GRAY22 = rgb_str(56, 56, 56) +GRAY23 = rgb_str(59, 59, 59) +GRAY24 = rgb_str(61, 61, 61) +GRAY25 = rgb_str(64, 64, 64) +GRAY26 = rgb_str(66, 66, 66) +GRAY27 = rgb_str(69, 69, 69) +GRAY28 = rgb_str(71, 71, 71) +GRAY29 = rgb_str(74, 74, 74) +GRAY3 = rgb_str(8, 8, 8) +GRAY30 = rgb_str(77, 77, 77) +GRAY31 = rgb_str(79, 79, 79) +GRAY32 = rgb_str(82, 82, 82) +GRAY33 = rgb_str(84, 84, 84) +GRAY34 = rgb_str(87, 87, 87) +GRAY35 = rgb_str(89, 89, 89) +GRAY36 = rgb_str(92, 92, 92) +GRAY37 = rgb_str(94, 94, 94) +GRAY38 = rgb_str(97, 97, 97) +GRAY39 = rgb_str(99, 99, 99) +GRAY4 = rgb_str(10, 10, 10) +GRAY40 = rgb_str(102, 102, 102) +GRAY42 = rgb_str(107, 107, 107) +GRAY43 = rgb_str(110, 110, 110) +GRAY44 = rgb_str(112, 112, 112) +GRAY45 = rgb_str(115, 115, 115) +GRAY46 = rgb_str(117, 117, 117) +GRAY47 = rgb_str(120, 120, 120) +GRAY48 = rgb_str(122, 122, 122) +GRAY49 = rgb_str(125, 125, 125) +GRAY5 = rgb_str(13, 13, 13) +GRAY50 = rgb_str(127, 127, 127) +GRAY51 = rgb_str(130, 130, 130) +GRAY52 = rgb_str(133, 133, 133) +GRAY53 = rgb_str(135, 135, 135) +GRAY54 = rgb_str(138, 138, 138) +GRAY55 = rgb_str(140, 140, 140) +GRAY56 = rgb_str(143, 143, 143) +GRAY57 = rgb_str(145, 145, 145) +GRAY58 = rgb_str(148, 148, 148) +GRAY59 = rgb_str(150, 150, 150) +GRAY6 = rgb_str(15, 15, 15) +GRAY60 = rgb_str(153, 153, 153) +GRAY61 = rgb_str(156, 156, 156) +GRAY62 = rgb_str(158, 158, 158) +GRAY63 = rgb_str(161, 161, 161) +GRAY64 = rgb_str(163, 163, 163) +GRAY65 = rgb_str(166, 166, 166) +GRAY66 = rgb_str(168, 168, 168) +GRAY67 = rgb_str(171, 171, 171) +GRAY68 = rgb_str(173, 173, 173) +GRAY69 = rgb_str(176, 176, 176) +GRAY7 = rgb_str(18, 18, 18) +GRAY70 = rgb_str(179, 179, 179) +GRAY71 = rgb_str(181, 181, 181) +GRAY72 = rgb_str(184, 184, 184) +GRAY73 = rgb_str(186, 186, 186) +GRAY74 = rgb_str(189, 189, 189) +GRAY75 = rgb_str(191, 191, 191) +GRAY76 = rgb_str(194, 194, 194) +GRAY77 = rgb_str(196, 196, 196) +GRAY78 = rgb_str(199, 199, 199) +GRAY79 = rgb_str(201, 201, 201) +GRAY8 = rgb_str(20, 20, 20) +GRAY80 = rgb_str(204, 204, 204) +GRAY81 = rgb_str(207, 207, 207) +GRAY82 = rgb_str(209, 209, 209) +GRAY83 = rgb_str(212, 212, 212) +GRAY84 = rgb_str(214, 214, 214) +GRAY85 = rgb_str(217, 217, 217) +GRAY86 = rgb_str(219, 219, 219) +GRAY87 = rgb_str(222, 222, 222) +GRAY88 = rgb_str(224, 224, 224) +GRAY89 = rgb_str(227, 227, 227) +GRAY9 = rgb_str(23, 23, 23) +GRAY90 = rgb_str(229, 229, 229) +GRAY91 = rgb_str(232, 232, 232) +GRAY92 = rgb_str(235, 235, 235) +GRAY93 = rgb_str(237, 237, 237) +GRAY94 = rgb_str(240, 240, 240) +GRAY95 = rgb_str(242, 242, 242) +GRAY97 = rgb_str(247, 247, 247) +GRAY98 = rgb_str(250, 250, 250) +GRAY99 = rgb_str(252, 252, 252) +GREEN = rgb_str(0, 128, 0) +GREEN1 = rgb_str(0, 255, 0) +GREEN2 = rgb_str(0, 238, 0) +GREEN3 = rgb_str(0, 205, 0) +GREEN4 = rgb_str(0, 139, 0) +GREENYELLOW = rgb_str(173, 255, 47) +HONEYDEW1 = rgb_str(240, 255, 240) +HONEYDEW2 = rgb_str(224, 238, 224) +HONEYDEW3 = rgb_str(193, 205, 193) +HONEYDEW4 = rgb_str(131, 139, 131) +HOTPINK = rgb_str(255, 105, 180) +HOTPINK1 = rgb_str(255, 110, 180) +HOTPINK2 = rgb_str(238, 106, 167) +HOTPINK3 = rgb_str(205, 96, 144) +HOTPINK4 = rgb_str(139, 58, 98) +INDIANRED = rgb_str(176, 23, 31) +INDIANRED = rgb_str(205, 92, 92) +INDIANRED1 = rgb_str(255, 106, 106) +INDIANRED2 = rgb_str(238, 99, 99) +INDIANRED3 = rgb_str(205, 85, 85) +INDIANRED4 = rgb_str(139, 58, 58) +INDIGO = rgb_str(75, 0, 130) +IVORY1 = rgb_str(255, 255, 240) +IVORY2 = rgb_str(238, 238, 224) +IVORY3 = rgb_str(205, 205, 193) +IVORY4 = rgb_str(139, 139, 131) +IVORYBLACK = rgb_str(41, 36, 33) +KHAKI = rgb_str(240, 230, 140) +KHAKI1 = rgb_str(255, 246, 143) +KHAKI2 = rgb_str(238, 230, 133) +KHAKI3 = rgb_str(205, 198, 115) +KHAKI4 = rgb_str(139, 134, 78) +LAVENDER = rgb_str(230, 230, 250) +LAVENDERBLUSH1 = rgb_str(255, 240, 245) +LAVENDERBLUSH2 = rgb_str(238, 224, 229) +LAVENDERBLUSH3 = rgb_str(205, 193, 197) +LAVENDERBLUSH4 = rgb_str(139, 131, 134) +LAWNGREEN = rgb_str(124, 252, 0) +LEMONCHIFFON1 = rgb_str(255, 250, 205) +LEMONCHIFFON2 = rgb_str(238, 233, 191) +LEMONCHIFFON3 = rgb_str(205, 201, 165) +LEMONCHIFFON4 = rgb_str(139, 137, 112) +LIGHTBLUE = rgb_str(173, 216, 230) +LIGHTBLUE1 = rgb_str(191, 239, 255) +LIGHTBLUE2 = rgb_str(178, 223, 238) +LIGHTBLUE3 = rgb_str(154, 192, 205) +LIGHTBLUE4 = rgb_str(104, 131, 139) +LIGHTCORAL = rgb_str(240, 128, 128) +LIGHTCYAN1 = rgb_str(224, 255, 255) +LIGHTCYAN2 = rgb_str(209, 238, 238) +LIGHTCYAN3 = rgb_str(180, 205, 205) +LIGHTCYAN4 = rgb_str(122, 139, 139) +LIGHTGOLDENROD1 = rgb_str(255, 236, 139) +LIGHTGOLDENROD2 = rgb_str(238, 220, 130) +LIGHTGOLDENROD3 = rgb_str(205, 190, 112) +LIGHTGOLDENROD4 = rgb_str(139, 129, 76) +LIGHTGOLDENRODYELLOW = rgb_str(250, 250, 210) +LIGHTGREY = rgb_str(211, 211, 211) +LIGHTPINK = rgb_str(255, 182, 193) +LIGHTPINK1 = rgb_str(255, 174, 185) +LIGHTPINK2 = rgb_str(238, 162, 173) +LIGHTPINK3 = rgb_str(205, 140, 149) +LIGHTPINK4 = rgb_str(139, 95, 101) +LIGHTSALMON1 = rgb_str(255, 160, 122) +LIGHTSALMON2 = rgb_str(238, 149, 114) +LIGHTSALMON3 = rgb_str(205, 129, 98) +LIGHTSALMON4 = rgb_str(139, 87, 66) +LIGHTSEAGREEN = rgb_str(32, 178, 170) +LIGHTSKYBLUE = rgb_str(135, 206, 250) +LIGHTSKYBLUE1 = rgb_str(176, 226, 255) +LIGHTSKYBLUE2 = rgb_str(164, 211, 238) +LIGHTSKYBLUE3 = rgb_str(141, 182, 205) +LIGHTSKYBLUE4 = rgb_str(96, 123, 139) +LIGHTSLATEBLUE = rgb_str(132, 112, 255) +LIGHTSLATEGRAY = rgb_str(119, 136, 153) +LIGHTSTEELBLUE = rgb_str(176, 196, 222) +LIGHTSTEELBLUE1 = rgb_str(202, 225, 255) +LIGHTSTEELBLUE2 = rgb_str(188, 210, 238) +LIGHTSTEELBLUE3 = rgb_str(162, 181, 205) +LIGHTSTEELBLUE4 = rgb_str(110, 123, 139) +LIGHTYELLOW1 = rgb_str(255, 255, 224) +LIGHTYELLOW2 = rgb_str(238, 238, 209) +LIGHTYELLOW3 = rgb_str(205, 205, 180) +LIGHTYELLOW4 = rgb_str(139, 139, 122) +LIMEGREEN = rgb_str(50, 205, 50) +LINEN = rgb_str(250, 240, 230) +MAGENTA = rgb_str(255, 0, 255) +MAGENTA2 = rgb_str(238, 0, 238) +MAGENTA3 = rgb_str(205, 0, 205) +MAGENTA4 = rgb_str(139, 0, 139) +MANGANESEBLUE = rgb_str(3, 168, 158) +MAROON = rgb_str(128, 0, 0) +MAROON1 = rgb_str(255, 52, 179) +MAROON2 = rgb_str(238, 48, 167) +MAROON3 = rgb_str(205, 41, 144) +MAROON4 = rgb_str(139, 28, 98) +MEDIUMORCHID = rgb_str(186, 85, 211) +MEDIUMORCHID1 = rgb_str(224, 102, 255) +MEDIUMORCHID2 = rgb_str(209, 95, 238) +MEDIUMORCHID3 = rgb_str(180, 82, 205) +MEDIUMORCHID4 = rgb_str(122, 55, 139) +MEDIUMPURPLE = rgb_str(147, 112, 219) +MEDIUMPURPLE1 = rgb_str(171, 130, 255) +MEDIUMPURPLE2 = rgb_str(159, 121, 238) +MEDIUMPURPLE3 = rgb_str(137, 104, 205) +MEDIUMPURPLE4 = rgb_str(93, 71, 139) +MEDIUMSEAGREEN = rgb_str(60, 179, 113) +MEDIUMSLATEBLUE = rgb_str(123, 104, 238) +MEDIUMSPRINGGREEN = rgb_str(0, 250, 154) +MEDIUMTURQUOISE = rgb_str(72, 209, 204) +MEDIUMVIOLETRED = rgb_str(199, 21, 133) +MELON = rgb_str(227, 168, 105) +MIDNIGHTBLUE = rgb_str(25, 25, 112) +MINT = rgb_str(189, 252, 201) +MINTCREAM = rgb_str(245, 255, 250) +MISTYROSE1 = rgb_str(255, 228, 225) +MISTYROSE2 = rgb_str(238, 213, 210) +MISTYROSE3 = rgb_str(205, 183, 181) +MISTYROSE4 = rgb_str(139, 125, 123) +MOCCASIN = rgb_str(255, 228, 181) +NAVAJOWHITE1 = rgb_str(255, 222, 173) +NAVAJOWHITE2 = rgb_str(238, 207, 161) +NAVAJOWHITE3 = rgb_str(205, 179, 139) +NAVAJOWHITE4 = rgb_str(139, 121, 94) +NAVY = rgb_str(0, 0, 128) +OLDLACE = rgb_str(253, 245, 230) +OLIVE = rgb_str(128, 128, 0) +OLIVEDRAB = rgb_str(107, 142, 35) +OLIVEDRAB1 = rgb_str(192, 255, 62) +OLIVEDRAB2 = rgb_str(179, 238, 58) +OLIVEDRAB3 = rgb_str(154, 205, 50) +OLIVEDRAB4 = rgb_str(105, 139, 34) +ORANGE = rgb_str(255, 128, 0) +ORANGE1 = rgb_str(255, 165, 0) +ORANGE2 = rgb_str(238, 154, 0) +ORANGE3 = rgb_str(205, 133, 0) +ORANGE4 = rgb_str(139, 90, 0) +ORANGERED1 = rgb_str(255, 69, 0) +ORANGERED2 = rgb_str(238, 64, 0) +ORANGERED3 = rgb_str(205, 55, 0) +ORANGERED4 = rgb_str(139, 37, 0) +ORCHID = rgb_str(218, 112, 214) +ORCHID1 = rgb_str(255, 131, 250) +ORCHID2 = rgb_str(238, 122, 233) +ORCHID3 = rgb_str(205, 105, 201) +ORCHID4 = rgb_str(139, 71, 137) +PALEGOLDENROD = rgb_str(238, 232, 170) +PALEGREEN = rgb_str(152, 251, 152) +PALEGREEN1 = rgb_str(154, 255, 154) +PALEGREEN2 = rgb_str(144, 238, 144) +PALEGREEN3 = rgb_str(124, 205, 124) +PALEGREEN4 = rgb_str(84, 139, 84) +PALETURQUOISE1 = rgb_str(187, 255, 255) +PALETURQUOISE2 = rgb_str(174, 238, 238) +PALETURQUOISE3 = rgb_str(150, 205, 205) +PALETURQUOISE4 = rgb_str(102, 139, 139) +PALEVIOLETRED = rgb_str(219, 112, 147) +PALEVIOLETRED1 = rgb_str(255, 130, 171) +PALEVIOLETRED2 = rgb_str(238, 121, 159) +PALEVIOLETRED3 = rgb_str(205, 104, 137) +PALEVIOLETRED4 = rgb_str(139, 71, 93) +PAPAYAWHIP = rgb_str(255, 239, 213) +PEACHPUFF1 = rgb_str(255, 218, 185) +PEACHPUFF2 = rgb_str(238, 203, 173) +PEACHPUFF3 = rgb_str(205, 175, 149) +PEACHPUFF4 = rgb_str(139, 119, 101) +PEACOCK = rgb_str(51, 161, 201) +PINK = rgb_str(255, 192, 203) +PINK1 = rgb_str(255, 181, 197) +PINK2 = rgb_str(238, 169, 184) +PINK3 = rgb_str(205, 145, 158) +PINK4 = rgb_str(139, 99, 108) +PLUM = rgb_str(221, 160, 221) +PLUM1 = rgb_str(255, 187, 255) +PLUM2 = rgb_str(238, 174, 238) +PLUM3 = rgb_str(205, 150, 205) +PLUM4 = rgb_str(139, 102, 139) +POWDERBLUE = rgb_str(176, 224, 230) +PURPLE = rgb_str(128, 0, 128) +PURPLE1 = rgb_str(155, 48, 255) +PURPLE2 = rgb_str(145, 44, 238) +PURPLE3 = rgb_str(125, 38, 205) +PURPLE4 = rgb_str(85, 26, 139) +RASPBERRY = rgb_str(135, 38, 87) +RAWSIENNA = rgb_str(199, 97, 20) +RED1 = rgb_str(255, 0, 0) +RED2 = rgb_str(238, 0, 0) +RED3 = rgb_str(205, 0, 0) +RED4 = rgb_str(139, 0, 0) +ROSYBROWN = rgb_str(188, 143, 143) +ROSYBROWN1 = rgb_str(255, 193, 193) +ROSYBROWN2 = rgb_str(238, 180, 180) +ROSYBROWN3 = rgb_str(205, 155, 155) +ROSYBROWN4 = rgb_str(139, 105, 105) +ROYALBLUE = rgb_str(65, 105, 225) +ROYALBLUE1 = rgb_str(72, 118, 255) +ROYALBLUE2 = rgb_str(67, 110, 238) +ROYALBLUE3 = rgb_str(58, 95, 205) +ROYALBLUE4 = rgb_str(39, 64, 139) +SALMON = rgb_str(250, 128, 114) +SALMON1 = rgb_str(255, 140, 105) +SALMON2 = rgb_str(238, 130, 98) +SALMON3 = rgb_str(205, 112, 84) +SALMON4 = rgb_str(139, 76, 57) +SANDYBROWN = rgb_str(244, 164, 96) +SAPGREEN = rgb_str(48, 128, 20) +SEAGREEN1 = rgb_str(84, 255, 159) +SEAGREEN2 = rgb_str(78, 238, 148) +SEAGREEN3 = rgb_str(67, 205, 128) +SEAGREEN4 = rgb_str(46, 139, 87) +SEASHELL1 = rgb_str(255, 245, 238) +SEASHELL2 = rgb_str(238, 229, 222) +SEASHELL3 = rgb_str(205, 197, 191) +SEASHELL4 = rgb_str(139, 134, 130) +SEPIA = rgb_str(94, 38, 18) +SGIBEET = rgb_str(142, 56, 142) +SGIBRIGHTGRAY = rgb_str(197, 193, 170) +SGICHARTREUSE = rgb_str(113, 198, 113) +SGIDARKGRAY = rgb_str(85, 85, 85) +SGIGRAY12 = rgb_str(30, 30, 30) +SGIGRAY16 = rgb_str(40, 40, 40) +SGIGRAY32 = rgb_str(81, 81, 81) +SGIGRAY36 = rgb_str(91, 91, 91) +SGIGRAY52 = rgb_str(132, 132, 132) +SGIGRAY56 = rgb_str(142, 142, 142) +SGIGRAY72 = rgb_str(183, 183, 183) +SGIGRAY76 = rgb_str(193, 193, 193) +SGIGRAY92 = rgb_str(234, 234, 234) +SGIGRAY96 = rgb_str(244, 244, 244) +SGILIGHTBLUE = rgb_str(125, 158, 192) +SGILIGHTGRAY = rgb_str(170, 170, 170) +SGIOLIVEDRAB = rgb_str(142, 142, 56) +SGISALMON = rgb_str(198, 113, 113) +SGISLATEBLUE = rgb_str(113, 113, 198) +SGITEAL = rgb_str(56, 142, 142) +SIENNA = rgb_str(160, 82, 45) +SIENNA1 = rgb_str(255, 130, 71) +SIENNA2 = rgb_str(238, 121, 66) +SIENNA3 = rgb_str(205, 104, 57) +SIENNA4 = rgb_str(139, 71, 38) +SILVER = rgb_str(192, 192, 192) +SKYBLUE = rgb_str(135, 206, 235) +SKYBLUE1 = rgb_str(135, 206, 255) +SKYBLUE2 = rgb_str(126, 192, 238) +SKYBLUE3 = rgb_str(108, 166, 205) +SKYBLUE4 = rgb_str(74, 112, 139) +SLATEBLUE = rgb_str(106, 90, 205) +SLATEBLUE1 = rgb_str(131, 111, 255) +SLATEBLUE2 = rgb_str(122, 103, 238) +SLATEBLUE3 = rgb_str(105, 89, 205) +SLATEBLUE4 = rgb_str(71, 60, 139) +SLATEGRAY = rgb_str(112, 128, 144) +SLATEGRAY1 = rgb_str(198, 226, 255) +SLATEGRAY2 = rgb_str(185, 211, 238) +SLATEGRAY3 = rgb_str(159, 182, 205) +SLATEGRAY4 = rgb_str(108, 123, 139) +SNOW1 = rgb_str(255, 250, 250) +SNOW2 = rgb_str(238, 233, 233) +SNOW3 = rgb_str(205, 201, 201) +SNOW4 = rgb_str(139, 137, 137) +SPRINGGREEN = rgb_str(0, 255, 127) +SPRINGGREEN1 = rgb_str(0, 238, 118) +SPRINGGREEN2 = rgb_str(0, 205, 102) +SPRINGGREEN3 = rgb_str(0, 139, 69) +STEELBLUE = rgb_str(70, 130, 180) +STEELBLUE1 = rgb_str(99, 184, 255) +STEELBLUE2 = rgb_str(92, 172, 238) +STEELBLUE3 = rgb_str(79, 148, 205) +STEELBLUE4 = rgb_str(54, 100, 139) +TAN = rgb_str(210, 180, 140) +TAN1 = rgb_str(255, 165, 79) +TAN2 = rgb_str(238, 154, 73) +TAN3 = rgb_str(205, 133, 63) +TAN4 = rgb_str(139, 90, 43) +TEAL = rgb_str(0, 128, 128) +THISTLE = rgb_str(216, 191, 216) +THISTLE1 = rgb_str(255, 225, 255) +THISTLE2 = rgb_str(238, 210, 238) +THISTLE3 = rgb_str(205, 181, 205) +THISTLE4 = rgb_str(139, 123, 139) +TOMATO1 = rgb_str(255, 99, 71) +TOMATO2 = rgb_str(238, 92, 66) +TOMATO3 = rgb_str(205, 79, 57) +TOMATO4 = rgb_str(139, 54, 38) +TURQUOISE = rgb_str(64, 224, 208) +TURQUOISE1 = rgb_str(0, 245, 255) +TURQUOISE2 = rgb_str(0, 229, 238) +TURQUOISE3 = rgb_str(0, 197, 205) +TURQUOISE4 = rgb_str(0, 134, 139) +TURQUOISEBLUE = rgb_str(0, 199, 140) +VIOLET = rgb_str(238, 130, 238) +VIOLETRED = rgb_str(208, 32, 144) +VIOLETRED1 = rgb_str(255, 62, 150) +VIOLETRED2 = rgb_str(238, 58, 140) +VIOLETRED3 = rgb_str(205, 50, 120) +VIOLETRED4 = rgb_str(139, 34, 82) +WARMGREY = rgb_str(128, 128, 105) +WHEAT = rgb_str(245, 222, 179) +WHEAT1 = rgb_str(255, 231, 186) +WHEAT2 = rgb_str(238, 216, 174) +WHEAT3 = rgb_str(205, 186, 150) +WHEAT4 = rgb_str(139, 126, 102) +WHITE = rgb_str(255, 255, 255) +WHITESMOKE = rgb_str(245, 245, 245) +WHITESMOKE = rgb_str(245, 245, 245) +YELLOW1 = rgb_str(255, 255, 0) +YELLOW2 = rgb_str(238, 238, 0) +YELLOW3 = rgb_str(205, 205, 0) +YELLOW4 = rgb_str(139, 139, 0) + +colors['aliceblue'] = ALICEBLUE +colors['antiquewhite'] = ANTIQUEWHITE +colors['antiquewhite1'] = ANTIQUEWHITE1 +colors['antiquewhite2'] = ANTIQUEWHITE2 +colors['antiquewhite3'] = ANTIQUEWHITE3 +colors['antiquewhite4'] = ANTIQUEWHITE4 +colors['aqua'] = AQUA +colors['aquamarine1'] = AQUAMARINE1 +colors['aquamarine2'] = AQUAMARINE2 +colors['aquamarine3'] = AQUAMARINE3 +colors['aquamarine4'] = AQUAMARINE4 +colors['azure1'] = AZURE1 +colors['azure2'] = AZURE2 +colors['azure3'] = AZURE3 +colors['azure4'] = AZURE4 +colors['banana'] = BANANA +colors['beige'] = BEIGE +colors['bisque1'] = BISQUE1 +colors['bisque2'] = BISQUE2 +colors['bisque3'] = BISQUE3 +colors['bisque4'] = BISQUE4 +colors['black'] = BLACK +colors['blanchedalmond'] = BLANCHEDALMOND +colors['blue'] = BLUE +colors['blue2'] = BLUE2 +colors['blue3'] = BLUE3 +colors['blue4'] = BLUE4 +colors['blueviolet'] = BLUEVIOLET +colors['brick'] = BRICK +colors['brown'] = BROWN +colors['brown1'] = BROWN1 +colors['brown2'] = BROWN2 +colors['brown3'] = BROWN3 +colors['brown4'] = BROWN4 +colors['burlywood'] = BURLYWOOD +colors['burlywood1'] = BURLYWOOD1 +colors['burlywood2'] = BURLYWOOD2 +colors['burlywood3'] = BURLYWOOD3 +colors['burlywood4'] = BURLYWOOD4 +colors['burntsienna'] = BURNTSIENNA +colors['burntumber'] = BURNTUMBER +colors['cadetblue'] = CADETBLUE +colors['cadetblue1'] = CADETBLUE1 +colors['cadetblue2'] = CADETBLUE2 +colors['cadetblue3'] = CADETBLUE3 +colors['cadetblue4'] = CADETBLUE4 +colors['cadmiumorange'] = CADMIUMORANGE +colors['cadmiumyellow'] = CADMIUMYELLOW +colors['carrot'] = CARROT +colors['chartreuse1'] = CHARTREUSE1 +colors['chartreuse2'] = CHARTREUSE2 +colors['chartreuse3'] = CHARTREUSE3 +colors['chartreuse4'] = CHARTREUSE4 +colors['chocolate'] = CHOCOLATE +colors['chocolate1'] = CHOCOLATE1 +colors['chocolate2'] = CHOCOLATE2 +colors['chocolate3'] = CHOCOLATE3 +colors['chocolate4'] = CHOCOLATE4 +colors['cobalt'] = COBALT +colors['cobaltgreen'] = COBALTGREEN +colors['coldgrey'] = COLDGREY +colors['coral'] = CORAL +colors['coral1'] = CORAL1 +colors['coral2'] = CORAL2 +colors['coral3'] = CORAL3 +colors['coral4'] = CORAL4 +colors['cornflowerblue'] = CORNFLOWERBLUE +colors['cornsilk1'] = CORNSILK1 +colors['cornsilk2'] = CORNSILK2 +colors['cornsilk3'] = CORNSILK3 +colors['cornsilk4'] = CORNSILK4 +colors['crimson'] = CRIMSON +colors['cyan2'] = CYAN2 +colors['cyan3'] = CYAN3 +colors['cyan4'] = CYAN4 +colors['darkgoldenrod'] = DARKGOLDENROD +colors['darkgoldenrod1'] = DARKGOLDENROD1 +colors['darkgoldenrod2'] = DARKGOLDENROD2 +colors['darkgoldenrod3'] = DARKGOLDENROD3 +colors['darkgoldenrod4'] = DARKGOLDENROD4 +colors['darkgray'] = DARKGRAY +colors['darkgreen'] = DARKGREEN +colors['darkkhaki'] = DARKKHAKI +colors['darkolivegreen'] = DARKOLIVEGREEN +colors['darkolivegreen1'] = DARKOLIVEGREEN1 +colors['darkolivegreen2'] = DARKOLIVEGREEN2 +colors['darkolivegreen3'] = DARKOLIVEGREEN3 +colors['darkolivegreen4'] = DARKOLIVEGREEN4 +colors['darkorange'] = DARKORANGE +colors['darkorange1'] = DARKORANGE1 +colors['darkorange2'] = DARKORANGE2 +colors['darkorange3'] = DARKORANGE3 +colors['darkorange4'] = DARKORANGE4 +colors['darkorchid'] = DARKORCHID +colors['darkorchid1'] = DARKORCHID1 +colors['darkorchid2'] = DARKORCHID2 +colors['darkorchid3'] = DARKORCHID3 +colors['darkorchid4'] = DARKORCHID4 +colors['darksalmon'] = DARKSALMON +colors['darkseagreen'] = DARKSEAGREEN +colors['darkseagreen1'] = DARKSEAGREEN1 +colors['darkseagreen2'] = DARKSEAGREEN2 +colors['darkseagreen3'] = DARKSEAGREEN3 +colors['darkseagreen4'] = DARKSEAGREEN4 +colors['darkslateblue'] = DARKSLATEBLUE +colors['darkslategray'] = DARKSLATEGRAY +colors['darkslategray1'] = DARKSLATEGRAY1 +colors['darkslategray2'] = DARKSLATEGRAY2 +colors['darkslategray3'] = DARKSLATEGRAY3 +colors['darkslategray4'] = DARKSLATEGRAY4 +colors['darkturquoise'] = DARKTURQUOISE +colors['darkviolet'] = DARKVIOLET +colors['deeppink1'] = DEEPPINK1 +colors['deeppink2'] = DEEPPINK2 +colors['deeppink3'] = DEEPPINK3 +colors['deeppink4'] = DEEPPINK4 +colors['deepskyblue1'] = DEEPSKYBLUE1 +colors['deepskyblue2'] = DEEPSKYBLUE2 +colors['deepskyblue3'] = DEEPSKYBLUE3 +colors['deepskyblue4'] = DEEPSKYBLUE4 +colors['dimgray'] = DIMGRAY +colors['dimgray'] = DIMGRAY +colors['dodgerblue1'] = DODGERBLUE1 +colors['dodgerblue2'] = DODGERBLUE2 +colors['dodgerblue3'] = DODGERBLUE3 +colors['dodgerblue4'] = DODGERBLUE4 +colors['eggshell'] = EGGSHELL +colors['emeraldgreen'] = EMERALDGREEN +colors['firebrick'] = FIREBRICK +colors['firebrick1'] = FIREBRICK1 +colors['firebrick2'] = FIREBRICK2 +colors['firebrick3'] = FIREBRICK3 +colors['firebrick4'] = FIREBRICK4 +colors['flesh'] = FLESH +colors['floralwhite'] = FLORALWHITE +colors['forestgreen'] = FORESTGREEN +colors['gainsboro'] = GAINSBORO +colors['ghostwhite'] = GHOSTWHITE +colors['gold1'] = GOLD1 +colors['gold2'] = GOLD2 +colors['gold3'] = GOLD3 +colors['gold4'] = GOLD4 +colors['goldenrod'] = GOLDENROD +colors['goldenrod1'] = GOLDENROD1 +colors['goldenrod2'] = GOLDENROD2 +colors['goldenrod3'] = GOLDENROD3 +colors['goldenrod4'] = GOLDENROD4 +colors['gray'] = GRAY +colors['gray1'] = GRAY1 +colors['gray10'] = GRAY10 +colors['gray11'] = GRAY11 +colors['gray12'] = GRAY12 +colors['gray13'] = GRAY13 +colors['gray14'] = GRAY14 +colors['gray15'] = GRAY15 +colors['gray16'] = GRAY16 +colors['gray17'] = GRAY17 +colors['gray18'] = GRAY18 +colors['gray19'] = GRAY19 +colors['gray2'] = GRAY2 +colors['gray20'] = GRAY20 +colors['gray21'] = GRAY21 +colors['gray22'] = GRAY22 +colors['gray23'] = GRAY23 +colors['gray24'] = GRAY24 +colors['gray25'] = GRAY25 +colors['gray26'] = GRAY26 +colors['gray27'] = GRAY27 +colors['gray28'] = GRAY28 +colors['gray29'] = GRAY29 +colors['gray3'] = GRAY3 +colors['gray30'] = GRAY30 +colors['gray31'] = GRAY31 +colors['gray32'] = GRAY32 +colors['gray33'] = GRAY33 +colors['gray34'] = GRAY34 +colors['gray35'] = GRAY35 +colors['gray36'] = GRAY36 +colors['gray37'] = GRAY37 +colors['gray38'] = GRAY38 +colors['gray39'] = GRAY39 +colors['gray4'] = GRAY4 +colors['gray40'] = GRAY40 +colors['gray42'] = GRAY42 +colors['gray43'] = GRAY43 +colors['gray44'] = GRAY44 +colors['gray45'] = GRAY45 +colors['gray46'] = GRAY46 +colors['gray47'] = GRAY47 +colors['gray48'] = GRAY48 +colors['gray49'] = GRAY49 +colors['gray5'] = GRAY5 +colors['gray50'] = GRAY50 +colors['gray51'] = GRAY51 +colors['gray52'] = GRAY52 +colors['gray53'] = GRAY53 +colors['gray54'] = GRAY54 +colors['gray55'] = GRAY55 +colors['gray56'] = GRAY56 +colors['gray57'] = GRAY57 +colors['gray58'] = GRAY58 +colors['gray59'] = GRAY59 +colors['gray6'] = GRAY6 +colors['gray60'] = GRAY60 +colors['gray61'] = GRAY61 +colors['gray62'] = GRAY62 +colors['gray63'] = GRAY63 +colors['gray64'] = GRAY64 +colors['gray65'] = GRAY65 +colors['gray66'] = GRAY66 +colors['gray67'] = GRAY67 +colors['gray68'] = GRAY68 +colors['gray69'] = GRAY69 +colors['gray7'] = GRAY7 +colors['gray70'] = GRAY70 +colors['gray71'] = GRAY71 +colors['gray72'] = GRAY72 +colors['gray73'] = GRAY73 +colors['gray74'] = GRAY74 +colors['gray75'] = GRAY75 +colors['gray76'] = GRAY76 +colors['gray77'] = GRAY77 +colors['gray78'] = GRAY78 +colors['gray79'] = GRAY79 +colors['gray8'] = GRAY8 +colors['gray80'] = GRAY80 +colors['gray81'] = GRAY81 +colors['gray82'] = GRAY82 +colors['gray83'] = GRAY83 +colors['gray84'] = GRAY84 +colors['gray85'] = GRAY85 +colors['gray86'] = GRAY86 +colors['gray87'] = GRAY87 +colors['gray88'] = GRAY88 +colors['gray89'] = GRAY89 +colors['gray9'] = GRAY9 +colors['gray90'] = GRAY90 +colors['gray91'] = GRAY91 +colors['gray92'] = GRAY92 +colors['gray93'] = GRAY93 +colors['gray94'] = GRAY94 +colors['gray95'] = GRAY95 +colors['gray97'] = GRAY97 +colors['gray98'] = GRAY98 +colors['gray99'] = GRAY99 +colors['green'] = GREEN +colors['green1'] = GREEN1 +colors['green2'] = GREEN2 +colors['green3'] = GREEN3 +colors['green4'] = GREEN4 +colors['greenyellow'] = GREENYELLOW +colors['honeydew1'] = HONEYDEW1 +colors['honeydew2'] = HONEYDEW2 +colors['honeydew3'] = HONEYDEW3 +colors['honeydew4'] = HONEYDEW4 +colors['hotpink'] = HOTPINK +colors['hotpink1'] = HOTPINK1 +colors['hotpink2'] = HOTPINK2 +colors['hotpink3'] = HOTPINK3 +colors['hotpink4'] = HOTPINK4 +colors['indianred'] = INDIANRED +colors['indianred'] = INDIANRED +colors['indianred1'] = INDIANRED1 +colors['indianred2'] = INDIANRED2 +colors['indianred3'] = INDIANRED3 +colors['indianred4'] = INDIANRED4 +colors['indigo'] = INDIGO +colors['ivory1'] = IVORY1 +colors['ivory2'] = IVORY2 +colors['ivory3'] = IVORY3 +colors['ivory4'] = IVORY4 +colors['ivoryblack'] = IVORYBLACK +colors['khaki'] = KHAKI +colors['khaki1'] = KHAKI1 +colors['khaki2'] = KHAKI2 +colors['khaki3'] = KHAKI3 +colors['khaki4'] = KHAKI4 +colors['lavender'] = LAVENDER +colors['lavenderblush1'] = LAVENDERBLUSH1 +colors['lavenderblush2'] = LAVENDERBLUSH2 +colors['lavenderblush3'] = LAVENDERBLUSH3 +colors['lavenderblush4'] = LAVENDERBLUSH4 +colors['lawngreen'] = LAWNGREEN +colors['lemonchiffon1'] = LEMONCHIFFON1 +colors['lemonchiffon2'] = LEMONCHIFFON2 +colors['lemonchiffon3'] = LEMONCHIFFON3 +colors['lemonchiffon4'] = LEMONCHIFFON4 +colors['lightblue'] = LIGHTBLUE +colors['lightblue1'] = LIGHTBLUE1 +colors['lightblue2'] = LIGHTBLUE2 +colors['lightblue3'] = LIGHTBLUE3 +colors['lightblue4'] = LIGHTBLUE4 +colors['lightcoral'] = LIGHTCORAL +colors['lightcyan1'] = LIGHTCYAN1 +colors['lightcyan2'] = LIGHTCYAN2 +colors['lightcyan3'] = LIGHTCYAN3 +colors['lightcyan4'] = LIGHTCYAN4 +colors['lightgoldenrod1'] = LIGHTGOLDENROD1 +colors['lightgoldenrod2'] = LIGHTGOLDENROD2 +colors['lightgoldenrod3'] = LIGHTGOLDENROD3 +colors['lightgoldenrod4'] = LIGHTGOLDENROD4 +colors['lightgoldenrodyellow'] = LIGHTGOLDENRODYELLOW +colors['lightgrey'] = LIGHTGREY +colors['lightpink'] = LIGHTPINK +colors['lightpink1'] = LIGHTPINK1 +colors['lightpink2'] = LIGHTPINK2 +colors['lightpink3'] = LIGHTPINK3 +colors['lightpink4'] = LIGHTPINK4 +colors['lightsalmon1'] = LIGHTSALMON1 +colors['lightsalmon2'] = LIGHTSALMON2 +colors['lightsalmon3'] = LIGHTSALMON3 +colors['lightsalmon4'] = LIGHTSALMON4 +colors['lightseagreen'] = LIGHTSEAGREEN +colors['lightskyblue'] = LIGHTSKYBLUE +colors['lightskyblue1'] = LIGHTSKYBLUE1 +colors['lightskyblue2'] = LIGHTSKYBLUE2 +colors['lightskyblue3'] = LIGHTSKYBLUE3 +colors['lightskyblue4'] = LIGHTSKYBLUE4 +colors['lightslateblue'] = LIGHTSLATEBLUE +colors['lightslategray'] = LIGHTSLATEGRAY +colors['lightsteelblue'] = LIGHTSTEELBLUE +colors['lightsteelblue1'] = LIGHTSTEELBLUE1 +colors['lightsteelblue2'] = LIGHTSTEELBLUE2 +colors['lightsteelblue3'] = LIGHTSTEELBLUE3 +colors['lightsteelblue4'] = LIGHTSTEELBLUE4 +colors['lightyellow1'] = LIGHTYELLOW1 +colors['lightyellow2'] = LIGHTYELLOW2 +colors['lightyellow3'] = LIGHTYELLOW3 +colors['lightyellow4'] = LIGHTYELLOW4 +colors['limegreen'] = LIMEGREEN +colors['linen'] = LINEN +colors['magenta'] = MAGENTA +colors['magenta2'] = MAGENTA2 +colors['magenta3'] = MAGENTA3 +colors['magenta4'] = MAGENTA4 +colors['manganeseblue'] = MANGANESEBLUE +colors['maroon'] = MAROON +colors['maroon1'] = MAROON1 +colors['maroon2'] = MAROON2 +colors['maroon3'] = MAROON3 +colors['maroon4'] = MAROON4 +colors['mediumorchid'] = MEDIUMORCHID +colors['mediumorchid1'] = MEDIUMORCHID1 +colors['mediumorchid2'] = MEDIUMORCHID2 +colors['mediumorchid3'] = MEDIUMORCHID3 +colors['mediumorchid4'] = MEDIUMORCHID4 +colors['mediumpurple'] = MEDIUMPURPLE +colors['mediumpurple1'] = MEDIUMPURPLE1 +colors['mediumpurple2'] = MEDIUMPURPLE2 +colors['mediumpurple3'] = MEDIUMPURPLE3 +colors['mediumpurple4'] = MEDIUMPURPLE4 +colors['mediumseagreen'] = MEDIUMSEAGREEN +colors['mediumslateblue'] = MEDIUMSLATEBLUE +colors['mediumspringgreen'] = MEDIUMSPRINGGREEN +colors['mediumturquoise'] = MEDIUMTURQUOISE +colors['mediumvioletred'] = MEDIUMVIOLETRED +colors['melon'] = MELON +colors['midnightblue'] = MIDNIGHTBLUE +colors['mint'] = MINT +colors['mintcream'] = MINTCREAM +colors['mistyrose1'] = MISTYROSE1 +colors['mistyrose2'] = MISTYROSE2 +colors['mistyrose3'] = MISTYROSE3 +colors['mistyrose4'] = MISTYROSE4 +colors['moccasin'] = MOCCASIN +colors['navajowhite1'] = NAVAJOWHITE1 +colors['navajowhite2'] = NAVAJOWHITE2 +colors['navajowhite3'] = NAVAJOWHITE3 +colors['navajowhite4'] = NAVAJOWHITE4 +colors['navy'] = NAVY +colors['oldlace'] = OLDLACE +colors['olive'] = OLIVE +colors['olivedrab'] = OLIVEDRAB +colors['olivedrab1'] = OLIVEDRAB1 +colors['olivedrab2'] = OLIVEDRAB2 +colors['olivedrab3'] = OLIVEDRAB3 +colors['olivedrab4'] = OLIVEDRAB4 +colors['orange'] = ORANGE +colors['orange1'] = ORANGE1 +colors['orange2'] = ORANGE2 +colors['orange3'] = ORANGE3 +colors['orange4'] = ORANGE4 +colors['orangered1'] = ORANGERED1 +colors['orangered2'] = ORANGERED2 +colors['orangered3'] = ORANGERED3 +colors['orangered4'] = ORANGERED4 +colors['orchid'] = ORCHID +colors['orchid1'] = ORCHID1 +colors['orchid2'] = ORCHID2 +colors['orchid3'] = ORCHID3 +colors['orchid4'] = ORCHID4 +colors['palegoldenrod'] = PALEGOLDENROD +colors['palegreen'] = PALEGREEN +colors['palegreen1'] = PALEGREEN1 +colors['palegreen2'] = PALEGREEN2 +colors['palegreen3'] = PALEGREEN3 +colors['palegreen4'] = PALEGREEN4 +colors['paleturquoise1'] = PALETURQUOISE1 +colors['paleturquoise2'] = PALETURQUOISE2 +colors['paleturquoise3'] = PALETURQUOISE3 +colors['paleturquoise4'] = PALETURQUOISE4 +colors['palevioletred'] = PALEVIOLETRED +colors['palevioletred1'] = PALEVIOLETRED1 +colors['palevioletred2'] = PALEVIOLETRED2 +colors['palevioletred3'] = PALEVIOLETRED3 +colors['palevioletred4'] = PALEVIOLETRED4 +colors['papayawhip'] = PAPAYAWHIP +colors['peachpuff1'] = PEACHPUFF1 +colors['peachpuff2'] = PEACHPUFF2 +colors['peachpuff3'] = PEACHPUFF3 +colors['peachpuff4'] = PEACHPUFF4 +colors['peacock'] = PEACOCK +colors['pink'] = PINK +colors['pink1'] = PINK1 +colors['pink2'] = PINK2 +colors['pink3'] = PINK3 +colors['pink4'] = PINK4 +colors['plum'] = PLUM +colors['plum1'] = PLUM1 +colors['plum2'] = PLUM2 +colors['plum3'] = PLUM3 +colors['plum4'] = PLUM4 +colors['powderblue'] = POWDERBLUE +colors['purple'] = PURPLE +colors['purple1'] = PURPLE1 +colors['purple2'] = PURPLE2 +colors['purple3'] = PURPLE3 +colors['purple4'] = PURPLE4 +colors['raspberry'] = RASPBERRY +colors['rawsienna'] = RAWSIENNA +colors['red1'] = RED1 +colors['red2'] = RED2 +colors['red3'] = RED3 +colors['red4'] = RED4 +colors['rosybrown'] = ROSYBROWN +colors['rosybrown1'] = ROSYBROWN1 +colors['rosybrown2'] = ROSYBROWN2 +colors['rosybrown3'] = ROSYBROWN3 +colors['rosybrown4'] = ROSYBROWN4 +colors['royalblue'] = ROYALBLUE +colors['royalblue1'] = ROYALBLUE1 +colors['royalblue2'] = ROYALBLUE2 +colors['royalblue3'] = ROYALBLUE3 +colors['royalblue4'] = ROYALBLUE4 +colors['salmon'] = SALMON +colors['salmon1'] = SALMON1 +colors['salmon2'] = SALMON2 +colors['salmon3'] = SALMON3 +colors['salmon4'] = SALMON4 +colors['sandybrown'] = SANDYBROWN +colors['sapgreen'] = SAPGREEN +colors['seagreen1'] = SEAGREEN1 +colors['seagreen2'] = SEAGREEN2 +colors['seagreen3'] = SEAGREEN3 +colors['seagreen4'] = SEAGREEN4 +colors['seashell1'] = SEASHELL1 +colors['seashell2'] = SEASHELL2 +colors['seashell3'] = SEASHELL3 +colors['seashell4'] = SEASHELL4 +colors['sepia'] = SEPIA +colors['sgibeet'] = SGIBEET +colors['sgibrightgray'] = SGIBRIGHTGRAY +colors['sgichartreuse'] = SGICHARTREUSE +colors['sgidarkgray'] = SGIDARKGRAY +colors['sgigray12'] = SGIGRAY12 +colors['sgigray16'] = SGIGRAY16 +colors['sgigray32'] = SGIGRAY32 +colors['sgigray36'] = SGIGRAY36 +colors['sgigray52'] = SGIGRAY52 +colors['sgigray56'] = SGIGRAY56 +colors['sgigray72'] = SGIGRAY72 +colors['sgigray76'] = SGIGRAY76 +colors['sgigray92'] = SGIGRAY92 +colors['sgigray96'] = SGIGRAY96 +colors['sgilightblue'] = SGILIGHTBLUE +colors['sgilightgray'] = SGILIGHTGRAY +colors['sgiolivedrab'] = SGIOLIVEDRAB +colors['sgisalmon'] = SGISALMON +colors['sgislateblue'] = SGISLATEBLUE +colors['sgiteal'] = SGITEAL +colors['sienna'] = SIENNA +colors['sienna1'] = SIENNA1 +colors['sienna2'] = SIENNA2 +colors['sienna3'] = SIENNA3 +colors['sienna4'] = SIENNA4 +colors['silver'] = SILVER +colors['skyblue'] = SKYBLUE +colors['skyblue1'] = SKYBLUE1 +colors['skyblue2'] = SKYBLUE2 +colors['skyblue3'] = SKYBLUE3 +colors['skyblue4'] = SKYBLUE4 +colors['slateblue'] = SLATEBLUE +colors['slateblue1'] = SLATEBLUE1 +colors['slateblue2'] = SLATEBLUE2 +colors['slateblue3'] = SLATEBLUE3 +colors['slateblue4'] = SLATEBLUE4 +colors['slategray'] = SLATEGRAY +colors['slategray1'] = SLATEGRAY1 +colors['slategray2'] = SLATEGRAY2 +colors['slategray3'] = SLATEGRAY3 +colors['slategray4'] = SLATEGRAY4 +colors['snow1'] = SNOW1 +colors['snow2'] = SNOW2 +colors['snow3'] = SNOW3 +colors['snow4'] = SNOW4 +colors['springgreen'] = SPRINGGREEN +colors['springgreen1'] = SPRINGGREEN1 +colors['springgreen2'] = SPRINGGREEN2 +colors['springgreen3'] = SPRINGGREEN3 +colors['steelblue'] = STEELBLUE +colors['steelblue1'] = STEELBLUE1 +colors['steelblue2'] = STEELBLUE2 +colors['steelblue3'] = STEELBLUE3 +colors['steelblue4'] = STEELBLUE4 +colors['tan'] = TAN +colors['tan1'] = TAN1 +colors['tan2'] = TAN2 +colors['tan3'] = TAN3 +colors['tan4'] = TAN4 +colors['teal'] = TEAL +colors['thistle'] = THISTLE +colors['thistle1'] = THISTLE1 +colors['thistle2'] = THISTLE2 +colors['thistle3'] = THISTLE3 +colors['thistle4'] = THISTLE4 +colors['tomato1'] = TOMATO1 +colors['tomato2'] = TOMATO2 +colors['tomato3'] = TOMATO3 +colors['tomato4'] = TOMATO4 +colors['turquoise'] = TURQUOISE +colors['turquoise1'] = TURQUOISE1 +colors['turquoise2'] = TURQUOISE2 +colors['turquoise3'] = TURQUOISE3 +colors['turquoise4'] = TURQUOISE4 +colors['turquoiseblue'] = TURQUOISEBLUE +colors['violet'] = VIOLET +colors['violetred'] = VIOLETRED +colors['violetred1'] = VIOLETRED1 +colors['violetred2'] = VIOLETRED2 +colors['violetred3'] = VIOLETRED3 +colors['violetred4'] = VIOLETRED4 +colors['warmgrey'] = WARMGREY +colors['wheat'] = WHEAT +colors['wheat1'] = WHEAT1 +colors['wheat2'] = WHEAT2 +colors['wheat3'] = WHEAT3 +colors['wheat4'] = WHEAT4 +colors['white'] = WHITE +colors['whitesmoke'] = WHITESMOKE +colors['whitesmoke'] = WHITESMOKE +colors['yellow1'] = YELLOW1 +colors['yellow2'] = YELLOW2 +colors['yellow3'] = YELLOW3 +colors['yellow4'] = YELLOW4