diff --git a/_plotly_utils/basevalidators.py b/_plotly_utils/basevalidators.py index b79627936d7..b55d7c99016 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()) @@ -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/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_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