nonnegative
, tozero
, and normal
Rangemode
-
-The axis auto-range calculation logic can be configured using the `rangemode` axis parameter.
-
-If `rangemode` is `"normal"` (the default), the range is computed based on the min and max values of the input data. If `"tozero"`, the range will always include zero. If `"nonnegative"`, the range will not extend below zero, regardless of the input data.
-
-Here is an example of configuring a faceted scatter plot created using Plotly Express to always include zero for both the x and y axes.
-
-```python
-import plotly.express as px
-df = px.data.iris()
-
-fig = px.scatter(df, x="sepal_width", y="sepal_length", facet_col="species")
-fig.update_xaxes(rangemode="tozero")
-fig.update_yaxes(rangemode="tozero")
-
-fig.show()
-```
-
#### Setting the domain of the axis
```python
@@ -804,6 +819,80 @@ fig.update_xaxes(matches='x')
fig.show()
```
+#### nonnegative
, tozero
, and normal
Rangemode
+
+When you don't specify a range, autorange is used. It's also used for bounds set to `None` when providing a `range`.
+
+The axis auto-range calculation logic can be configured using the `rangemode` axis parameter.
+
+If `rangemode` is `"normal"` (the default), the range is computed based on the min and max values of the input data. If `"tozero"`, the range will always include zero. If `"nonnegative"`, the range will not extend below zero, regardless of the input data.
+
+Here is an example of configuring a faceted scatter plot created using Plotly Express to always include zero for both the x and y axes.
+
+```python
+import plotly.express as px
+df = px.data.iris()
+
+fig = px.scatter(df, x="sepal_width", y="sepal_length", facet_col="species")
+fig.update_xaxes(rangemode="tozero")
+fig.update_yaxes(rangemode="tozero")
+
+fig.show()
+```
+
+#### Autorange Options
+
+*New in 5.17*
+
+You can further configure how autorange is applied using `autorangeoptions` to specify maximum or minimum values or values to include.
+
+##### Specifying Minimum and Maximum Allowed Values
+
+Using `autorangeoptions.maxallowed`, you can specify an exact value to use as the autorange maximum. With `autorangeoptions.minallowed`, you can specify an exact value to use as the autorange minimum.
+
+```python
+import plotly.express as px
+
+df = px.data.iris()
+
+fig = px.scatter(df, x="sepal_width", y="sepal_length")
+fig.update_yaxes(autorangeoptions=dict(minallowed=3))
+fig.update_xaxes(autorangeoptions=dict(maxallowed=5))
+
+fig.show()
+```
+
+##### Clip Minimum and Maximum
+
+You can also clip an axis range at a specific maximum or minimum value with `autorangeoptions.clipmax` and `autorangeoptions.clipmin`.
+
+```python
+import plotly.express as px
+
+df = px.data.iris()
+
+fig = px.scatter(df, x="sepal_width", y="sepal_length")
+fig.update_yaxes(autorangeoptions=dict(clipmin=5))
+fig.update_xaxes(autorangeoptions=dict(clipmax=4))
+
+fig.show()
+```
+
+##### Specify Values to be Included
+
+Use `autorangeoptions.include` to specify a value that should always be included within the calculated autorange. In this example, we specify that for the autorange calculated on the x-axis, 5 should be included.
+
+```python
+import plotly.express as px
+
+df = px.data.iris()
+
+fig = px.scatter(df, x="sepal_width", y="sepal_length")
+fig.update_xaxes(autorangeoptions=dict(include=5))
+
+fig.show()
+```
+
#### Reference
See https://plotly.com/python/reference/layout/xaxis/ and https://plotly.com/python/reference/layout/yaxis/ for more information and chart attribute options!
diff --git a/doc/python/getting-started.md b/doc/python/getting-started.md
index bb4480687d8..3cdfee88428 100644
--- a/doc/python/getting-started.md
+++ b/doc/python/getting-started.md
@@ -58,13 +58,13 @@ We also encourage you to join the [Plotly Community Forum](http://community.plot
`plotly` may be installed using `pip`:
```
-$ pip install plotly==5.16.1
+$ pip install plotly==5.17.0
```
or `conda`:
```
-$ conda install -c plotly plotly=5.16.1
+$ conda install -c plotly plotly=5.17.0
```
This package contains everything you need to write figures to standalone HTML files.
@@ -152,7 +152,7 @@ The instructions above apply to JupyterLab 3.x. **For JupyterLab 2 or earlier**,
```
# JupyterLab 2.x renderer support
-jupyter labextension install jupyterlab-plotly@5.16.1 @jupyter-widgets/jupyterlab-manager
+jupyter labextension install jupyterlab-plotly@5.17.0 @jupyter-widgets/jupyterlab-manager
```
Please check out our [Troubleshooting guide](/python/troubleshooting/) if you run into any problems with JupyterLab, particularly if you are using multiple python environments inside Jupyter.
diff --git a/doc/python/imshow.md b/doc/python/imshow.md
index 1ca97b4b5f9..bec3b83de93 100644
--- a/doc/python/imshow.md
+++ b/doc/python/imshow.md
@@ -40,7 +40,7 @@ This tutorial shows how to display and explore image data. If you would like
instead a logo or static image, use `go.layout.Image` as explained
[here](/python/images).
-### Displaying RBG image data with px.imshow
+### Displaying RGB image data with px.imshow
`px.imshow` displays multichannel (RGB) or single-channel ("grayscale") image data.
diff --git a/doc/requirements.txt b/doc/requirements.txt
index 9bdd6cb2451..8e3c0b0b493 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -1,4 +1,4 @@
-plotly==5.16.1
+plotly==5.17.0
jupytext==1.1.1
ipywidgets==7.7.2
jupyter-client<7
diff --git a/packages/javascript/jupyterlab-plotly/package-lock.json b/packages/javascript/jupyterlab-plotly/package-lock.json
index 7eced61d027..3c9bdd8d807 100644
--- a/packages/javascript/jupyterlab-plotly/package-lock.json
+++ b/packages/javascript/jupyterlab-plotly/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "jupyterlab-plotly",
- "version": "5.16.1",
+ "version": "5.17.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "jupyterlab-plotly",
- "version": "5.16.1",
+ "version": "5.17.0",
"license": "MIT",
"dependencies": {
"@jupyter-widgets/base": ">=2.0.0 <7.0.0",
@@ -14,7 +14,7 @@
"@lumino/messaging": "^1.2.3",
"@lumino/widgets": "^1.8.1",
"lodash": "^4.17.4",
- "plotly.js": "^2.25.2"
+ "plotly.js": "^2.26.0"
},
"devDependencies": {
"@jupyterlab/builder": "^3.0.0",
@@ -4344,9 +4344,9 @@
}
},
"node_modules/plotly.js": {
- "version": "2.25.2",
- "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.25.2.tgz",
- "integrity": "sha512-Pf6dPYGl21W7A3FTgLQ52fpgvrqGhCPDT3+612bxwg4QXlvxhnoFwvuhT1BRW/l2nbYGpRoUH79K54yf2vCMVQ==",
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.26.0.tgz",
+ "integrity": "sha512-FRIi4Tek9SDZRv2y0ONuPjojkAnUFC7mIOgBeBw2qtBHYoPWGbpUqz4nWK8BoRhFYUg53lsrgGQWzntSeeX8IQ==",
"dependencies": {
"@plotly/d3": "3.8.1",
"@plotly/d3-sankey": "0.7.2",
@@ -9859,9 +9859,9 @@
}
},
"plotly.js": {
- "version": "2.25.2",
- "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.25.2.tgz",
- "integrity": "sha512-Pf6dPYGl21W7A3FTgLQ52fpgvrqGhCPDT3+612bxwg4QXlvxhnoFwvuhT1BRW/l2nbYGpRoUH79K54yf2vCMVQ==",
+ "version": "2.26.0",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.26.0.tgz",
+ "integrity": "sha512-FRIi4Tek9SDZRv2y0ONuPjojkAnUFC7mIOgBeBw2qtBHYoPWGbpUqz4nWK8BoRhFYUg53lsrgGQWzntSeeX8IQ==",
"requires": {
"@plotly/d3": "3.8.1",
"@plotly/d3-sankey": "0.7.2",
diff --git a/packages/javascript/jupyterlab-plotly/package.json b/packages/javascript/jupyterlab-plotly/package.json
index c4b42fe7117..d2481fce594 100644
--- a/packages/javascript/jupyterlab-plotly/package.json
+++ b/packages/javascript/jupyterlab-plotly/package.json
@@ -1,6 +1,6 @@
{
"name": "jupyterlab-plotly",
- "version": "5.16.1",
+ "version": "5.17.0",
"description": "The plotly Jupyter extension",
"author": "The plotly.py team",
"license": "MIT",
@@ -65,7 +65,7 @@
"@lumino/messaging": "^1.2.3",
"@lumino/widgets": "^1.8.1",
"lodash": "^4.17.4",
- "plotly.js": "^2.25.2"
+ "plotly.js": "^2.26.0"
},
"jupyterlab": {
"extension": "lib/jupyterlab-plugin",
diff --git a/packages/python/plotly/codegen/resources/plot-schema.json b/packages/python/plotly/codegen/resources/plot-schema.json
index 571ce2f7460..60fbf07937d 100644
--- a/packages/python/plotly/codegen/resources/plot-schema.json
+++ b/packages/python/plotly/codegen/resources/plot-schema.json
@@ -2923,13 +2923,15 @@
},
"role": "object",
"side": {
- "description": "Determines the location of legend's title with respect to the legend items. Defaulted to *top* with `orientation` is *h*. Defaulted to *left* with `orientation` is *v*. The *top left* options could be used to expand legend area in both x and y sides.",
+ "description": "Determines the location of legend's title with respect to the legend items. Defaulted to *top* with `orientation` is *h*. Defaulted to *left* with `orientation` is *v*. The *top left* options could be used to expand top center and top right are for horizontal alignment legend area in both x and y sides.",
"editType": "legend",
"valType": "enumerated",
"values": [
"top",
"left",
- "top left"
+ "top left",
+ "top center",
+ "top right"
]
},
"text": {
@@ -4407,7 +4409,7 @@
"valType": "angle"
},
"autorange": {
- "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
+ "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
"dflt": true,
"editType": "plot",
"impliedEdits": {},
@@ -4415,9 +4417,53 @@
"values": [
true,
false,
- "reversed"
+ "reversed",
+ "min reversed",
+ "max reversed",
+ "min",
+ "max"
]
},
+ "autorangeoptions": {
+ "clipmax": {
+ "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "clipmin": {
+ "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "editType": "plot",
+ "include": {
+ "arrayOk": true,
+ "description": "Ensure this value is included in autorange.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "includesrc": {
+ "description": "Sets the source reference on Chart Studio Cloud for `include`.",
+ "editType": "none",
+ "valType": "string"
+ },
+ "maxallowed": {
+ "description": "Use this value exactly as autorange maximum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Use this value exactly as autorange minimum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "role": "object"
+ },
"autotypenumbers": {
"description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
"dflt": "convert types",
@@ -4577,6 +4623,22 @@
"min": 0,
"valType": "number"
},
+ "maxallowed": {
+ "description": "Determines the maximum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Determines the minimum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
"minexponent": {
"description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
"dflt": 3,
@@ -4593,7 +4655,7 @@
},
"range": {
"anim": true,
- "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
+ "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
"editType": "plot",
"impliedEdits": {
"autorange": false
@@ -5518,7 +5580,7 @@
}
},
"autorange": {
- "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
+ "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
"dflt": true,
"editType": "plot",
"impliedEdits": {},
@@ -5526,9 +5588,53 @@
"values": [
true,
false,
- "reversed"
+ "reversed",
+ "min reversed",
+ "max reversed",
+ "min",
+ "max"
]
},
+ "autorangeoptions": {
+ "clipmax": {
+ "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "clipmin": {
+ "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "editType": "plot",
+ "include": {
+ "arrayOk": true,
+ "description": "Ensure this value is included in autorange.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "includesrc": {
+ "description": "Sets the source reference on Chart Studio Cloud for `include`.",
+ "editType": "none",
+ "valType": "string"
+ },
+ "maxallowed": {
+ "description": "Use this value exactly as autorange maximum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Use this value exactly as autorange minimum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "role": "object"
+ },
"autotypenumbers": {
"description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
"dflt": "convert types",
@@ -5670,6 +5776,22 @@
"min": 0,
"valType": "number"
},
+ "maxallowed": {
+ "description": "Determines the maximum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Determines the minimum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
"minexponent": {
"description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
"dflt": 3,
@@ -5699,7 +5821,7 @@
},
"range": {
"anim": false,
- "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
+ "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
"editType": "plot",
"impliedEdits": {
"autorange": false
@@ -6086,7 +6208,7 @@
}
},
"autorange": {
- "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
+ "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
"dflt": true,
"editType": "plot",
"impliedEdits": {},
@@ -6094,9 +6216,53 @@
"values": [
true,
false,
- "reversed"
+ "reversed",
+ "min reversed",
+ "max reversed",
+ "min",
+ "max"
]
},
+ "autorangeoptions": {
+ "clipmax": {
+ "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "clipmin": {
+ "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "editType": "plot",
+ "include": {
+ "arrayOk": true,
+ "description": "Ensure this value is included in autorange.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "includesrc": {
+ "description": "Sets the source reference on Chart Studio Cloud for `include`.",
+ "editType": "none",
+ "valType": "string"
+ },
+ "maxallowed": {
+ "description": "Use this value exactly as autorange maximum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Use this value exactly as autorange minimum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "role": "object"
+ },
"autotypenumbers": {
"description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
"dflt": "convert types",
@@ -6238,6 +6404,22 @@
"min": 0,
"valType": "number"
},
+ "maxallowed": {
+ "description": "Determines the maximum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Determines the minimum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
"minexponent": {
"description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
"dflt": 3,
@@ -6267,7 +6449,7 @@
},
"range": {
"anim": false,
- "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
+ "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
"editType": "plot",
"impliedEdits": {
"autorange": false
@@ -6654,7 +6836,7 @@
}
},
"autorange": {
- "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
+ "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
"dflt": true,
"editType": "plot",
"impliedEdits": {},
@@ -6662,9 +6844,53 @@
"values": [
true,
false,
- "reversed"
+ "reversed",
+ "min reversed",
+ "max reversed",
+ "min",
+ "max"
]
},
+ "autorangeoptions": {
+ "clipmax": {
+ "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "clipmin": {
+ "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "editType": "plot",
+ "include": {
+ "arrayOk": true,
+ "description": "Ensure this value is included in autorange.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "includesrc": {
+ "description": "Sets the source reference on Chart Studio Cloud for `include`.",
+ "editType": "none",
+ "valType": "string"
+ },
+ "maxallowed": {
+ "description": "Use this value exactly as autorange maximum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Use this value exactly as autorange minimum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "role": "object"
+ },
"autotypenumbers": {
"description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
"dflt": "convert types",
@@ -6806,6 +7032,22 @@
"min": 0,
"valType": "number"
},
+ "maxallowed": {
+ "description": "Determines the maximum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Determines the minimum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
"minexponent": {
"description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
"dflt": 3,
@@ -6835,7 +7077,7 @@
},
"range": {
"anim": false,
- "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
+ "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
"editType": "plot",
"impliedEdits": {
"autorange": false
@@ -10402,7 +10644,7 @@
"valType": "flaglist"
},
"autorange": {
- "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
+ "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
"dflt": true,
"editType": "axrange",
"impliedEdits": {},
@@ -10410,9 +10652,53 @@
"values": [
true,
false,
- "reversed"
+ "reversed",
+ "min reversed",
+ "max reversed",
+ "min",
+ "max"
]
},
+ "autorangeoptions": {
+ "clipmax": {
+ "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "clipmin": {
+ "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "editType": "plot",
+ "include": {
+ "arrayOk": true,
+ "description": "Ensure this value is included in autorange.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "includesrc": {
+ "description": "Sets the source reference on Chart Studio Cloud for `include`.",
+ "editType": "none",
+ "valType": "string"
+ },
+ "maxallowed": {
+ "description": "Use this value exactly as autorange maximum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Use this value exactly as autorange minimum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "role": "object"
+ },
"autotypenumbers": {
"description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
"dflt": "convert types",
@@ -10644,6 +10930,22 @@
"/^y([2-9]|[1-9][0-9]+)?( domain)?$/"
]
},
+ "maxallowed": {
+ "description": "Determines the maximum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Determines the minimum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
"minexponent": {
"description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
"dflt": 3,
@@ -10798,7 +11100,7 @@
},
"range": {
"anim": true,
- "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
+ "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
"editType": "axrange",
"impliedEdits": {
"autorange": false
@@ -11157,12 +11459,13 @@
},
"role": "object",
"scaleanchor": {
- "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden.",
+ "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).",
"editType": "plot",
"valType": "enumerated",
"values": [
"/^x([2-9]|[1-9][0-9]+)?( domain)?$/",
- "/^y([2-9]|[1-9][0-9]+)?( domain)?$/"
+ "/^y([2-9]|[1-9][0-9]+)?( domain)?$/",
+ false
]
},
"scaleratio": {
@@ -11660,7 +11963,7 @@
"valType": "flaglist"
},
"autorange": {
- "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
+ "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
"dflt": true,
"editType": "axrange",
"impliedEdits": {},
@@ -11668,9 +11971,53 @@
"values": [
true,
false,
- "reversed"
+ "reversed",
+ "min reversed",
+ "max reversed",
+ "min",
+ "max"
]
},
+ "autorangeoptions": {
+ "clipmax": {
+ "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "clipmin": {
+ "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "editType": "plot",
+ "include": {
+ "arrayOk": true,
+ "description": "Ensure this value is included in autorange.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "includesrc": {
+ "description": "Sets the source reference on Chart Studio Cloud for `include`.",
+ "editType": "none",
+ "valType": "string"
+ },
+ "maxallowed": {
+ "description": "Use this value exactly as autorange maximum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Use this value exactly as autorange minimum.",
+ "editType": "plot",
+ "impliedEdits": {},
+ "valType": "any"
+ },
+ "role": "object"
+ },
"autoshift": {
"description": "Automatically reposition the axis to avoid overlap with other axes with the same `overlaying` value. This repositioning will account for any `shift` amount applied to other axes on the same side with `autoshift` is set to true. Only has an effect if `anchor` is set to *free*.",
"dflt": false,
@@ -11908,6 +12255,22 @@
"/^y([2-9]|[1-9][0-9]+)?( domain)?$/"
]
},
+ "maxallowed": {
+ "description": "Determines the maximum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
+ "minallowed": {
+ "description": "Determines the minimum range of this axis.",
+ "editType": "plot",
+ "impliedEdits": {
+ "^autorange": false
+ },
+ "valType": "any"
+ },
"minexponent": {
"description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
"dflt": 3,
@@ -12062,7 +12425,7 @@
},
"range": {
"anim": true,
- "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
+ "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
"editType": "axrange",
"impliedEdits": {
"autorange": false
@@ -12167,12 +12530,13 @@
},
"role": "object",
"scaleanchor": {
- "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden.",
+ "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).",
"editType": "plot",
"valType": "enumerated",
"values": [
"/^x([2-9]|[1-9][0-9]+)?( domain)?$/",
- "/^y([2-9]|[1-9][0-9]+)?( domain)?$/"
+ "/^y([2-9]|[1-9][0-9]+)?( domain)?$/",
+ false
]
},
"scaleratio": {
@@ -16738,6 +17102,13 @@
"editType": "calc",
"valType": "data_array"
},
+ "sdmultiple": {
+ "description": "Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev",
+ "dflt": 1,
+ "editType": "calc",
+ "min": 0,
+ "valType": "number"
+ },
"sdsrc": {
"description": "Sets the source reference on Chart Studio Cloud for `sd`.",
"editType": "none",
@@ -16780,6 +17151,21 @@
"editType": "style",
"valType": "boolean"
},
+ "showwhiskers": {
+ "description": "Determines whether or not whiskers are visible. Defaults to true for `sizemode` *quartiles*, false for *sd*.",
+ "editType": "calc",
+ "valType": "boolean"
+ },
+ "sizemode": {
+ "description": "Sets the upper and lower bound for the boxes quartiles means box is drawn between Q1 and Q3 SD means the box is drawn between Mean +- Standard Deviation Argument sdmultiple (default 1) to scale the box size So it could be drawn 1-stddev, 3-stddev etc",
+ "dflt": "quartiles",
+ "editType": "calc",
+ "valType": "enumerated",
+ "values": [
+ "quartiles",
+ "sd"
+ ]
+ },
"stream": {
"editType": "calc",
"maxpoints": {
diff --git a/packages/python/plotly/plotly/_widget_version.py b/packages/python/plotly/plotly/_widget_version.py
index 3eb599b6f59..81af2ecaf50 100644
--- a/packages/python/plotly/plotly/_widget_version.py
+++ b/packages/python/plotly/plotly/_widget_version.py
@@ -2,4 +2,4 @@
# for automated dev builds
#
# It is edited by hand prior to official releases
-__frontend_version__ = "^5.16.1"
+__frontend_version__ = "^5.17.0"
diff --git a/packages/python/plotly/plotly/basedatatypes.py b/packages/python/plotly/plotly/basedatatypes.py
index 8fa70e0adaa..6f4e632055b 100644
--- a/packages/python/plotly/plotly/basedatatypes.py
+++ b/packages/python/plotly/plotly/basedatatypes.py
@@ -3318,6 +3318,9 @@ def to_plotly_json(self):
"""
Convert figure to a JSON representation as a Python dict
+ Note: May include some JSON-invalid data types, use the `PlotlyJSONEncoder` util
+ or the `to_json` method to encode to a string.
+
Returns
-------
dict
@@ -5597,12 +5600,48 @@ def to_plotly_json(self):
"""
Return plotly JSON representation of object as a Python dict
+ Note: May include some JSON-invalid data types, use the `PlotlyJSONEncoder` util
+ or the `to_json` method to encode to a string.
+
Returns
-------
dict
"""
return deepcopy(self._props if self._props is not None else {})
+ def to_json(self, *args, **kwargs):
+ """
+ Convert object to a JSON string representation
+
+ Parameters
+ ----------
+ validate: bool (default True)
+ True if the object should be validated before being converted to
+ JSON, False otherwise.
+
+ pretty: bool (default False)
+ True if JSON representation should be pretty-printed, False if
+ representation should be as compact as possible.
+
+ remove_uids: bool (default True)
+ True if trace UIDs should be omitted from the JSON representation
+
+ engine: str (default None)
+ The JSON encoding engine to use. One of:
+ - "json" for an encoder based on the built-in Python json module
+ - "orjson" for a fast encoder the requires the orjson package
+ If not specified, the default encoder is set to the current value of
+ plotly.io.json.config.default_encoder.
+
+ Returns
+ -------
+ str
+ Representation of object as a JSON string
+ """
+ import plotly.io as pio
+
+ return pio.to_json(self, *args, **kwargs)
+
@staticmethod
def _vals_equal(v1, v2):
"""
diff --git a/packages/python/plotly/plotly/express/_imshow.py b/packages/python/plotly/plotly/express/_imshow.py
index 6478cc6e274..de0e22284b4 100644
--- a/packages/python/plotly/plotly/express/_imshow.py
+++ b/packages/python/plotly/plotly/express/_imshow.py
@@ -265,14 +265,18 @@ def imshow(
if xarray_imported and isinstance(img, xarray.DataArray):
dims = list(img.dims)
img_is_xarray = True
+ pop_indexes = []
if facet_col is not None:
facet_slices = img.coords[img.dims[facet_col]].values
- _ = dims.pop(facet_col)
+ pop_indexes.append(facet_col)
facet_label = img.dims[facet_col]
if animation_frame is not None:
animation_slices = img.coords[img.dims[animation_frame]].values
- _ = dims.pop(animation_frame)
+ pop_indexes.append(animation_frame)
animation_label = img.dims[animation_frame]
+ # Remove indices in sorted order.
+ for index in sorted(pop_indexes, reverse=True):
+ _ = dims.pop(index)
y_label, x_label = dims[0], dims[1]
# np.datetime64 is not handled correctly by go.Heatmap
for ax in [x_label, y_label]:
@@ -541,7 +545,7 @@ def imshow(
slice_label = (
"facet_col" if labels.get("facet_col") is None else labels["facet_col"]
)
- col_labels = ["%s=%d" % (slice_label, i) for i in facet_slices]
+ col_labels = [f"{slice_label}={i}" for i in facet_slices]
fig = init_figure(args, "xy", [], nrows, ncols, col_labels, [])
for attr_name in ["height", "width"]:
if args[attr_name]:
diff --git a/packages/python/plotly/plotly/graph_objs/_box.py b/packages/python/plotly/plotly/graph_objs/_box.py
index f65cf184f25..8fa7eded2a0 100644
--- a/packages/python/plotly/plotly/graph_objs/_box.py
+++ b/packages/python/plotly/plotly/graph_objs/_box.py
@@ -58,10 +58,13 @@ class Box(_BaseTraceType):
"q3src",
"quartilemethod",
"sd",
+ "sdmultiple",
"sdsrc",
"selected",
"selectedpoints",
"showlegend",
+ "showwhiskers",
+ "sizemode",
"stream",
"text",
"textsrc",
@@ -1344,6 +1347,28 @@ def sd(self):
def sd(self, val):
self["sd"] = val
+ # sdmultiple
+ # ----------
+ @property
+ def sdmultiple(self):
+ """
+ Scales the box size when sizemode=sd Allowing boxes to be drawn
+ across any stddev range For example 1-stddev, 3-stddev,
+ 5-stddev
+
+ The 'sdmultiple' property is a number and may be specified as:
+ - An int or float in the interval [0, inf]
+
+ Returns
+ -------
+ int|float
+ """
+ return self["sdmultiple"]
+
+ @sdmultiple.setter
+ def sdmultiple(self, val):
+ self["sdmultiple"] = val
+
# sdsrc
# -----
@property
@@ -1436,6 +1461,52 @@ def showlegend(self):
def showlegend(self, val):
self["showlegend"] = val
+ # showwhiskers
+ # ------------
+ @property
+ def showwhiskers(self):
+ """
+ Determines whether or not whiskers are visible. Defaults to
+ true for `sizemode` "quartiles", false for "sd".
+
+ The 'showwhiskers' property must be specified as a bool
+ (either True, or False)
+
+ Returns
+ -------
+ bool
+ """
+ return self["showwhiskers"]
+
+ @showwhiskers.setter
+ def showwhiskers(self, val):
+ self["showwhiskers"] = val
+
+ # sizemode
+ # --------
+ @property
+ def sizemode(self):
+ """
+ Sets the upper and lower bound for the boxes quartiles means
+ box is drawn between Q1 and Q3 SD means the box is drawn
+ between Mean +- Standard Deviation Argument sdmultiple (default
+ 1) to scale the box size So it could be drawn 1-stddev,
+ 3-stddev etc
+
+ The 'sizemode' property is an enumeration that may be specified as:
+ - One of the following enumeration values:
+ ['quartiles', 'sd']
+
+ Returns
+ -------
+ Any
+ """
+ return self["sizemode"]
+
+ @sizemode.setter
+ def sizemode(self, val):
+ self["sizemode"] = val
+
# stream
# ------
@property
@@ -2394,6 +2465,10 @@ def _prop_descriptions(self):
signature. If `sd` is not provided but a sample (in `y`
or `x`) is set, we compute the standard deviation for
each box using the sample values.
+ sdmultiple
+ Scales the box size when sizemode=sd Allowing boxes to
+ be drawn across any stddev range For example 1-stddev,
+ 3-stddev, 5-stddev
sdsrc
Sets the source reference on Chart Studio Cloud for
`sd`.
@@ -2410,6 +2485,16 @@ def _prop_descriptions(self):
showlegend
Determines whether or not an item corresponding to this
trace is shown in the legend.
+ showwhiskers
+ Determines whether or not whiskers are visible.
+ Defaults to true for `sizemode` "quartiles", false for
+ "sd".
+ sizemode
+ Sets the upper and lower bound for the boxes quartiles
+ means box is drawn between Q1 and Q3 SD means the box
+ is drawn between Mean +- Standard Deviation Argument
+ sdmultiple (default 1) to scale the box size So it
+ could be drawn 1-stddev, 3-stddev etc
stream
:class:`plotly.graph_objects.box.Stream` instance or
dict with compatible properties
@@ -2618,10 +2703,13 @@ def __init__(
q3src=None,
quartilemethod=None,
sd=None,
+ sdmultiple=None,
sdsrc=None,
selected=None,
selectedpoints=None,
showlegend=None,
+ showwhiskers=None,
+ sizemode=None,
stream=None,
text=None,
textsrc=None,
@@ -2942,6 +3030,10 @@ def __init__(
signature. If `sd` is not provided but a sample (in `y`
or `x`) is set, we compute the standard deviation for
each box using the sample values.
+ sdmultiple
+ Scales the box size when sizemode=sd Allowing boxes to
+ be drawn across any stddev range For example 1-stddev,
+ 3-stddev, 5-stddev
sdsrc
Sets the source reference on Chart Studio Cloud for
`sd`.
@@ -2958,6 +3050,16 @@ def __init__(
showlegend
Determines whether or not an item corresponding to this
trace is shown in the legend.
+ showwhiskers
+ Determines whether or not whiskers are visible.
+ Defaults to true for `sizemode` "quartiles", false for
+ "sd".
+ sizemode
+ Sets the upper and lower bound for the boxes quartiles
+ means box is drawn between Q1 and Q3 SD means the box
+ is drawn between Mean +- Standard Deviation Argument
+ sdmultiple (default 1) to scale the box size So it
+ could be drawn 1-stddev, 3-stddev etc
stream
:class:`plotly.graph_objects.box.Stream` instance or
dict with compatible properties
@@ -3342,6 +3444,10 @@ def __init__(
_v = sd if sd is not None else _v
if _v is not None:
self["sd"] = _v
+ _v = arg.pop("sdmultiple", None)
+ _v = sdmultiple if sdmultiple is not None else _v
+ if _v is not None:
+ self["sdmultiple"] = _v
_v = arg.pop("sdsrc", None)
_v = sdsrc if sdsrc is not None else _v
if _v is not None:
@@ -3358,6 +3464,14 @@ def __init__(
_v = showlegend if showlegend is not None else _v
if _v is not None:
self["showlegend"] = _v
+ _v = arg.pop("showwhiskers", None)
+ _v = showwhiskers if showwhiskers is not None else _v
+ if _v is not None:
+ self["showwhiskers"] = _v
+ _v = arg.pop("sizemode", None)
+ _v = sizemode if sizemode is not None else _v
+ if _v is not None:
+ self["sizemode"] = _v
_v = arg.pop("stream", None)
_v = stream if stream is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/_figure.py b/packages/python/plotly/plotly/graph_objs/_figure.py
index 25ebc71fcdc..5fa06738c9f 100644
--- a/packages/python/plotly/plotly/graph_objs/_figure.py
+++ b/packages/python/plotly/plotly/graph_objs/_figure.py
@@ -2167,10 +2167,13 @@ def add_box(
q3src=None,
quartilemethod=None,
sd=None,
+ sdmultiple=None,
sdsrc=None,
selected=None,
selectedpoints=None,
showlegend=None,
+ showwhiskers=None,
+ sizemode=None,
stream=None,
text=None,
textsrc=None,
@@ -2491,6 +2494,10 @@ def add_box(
signature. If `sd` is not provided but a sample (in `y`
or `x`) is set, we compute the standard deviation for
each box using the sample values.
+ sdmultiple
+ Scales the box size when sizemode=sd Allowing boxes to
+ be drawn across any stddev range For example 1-stddev,
+ 3-stddev, 5-stddev
sdsrc
Sets the source reference on Chart Studio Cloud for
`sd`.
@@ -2507,6 +2514,16 @@ def add_box(
showlegend
Determines whether or not an item corresponding to this
trace is shown in the legend.
+ showwhiskers
+ Determines whether or not whiskers are visible.
+ Defaults to true for `sizemode` "quartiles", false for
+ "sd".
+ sizemode
+ Sets the upper and lower bound for the boxes quartiles
+ means box is drawn between Q1 and Q3 SD means the box
+ is drawn between Mean +- Standard Deviation Argument
+ sdmultiple (default 1) to scale the box size So it
+ could be drawn 1-stddev, 3-stddev etc
stream
:class:`plotly.graph_objects.box.Stream` instance or
dict with compatible properties
@@ -2738,10 +2755,13 @@ def add_box(
q3src=q3src,
quartilemethod=quartilemethod,
sd=sd,
+ sdmultiple=sdmultiple,
sdsrc=sdsrc,
selected=selected,
selectedpoints=selectedpoints,
showlegend=showlegend,
+ showwhiskers=showwhiskers,
+ sizemode=sizemode,
stream=stream,
text=text,
textsrc=textsrc,
diff --git a/packages/python/plotly/plotly/graph_objs/_figurewidget.py b/packages/python/plotly/plotly/graph_objs/_figurewidget.py
index 04e0d180b83..6e344285378 100644
--- a/packages/python/plotly/plotly/graph_objs/_figurewidget.py
+++ b/packages/python/plotly/plotly/graph_objs/_figurewidget.py
@@ -2171,10 +2171,13 @@ def add_box(
q3src=None,
quartilemethod=None,
sd=None,
+ sdmultiple=None,
sdsrc=None,
selected=None,
selectedpoints=None,
showlegend=None,
+ showwhiskers=None,
+ sizemode=None,
stream=None,
text=None,
textsrc=None,
@@ -2495,6 +2498,10 @@ def add_box(
signature. If `sd` is not provided but a sample (in `y`
or `x`) is set, we compute the standard deviation for
each box using the sample values.
+ sdmultiple
+ Scales the box size when sizemode=sd Allowing boxes to
+ be drawn across any stddev range For example 1-stddev,
+ 3-stddev, 5-stddev
sdsrc
Sets the source reference on Chart Studio Cloud for
`sd`.
@@ -2511,6 +2518,16 @@ def add_box(
showlegend
Determines whether or not an item corresponding to this
trace is shown in the legend.
+ showwhiskers
+ Determines whether or not whiskers are visible.
+ Defaults to true for `sizemode` "quartiles", false for
+ "sd".
+ sizemode
+ Sets the upper and lower bound for the boxes quartiles
+ means box is drawn between Q1 and Q3 SD means the box
+ is drawn between Mean +- Standard Deviation Argument
+ sdmultiple (default 1) to scale the box size So it
+ could be drawn 1-stddev, 3-stddev etc
stream
:class:`plotly.graph_objects.box.Stream` instance or
dict with compatible properties
@@ -2742,10 +2759,13 @@ def add_box(
q3src=q3src,
quartilemethod=quartilemethod,
sd=sd,
+ sdmultiple=sdmultiple,
sdsrc=sdsrc,
selected=selected,
selectedpoints=selectedpoints,
showlegend=showlegend,
+ showwhiskers=showwhiskers,
+ sizemode=sizemode,
stream=stream,
text=text,
textsrc=textsrc,
diff --git a/packages/python/plotly/plotly/graph_objs/_layout.py b/packages/python/plotly/plotly/graph_objs/_layout.py
index ea81ae730d2..abcee318c4f 100644
--- a/packages/python/plotly/plotly/graph_objs/_layout.py
+++ b/packages/python/plotly/plotly/graph_objs/_layout.py
@@ -4278,7 +4278,20 @@ def xaxis(self):
Determines whether or not the range of this
axis is computed in relation to the input data.
See `rangemode` for more info. If `range` is
- provided, then `autorange` is set to False.
+ provided and it has a value for both the lower
+ and upper bound, `autorange` is set to False.
+ Using "min" applies autorange only to set the
+ minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed
+ axis. Using *max reversed* applies autorange
+ only to set the maximum on a reversed axis.
+ Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.xaxis.Autor
+ angeoptions` instance or dict with compatible
+ properties
autotypenumbers
Using "strict" a numeric string in trace data
is not converted to a number. Using *convert
@@ -4447,6 +4460,10 @@ def xaxis(self):
`scaleanchor` and a `matches` constraint is
currently forbidden. Moreover, note that
matching axes must have the same `type`.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this
number. This only has an effect when
@@ -4492,7 +4509,9 @@ def xaxis(self):
strings. If the axis `type` is "category", it
should be numbers, using the scale where each
category is assigned a serial number from zero
- in the order it appears.
+ in the order it appears. Leaving either or both
+ elements `null` impacts the default
+ `autorange`.
rangebreaks
A tuple of :class:`plotly.graph_objects.layout.
xaxis.Rangebreak` instances or dicts with
@@ -4539,6 +4558,15 @@ def xaxis(self):
constraints via `scaleratio`. Note that setting
axes simultaneously in both a `scaleanchor` and
a `matches` constraint is currently forbidden.
+ Setting `false` allows to remove a default
+ constraint (occasionally, you may need to
+ prevent a default `scaleanchor` constraint from
+ being applied, eg. when having an image trace
+ `yaxis: {scaleanchor: "x"}` is set
+ automatically in order for pixels to be
+ rendered as squares, setting `yaxis:
+ {scaleanchor: false}` allows to remove the
+ constraint).
scaleratio
If this axis is linked to another by
`scaleanchor`, this determines the pixel to
@@ -4804,7 +4832,20 @@ def yaxis(self):
Determines whether or not the range of this
axis is computed in relation to the input data.
See `rangemode` for more info. If `range` is
- provided, then `autorange` is set to False.
+ provided and it has a value for both the lower
+ and upper bound, `autorange` is set to False.
+ Using "min" applies autorange only to set the
+ minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed
+ axis. Using *max reversed* applies autorange
+ only to set the maximum on a reversed axis.
+ Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.yaxis.Autor
+ angeoptions` instance or dict with compatible
+ properties
autoshift
Automatically reposition the axis to avoid
overlap with other axes with the same
@@ -4981,6 +5022,10 @@ def yaxis(self):
`scaleanchor` and a `matches` constraint is
currently forbidden. Moreover, note that
matching axes must have the same `type`.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this
number. This only has an effect when
@@ -5026,7 +5071,9 @@ def yaxis(self):
strings. If the axis `type` is "category", it
should be numbers, using the scale where each
category is assigned a serial number from zero
- in the order it appears.
+ in the order it appears. Leaving either or both
+ elements `null` impacts the default
+ `autorange`.
rangebreaks
A tuple of :class:`plotly.graph_objects.layout.
yaxis.Rangebreak` instances or dicts with
@@ -5065,6 +5112,15 @@ def yaxis(self):
constraints via `scaleratio`. Note that setting
axes simultaneously in both a `scaleanchor` and
a `matches` constraint is currently forbidden.
+ Setting `false` allows to remove a default
+ constraint (occasionally, you may need to
+ prevent a default `scaleanchor` constraint from
+ being applied, eg. when having an image trace
+ `yaxis: {scaleanchor: "x"}` is set
+ automatically in order for pixels to be
+ rendered as squares, setting `yaxis:
+ {scaleanchor: false}` allows to remove the
+ constraint).
scaleratio
If this axis is linked to another by
`scaleanchor`, this determines the pixel to
diff --git a/packages/python/plotly/plotly/graph_objs/layout/_legend.py b/packages/python/plotly/plotly/graph_objs/layout/_legend.py
index 7bc0b42690c..345248a5b14 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/_legend.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/_legend.py
@@ -472,8 +472,9 @@ def title(self):
respect to the legend items. Defaulted to "top"
with `orientation` is "h". Defaulted to "left"
with `orientation` is "v". The *top left*
- options could be used to expand legend area in
- both x and y sides.
+ options could be used to expand top center and
+ top right are for horizontal alignment legend
+ area in both x and y sides.
text
Sets the title of the legend.
diff --git a/packages/python/plotly/plotly/graph_objs/layout/_polar.py b/packages/python/plotly/plotly/graph_objs/layout/_polar.py
index d5cd5d927ee..bf575120b3e 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/_polar.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/_polar.py
@@ -546,7 +546,20 @@ def radialaxis(self):
Determines whether or not the range of this
axis is computed in relation to the input data.
See `rangemode` for more info. If `range` is
- provided, then `autorange` is set to False.
+ provided and it has a value for both the lower
+ and upper bound, `autorange` is set to False.
+ Using "min" applies autorange only to set the
+ minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed
+ axis. Using *max reversed* applies autorange
+ only to set the maximum on a reversed axis.
+ Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.polar.radia
+ laxis.Autorangeoptions` instance or dict with
+ compatible properties
autotypenumbers
Using "strict" a numeric string in trace data
is not converted to a number. Using *convert
@@ -677,6 +690,10 @@ def radialaxis(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this
number. This only has an effect when
@@ -698,7 +715,9 @@ def radialaxis(self):
strings. If the axis `type` is "category", it
should be numbers, using the scale where each
category is assigned a serial number from zero
- in the order it appears.
+ in the order it appears. Leaving either or both
+ elements `null` impacts the default
+ `autorange`.
rangemode
If *tozero*`, the range extends to 0,
regardless of the input data If "nonnegative",
diff --git a/packages/python/plotly/plotly/graph_objs/layout/_scene.py b/packages/python/plotly/plotly/graph_objs/layout/_scene.py
index e652354e18d..ca6baa3de97 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/_scene.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/_scene.py
@@ -528,7 +528,20 @@ def xaxis(self):
Determines whether or not the range of this
axis is computed in relation to the input data.
See `rangemode` for more info. If `range` is
- provided, then `autorange` is set to False.
+ provided and it has a value for both the lower
+ and upper bound, `autorange` is set to False.
+ Using "min" applies autorange only to set the
+ minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed
+ axis. Using *max reversed* applies autorange
+ only to set the maximum on a reversed axis.
+ Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.xaxis
+ .Autorangeoptions` instance or dict with
+ compatible properties
autotypenumbers
Using "strict" a numeric string in trace data
is not converted to a number. Using *convert
@@ -647,6 +660,10 @@ def xaxis(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this
number. This only has an effect when
@@ -677,7 +694,9 @@ def xaxis(self):
strings. If the axis `type` is "category", it
should be numbers, using the scale where each
category is assigned a serial number from zero
- in the order it appears.
+ in the order it appears. Leaving either or both
+ elements `null` impacts the default
+ `autorange`.
rangemode
If "normal", the range is computed in relation
to the extrema of the input data. If *tozero*`,
@@ -865,7 +884,20 @@ def yaxis(self):
Determines whether or not the range of this
axis is computed in relation to the input data.
See `rangemode` for more info. If `range` is
- provided, then `autorange` is set to False.
+ provided and it has a value for both the lower
+ and upper bound, `autorange` is set to False.
+ Using "min" applies autorange only to set the
+ minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed
+ axis. Using *max reversed* applies autorange
+ only to set the maximum on a reversed axis.
+ Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.yaxis
+ .Autorangeoptions` instance or dict with
+ compatible properties
autotypenumbers
Using "strict" a numeric string in trace data
is not converted to a number. Using *convert
@@ -984,6 +1016,10 @@ def yaxis(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this
number. This only has an effect when
@@ -1014,7 +1050,9 @@ def yaxis(self):
strings. If the axis `type` is "category", it
should be numbers, using the scale where each
category is assigned a serial number from zero
- in the order it appears.
+ in the order it appears. Leaving either or both
+ elements `null` impacts the default
+ `autorange`.
rangemode
If "normal", the range is computed in relation
to the extrema of the input data. If *tozero*`,
@@ -1202,7 +1240,20 @@ def zaxis(self):
Determines whether or not the range of this
axis is computed in relation to the input data.
See `rangemode` for more info. If `range` is
- provided, then `autorange` is set to False.
+ provided and it has a value for both the lower
+ and upper bound, `autorange` is set to False.
+ Using "min" applies autorange only to set the
+ minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed
+ axis. Using *max reversed* applies autorange
+ only to set the maximum on a reversed axis.
+ Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.zaxis
+ .Autorangeoptions` instance or dict with
+ compatible properties
autotypenumbers
Using "strict" a numeric string in trace data
is not converted to a number. Using *convert
@@ -1321,6 +1372,10 @@ def zaxis(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this
number. This only has an effect when
@@ -1351,7 +1406,9 @@ def zaxis(self):
strings. If the axis `type` is "category", it
should be numbers, using the scale where each
category is assigned a serial number from zero
- in the order it appears.
+ in the order it appears. Leaving either or both
+ elements `null` impacts the default
+ `autorange`.
rangemode
If "normal", the range is computed in relation
to the extrema of the input data. If *tozero*`,
diff --git a/packages/python/plotly/plotly/graph_objs/layout/_xaxis.py b/packages/python/plotly/plotly/graph_objs/layout/_xaxis.py
index a0b89524745..40d5f2daee8 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/_xaxis.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/_xaxis.py
@@ -12,6 +12,7 @@ class XAxis(_BaseLayoutHierarchyType):
"anchor",
"automargin",
"autorange",
+ "autorangeoptions",
"autotypenumbers",
"calendar",
"categoryarray",
@@ -35,6 +36,8 @@ class XAxis(_BaseLayoutHierarchyType):
"linecolor",
"linewidth",
"matches",
+ "maxallowed",
+ "minallowed",
"minexponent",
"minor",
"mirror",
@@ -153,11 +156,19 @@ def autorange(self):
"""
Determines whether or not the range of this axis is computed in
relation to the input data. See `rangemode` for more info. If
- `range` is provided, then `autorange` is set to False.
+ `range` is provided and it has a value for both the lower and
+ upper bound, `autorange` is set to False. Using "min" applies
+ autorange only to set the minimum. Using "max" applies
+ autorange only to set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed axis. Using
+ *max reversed* applies autorange only to set the maximum on a
+ reversed axis. Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
The 'autorange' property is an enumeration that may be specified as:
- One of the following enumeration values:
- [True, False, 'reversed']
+ [True, False, 'reversed', 'min reversed', 'max reversed',
+ 'min', 'max']
Returns
-------
@@ -169,6 +180,47 @@ def autorange(self):
def autorange(self, val):
self["autorange"] = val
+ # autorangeoptions
+ # ----------------
+ @property
+ def autorangeoptions(self):
+ """
+ The 'autorangeoptions' property is an instance of Autorangeoptions
+ that may be specified as:
+ - An instance of :class:`plotly.graph_objs.layout.xaxis.Autorangeoptions`
+ - A dict of string/value properties that will be passed
+ to the Autorangeoptions constructor
+
+ Supported dict properties:
+
+ clipmax
+ Clip autorange maximum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.maxallowed` is provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.minallowed` is provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud
+ for `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ plotly.graph_objs.layout.xaxis.Autorangeoptions
+ """
+ return self["autorangeoptions"]
+
+ @autorangeoptions.setter
+ def autorangeoptions(self, val):
+ self["autorangeoptions"] = val
+
# autotypenumbers
# ---------------
@property
@@ -901,6 +953,44 @@ def matches(self):
def matches(self, val):
self["matches"] = val
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Determines the maximum range of this axis.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Determines the minimum range of this axis.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
# minexponent
# -----------
@property
@@ -1147,6 +1237,8 @@ def range(self):
converted to strings. If the axis `type` is "category", it
should be numbers, using the scale where each category is
assigned a serial number from zero in the order it appears.
+ Leaving either or both elements `null` impacts the default
+ `autorange`.
The 'range' property is an info array that may be specified as:
@@ -1439,9 +1531,17 @@ def scaleanchor(self):
constraint encountered will be ignored to avoid possible
inconsistent constraints via `scaleratio`. Note that setting
axes simultaneously in both a `scaleanchor` and a `matches`
- constraint is currently forbidden.
+ constraint is currently forbidden. Setting `false` allows to
+ remove a default constraint (occasionally, you may need to
+ prevent a default `scaleanchor` constraint from being applied,
+ eg. when having an image trace `yaxis: {scaleanchor: "x"}` is
+ set automatically in order for pixels to be rendered as
+ squares, setting `yaxis: {scaleanchor: false}` allows to remove
+ the constraint).
The 'scaleanchor' property is an enumeration that may be specified as:
+ - One of the following enumeration values:
+ [False]
- A string that matches one of the following regular expressions:
['^x([2-9]|[1-9][0-9]+)?( domain)?$',
'^y([2-9]|[1-9][0-9]+)?( domain)?$']
@@ -2746,8 +2846,18 @@ def _prop_descriptions(self):
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.xaxis.Autorangeopti
+ ons` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -2896,6 +3006,10 @@ def _prop_descriptions(self):
both a `scaleanchor` and a `matches` constraint is
currently forbidden. Moreover, note that matching axes
must have the same `type`.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -2938,7 +3052,8 @@ def _prop_descriptions(self):
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangebreaks
A tuple of
:class:`plotly.graph_objects.layout.xaxis.Rangebreak`
@@ -2979,7 +3094,13 @@ def _prop_descriptions(self):
possible inconsistent constraints via `scaleratio`.
Note that setting axes simultaneously in both a
`scaleanchor` and a `matches` constraint is currently
- forbidden.
+ forbidden. Setting `false` allows to remove a default
+ constraint (occasionally, you may need to prevent a
+ default `scaleanchor` constraint from being applied,
+ eg. when having an image trace `yaxis: {scaleanchor:
+ "x"}` is set automatically in order for pixels to be
+ rendered as squares, setting `yaxis: {scaleanchor:
+ false}` allows to remove the constraint).
scaleratio
If this axis is linked to another by `scaleanchor`,
this determines the pixel to unit scale ratio. For
@@ -3196,6 +3317,7 @@ def __init__(
anchor=None,
automargin=None,
autorange=None,
+ autorangeoptions=None,
autotypenumbers=None,
calendar=None,
categoryarray=None,
@@ -3219,6 +3341,8 @@ def __init__(
linecolor=None,
linewidth=None,
matches=None,
+ maxallowed=None,
+ minallowed=None,
minexponent=None,
minor=None,
mirror=None,
@@ -3299,8 +3423,18 @@ def __init__(
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.xaxis.Autorangeopti
+ ons` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -3449,6 +3583,10 @@ def __init__(
both a `scaleanchor` and a `matches` constraint is
currently forbidden. Moreover, note that matching axes
must have the same `type`.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -3491,7 +3629,8 @@ def __init__(
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangebreaks
A tuple of
:class:`plotly.graph_objects.layout.xaxis.Rangebreak`
@@ -3532,7 +3671,13 @@ def __init__(
possible inconsistent constraints via `scaleratio`.
Note that setting axes simultaneously in both a
`scaleanchor` and a `matches` constraint is currently
- forbidden.
+ forbidden. Setting `false` allows to remove a default
+ constraint (occasionally, you may need to prevent a
+ default `scaleanchor` constraint from being applied,
+ eg. when having an image trace `yaxis: {scaleanchor:
+ "x"}` is set automatically in order for pixels to be
+ rendered as squares, setting `yaxis: {scaleanchor:
+ false}` allows to remove the constraint).
scaleratio
If this axis is linked to another by `scaleanchor`,
this determines the pixel to unit scale ratio. For
@@ -3785,6 +3930,10 @@ def __init__(
_v = autorange if autorange is not None else _v
if _v is not None:
self["autorange"] = _v
+ _v = arg.pop("autorangeoptions", None)
+ _v = autorangeoptions if autorangeoptions is not None else _v
+ if _v is not None:
+ self["autorangeoptions"] = _v
_v = arg.pop("autotypenumbers", None)
_v = autotypenumbers if autotypenumbers is not None else _v
if _v is not None:
@@ -3877,6 +4026,14 @@ def __init__(
_v = matches if matches is not None else _v
if _v is not None:
self["matches"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
_v = arg.pop("minexponent", None)
_v = minexponent if minexponent is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/layout/_yaxis.py b/packages/python/plotly/plotly/graph_objs/layout/_yaxis.py
index 10ac3e8c984..6b24bc914e0 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/_yaxis.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/_yaxis.py
@@ -12,6 +12,7 @@ class YAxis(_BaseLayoutHierarchyType):
"anchor",
"automargin",
"autorange",
+ "autorangeoptions",
"autoshift",
"autotypenumbers",
"calendar",
@@ -36,6 +37,8 @@ class YAxis(_BaseLayoutHierarchyType):
"linecolor",
"linewidth",
"matches",
+ "maxallowed",
+ "minallowed",
"minexponent",
"minor",
"mirror",
@@ -153,11 +156,19 @@ def autorange(self):
"""
Determines whether or not the range of this axis is computed in
relation to the input data. See `rangemode` for more info. If
- `range` is provided, then `autorange` is set to False.
+ `range` is provided and it has a value for both the lower and
+ upper bound, `autorange` is set to False. Using "min" applies
+ autorange only to set the minimum. Using "max" applies
+ autorange only to set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed axis. Using
+ *max reversed* applies autorange only to set the maximum on a
+ reversed axis. Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
The 'autorange' property is an enumeration that may be specified as:
- One of the following enumeration values:
- [True, False, 'reversed']
+ [True, False, 'reversed', 'min reversed', 'max reversed',
+ 'min', 'max']
Returns
-------
@@ -169,6 +180,47 @@ def autorange(self):
def autorange(self, val):
self["autorange"] = val
+ # autorangeoptions
+ # ----------------
+ @property
+ def autorangeoptions(self):
+ """
+ The 'autorangeoptions' property is an instance of Autorangeoptions
+ that may be specified as:
+ - An instance of :class:`plotly.graph_objs.layout.yaxis.Autorangeoptions`
+ - A dict of string/value properties that will be passed
+ to the Autorangeoptions constructor
+
+ Supported dict properties:
+
+ clipmax
+ Clip autorange maximum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.maxallowed` is provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.minallowed` is provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud
+ for `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ plotly.graph_objs.layout.yaxis.Autorangeoptions
+ """
+ return self["autorangeoptions"]
+
+ @autorangeoptions.setter
+ def autorangeoptions(self, val):
+ self["autorangeoptions"] = val
+
# autoshift
# ---------
@property
@@ -925,6 +977,44 @@ def matches(self):
def matches(self, val):
self["matches"] = val
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Determines the maximum range of this axis.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Determines the minimum range of this axis.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
# minexponent
# -----------
@property
@@ -1171,6 +1261,8 @@ def range(self):
converted to strings. If the axis `type` is "category", it
should be numbers, using the scale where each category is
assigned a serial number from zero in the order it appears.
+ Leaving either or both elements `null` impacts the default
+ `autorange`.
The 'range' property is an info array that may be specified as:
@@ -1336,9 +1428,17 @@ def scaleanchor(self):
constraint encountered will be ignored to avoid possible
inconsistent constraints via `scaleratio`. Note that setting
axes simultaneously in both a `scaleanchor` and a `matches`
- constraint is currently forbidden.
+ constraint is currently forbidden. Setting `false` allows to
+ remove a default constraint (occasionally, you may need to
+ prevent a default `scaleanchor` constraint from being applied,
+ eg. when having an image trace `yaxis: {scaleanchor: "x"}` is
+ set automatically in order for pixels to be rendered as
+ squares, setting `yaxis: {scaleanchor: false}` allows to remove
+ the constraint).
The 'scaleanchor' property is an enumeration that may be specified as:
+ - One of the following enumeration values:
+ [False]
- A string that matches one of the following regular expressions:
['^x([2-9]|[1-9][0-9]+)?( domain)?$',
'^y([2-9]|[1-9][0-9]+)?( domain)?$']
@@ -2669,8 +2769,18 @@ def _prop_descriptions(self):
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.yaxis.Autorangeopti
+ ons` instance or dict with compatible properties
autoshift
Automatically reposition the axis to avoid overlap with
other axes with the same `overlaying` value. This
@@ -2826,6 +2936,10 @@ def _prop_descriptions(self):
both a `scaleanchor` and a `matches` constraint is
currently forbidden. Moreover, note that matching axes
must have the same `type`.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -2868,7 +2982,8 @@ def _prop_descriptions(self):
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangebreaks
A tuple of
:class:`plotly.graph_objects.layout.yaxis.Rangebreak`
@@ -2903,7 +3018,13 @@ def _prop_descriptions(self):
possible inconsistent constraints via `scaleratio`.
Note that setting axes simultaneously in both a
`scaleanchor` and a `matches` constraint is currently
- forbidden.
+ forbidden. Setting `false` allows to remove a default
+ constraint (occasionally, you may need to prevent a
+ default `scaleanchor` constraint from being applied,
+ eg. when having an image trace `yaxis: {scaleanchor:
+ "x"}` is set automatically in order for pixels to be
+ rendered as squares, setting `yaxis: {scaleanchor:
+ false}` allows to remove the constraint).
scaleratio
If this axis is linked to another by `scaleanchor`,
this determines the pixel to unit scale ratio. For
@@ -3129,6 +3250,7 @@ def __init__(
anchor=None,
automargin=None,
autorange=None,
+ autorangeoptions=None,
autoshift=None,
autotypenumbers=None,
calendar=None,
@@ -3153,6 +3275,8 @@ def __init__(
linecolor=None,
linewidth=None,
matches=None,
+ maxallowed=None,
+ minallowed=None,
minexponent=None,
minor=None,
mirror=None,
@@ -3232,8 +3356,18 @@ def __init__(
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.yaxis.Autorangeopti
+ ons` instance or dict with compatible properties
autoshift
Automatically reposition the axis to avoid overlap with
other axes with the same `overlaying` value. This
@@ -3389,6 +3523,10 @@ def __init__(
both a `scaleanchor` and a `matches` constraint is
currently forbidden. Moreover, note that matching axes
must have the same `type`.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -3431,7 +3569,8 @@ def __init__(
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangebreaks
A tuple of
:class:`plotly.graph_objects.layout.yaxis.Rangebreak`
@@ -3466,7 +3605,13 @@ def __init__(
possible inconsistent constraints via `scaleratio`.
Note that setting axes simultaneously in both a
`scaleanchor` and a `matches` constraint is currently
- forbidden.
+ forbidden. Setting `false` allows to remove a default
+ constraint (occasionally, you may need to prevent a
+ default `scaleanchor` constraint from being applied,
+ eg. when having an image trace `yaxis: {scaleanchor:
+ "x"}` is set automatically in order for pixels to be
+ rendered as squares, setting `yaxis: {scaleanchor:
+ false}` allows to remove the constraint).
scaleratio
If this axis is linked to another by `scaleanchor`,
this determines the pixel to unit scale ratio. For
@@ -3728,6 +3873,10 @@ def __init__(
_v = autorange if autorange is not None else _v
if _v is not None:
self["autorange"] = _v
+ _v = arg.pop("autorangeoptions", None)
+ _v = autorangeoptions if autorangeoptions is not None else _v
+ if _v is not None:
+ self["autorangeoptions"] = _v
_v = arg.pop("autoshift", None)
_v = autoshift if autoshift is not None else _v
if _v is not None:
@@ -3824,6 +3973,14 @@ def __init__(
_v = matches if matches is not None else _v
if _v is not None:
self["matches"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
_v = arg.pop("minexponent", None)
_v = minexponent if minexponent is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/_title.py b/packages/python/plotly/plotly/graph_objs/layout/legend/_title.py
index e5bfe0d1fec..c9b31c4aba4 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/legend/_title.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/legend/_title.py
@@ -65,12 +65,12 @@ def side(self):
Determines the location of legend's title with respect to the
legend items. Defaulted to "top" with `orientation` is "h".
Defaulted to "left" with `orientation` is "v". The *top left*
- options could be used to expand legend area in both x and y
- sides.
+ options could be used to expand top center and top right are
+ for horizontal alignment legend area in both x and y sides.
The 'side' property is an enumeration that may be specified as:
- One of the following enumeration values:
- ['top', 'left', 'top left']
+ ['top', 'left', 'top left', 'top center', 'top right']
Returns
-------
@@ -116,7 +116,8 @@ def _prop_descriptions(self):
to the legend items. Defaulted to "top" with
`orientation` is "h". Defaulted to "left" with
`orientation` is "v". The *top left* options could be
- used to expand legend area in both x and y sides.
+ used to expand top center and top right are for
+ horizontal alignment legend area in both x and y sides.
text
Sets the title of the legend.
"""
@@ -139,7 +140,8 @@ def __init__(self, arg=None, font=None, side=None, text=None, **kwargs):
to the legend items. Defaulted to "top" with
`orientation` is "h". Defaulted to "left" with
`orientation` is "v". The *top left* options could be
- used to expand legend area in both x and y sides.
+ used to expand top center and top right are for
+ horizontal alignment legend area in both x and y sides.
text
Sets the title of the legend.
diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/_radialaxis.py b/packages/python/plotly/plotly/graph_objs/layout/polar/_radialaxis.py
index b8e0ab0f692..e5ce1812b37 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/polar/_radialaxis.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/polar/_radialaxis.py
@@ -11,6 +11,7 @@ class RadialAxis(_BaseLayoutHierarchyType):
_valid_props = {
"angle",
"autorange",
+ "autorangeoptions",
"autotypenumbers",
"calendar",
"categoryarray",
@@ -27,6 +28,8 @@ class RadialAxis(_BaseLayoutHierarchyType):
"layer",
"linecolor",
"linewidth",
+ "maxallowed",
+ "minallowed",
"minexponent",
"nticks",
"range",
@@ -97,11 +100,19 @@ def autorange(self):
"""
Determines whether or not the range of this axis is computed in
relation to the input data. See `rangemode` for more info. If
- `range` is provided, then `autorange` is set to False.
+ `range` is provided and it has a value for both the lower and
+ upper bound, `autorange` is set to False. Using "min" applies
+ autorange only to set the minimum. Using "max" applies
+ autorange only to set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed axis. Using
+ *max reversed* applies autorange only to set the maximum on a
+ reversed axis. Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
The 'autorange' property is an enumeration that may be specified as:
- One of the following enumeration values:
- [True, False, 'reversed']
+ [True, False, 'reversed', 'min reversed', 'max reversed',
+ 'min', 'max']
Returns
-------
@@ -113,6 +124,47 @@ def autorange(self):
def autorange(self, val):
self["autorange"] = val
+ # autorangeoptions
+ # ----------------
+ @property
+ def autorangeoptions(self):
+ """
+ The 'autorangeoptions' property is an instance of Autorangeoptions
+ that may be specified as:
+ - An instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions`
+ - A dict of string/value properties that will be passed
+ to the Autorangeoptions constructor
+
+ Supported dict properties:
+
+ clipmax
+ Clip autorange maximum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.maxallowed` is provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.minallowed` is provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud
+ for `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions
+ """
+ return self["autorangeoptions"]
+
+ @autorangeoptions.setter
+ def autorangeoptions(self, val):
+ self["autorangeoptions"] = val
+
# autotypenumbers
# ---------------
@property
@@ -639,6 +691,44 @@ def linewidth(self):
def linewidth(self, val):
self["linewidth"] = val
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Determines the maximum range of this axis.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Determines the minimum range of this axis.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
# minexponent
# -----------
@property
@@ -697,6 +787,8 @@ def range(self):
converted to strings. If the axis `type` is "category", it
should be numbers, using the scale where each category is
assigned a serial number from zero in the order it appears.
+ Leaving either or both elements `null` impacts the default
+ `autorange`.
The 'range' property is an info array that may be specified as:
@@ -1585,8 +1677,19 @@ def _prop_descriptions(self):
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.polar.radialaxis.Au
+ torangeoptions` instance or dict with compatible
+ properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -1701,6 +1804,10 @@ def _prop_descriptions(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -1721,7 +1828,8 @@ def _prop_descriptions(self):
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If *tozero*`, the range extends to 0, regardless of the
input data If "nonnegative", the range is non-negative,
@@ -1866,6 +1974,7 @@ def __init__(
arg=None,
angle=None,
autorange=None,
+ autorangeoptions=None,
autotypenumbers=None,
calendar=None,
categoryarray=None,
@@ -1882,6 +1991,8 @@ def __init__(
layer=None,
linecolor=None,
linewidth=None,
+ maxallowed=None,
+ minallowed=None,
minexponent=None,
nticks=None,
range=None,
@@ -1937,8 +2048,19 @@ def __init__(
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.polar.radialaxis.Au
+ torangeoptions` instance or dict with compatible
+ properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -2053,6 +2175,10 @@ def __init__(
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -2073,7 +2199,8 @@ def __init__(
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If *tozero*`, the range extends to 0, regardless of the
input data If "nonnegative", the range is non-negative,
@@ -2251,6 +2378,10 @@ def __init__(
_v = autorange if autorange is not None else _v
if _v is not None:
self["autorange"] = _v
+ _v = arg.pop("autorangeoptions", None)
+ _v = autorangeoptions if autorangeoptions is not None else _v
+ if _v is not None:
+ self["autorangeoptions"] = _v
_v = arg.pop("autotypenumbers", None)
_v = autotypenumbers if autotypenumbers is not None else _v
if _v is not None:
@@ -2315,6 +2446,14 @@ def __init__(
_v = linewidth if linewidth is not None else _v
if _v is not None:
self["linewidth"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
_v = arg.pop("minexponent", None)
_v = minexponent if minexponent is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/__init__.py b/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/__init__.py
index e20590b7143..7004d6695b3 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/__init__.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/__init__.py
@@ -2,6 +2,7 @@
from typing import TYPE_CHECKING
if sys.version_info < (3, 7) or TYPE_CHECKING:
+ from ._autorangeoptions import Autorangeoptions
from ._tickfont import Tickfont
from ._tickformatstop import Tickformatstop
from ._title import Title
@@ -12,5 +13,10 @@
__all__, __getattr__, __dir__ = relative_import(
__name__,
[".title"],
- ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"],
+ [
+ "._autorangeoptions.Autorangeoptions",
+ "._tickfont.Tickfont",
+ "._tickformatstop.Tickformatstop",
+ "._title.Title",
+ ],
)
diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py b/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py
new file mode 100644
index 00000000000..15276a0d8b3
--- /dev/null
+++ b/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py
@@ -0,0 +1,263 @@
+from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
+import copy as _copy
+
+
+class Autorangeoptions(_BaseLayoutHierarchyType):
+
+ # class properties
+ # --------------------
+ _parent_path_str = "layout.polar.radialaxis"
+ _path_str = "layout.polar.radialaxis.autorangeoptions"
+ _valid_props = {
+ "clipmax",
+ "clipmin",
+ "include",
+ "includesrc",
+ "maxallowed",
+ "minallowed",
+ }
+
+ # clipmax
+ # -------
+ @property
+ def clipmax(self):
+ """
+ Clip autorange maximum if it goes beyond this value. Has no
+ effect when `autorangeoptions.maxallowed` is provided.
+
+ The 'clipmax' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmax"]
+
+ @clipmax.setter
+ def clipmax(self, val):
+ self["clipmax"] = val
+
+ # clipmin
+ # -------
+ @property
+ def clipmin(self):
+ """
+ Clip autorange minimum if it goes beyond this value. Has no
+ effect when `autorangeoptions.minallowed` is provided.
+
+ The 'clipmin' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmin"]
+
+ @clipmin.setter
+ def clipmin(self, val):
+ self["clipmin"] = val
+
+ # include
+ # -------
+ @property
+ def include(self):
+ """
+ Ensure this value is included in autorange.
+
+ The 'include' property accepts values of any type
+
+ Returns
+ -------
+ Any|numpy.ndarray
+ """
+ return self["include"]
+
+ @include.setter
+ def include(self, val):
+ self["include"] = val
+
+ # includesrc
+ # ----------
+ @property
+ def includesrc(self):
+ """
+ Sets the source reference on Chart Studio Cloud for `include`.
+
+ The 'includesrc' property must be specified as a string or
+ as a plotly.grid_objs.Column object
+
+ Returns
+ -------
+ str
+ """
+ return self["includesrc"]
+
+ @includesrc.setter
+ def includesrc(self, val):
+ self["includesrc"] = val
+
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Use this value exactly as autorange maximum.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Use this value exactly as autorange minimum.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
+ # Self properties description
+ # ---------------------------
+ @property
+ def _prop_descriptions(self):
+ return """\
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+ """
+
+ def __init__(
+ self,
+ arg=None,
+ clipmax=None,
+ clipmin=None,
+ include=None,
+ includesrc=None,
+ maxallowed=None,
+ minallowed=None,
+ **kwargs,
+ ):
+ """
+ Construct a new Autorangeoptions object
+
+ Parameters
+ ----------
+ arg
+ dict of properties compatible with this constructor or
+ an instance of :class:`plotly.graph_objs.layout.polar.r
+ adialaxis.Autorangeoptions`
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ Autorangeoptions
+ """
+ super(Autorangeoptions, self).__init__("autorangeoptions")
+
+ if "_parent" in kwargs:
+ self._parent = kwargs["_parent"]
+ return
+
+ # 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.polar.radialaxis.Autorangeoptions
+constructor must be a dict or
+an instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions`"""
+ )
+
+ # Handle skip_invalid
+ # -------------------
+ self._skip_invalid = kwargs.pop("skip_invalid", False)
+ self._validate = kwargs.pop("_validate", True)
+
+ # Populate data dict with properties
+ # ----------------------------------
+ _v = arg.pop("clipmax", None)
+ _v = clipmax if clipmax is not None else _v
+ if _v is not None:
+ self["clipmax"] = _v
+ _v = arg.pop("clipmin", None)
+ _v = clipmin if clipmin is not None else _v
+ if _v is not None:
+ self["clipmin"] = _v
+ _v = arg.pop("include", None)
+ _v = include if include is not None else _v
+ if _v is not None:
+ self["include"] = _v
+ _v = arg.pop("includesrc", None)
+ _v = includesrc if includesrc is not None else _v
+ if _v is not None:
+ self["includesrc"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
+
+ # Process unknown kwargs
+ # ----------------------
+ self._process_kwargs(**dict(arg, **kwargs))
+
+ # Reset skip_invalid
+ # ------------------
+ self._skip_invalid = False
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_xaxis.py b/packages/python/plotly/plotly/graph_objs/layout/scene/_xaxis.py
index 7154233afa5..0630364dcab 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/scene/_xaxis.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/_xaxis.py
@@ -10,6 +10,7 @@ class XAxis(_BaseLayoutHierarchyType):
_path_str = "layout.scene.xaxis"
_valid_props = {
"autorange",
+ "autorangeoptions",
"autotypenumbers",
"backgroundcolor",
"calendar",
@@ -25,6 +26,8 @@ class XAxis(_BaseLayoutHierarchyType):
"labelalias",
"linecolor",
"linewidth",
+ "maxallowed",
+ "minallowed",
"minexponent",
"mirror",
"nticks",
@@ -76,11 +79,19 @@ def autorange(self):
"""
Determines whether or not the range of this axis is computed in
relation to the input data. See `rangemode` for more info. If
- `range` is provided, then `autorange` is set to False.
+ `range` is provided and it has a value for both the lower and
+ upper bound, `autorange` is set to False. Using "min" applies
+ autorange only to set the minimum. Using "max" applies
+ autorange only to set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed axis. Using
+ *max reversed* applies autorange only to set the maximum on a
+ reversed axis. Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
The 'autorange' property is an enumeration that may be specified as:
- One of the following enumeration values:
- [True, False, 'reversed']
+ [True, False, 'reversed', 'min reversed', 'max reversed',
+ 'min', 'max']
Returns
-------
@@ -92,6 +103,47 @@ def autorange(self):
def autorange(self, val):
self["autorange"] = val
+ # autorangeoptions
+ # ----------------
+ @property
+ def autorangeoptions(self):
+ """
+ The 'autorangeoptions' property is an instance of Autorangeoptions
+ that may be specified as:
+ - An instance of :class:`plotly.graph_objs.layout.scene.xaxis.Autorangeoptions`
+ - A dict of string/value properties that will be passed
+ to the Autorangeoptions constructor
+
+ Supported dict properties:
+
+ clipmax
+ Clip autorange maximum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.maxallowed` is provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.minallowed` is provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud
+ for `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ plotly.graph_objs.layout.scene.xaxis.Autorangeoptions
+ """
+ return self["autorangeoptions"]
+
+ @autorangeoptions.setter
+ def autorangeoptions(self, val):
+ self["autorangeoptions"] = val
+
# autotypenumbers
# ---------------
@property
@@ -625,6 +677,44 @@ def linewidth(self):
def linewidth(self, val):
self["linewidth"] = val
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Determines the maximum range of this axis.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Determines the minimum range of this axis.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
# minexponent
# -----------
@property
@@ -709,6 +799,8 @@ def range(self):
converted to strings. If the axis `type` is "category", it
should be numbers, using the scale where each category is
assigned a serial number from zero in the order it appears.
+ Leaving either or both elements `null` impacts the default
+ `autorange`.
The 'range' property is an info array that may be specified as:
@@ -1784,8 +1876,18 @@ def _prop_descriptions(self):
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.xaxis.Autoran
+ geoptions` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -1889,6 +1991,10 @@ def _prop_descriptions(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -1917,7 +2023,8 @@ def _prop_descriptions(self):
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If "normal", the range is computed in relation to the
extrema of the input data. If *tozero*`, the range
@@ -2069,6 +2176,7 @@ def __init__(
self,
arg=None,
autorange=None,
+ autorangeoptions=None,
autotypenumbers=None,
backgroundcolor=None,
calendar=None,
@@ -2084,6 +2192,8 @@ def __init__(
labelalias=None,
linecolor=None,
linewidth=None,
+ maxallowed=None,
+ minallowed=None,
minexponent=None,
mirror=None,
nticks=None,
@@ -2140,8 +2250,18 @@ def __init__(
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.xaxis.Autoran
+ geoptions` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -2245,6 +2365,10 @@ def __init__(
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -2273,7 +2397,8 @@ def __init__(
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If "normal", the range is computed in relation to the
extrema of the input data. If *tozero*`, the range
@@ -2455,6 +2580,10 @@ def __init__(
_v = autorange if autorange is not None else _v
if _v is not None:
self["autorange"] = _v
+ _v = arg.pop("autorangeoptions", None)
+ _v = autorangeoptions if autorangeoptions is not None else _v
+ if _v is not None:
+ self["autorangeoptions"] = _v
_v = arg.pop("autotypenumbers", None)
_v = autotypenumbers if autotypenumbers is not None else _v
if _v is not None:
@@ -2515,6 +2644,14 @@ def __init__(
_v = linewidth if linewidth is not None else _v
if _v is not None:
self["linewidth"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
_v = arg.pop("minexponent", None)
_v = minexponent if minexponent is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_yaxis.py b/packages/python/plotly/plotly/graph_objs/layout/scene/_yaxis.py
index e9d4c649668..2f729166f37 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/scene/_yaxis.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/_yaxis.py
@@ -10,6 +10,7 @@ class YAxis(_BaseLayoutHierarchyType):
_path_str = "layout.scene.yaxis"
_valid_props = {
"autorange",
+ "autorangeoptions",
"autotypenumbers",
"backgroundcolor",
"calendar",
@@ -25,6 +26,8 @@ class YAxis(_BaseLayoutHierarchyType):
"labelalias",
"linecolor",
"linewidth",
+ "maxallowed",
+ "minallowed",
"minexponent",
"mirror",
"nticks",
@@ -76,11 +79,19 @@ def autorange(self):
"""
Determines whether or not the range of this axis is computed in
relation to the input data. See `rangemode` for more info. If
- `range` is provided, then `autorange` is set to False.
+ `range` is provided and it has a value for both the lower and
+ upper bound, `autorange` is set to False. Using "min" applies
+ autorange only to set the minimum. Using "max" applies
+ autorange only to set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed axis. Using
+ *max reversed* applies autorange only to set the maximum on a
+ reversed axis. Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
The 'autorange' property is an enumeration that may be specified as:
- One of the following enumeration values:
- [True, False, 'reversed']
+ [True, False, 'reversed', 'min reversed', 'max reversed',
+ 'min', 'max']
Returns
-------
@@ -92,6 +103,47 @@ def autorange(self):
def autorange(self, val):
self["autorange"] = val
+ # autorangeoptions
+ # ----------------
+ @property
+ def autorangeoptions(self):
+ """
+ The 'autorangeoptions' property is an instance of Autorangeoptions
+ that may be specified as:
+ - An instance of :class:`plotly.graph_objs.layout.scene.yaxis.Autorangeoptions`
+ - A dict of string/value properties that will be passed
+ to the Autorangeoptions constructor
+
+ Supported dict properties:
+
+ clipmax
+ Clip autorange maximum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.maxallowed` is provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.minallowed` is provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud
+ for `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ plotly.graph_objs.layout.scene.yaxis.Autorangeoptions
+ """
+ return self["autorangeoptions"]
+
+ @autorangeoptions.setter
+ def autorangeoptions(self, val):
+ self["autorangeoptions"] = val
+
# autotypenumbers
# ---------------
@property
@@ -625,6 +677,44 @@ def linewidth(self):
def linewidth(self, val):
self["linewidth"] = val
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Determines the maximum range of this axis.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Determines the minimum range of this axis.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
# minexponent
# -----------
@property
@@ -709,6 +799,8 @@ def range(self):
converted to strings. If the axis `type` is "category", it
should be numbers, using the scale where each category is
assigned a serial number from zero in the order it appears.
+ Leaving either or both elements `null` impacts the default
+ `autorange`.
The 'range' property is an info array that may be specified as:
@@ -1784,8 +1876,18 @@ def _prop_descriptions(self):
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.yaxis.Autoran
+ geoptions` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -1889,6 +1991,10 @@ def _prop_descriptions(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -1917,7 +2023,8 @@ def _prop_descriptions(self):
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If "normal", the range is computed in relation to the
extrema of the input data. If *tozero*`, the range
@@ -2069,6 +2176,7 @@ def __init__(
self,
arg=None,
autorange=None,
+ autorangeoptions=None,
autotypenumbers=None,
backgroundcolor=None,
calendar=None,
@@ -2084,6 +2192,8 @@ def __init__(
labelalias=None,
linecolor=None,
linewidth=None,
+ maxallowed=None,
+ minallowed=None,
minexponent=None,
mirror=None,
nticks=None,
@@ -2140,8 +2250,18 @@ def __init__(
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.yaxis.Autoran
+ geoptions` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -2245,6 +2365,10 @@ def __init__(
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -2273,7 +2397,8 @@ def __init__(
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If "normal", the range is computed in relation to the
extrema of the input data. If *tozero*`, the range
@@ -2455,6 +2580,10 @@ def __init__(
_v = autorange if autorange is not None else _v
if _v is not None:
self["autorange"] = _v
+ _v = arg.pop("autorangeoptions", None)
+ _v = autorangeoptions if autorangeoptions is not None else _v
+ if _v is not None:
+ self["autorangeoptions"] = _v
_v = arg.pop("autotypenumbers", None)
_v = autotypenumbers if autotypenumbers is not None else _v
if _v is not None:
@@ -2515,6 +2644,14 @@ def __init__(
_v = linewidth if linewidth is not None else _v
if _v is not None:
self["linewidth"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
_v = arg.pop("minexponent", None)
_v = minexponent if minexponent is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_zaxis.py b/packages/python/plotly/plotly/graph_objs/layout/scene/_zaxis.py
index 2f40f3cee48..9d8ae837225 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/scene/_zaxis.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/_zaxis.py
@@ -10,6 +10,7 @@ class ZAxis(_BaseLayoutHierarchyType):
_path_str = "layout.scene.zaxis"
_valid_props = {
"autorange",
+ "autorangeoptions",
"autotypenumbers",
"backgroundcolor",
"calendar",
@@ -25,6 +26,8 @@ class ZAxis(_BaseLayoutHierarchyType):
"labelalias",
"linecolor",
"linewidth",
+ "maxallowed",
+ "minallowed",
"minexponent",
"mirror",
"nticks",
@@ -76,11 +79,19 @@ def autorange(self):
"""
Determines whether or not the range of this axis is computed in
relation to the input data. See `rangemode` for more info. If
- `range` is provided, then `autorange` is set to False.
+ `range` is provided and it has a value for both the lower and
+ upper bound, `autorange` is set to False. Using "min" applies
+ autorange only to set the minimum. Using "max" applies
+ autorange only to set the maximum. Using *min reversed* applies
+ autorange only to set the minimum on a reversed axis. Using
+ *max reversed* applies autorange only to set the maximum on a
+ reversed axis. Using "reversed" applies autorange on both ends
+ and reverses the axis direction.
The 'autorange' property is an enumeration that may be specified as:
- One of the following enumeration values:
- [True, False, 'reversed']
+ [True, False, 'reversed', 'min reversed', 'max reversed',
+ 'min', 'max']
Returns
-------
@@ -92,6 +103,47 @@ def autorange(self):
def autorange(self, val):
self["autorange"] = val
+ # autorangeoptions
+ # ----------------
+ @property
+ def autorangeoptions(self):
+ """
+ The 'autorangeoptions' property is an instance of Autorangeoptions
+ that may be specified as:
+ - An instance of :class:`plotly.graph_objs.layout.scene.zaxis.Autorangeoptions`
+ - A dict of string/value properties that will be passed
+ to the Autorangeoptions constructor
+
+ Supported dict properties:
+
+ clipmax
+ Clip autorange maximum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.maxallowed` is provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this
+ value. Has no effect when
+ `autorangeoptions.minallowed` is provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud
+ for `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ plotly.graph_objs.layout.scene.zaxis.Autorangeoptions
+ """
+ return self["autorangeoptions"]
+
+ @autorangeoptions.setter
+ def autorangeoptions(self, val):
+ self["autorangeoptions"] = val
+
# autotypenumbers
# ---------------
@property
@@ -625,6 +677,44 @@ def linewidth(self):
def linewidth(self, val):
self["linewidth"] = val
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Determines the maximum range of this axis.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Determines the minimum range of this axis.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
# minexponent
# -----------
@property
@@ -709,6 +799,8 @@ def range(self):
converted to strings. If the axis `type` is "category", it
should be numbers, using the scale where each category is
assigned a serial number from zero in the order it appears.
+ Leaving either or both elements `null` impacts the default
+ `autorange`.
The 'range' property is an info array that may be specified as:
@@ -1784,8 +1876,18 @@ def _prop_descriptions(self):
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.zaxis.Autoran
+ geoptions` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -1889,6 +1991,10 @@ def _prop_descriptions(self):
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -1917,7 +2023,8 @@ def _prop_descriptions(self):
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If "normal", the range is computed in relation to the
extrema of the input data. If *tozero*`, the range
@@ -2069,6 +2176,7 @@ def __init__(
self,
arg=None,
autorange=None,
+ autorangeoptions=None,
autotypenumbers=None,
backgroundcolor=None,
calendar=None,
@@ -2084,6 +2192,8 @@ def __init__(
labelalias=None,
linecolor=None,
linewidth=None,
+ maxallowed=None,
+ minallowed=None,
minexponent=None,
mirror=None,
nticks=None,
@@ -2140,8 +2250,18 @@ def __init__(
autorange
Determines whether or not the range of this axis is
computed in relation to the input data. See `rangemode`
- for more info. If `range` is provided, then `autorange`
- is set to False.
+ for more info. If `range` is provided and it has a
+ value for both the lower and upper bound, `autorange`
+ is set to False. Using "min" applies autorange only to
+ set the minimum. Using "max" applies autorange only to
+ set the maximum. Using *min reversed* applies autorange
+ only to set the minimum on a reversed axis. Using *max
+ reversed* applies autorange only to set the maximum on
+ a reversed axis. Using "reversed" applies autorange on
+ both ends and reverses the axis direction.
+ autorangeoptions
+ :class:`plotly.graph_objects.layout.scene.zaxis.Autoran
+ geoptions` instance or dict with compatible properties
autotypenumbers
Using "strict" a numeric string in trace data is not
converted to a number. Using *convert types* a numeric
@@ -2245,6 +2365,10 @@ def __init__(
Sets the axis line color.
linewidth
Sets the width (in px) of the axis line.
+ maxallowed
+ Determines the maximum range of this axis.
+ minallowed
+ Determines the minimum range of this axis.
minexponent
Hide SI prefix for 10^n if |n| is below this number.
This only has an effect when `tickformat` is "SI" or
@@ -2273,7 +2397,8 @@ def __init__(
strings. If the axis `type` is "category", it should be
numbers, using the scale where each category is
assigned a serial number from zero in the order it
- appears.
+ appears. Leaving either or both elements `null` impacts
+ the default `autorange`.
rangemode
If "normal", the range is computed in relation to the
extrema of the input data. If *tozero*`, the range
@@ -2455,6 +2580,10 @@ def __init__(
_v = autorange if autorange is not None else _v
if _v is not None:
self["autorange"] = _v
+ _v = arg.pop("autorangeoptions", None)
+ _v = autorangeoptions if autorangeoptions is not None else _v
+ if _v is not None:
+ self["autorangeoptions"] = _v
_v = arg.pop("autotypenumbers", None)
_v = autotypenumbers if autotypenumbers is not None else _v
if _v is not None:
@@ -2515,6 +2644,14 @@ def __init__(
_v = linewidth if linewidth is not None else _v
if _v is not None:
self["linewidth"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
_v = arg.pop("minexponent", None)
_v = minexponent if minexponent is not None else _v
if _v is not None:
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/__init__.py b/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/__init__.py
index e20590b7143..7004d6695b3 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/__init__.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/__init__.py
@@ -2,6 +2,7 @@
from typing import TYPE_CHECKING
if sys.version_info < (3, 7) or TYPE_CHECKING:
+ from ._autorangeoptions import Autorangeoptions
from ._tickfont import Tickfont
from ._tickformatstop import Tickformatstop
from ._title import Title
@@ -12,5 +13,10 @@
__all__, __getattr__, __dir__ = relative_import(
__name__,
[".title"],
- ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"],
+ [
+ "._autorangeoptions.Autorangeoptions",
+ "._tickfont.Tickfont",
+ "._tickformatstop.Tickformatstop",
+ "._title.Title",
+ ],
)
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py b/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py
new file mode 100644
index 00000000000..5513d919089
--- /dev/null
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py
@@ -0,0 +1,263 @@
+from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
+import copy as _copy
+
+
+class Autorangeoptions(_BaseLayoutHierarchyType):
+
+ # class properties
+ # --------------------
+ _parent_path_str = "layout.scene.xaxis"
+ _path_str = "layout.scene.xaxis.autorangeoptions"
+ _valid_props = {
+ "clipmax",
+ "clipmin",
+ "include",
+ "includesrc",
+ "maxallowed",
+ "minallowed",
+ }
+
+ # clipmax
+ # -------
+ @property
+ def clipmax(self):
+ """
+ Clip autorange maximum if it goes beyond this value. Has no
+ effect when `autorangeoptions.maxallowed` is provided.
+
+ The 'clipmax' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmax"]
+
+ @clipmax.setter
+ def clipmax(self, val):
+ self["clipmax"] = val
+
+ # clipmin
+ # -------
+ @property
+ def clipmin(self):
+ """
+ Clip autorange minimum if it goes beyond this value. Has no
+ effect when `autorangeoptions.minallowed` is provided.
+
+ The 'clipmin' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmin"]
+
+ @clipmin.setter
+ def clipmin(self, val):
+ self["clipmin"] = val
+
+ # include
+ # -------
+ @property
+ def include(self):
+ """
+ Ensure this value is included in autorange.
+
+ The 'include' property accepts values of any type
+
+ Returns
+ -------
+ Any|numpy.ndarray
+ """
+ return self["include"]
+
+ @include.setter
+ def include(self, val):
+ self["include"] = val
+
+ # includesrc
+ # ----------
+ @property
+ def includesrc(self):
+ """
+ Sets the source reference on Chart Studio Cloud for `include`.
+
+ The 'includesrc' property must be specified as a string or
+ as a plotly.grid_objs.Column object
+
+ Returns
+ -------
+ str
+ """
+ return self["includesrc"]
+
+ @includesrc.setter
+ def includesrc(self, val):
+ self["includesrc"] = val
+
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Use this value exactly as autorange maximum.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Use this value exactly as autorange minimum.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
+ # Self properties description
+ # ---------------------------
+ @property
+ def _prop_descriptions(self):
+ return """\
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+ """
+
+ def __init__(
+ self,
+ arg=None,
+ clipmax=None,
+ clipmin=None,
+ include=None,
+ includesrc=None,
+ maxallowed=None,
+ minallowed=None,
+ **kwargs,
+ ):
+ """
+ Construct a new Autorangeoptions object
+
+ Parameters
+ ----------
+ arg
+ dict of properties compatible with this constructor or
+ an instance of :class:`plotly.graph_objs.layout.scene.x
+ axis.Autorangeoptions`
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ Autorangeoptions
+ """
+ super(Autorangeoptions, self).__init__("autorangeoptions")
+
+ if "_parent" in kwargs:
+ self._parent = kwargs["_parent"]
+ return
+
+ # 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.scene.xaxis.Autorangeoptions
+constructor must be a dict or
+an instance of :class:`plotly.graph_objs.layout.scene.xaxis.Autorangeoptions`"""
+ )
+
+ # Handle skip_invalid
+ # -------------------
+ self._skip_invalid = kwargs.pop("skip_invalid", False)
+ self._validate = kwargs.pop("_validate", True)
+
+ # Populate data dict with properties
+ # ----------------------------------
+ _v = arg.pop("clipmax", None)
+ _v = clipmax if clipmax is not None else _v
+ if _v is not None:
+ self["clipmax"] = _v
+ _v = arg.pop("clipmin", None)
+ _v = clipmin if clipmin is not None else _v
+ if _v is not None:
+ self["clipmin"] = _v
+ _v = arg.pop("include", None)
+ _v = include if include is not None else _v
+ if _v is not None:
+ self["include"] = _v
+ _v = arg.pop("includesrc", None)
+ _v = includesrc if includesrc is not None else _v
+ if _v is not None:
+ self["includesrc"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
+
+ # Process unknown kwargs
+ # ----------------------
+ self._process_kwargs(**dict(arg, **kwargs))
+
+ # Reset skip_invalid
+ # ------------------
+ self._skip_invalid = False
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/__init__.py b/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/__init__.py
index e20590b7143..7004d6695b3 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/__init__.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/__init__.py
@@ -2,6 +2,7 @@
from typing import TYPE_CHECKING
if sys.version_info < (3, 7) or TYPE_CHECKING:
+ from ._autorangeoptions import Autorangeoptions
from ._tickfont import Tickfont
from ._tickformatstop import Tickformatstop
from ._title import Title
@@ -12,5 +13,10 @@
__all__, __getattr__, __dir__ = relative_import(
__name__,
[".title"],
- ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"],
+ [
+ "._autorangeoptions.Autorangeoptions",
+ "._tickfont.Tickfont",
+ "._tickformatstop.Tickformatstop",
+ "._title.Title",
+ ],
)
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py b/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py
new file mode 100644
index 00000000000..51f99b2c27e
--- /dev/null
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py
@@ -0,0 +1,263 @@
+from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
+import copy as _copy
+
+
+class Autorangeoptions(_BaseLayoutHierarchyType):
+
+ # class properties
+ # --------------------
+ _parent_path_str = "layout.scene.yaxis"
+ _path_str = "layout.scene.yaxis.autorangeoptions"
+ _valid_props = {
+ "clipmax",
+ "clipmin",
+ "include",
+ "includesrc",
+ "maxallowed",
+ "minallowed",
+ }
+
+ # clipmax
+ # -------
+ @property
+ def clipmax(self):
+ """
+ Clip autorange maximum if it goes beyond this value. Has no
+ effect when `autorangeoptions.maxallowed` is provided.
+
+ The 'clipmax' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmax"]
+
+ @clipmax.setter
+ def clipmax(self, val):
+ self["clipmax"] = val
+
+ # clipmin
+ # -------
+ @property
+ def clipmin(self):
+ """
+ Clip autorange minimum if it goes beyond this value. Has no
+ effect when `autorangeoptions.minallowed` is provided.
+
+ The 'clipmin' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmin"]
+
+ @clipmin.setter
+ def clipmin(self, val):
+ self["clipmin"] = val
+
+ # include
+ # -------
+ @property
+ def include(self):
+ """
+ Ensure this value is included in autorange.
+
+ The 'include' property accepts values of any type
+
+ Returns
+ -------
+ Any|numpy.ndarray
+ """
+ return self["include"]
+
+ @include.setter
+ def include(self, val):
+ self["include"] = val
+
+ # includesrc
+ # ----------
+ @property
+ def includesrc(self):
+ """
+ Sets the source reference on Chart Studio Cloud for `include`.
+
+ The 'includesrc' property must be specified as a string or
+ as a plotly.grid_objs.Column object
+
+ Returns
+ -------
+ str
+ """
+ return self["includesrc"]
+
+ @includesrc.setter
+ def includesrc(self, val):
+ self["includesrc"] = val
+
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Use this value exactly as autorange maximum.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Use this value exactly as autorange minimum.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
+ # Self properties description
+ # ---------------------------
+ @property
+ def _prop_descriptions(self):
+ return """\
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+ """
+
+ def __init__(
+ self,
+ arg=None,
+ clipmax=None,
+ clipmin=None,
+ include=None,
+ includesrc=None,
+ maxallowed=None,
+ minallowed=None,
+ **kwargs,
+ ):
+ """
+ Construct a new Autorangeoptions object
+
+ Parameters
+ ----------
+ arg
+ dict of properties compatible with this constructor or
+ an instance of :class:`plotly.graph_objs.layout.scene.y
+ axis.Autorangeoptions`
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ Autorangeoptions
+ """
+ super(Autorangeoptions, self).__init__("autorangeoptions")
+
+ if "_parent" in kwargs:
+ self._parent = kwargs["_parent"]
+ return
+
+ # 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.scene.yaxis.Autorangeoptions
+constructor must be a dict or
+an instance of :class:`plotly.graph_objs.layout.scene.yaxis.Autorangeoptions`"""
+ )
+
+ # Handle skip_invalid
+ # -------------------
+ self._skip_invalid = kwargs.pop("skip_invalid", False)
+ self._validate = kwargs.pop("_validate", True)
+
+ # Populate data dict with properties
+ # ----------------------------------
+ _v = arg.pop("clipmax", None)
+ _v = clipmax if clipmax is not None else _v
+ if _v is not None:
+ self["clipmax"] = _v
+ _v = arg.pop("clipmin", None)
+ _v = clipmin if clipmin is not None else _v
+ if _v is not None:
+ self["clipmin"] = _v
+ _v = arg.pop("include", None)
+ _v = include if include is not None else _v
+ if _v is not None:
+ self["include"] = _v
+ _v = arg.pop("includesrc", None)
+ _v = includesrc if includesrc is not None else _v
+ if _v is not None:
+ self["includesrc"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
+
+ # Process unknown kwargs
+ # ----------------------
+ self._process_kwargs(**dict(arg, **kwargs))
+
+ # Reset skip_invalid
+ # ------------------
+ self._skip_invalid = False
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/__init__.py b/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/__init__.py
index e20590b7143..7004d6695b3 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/__init__.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/__init__.py
@@ -2,6 +2,7 @@
from typing import TYPE_CHECKING
if sys.version_info < (3, 7) or TYPE_CHECKING:
+ from ._autorangeoptions import Autorangeoptions
from ._tickfont import Tickfont
from ._tickformatstop import Tickformatstop
from ._title import Title
@@ -12,5 +13,10 @@
__all__, __getattr__, __dir__ = relative_import(
__name__,
[".title"],
- ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"],
+ [
+ "._autorangeoptions.Autorangeoptions",
+ "._tickfont.Tickfont",
+ "._tickformatstop.Tickformatstop",
+ "._title.Title",
+ ],
)
diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py b/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py
new file mode 100644
index 00000000000..64a49fbb7ea
--- /dev/null
+++ b/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py
@@ -0,0 +1,263 @@
+from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
+import copy as _copy
+
+
+class Autorangeoptions(_BaseLayoutHierarchyType):
+
+ # class properties
+ # --------------------
+ _parent_path_str = "layout.scene.zaxis"
+ _path_str = "layout.scene.zaxis.autorangeoptions"
+ _valid_props = {
+ "clipmax",
+ "clipmin",
+ "include",
+ "includesrc",
+ "maxallowed",
+ "minallowed",
+ }
+
+ # clipmax
+ # -------
+ @property
+ def clipmax(self):
+ """
+ Clip autorange maximum if it goes beyond this value. Has no
+ effect when `autorangeoptions.maxallowed` is provided.
+
+ The 'clipmax' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmax"]
+
+ @clipmax.setter
+ def clipmax(self, val):
+ self["clipmax"] = val
+
+ # clipmin
+ # -------
+ @property
+ def clipmin(self):
+ """
+ Clip autorange minimum if it goes beyond this value. Has no
+ effect when `autorangeoptions.minallowed` is provided.
+
+ The 'clipmin' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmin"]
+
+ @clipmin.setter
+ def clipmin(self, val):
+ self["clipmin"] = val
+
+ # include
+ # -------
+ @property
+ def include(self):
+ """
+ Ensure this value is included in autorange.
+
+ The 'include' property accepts values of any type
+
+ Returns
+ -------
+ Any|numpy.ndarray
+ """
+ return self["include"]
+
+ @include.setter
+ def include(self, val):
+ self["include"] = val
+
+ # includesrc
+ # ----------
+ @property
+ def includesrc(self):
+ """
+ Sets the source reference on Chart Studio Cloud for `include`.
+
+ The 'includesrc' property must be specified as a string or
+ as a plotly.grid_objs.Column object
+
+ Returns
+ -------
+ str
+ """
+ return self["includesrc"]
+
+ @includesrc.setter
+ def includesrc(self, val):
+ self["includesrc"] = val
+
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Use this value exactly as autorange maximum.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Use this value exactly as autorange minimum.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
+ # Self properties description
+ # ---------------------------
+ @property
+ def _prop_descriptions(self):
+ return """\
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+ """
+
+ def __init__(
+ self,
+ arg=None,
+ clipmax=None,
+ clipmin=None,
+ include=None,
+ includesrc=None,
+ maxallowed=None,
+ minallowed=None,
+ **kwargs,
+ ):
+ """
+ Construct a new Autorangeoptions object
+
+ Parameters
+ ----------
+ arg
+ dict of properties compatible with this constructor or
+ an instance of :class:`plotly.graph_objs.layout.scene.z
+ axis.Autorangeoptions`
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ Autorangeoptions
+ """
+ super(Autorangeoptions, self).__init__("autorangeoptions")
+
+ if "_parent" in kwargs:
+ self._parent = kwargs["_parent"]
+ return
+
+ # 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.scene.zaxis.Autorangeoptions
+constructor must be a dict or
+an instance of :class:`plotly.graph_objs.layout.scene.zaxis.Autorangeoptions`"""
+ )
+
+ # Handle skip_invalid
+ # -------------------
+ self._skip_invalid = kwargs.pop("skip_invalid", False)
+ self._validate = kwargs.pop("_validate", True)
+
+ # Populate data dict with properties
+ # ----------------------------------
+ _v = arg.pop("clipmax", None)
+ _v = clipmax if clipmax is not None else _v
+ if _v is not None:
+ self["clipmax"] = _v
+ _v = arg.pop("clipmin", None)
+ _v = clipmin if clipmin is not None else _v
+ if _v is not None:
+ self["clipmin"] = _v
+ _v = arg.pop("include", None)
+ _v = include if include is not None else _v
+ if _v is not None:
+ self["include"] = _v
+ _v = arg.pop("includesrc", None)
+ _v = includesrc if includesrc is not None else _v
+ if _v is not None:
+ self["includesrc"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
+
+ # Process unknown kwargs
+ # ----------------------
+ self._process_kwargs(**dict(arg, **kwargs))
+
+ # Reset skip_invalid
+ # ------------------
+ self._skip_invalid = False
diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/__init__.py b/packages/python/plotly/plotly/graph_objs/layout/xaxis/__init__.py
index 0aa4d1c8a74..ebf011b8b6c 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/xaxis/__init__.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/xaxis/__init__.py
@@ -2,6 +2,7 @@
from typing import TYPE_CHECKING
if sys.version_info < (3, 7) or TYPE_CHECKING:
+ from ._autorangeoptions import Autorangeoptions
from ._minor import Minor
from ._rangebreak import Rangebreak
from ._rangeselector import Rangeselector
@@ -19,6 +20,7 @@
__name__,
[".rangeselector", ".rangeslider", ".title"],
[
+ "._autorangeoptions.Autorangeoptions",
"._minor.Minor",
"._rangebreak.Rangebreak",
"._rangeselector.Rangeselector",
diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_autorangeoptions.py b/packages/python/plotly/plotly/graph_objs/layout/xaxis/_autorangeoptions.py
new file mode 100644
index 00000000000..81df0b01e4a
--- /dev/null
+++ b/packages/python/plotly/plotly/graph_objs/layout/xaxis/_autorangeoptions.py
@@ -0,0 +1,263 @@
+from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
+import copy as _copy
+
+
+class Autorangeoptions(_BaseLayoutHierarchyType):
+
+ # class properties
+ # --------------------
+ _parent_path_str = "layout.xaxis"
+ _path_str = "layout.xaxis.autorangeoptions"
+ _valid_props = {
+ "clipmax",
+ "clipmin",
+ "include",
+ "includesrc",
+ "maxallowed",
+ "minallowed",
+ }
+
+ # clipmax
+ # -------
+ @property
+ def clipmax(self):
+ """
+ Clip autorange maximum if it goes beyond this value. Has no
+ effect when `autorangeoptions.maxallowed` is provided.
+
+ The 'clipmax' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmax"]
+
+ @clipmax.setter
+ def clipmax(self, val):
+ self["clipmax"] = val
+
+ # clipmin
+ # -------
+ @property
+ def clipmin(self):
+ """
+ Clip autorange minimum if it goes beyond this value. Has no
+ effect when `autorangeoptions.minallowed` is provided.
+
+ The 'clipmin' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmin"]
+
+ @clipmin.setter
+ def clipmin(self, val):
+ self["clipmin"] = val
+
+ # include
+ # -------
+ @property
+ def include(self):
+ """
+ Ensure this value is included in autorange.
+
+ The 'include' property accepts values of any type
+
+ Returns
+ -------
+ Any|numpy.ndarray
+ """
+ return self["include"]
+
+ @include.setter
+ def include(self, val):
+ self["include"] = val
+
+ # includesrc
+ # ----------
+ @property
+ def includesrc(self):
+ """
+ Sets the source reference on Chart Studio Cloud for `include`.
+
+ The 'includesrc' property must be specified as a string or
+ as a plotly.grid_objs.Column object
+
+ Returns
+ -------
+ str
+ """
+ return self["includesrc"]
+
+ @includesrc.setter
+ def includesrc(self, val):
+ self["includesrc"] = val
+
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Use this value exactly as autorange maximum.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Use this value exactly as autorange minimum.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
+ # Self properties description
+ # ---------------------------
+ @property
+ def _prop_descriptions(self):
+ return """\
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+ """
+
+ def __init__(
+ self,
+ arg=None,
+ clipmax=None,
+ clipmin=None,
+ include=None,
+ includesrc=None,
+ maxallowed=None,
+ minallowed=None,
+ **kwargs,
+ ):
+ """
+ Construct a new Autorangeoptions object
+
+ Parameters
+ ----------
+ arg
+ dict of properties compatible with this constructor or
+ an instance of :class:`plotly.graph_objs.layout.xaxis.A
+ utorangeoptions`
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ Autorangeoptions
+ """
+ super(Autorangeoptions, self).__init__("autorangeoptions")
+
+ if "_parent" in kwargs:
+ self._parent = kwargs["_parent"]
+ return
+
+ # 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.xaxis.Autorangeoptions
+constructor must be a dict or
+an instance of :class:`plotly.graph_objs.layout.xaxis.Autorangeoptions`"""
+ )
+
+ # Handle skip_invalid
+ # -------------------
+ self._skip_invalid = kwargs.pop("skip_invalid", False)
+ self._validate = kwargs.pop("_validate", True)
+
+ # Populate data dict with properties
+ # ----------------------------------
+ _v = arg.pop("clipmax", None)
+ _v = clipmax if clipmax is not None else _v
+ if _v is not None:
+ self["clipmax"] = _v
+ _v = arg.pop("clipmin", None)
+ _v = clipmin if clipmin is not None else _v
+ if _v is not None:
+ self["clipmin"] = _v
+ _v = arg.pop("include", None)
+ _v = include if include is not None else _v
+ if _v is not None:
+ self["include"] = _v
+ _v = arg.pop("includesrc", None)
+ _v = includesrc if includesrc is not None else _v
+ if _v is not None:
+ self["includesrc"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
+
+ # Process unknown kwargs
+ # ----------------------
+ self._process_kwargs(**dict(arg, **kwargs))
+
+ # Reset skip_invalid
+ # ------------------
+ self._skip_invalid = False
diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/__init__.py b/packages/python/plotly/plotly/graph_objs/layout/yaxis/__init__.py
index dfebd2f6cae..0772a2b9bc8 100644
--- a/packages/python/plotly/plotly/graph_objs/layout/yaxis/__init__.py
+++ b/packages/python/plotly/plotly/graph_objs/layout/yaxis/__init__.py
@@ -2,6 +2,7 @@
from typing import TYPE_CHECKING
if sys.version_info < (3, 7) or TYPE_CHECKING:
+ from ._autorangeoptions import Autorangeoptions
from ._minor import Minor
from ._rangebreak import Rangebreak
from ._tickfont import Tickfont
@@ -15,6 +16,7 @@
__name__,
[".title"],
[
+ "._autorangeoptions.Autorangeoptions",
"._minor.Minor",
"._rangebreak.Rangebreak",
"._tickfont.Tickfont",
diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_autorangeoptions.py b/packages/python/plotly/plotly/graph_objs/layout/yaxis/_autorangeoptions.py
new file mode 100644
index 00000000000..9824e15d8e0
--- /dev/null
+++ b/packages/python/plotly/plotly/graph_objs/layout/yaxis/_autorangeoptions.py
@@ -0,0 +1,263 @@
+from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
+import copy as _copy
+
+
+class Autorangeoptions(_BaseLayoutHierarchyType):
+
+ # class properties
+ # --------------------
+ _parent_path_str = "layout.yaxis"
+ _path_str = "layout.yaxis.autorangeoptions"
+ _valid_props = {
+ "clipmax",
+ "clipmin",
+ "include",
+ "includesrc",
+ "maxallowed",
+ "minallowed",
+ }
+
+ # clipmax
+ # -------
+ @property
+ def clipmax(self):
+ """
+ Clip autorange maximum if it goes beyond this value. Has no
+ effect when `autorangeoptions.maxallowed` is provided.
+
+ The 'clipmax' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmax"]
+
+ @clipmax.setter
+ def clipmax(self, val):
+ self["clipmax"] = val
+
+ # clipmin
+ # -------
+ @property
+ def clipmin(self):
+ """
+ Clip autorange minimum if it goes beyond this value. Has no
+ effect when `autorangeoptions.minallowed` is provided.
+
+ The 'clipmin' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["clipmin"]
+
+ @clipmin.setter
+ def clipmin(self, val):
+ self["clipmin"] = val
+
+ # include
+ # -------
+ @property
+ def include(self):
+ """
+ Ensure this value is included in autorange.
+
+ The 'include' property accepts values of any type
+
+ Returns
+ -------
+ Any|numpy.ndarray
+ """
+ return self["include"]
+
+ @include.setter
+ def include(self, val):
+ self["include"] = val
+
+ # includesrc
+ # ----------
+ @property
+ def includesrc(self):
+ """
+ Sets the source reference on Chart Studio Cloud for `include`.
+
+ The 'includesrc' property must be specified as a string or
+ as a plotly.grid_objs.Column object
+
+ Returns
+ -------
+ str
+ """
+ return self["includesrc"]
+
+ @includesrc.setter
+ def includesrc(self, val):
+ self["includesrc"] = val
+
+ # maxallowed
+ # ----------
+ @property
+ def maxallowed(self):
+ """
+ Use this value exactly as autorange maximum.
+
+ The 'maxallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["maxallowed"]
+
+ @maxallowed.setter
+ def maxallowed(self, val):
+ self["maxallowed"] = val
+
+ # minallowed
+ # ----------
+ @property
+ def minallowed(self):
+ """
+ Use this value exactly as autorange minimum.
+
+ The 'minallowed' property accepts values of any type
+
+ Returns
+ -------
+ Any
+ """
+ return self["minallowed"]
+
+ @minallowed.setter
+ def minallowed(self, val):
+ self["minallowed"] = val
+
+ # Self properties description
+ # ---------------------------
+ @property
+ def _prop_descriptions(self):
+ return """\
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+ """
+
+ def __init__(
+ self,
+ arg=None,
+ clipmax=None,
+ clipmin=None,
+ include=None,
+ includesrc=None,
+ maxallowed=None,
+ minallowed=None,
+ **kwargs,
+ ):
+ """
+ Construct a new Autorangeoptions object
+
+ Parameters
+ ----------
+ arg
+ dict of properties compatible with this constructor or
+ an instance of :class:`plotly.graph_objs.layout.yaxis.A
+ utorangeoptions`
+ clipmax
+ Clip autorange maximum if it goes beyond this value.
+ Has no effect when `autorangeoptions.maxallowed` is
+ provided.
+ clipmin
+ Clip autorange minimum if it goes beyond this value.
+ Has no effect when `autorangeoptions.minallowed` is
+ provided.
+ include
+ Ensure this value is included in autorange.
+ includesrc
+ Sets the source reference on Chart Studio Cloud for
+ `include`.
+ maxallowed
+ Use this value exactly as autorange maximum.
+ minallowed
+ Use this value exactly as autorange minimum.
+
+ Returns
+ -------
+ Autorangeoptions
+ """
+ super(Autorangeoptions, self).__init__("autorangeoptions")
+
+ if "_parent" in kwargs:
+ self._parent = kwargs["_parent"]
+ return
+
+ # 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.yaxis.Autorangeoptions
+constructor must be a dict or
+an instance of :class:`plotly.graph_objs.layout.yaxis.Autorangeoptions`"""
+ )
+
+ # Handle skip_invalid
+ # -------------------
+ self._skip_invalid = kwargs.pop("skip_invalid", False)
+ self._validate = kwargs.pop("_validate", True)
+
+ # Populate data dict with properties
+ # ----------------------------------
+ _v = arg.pop("clipmax", None)
+ _v = clipmax if clipmax is not None else _v
+ if _v is not None:
+ self["clipmax"] = _v
+ _v = arg.pop("clipmin", None)
+ _v = clipmin if clipmin is not None else _v
+ if _v is not None:
+ self["clipmin"] = _v
+ _v = arg.pop("include", None)
+ _v = include if include is not None else _v
+ if _v is not None:
+ self["include"] = _v
+ _v = arg.pop("includesrc", None)
+ _v = includesrc if includesrc is not None else _v
+ if _v is not None:
+ self["includesrc"] = _v
+ _v = arg.pop("maxallowed", None)
+ _v = maxallowed if maxallowed is not None else _v
+ if _v is not None:
+ self["maxallowed"] = _v
+ _v = arg.pop("minallowed", None)
+ _v = minallowed if minallowed is not None else _v
+ if _v is not None:
+ self["minallowed"] = _v
+
+ # Process unknown kwargs
+ # ----------------------
+ self._process_kwargs(**dict(arg, **kwargs))
+
+ # Reset skip_invalid
+ # ------------------
+ self._skip_invalid = False
diff --git a/packages/python/plotly/plotly/offline/_plotlyjs_version.py b/packages/python/plotly/plotly/offline/_plotlyjs_version.py
index 642121bf997..5c85f157e41 100644
--- a/packages/python/plotly/plotly/offline/_plotlyjs_version.py
+++ b/packages/python/plotly/plotly/offline/_plotlyjs_version.py
@@ -1,3 +1,3 @@
# DO NOT EDIT
# This file is generated by the updatebundle setup.py command
-__plotlyjs_version__ = "2.25.2"
+__plotlyjs_version__ = "2.26.0"
diff --git a/packages/python/plotly/plotly/package_data/plotly.min.js b/packages/python/plotly/plotly/package_data/plotly.min.js
index a2d579acdb0..d228b2ac1bb 100644
--- a/packages/python/plotly/plotly/package_data/plotly.min.js
+++ b/packages/python/plotly/plotly/package_data/plotly.min.js
@@ -1,8 +1,8 @@
/**
-* plotly.js v2.25.2
+* plotly.js v2.26.0
* Copyright 2012-2023, Plotly, Inc.
* All rights reserved.
* Licensed under the MIT license
*/
/*! For license information please see plotly.min.js.LICENSE.txt */
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Plotly=e():t.Plotly=e()}(self,(function(){return function(){var t={98847:function(t,e,r){"use strict";var n=r(71828),i={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg":"overflow:hidden;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(var a in i){var o=a.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier");n.addStyleRule(o,i[a])}},98222:function(t,e,r){"use strict";t.exports=r(82887)},27206:function(t,e,r){"use strict";t.exports=r(60822)},59893:function(t,e,r){"use strict";t.exports=r(23381)},5224:function(t,e,r){"use strict";t.exports=r(83832)},59509:function(t,e,r){"use strict";t.exports=r(72201)},75557:function(t,e,r){"use strict";t.exports=r(91815)},40338:function(t,e,r){"use strict";t.exports=r(21462)},35080:function(t,e,r){"use strict";t.exports=r(51319)},61396:function(t,e,r){"use strict";t.exports=r(57516)},40549:function(t,e,r){"use strict";t.exports=r(98128)},49866:function(t,e,r){"use strict";t.exports=r(99442)},36089:function(t,e,r){"use strict";t.exports=r(93740)},19548:function(t,e,r){"use strict";t.exports=r(8729)},35831:function(t,e,r){"use strict";t.exports=r(93814)},61039:function(t,e,r){"use strict";t.exports=r(14382)},97040:function(t,e,r){"use strict";t.exports=r(51759)},77986:function(t,e,r){"use strict";t.exports=r(10421)},24296:function(t,e,r){"use strict";t.exports=r(43102)},58872:function(t,e,r){"use strict";t.exports=r(92165)},29626:function(t,e,r){"use strict";t.exports=r(3325)},65591:function(t,e,r){"use strict";t.exports=r(36071)},69738:function(t,e,r){"use strict";t.exports=r(43905)},92650:function(t,e,r){"use strict";t.exports=r(35902)},35630:function(t,e,r){"use strict";t.exports=r(69816)},73434:function(t,e,r){"use strict";t.exports=r(94507)},27909:function(t,e,r){"use strict";var n=r(19548);n.register([r(27206),r(5224),r(58872),r(65591),r(69738),r(92650),r(49866),r(25743),r(6197),r(97040),r(85461),r(73434),r(54201),r(81299),r(47645),r(35630),r(77986),r(83043),r(93005),r(96881),r(4534),r(50581),r(40549),r(77900),r(47582),r(35080),r(21641),r(17280),r(5861),r(29626),r(10021),r(65317),r(96268),r(61396),r(35831),r(16122),r(46163),r(40344),r(40338),r(48131),r(36089),r(55334),r(75557),r(19440),r(99488),r(59893),r(97393),r(98222),r(61039),r(24296),r(66398),r(59509)]),t.exports=n},46163:function(t,e,r){"use strict";t.exports=r(15154)},96881:function(t,e,r){"use strict";t.exports=r(64943)},50581:function(t,e,r){"use strict";t.exports=r(21164)},55334:function(t,e,r){"use strict";t.exports=r(54186)},65317:function(t,e,r){"use strict";t.exports=r(94873)},10021:function(t,e,r){"use strict";t.exports=r(67618)},54201:function(t,e,r){"use strict";t.exports=r(58810)},5861:function(t,e,r){"use strict";t.exports=r(20593)},16122:function(t,e,r){"use strict";t.exports=r(29396)},83043:function(t,e,r){"use strict";t.exports=r(13551)},48131:function(t,e,r){"use strict";t.exports=r(46858)},47582:function(t,e,r){"use strict";t.exports=r(17988)},21641:function(t,e,r){"use strict";t.exports=r(68868)},96268:function(t,e,r){"use strict";t.exports=r(20467)},19440:function(t,e,r){"use strict";t.exports=r(91271)},99488:function(t,e,r){"use strict";t.exports=r(21461)},97393:function(t,e,r){"use strict";t.exports=r(85956)},25743:function(t,e,r){"use strict";t.exports=r(52979)},66398:function(t,e,r){"use strict";t.exports=r(32275)},17280:function(t,e,r){"use strict";t.exports=r(6419)},77900:function(t,e,r){"use strict";t.exports=r(61510)},81299:function(t,e,r){"use strict";t.exports=r(87619)},93005:function(t,e,r){"use strict";t.exports=r(93601)},40344:function(t,e,r){"use strict";t.exports=r(96595)},47645:function(t,e,r){"use strict";t.exports=r(70954)},6197:function(t,e,r){"use strict";t.exports=r(47462)},4534:function(t,e,r){"use strict";t.exports=r(17659)},85461:function(t,e,r){"use strict";t.exports=r(19990)},82884:function(t){"use strict";t.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]},50215:function(t,e,r){"use strict";var n=r(82884),i=r(41940),a=r(85555),o=r(44467).templatedArray;r(24695),t.exports=o("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:i({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",a.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",a.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",a.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",a.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:i({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc",_deprecated:{ref:{valType:"string",editType:"calc"}}})},3749:function(t,e,r){"use strict";var n=r(71828),i=r(89298),a=r(92605).draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},"range"===a&&s(e,r),"range"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t["a"+a],l=t[a+"ref"],u=t["a"+a+"ref"],c=t["_"+a+"padplus"],f=t["_"+a+"padminus"],h={x:1,y:-1}[a]*t[a+"shift"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,v=p-h,g=3*t.startarrowsize*t.arrowwidth||0,y=g+h,m=g-h;if(u===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:v}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(c,y),ppadminus:Math.max(f,m)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else y=s?y+s:y,m=s?m-s:m,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(c,d,y),ppadminus:Math.max(f,v,m)});t._extremes[n]=r}t.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},44317:function(t,e,r){"use strict";var n=r(71828),i=r(73972),a=r(44467).arrayEditor;function o(t,e){var r,n,i,a,o,l,u,c=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0?[0]:[]);if(o.enter().append("g").classed(f.containerClassName,!0).style("cursor","pointer"),o.exit().each((function(){n.select(this).selectAll("g."+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll("g."+f.headerGroupClassName).data(r,p);l.enter().append("g").classed(f.headerGroupClassName,!0);for(var u=s.ensureSingle(o,"g",f.dropdownButtonGroupClassName,(function(t){t.style("pointer-events","all")})),c=0;c 90&&i.log("Long binary search..."),h-1},e.sorterAsc=function(t,e){return t-e},e.sorterDes=function(t,e){return e-t},e.distinctVals=function(t){var r,n=t.slice();for(n.sort(e.sorterAsc),r=n.length-1;r>-1&&n[r]===o;r--);for(var i,a=n[r]-n[0]||1,s=a/(r||1)/1e4,l=[],u=0;u<=r;u++){var c=n[u],f=c-i;void 0===i?(l.push(c),i=c):f>s&&(a=Math.min(a,f),l.push(c),i=c)}return{vals:l,minDiff:a}},e.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},e.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;il?r.y-l:0;return Math.sqrt(u*u+f*f)}for(var p=h(u);p;){if((u+=p+r)>f)return;p=h(u)}for(p=h(f);p;){if(u>(f-=p+r))return;p=h(f)}return{min:u,max:f,len:f-u,total:c,isClosed:0===u&&f===c&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},e.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,u=n.iterationLimit||30,c=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},81697:function(t,e,r){"use strict";var n=r(92770),i=r(84267),a=r(25075),o=r(21081),s=r(22399).defaultLine,l=r(73627).isArrayOrTypedArray,u=a(s);function c(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return u;var e=a(t);return e.length?e:u}function h(t){return n(t)?t:1}t.exports={formatColor:function(t,e,r){var n,i,s,p,d,v=t.color,g=l(v),y=l(e),m=o.extractOpts(t),x=[];if(n=void 0!==m.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=g?function(t,e){return void 0===t[e]?u:a(n(t[e]))}:f,s=y?function(t,e){return void 0===t[e]?1:h(t[e])}:h,g||y)for(var b=0;b
/i;e.BR_TAG_ALL=/
/gi;var _=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,w=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,T=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,k=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function A(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&L(n)}var M=/(^|;)\s*color:/;e.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:["br"],i=t.split(m),a=[],o="",s=0,l=0;l
"+l;e.text=u}(t,o,r,u):"log"===c?function(t,e,r,n,a){var o=t.dtick,l=e.x,u=t.tickformat,c="string"==typeof o&&o.charAt(0);if("never"===a&&(a=""),n&&"L"!==c&&(o="L3",c="L"),u||"L"===c)e.text=bt(Math.pow(10,l),t,a,n);else if(i(o)||"D"===c&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;"power"===p||mt(p)&&xt(f)?(e.text=0===f?1:1===f?"10":"10"+(f>1?"":P)+h+"",e.fontSize*=1.25):("e"===p||"E"===p)&&h>2?e.text="1"+p+(f>0?"+":P)+h:(e.text=bt(Math.pow(10,l),t,"","fakehover"),"D1"===o&&"y"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if("D"!==c)throw"unrecognized dtick "+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if("D1"===t.dtick){var d=String(e.text).charAt(0);"0"!==d&&"1"!==d||("y"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,u,v):"category"===c?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=""),e.text=String(r)}(t,o):"multicategory"===c?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?"":String(i[1]),o=void 0===i[0]?"":String(i[0]);r?e.text=o+" - "+a:(e.text=a,e.text2=o)}(t,o,r):Dt(t)?function(t,e,r,n,i){if("radians"!==t.thetaunit||r)e.text=bt(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text="0";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=bt(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text="π":e.text=o[0]+"π":e.text=["",o[0],"","⁄","",o[1],"","π"].join(""),l&&(e.text=P+e.text)}}}}(t,o,r,u,v):function(t,e,r,n,i){"never"===i?i="":"all"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i="hide"),e.text=bt(e.x,t,i,n)}(t,o,0,u,v),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),t.labelalias&&t.labelalias.hasOwnProperty(o.text)){var g=t.labelalias[o.text];"string"==typeof g&&(o.text=g)}if("boundaries"===t.tickson||t.showdividers){var y=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[y(o.x-.5),y(o.x+t.dtick-.5)]}return o},q.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return q.hoverLabelText(t,n,r)+" - "+q.hoverLabelText(t,i,r);var a="log"===t.type&&n<=0,o=q.tickText(t,t.c2l(a?-n:n),"hover").text;return a?0===n?"0":P+o:o};var yt=["f","p","n","μ","m","","k","M","G","T"];function mt(t){return"SI"===t||"B"===t}function xt(t){return t>14||t<-15}function bt(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||"B",u=e._tickexponent,c=q.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:"none"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:"none"===e.showexponent?e.range.map(e.r2d):[0,t||1]};vt(h),o=(Number(h._tickround)||0)+4,u=h._tickexponent,e.hoverformat&&(c=e.hoverformat)}if(c)return e._numFormat(c)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if("none"===l&&(u=0),(t=Math.abs(t))
")):x=h.textLabel;var L={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:w._input,fullData:w,curveNumber:w.index,pointNumber:T};d.appendArrayPointValue(L,w,T),t._module.eventData&&(L=w._module.eventData(L,h,w,{},T));var C={points:[L]};if(e.fullSceneLayout.hovermode){var P=[];d.loneHover({trace:w,x:(.5+.5*m[0]/m[3])*s,y:(.5-.5*m[1]/m[3])*l,xLabel:k.xLabel,yLabel:k.yLabel,zLabel:k.zLabel,text:x,name:c.name,color:d.castHoverOption(w,T,"bgcolor")||c.color,borderColor:d.castHoverOption(w,T,"bordercolor"),fontFamily:d.castHoverOption(w,T,"font.family"),fontSize:d.castHoverOption(w,T,"font.size"),fontColor:d.castHoverOption(w,T,"font.color"),nameLength:d.castHoverOption(w,T,"namelength"),textAlign:d.castHoverOption(w,T,"align"),hovertemplate:f.castOption(w,T,"hovertemplate"),hovertemplateLabels:f.extendFlat({},L,k),eventData:[L]},{container:n,gd:r,inOut_bbox:P}),L.bbox=P[0]}h.distance<5&&(h.buttons||_)?r.emit("plotly_click",C):r.emit("plotly_hover",C),this.oldEventData=C}else d.loneUnhover(n),this.oldEventData&&r.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},T.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error("Catastrophic and unrecoverable WebGL error. Context lost.")};requestAnimationFrame(e)};var A=["xaxis","yaxis","zaxis"];function M(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=A[i],o=a.charAt(0),s=n[a],l=e[o],u=e[o+"calendar"],c=e["_"+o+"length"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(c||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;d
");b.text(T).attr("data-unformatted",T).call(f.convertToTspans,t),_=c.bBox(b.node())}b.attr("transform",a(-3,8-_.height)),x.insert("rect",".static-attribution").attr({x:-_.width-6,y:-_.height-3,width:_.width+6,height:_.height+3,fill:"rgba(255, 255, 255, 0.75)"});var k=1;_.width+6>w&&(k=w/(_.width+6));var A=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];x.attr("transform",a(A[0],A[1])+o(k))}},e.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots[p],n=0;n
")}(e,r,n,i):v.getValue(s.text,r),v.coerceString(m,o)}(C,n,i,T,M);w=function(t,e){var r=v.getValue(t.textposition,e);return v.coerceEnumerated(x,r)}(O,i);var z="stack"===g.mode||"relative"===g.mode,R=n[i],F=!z||R._outmost;if(D&&"none"!==w&&(!R.isBlank&&s!==u&&f!==p||"auto"!==w&&"inside"!==w)){var B=C.font,N=d.getBarColor(n[i],O),j=d.getInsideTextFont(O,i,B,N),U=d.getOutsideTextFont(O,i,B),V=r.datum();I?"log"===T.type&&V.s0<=0&&(s=T.range[0]