Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
176 commits
Select commit Hold shift + click to select a range
a2787a0
- Move contents of `commands.py` to scripts in new `bin` directory an…
gvwilson Jul 10, 2025
3dced44
preload _plotly_utils
LiamConnors Jul 22, 2025
bc32c86
add docstrings directly to px functions
LiamConnors Dec 2, 2024
174b0e9
change docstring style
LiamConnors Jul 22, 2025
badb199
Merge pull request #5292 from plotly/plotly.express-docstrings
gvwilson Jul 22, 2025
86f69f1
Merge branch 'mkdocs-conversion' into preload-plotly-utils
gvwilson Jul 22, 2025
c0237f6
Merge pull request #5290 from plotly/preload-plotly-utils
gvwilson Jul 22, 2025
76b36dd
feat: numpy documentation style
gvwilson Jul 22, 2025
96af9f6
feat: regenerating Python code with .js fixes
gvwilson Jul 22, 2025
9525f6a
feat: converting doc/python/*.md using bin/run_markdown.py
gvwilson Jul 23, 2025
80792d8
better verbosity
gvwilson Jul 26, 2025
9386750
feat: conditionalize Makefile target for testing
gvwilson Jul 29, 2025
6d1e5c8
Merge remote-tracking branch 'origin/fix-docs' into mkdocs-conversion
gvwilson Jul 30, 2025
20c60ef
Merge remote-tracking branch 'origin/add-missing-imports' into mkdocs…
gvwilson Jul 30, 2025
a07ea45
feat: script to check all examples in doc/python.
gvwilson Jul 30, 2025
5cad013
use _parse_md function
LiamConnors Jul 30, 2025
2e38a9a
don't process code block in region sections
LiamConnors Jul 30, 2025
e45f54c
Merge pull request #5307 from plotly/update-script
gvwilson Jul 31, 2025
73a8291
modify tests to import from graph_objects
gvwilson Jul 30, 2025
36ee5e9
add trivial test to make sure plotly.graph_objects import works
gvwilson Aug 1, 2025
57d923c
updating notes
gvwilson Aug 1, 2025
ca37382
swapping graph_objs and graph_objects
gvwilson Aug 5, 2025
31b73ce
Added backslashes to descriptions with '[][]'
daexs Aug 12, 2025
fae9563
Fixed markdown formatting for valType 'info_array'
daexs Aug 14, 2025
c2e20c7
Added backslashes to descriptions with '[][]'
daexs Aug 12, 2025
0f9b311
Fixed markdown formatting for valType 'info_array'
daexs Aug 14, 2025
3f5ee9f
regenerating with latest changes
gvwilson Aug 14, 2025
f345aef
Fixed double bracket error for regular expressions
daexs Aug 14, 2025
f840f11
Minor code cleanup
daexs Aug 14, 2025
4a7873c
Fixed double bracket error in 'basedatatypes.py'
daexs Aug 14, 2025
b0cd2f9
Merge branch 'mkdocs-conversion' of https://github.com/plotly/plotly.…
daexs Aug 14, 2025
cd623aa
Regenerated code after basevalidators.py changes
daexs Aug 14, 2025
98fab98
Fix SyntaxWarning and adjusted valType 'enumerated' docstring format.
daexs Aug 14, 2025
9ddde0f
Fixed formatting issues with nested enumerated docstrings in info_arr…
daexs Aug 15, 2025
683643c
Fixed list format in 'Dash' and 'String' properties.
daexs Aug 18, 2025
efde201
Fixed formatting for 'Compound' and 'color' properties.
daexs Aug 18, 2025
01da1c6
Fixed formatting for 'Integer' types.
daexs Aug 18, 2025
8d12a05
Fixed formatting for 'Colorscale', 'CompoundArray', and 'BaseData' ty…
daexs Aug 19, 2025
6690116
Fixed confusing indentation & some formatting
daexs Aug 19, 2025
4154910
Fixed formatting issues and consistency
daexs Aug 19, 2025
df9cc3a
feat: allow `--schema path` option to code generation
gvwilson Aug 20, 2025
77d19bb
Merge pull request #17 from gvwilson/mkdocs-conversion
daexs Aug 20, 2025
bdd049b
Fixed code block and type annotation formatting.
daexs Aug 21, 2025
cbd983d
Minor code cleanup
daexs Aug 21, 2025
95ea818
Fixed example parsing error
daexs Aug 22, 2025
31c8a2f
Fixed formatting issues and modified json file for double bracket error.
daexs Aug 25, 2025
f35c9fa
Fixed **kwargs bold formatting issue
daexs Aug 26, 2025
eef950e
Fixed types for parameters 'annotation', 'annotation_position', and '…
daexs Aug 26, 2025
e339098
Merge branch 'main' into mkdocs-conversion
gvwilson Aug 27, 2025
3e5ee8b
Merge branch 'main' into mkdocs-conversion
gvwilson Aug 27, 2025
a943429
saving generated example files
gvwilson Aug 27, 2025
569b6d7
feat: build YAML table of contents for examples
gvwilson Aug 27, 2025
6d2f32f
fix: switch to relative paths in examples
gvwilson Aug 27, 2025
dc0418a
feat: fixing some dangling references in doc/python example files
gvwilson Aug 28, 2025
66208c6
Added pages to nav bar and extra css styling
daexs Aug 28, 2025
d116e27
Fixed warnings and errors
daexs Aug 29, 2025
8607d4a
feat: allow bin/run_markdown.py to take a single block number for tes…
gvwilson Aug 29, 2025
9a40907
Fixed small import and missing module errors
daexs Sep 2, 2025
b215b37
Fixed small missing import and variable errors. Also added 'getting-s…
daexs Sep 3, 2025
1847061
Added permalinks to replace empty md files
daexs Sep 3, 2025
9da9b2d
Fixed Image not JSON serializable error
daexs Sep 3, 2025
883c0d9
Edited comment for clarity
daexs Sep 3, 2025
63882d0
Fixed deprecation warning for 'type' found when county-choropleth.md …
daexs Sep 3, 2025
7e8a638
Fixed 403 Error from Wikimedia when reading image
daexs Sep 4, 2025
77e76af
Made variable state shared across codeblocks and cleaned up previous …
daexs Sep 4, 2025
1d1620c
Fixed html image rendering and reading image from wikimedia
daexs Sep 4, 2025
2310f66
Replaced image rendering from IPython's image display and overrided P…
daexs Sep 5, 2025
a673e59
Fixed pip install invalid syntax error
daexs Sep 5, 2025
0fa35da
Fixed some references and absolute links that were broken
daexs Sep 8, 2025
1d89e17
Removed ' install' and added versions. Also changed the umap module i…
daexs Sep 9, 2025
373e1bc
Removed from the navigation bar and reverted previous changes to pac…
daexs Sep 10, 2025
6e300ad
Configured mkdocs to be able to resolve absolute links and set them r…
daexs Sep 11, 2025
c3a98b6
Edited navigation bar to make section names more user friendly.
daexs Sep 17, 2025
64b30da
Reorganized the navigation bar to match the existing Python docs.
daexs Sep 17, 2025
8f43c74
add some links, css, and restructure content
LiamConnors Sep 17, 2025
e712a01
Update is-plotly-free.md
LiamConnors Sep 17, 2025
6aeb223
Update mkdocs.yml
LiamConnors Sep 17, 2025
1fadabe
Update mkdocs.yml
LiamConnors Sep 18, 2025
d970523
Update is-plotly-free.md
LiamConnors Sep 18, 2025
3514472
Manually added new script that generates the API Reference markdown p…
daexs Sep 19, 2025
8beee0d
Excluded some markdown files from docs nav bar build to prevent log m…
daexs Sep 19, 2025
a4dc547
Merge branch 'mkdocs-conversion' into update-names
LiamConnors Sep 22, 2025
6c8ea1b
Merge pull request #48 from daexs/update-names
LiamConnors Sep 22, 2025
d6fc630
Fix lists not rendering properly in some examples
daexs Sep 22, 2025
4f0c61a
Fixed minor mistake in the Makefile when running 'examples-force'
daexs Sep 22, 2025
566c835
Added syntax highlighting to python code blocks
daexs Sep 22, 2025
430e485
add plotly studio and dash club info
LiamConnors Sep 22, 2025
5deca22
Update mkdocs.yml
LiamConnors Sep 22, 2025
b4c5cb4
delete generated images
LiamConnors Sep 23, 2025
0c3d202
add dataset from docs generation
LiamConnors Sep 23, 2025
259a8e1
only generate html
LiamConnors Sep 23, 2025
0fac168
update html generation
LiamConnors Sep 23, 2025
6cf3ff4
move examples
LiamConnors Sep 23, 2025
ee82f48
remove duplicate files
LiamConnors Sep 23, 2025
8de444f
regen files
LiamConnors Sep 23, 2025
b8319de
Reinclude pages not directly accessible from navigation and suppress …
daexs Sep 23, 2025
7994893
Merge pull request #68 from daexs/add-banner
LiamConnors Sep 23, 2025
d74a371
Merge pull request #70 from daexs/add-gh-repo
LiamConnors Sep 23, 2025
c6099ed
Merge branch 'mkdocs-conversion' into restructure-2
LiamConnors Sep 23, 2025
0d19bd5
Merge pull request #72 from daexs/restructure-2
LiamConnors Sep 23, 2025
d88da53
add missing reference pages
LiamConnors Sep 23, 2025
c24f7d6
Update mkdocs.yml
LiamConnors Sep 23, 2025
a2d466e
Update mkdocs.yml
LiamConnors Sep 23, 2025
d077940
Fixed internal links for axes.md
daexs Sep 23, 2025
ecc2b1f
Fixed some internal links and fixed 'figure-structure.md' content bei…
daexs Sep 23, 2025
816001b
Merge pull request #73 from daexs/add-back-missing-ref
LiamConnors Sep 24, 2025
36bd491
Changed 'https://plotly.com/python/' links into internal links and fi…
daexs Sep 25, 2025
fb5d918
removing out-of-date notes
gvwilson Sep 25, 2025
4fdae5b
Changed links pointing to 'https://plot.ly' into internal links
daexs Sep 25, 2025
402d03f
Merge branch 'mkdocs-conversion' of https://github.com/daexs/plotly.p…
daexs Sep 25, 2025
ea587d9
refactor: small cleanups to build process
gvwilson Sep 26, 2025
1d2046a
Remove image base64 conversion code from the examples
daexs Sep 26, 2025
28d14dd
feat: remove unused metadata in Markdown files
gvwilson Sep 26, 2025
c1e1a1b
Replaced all links to 'https://plotly.com/python-api-reference/' into…
daexs Sep 26, 2025
44e72d0
Update run_markdown.py
LiamConnors Sep 29, 2025
4d2be36
Fixed missing import statements for plotly.express and urllib.request
daexs Sep 29, 2025
f6bf056
Fixed links rendering as regular text and lists not rendering correctly.
daexs Sep 29, 2025
8db0756
Added custom formatter and styling to hide code blocks with 'hide_cod…
daexs Sep 30, 2025
9161db0
Fixed 'docs' rule
daexs Sep 30, 2025
a265548
Changed the docstring style of the plotly figure_factory module to numpy
daexs Oct 1, 2025
f17cb33
Fixed links to correctly reference their respective files and render …
daexs Oct 1, 2025
362eba4
Fixed html rendering in codeblocks
daexs Oct 1, 2025
b7b3f28
Reformatted dash code blocks to allow the code snippets and charts to…
daexs Oct 1, 2025
01036e1
Remove previously added custom formatter to hide Dash code
daexs Oct 1, 2025
3ba7f1e
Added styling to remove maplibre controls container under the interac…
daexs Oct 2, 2025
16f34ec
Merge pull request #81 from daexs/fix-mathjax
LiamConnors Oct 3, 2025
a79bdb8
add redirects
LiamConnors Oct 3, 2025
064a52f
Merge pull request #88 from daexs/add-redirects
daexs Oct 3, 2025
a5a1c00
Added plotly studio image to the nav bar.
daexs Oct 6, 2025
108933b
Cleaned up 'plotly-styles.css' file and removed the arrow indicating …
daexs Oct 6, 2025
e2464dd
Fixed dash_bio figures not rendering in 'doc/python/bio-clustergram.md'.
daexs Oct 6, 2025
db53d9b
Merge branch 'mkdocs-conversion' of https://github.com/daexs/plotly.p…
daexs Oct 6, 2025
8cc3b51
Fixed headings that weren't rendering in Markdown properly.
daexs Oct 7, 2025
4bc8eed
Added back orca-management.md into the navigation
daexs Oct 8, 2025
29e6b84
Resolved more links and added a new redirect for 'mapbox-layers'
daexs Oct 8, 2025
abb898f
Added footer and adjusted height of plotly studio image
daexs Oct 9, 2025
38e69f4
Fixed minor link typo in footer
daexs Oct 9, 2025
68c6d16
Added header and dash banner image
daexs Oct 14, 2025
03120e6
Minor fix to navigation page titles
daexs Oct 16, 2025
d8e18b2
Merge pull request #86 from daexs/fix-plotly-module-formatting
daexs Oct 16, 2025
66eea0e
Merge pull request #87 from daexs/fix-html-and-dash-render
daexs Oct 16, 2025
270fade
Merging mkdocs-conversion into this branch and resolving merge conflicts
daexs Oct 16, 2025
001cb53
Merge pull request #80 from daexs/remove-unused-metadata
daexs Oct 16, 2025
e22fbb7
Adjusted title of pages in graph_objects module figure overview
daexs Oct 16, 2025
0fa6e72
Merge pull request #98 from daexs/adjust-styling-and-format
daexs Oct 16, 2025
37aacd4
Fixed minor naming error for header div.
daexs Oct 16, 2025
55db0a6
Added index pages to each category in the nav bar.
daexs Oct 20, 2025
3204832
Converted redirect links into internal links.
daexs Oct 21, 2025
51eb8fc
Resolved links and removed Dash banner from the bottom of the 'Overvi…
daexs Oct 21, 2025
faf9bfb
Added dash examples to select index pages and updated dash banner logic
daexs Oct 21, 2025
622af18
Added more redirects, changed redirect links in markdown files, resol…
daexs Oct 22, 2025
ef612af
Redisplay external link arrows on dash banner and plotly studio ad. S…
daexs Oct 22, 2025
e64dc40
Changed the text for all internal links that used to be 'https://plot…
daexs Oct 22, 2025
3caa780
Remove page that was accidentally added.
daexs Oct 22, 2025
2eb1590
Changed name of 'migrate-to-maplibre.md' to remain consistent with li…
daexs Oct 23, 2025
79f7440
Updated page name reference for mapbox to maplibre migration.
daexs Oct 23, 2025
654fde1
Resolved more links, added a redirect, and fixed list render
daexs Oct 23, 2025
9ff8730
Fix list rendering
daexs Oct 23, 2025
eb6ed26
Added styling for footer text when page is in dark mode.
daexs Oct 23, 2025
ae2f80b
Added extensions to allow proper LaTeX rendering
daexs Oct 23, 2025
ae54f18
Converted callouts into admonitions
daexs Oct 24, 2025
a7a5122
Fixed graph rendering in creating-and-updating-figures.md
daexs Oct 27, 2025
e1ac526
Added more admonitions
daexs Oct 27, 2025
3f03d07
Remove empty python blocks
daexs Oct 27, 2025
9fe8873
Added more admonitions, including those for warning messages
daexs Oct 27, 2025
9643249
Updated plotly ad on nav bar
daexs Oct 27, 2025
2c8f030
Added css styling to keep tables within the width of the page's body/
daexs Oct 27, 2025
fea9b38
Added an 'edit this page' button
daexs Oct 27, 2025
edf2b1a
Fixed styling of icon in edit button
daexs Oct 27, 2025
3ae43db
Merge branch 'mkdocs-conversion' into update-link-text
daexs Oct 28, 2025
89b3dd4
Merge pull request #102 from daexs/update-link-text
daexs Oct 28, 2025
87da393
Merge remote-tracking branch 'upstream/live-docs' into mkdocs-conversion
daexs Oct 28, 2025
c28d17a
Update meta descriptions for files in pages/, rename markdown files i…
daexs Oct 30, 2025
305e674
Minor formatting change and added missing function into 'plotly/expre…
daexs Oct 31, 2025
fe05438
Fixed graph rendering
daexs Oct 31, 2025
f5a4c3e
Patched img.show to embed the images generated properly.
daexs Nov 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
0.html
iframe_figures/
tests/test_orca/images/linux/failed/
*mesh_dataset.txt

*.egg-info

Expand All @@ -13,6 +14,9 @@ tests/test_orca/images/linux/failed/

doc/python/raw.githubusercontent.com/

docs/
docs_tmp/

# Don't ignore dataset files
!*.csv.gz
!*.geojson.gz
Expand Down Expand Up @@ -59,6 +63,8 @@ doc/python/.mapbox_token
doc/.ipynb_checkpoints
tags
doc/check-or-enforce-order.py
files.figshare.com
*.zip

tests/percy/*.html
tests/percy/pandas2/*.html
Expand Down
23 changes: 13 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ then explains the technical aspects of preparing your contribution.

## Code of Conduct

Please note that all contributos are required to abide by our [Code of Conduct](CODE_OF_CONDUCT.md).
Please note that all contributos are required to abide by our Code of Conduct.

## Different Ways to Contribute

Expand All @@ -19,7 +19,7 @@ it is important to understand the structure of the code and the repository.
- The [`plotly.graph_objects`](https://plotly.com/python/graph-objects/) module (usually imported as `go`)
is [generated from the plotly.js schema](https://plotly.com/python/figure-structure/),
so changes to be made in this package need to be contributed to [plotly.js](https://github.com/plotly/plotly.js)
or to the code generation system in `./codegen/`.
or to the code generation system in `./bin/codegen/`.
Code generation creates traces and layout classes that have a direct correspondence to their JavaScript counterparts,
while higher-level methods that work on figures regardless of the current schema (e.g., `BaseFigure.for_each_trace`)
are defined in `plotly/basedatatypes.py`.
Expand All @@ -38,16 +38,17 @@ it is important to understand the structure of the code and the repository.
These are organized in subdirectories according to what they test:
see the "Setup" section below for more details.

- Documentation is found in `doc/`, and its structure is described in [its README file](doc/README.md).
- Documentation is found in `doc/`, and its structure is described in its README file.
The documentation is a great place to start contributing,
since you can add or modify examples without setting up a full environment.

Code and documentation are not the only way to contribute:
you can also help by:
Code and documentation are not the only way to contribute.
You can also help by:

- Reporting bugs at <https://github.com/plotly/plotly.py/issues>.
Please take a moment to see if your problem has already been reported, and if so, add a comment to the existing issue;
we will try to prioritize those that affect the most people.
we will try to prioritize those that affect the most people
and that are accompanied by small, runnable examples.

- Submitting feature requests (also at <https://github.com/plotly/plotly.py/issues>).
Again, please add a comment to an existing issue if the feature you want has already been requested.
Expand Down Expand Up @@ -233,11 +234,11 @@ Once you have done that,
run the `updateplotlyjs` command:

```bash
python commands.py updateplotlyjs
python bin/updatejs.py
```

This downloads new versions of `plot-schema.json` and `plotly.min.js` from the `plotly/plotly.js` GitHub repository
and places them in `plotly/package_data`.
and places them in `resources` and `plotly/package_data` respectively.
It then regenerates all of the `graph_objs` classes based on the new schema.

### Using a Development Branch of Plotly.js
Expand All @@ -246,7 +247,8 @@ If your development branch is in [the plotly.js repository](https://github.com/p
you can update to development versions of `plotly.js` with this command:

```bash
python commands.py updateplotlyjsdev --devrepo reponame --devbranch branchname
# FIXME commands.py didn't provide --devrepo or --devbranch
python bin/updatejs.py --dev --devrepo reponame --devbranch branchname
```

This fetches the `plotly.js` in the CircleCI artifact of the branch `branchname` of the repo `reponame`.
Expand All @@ -269,5 +271,6 @@ You can then run the following command
*in your local plotly.py repository*:

```bash
python commands.py updateplotlyjsdev --local /path/to/your/plotly.js/
# FIXME: commands.py didn't provide --local
python bin/updatejs.py --dev --local /path/to/your/plotly.js/
```
82 changes: 82 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Manage plotly.py project.

RUN = uv run
PACKAGE_DIRS = _plotly_utils plotly
CODE_DIRS = ${PACKAGE_DIRS} scripts
EXAMPLE_SRC = $(wildcard doc/python/*.md)
EXAMPLE_DST = $(patsubst doc/python/%.md,pages/%.md,${EXAMPLE_SRC})

## commands: show available commands
commands:
@grep -h -E '^##' ${MAKEFILE_LIST} | sed -e 's/## //g' | column -t -s ':'

## docs: rebuild documentation
.PHONY: docs
docs:
${RUN} mkdocs build

## docs-lint: check documentation
docs-lint:
${RUN} pydoclint ${PACKAGE_DIRS}

## docs-tmp: rebuild documentation saving Markdown in ./tmp
docs-tmp:
MKDOCS_TEMP_DIR=./docs_tmp ${RUN} mkdocs build

## examples: generate Markdown for individual doc/python
examples: ${EXAMPLE_DST}

pages/%.md: doc/python/%.md
@mkdir -p pages/examples
@${RUN} bin/run_markdown.py --outdir pages --htmldir pages/examples --inline --verbose 1 $<

## examples-force: force complete rebuild of examples
examples-force:
@touch ${EXAMPLE_SRC}
@make examples

## examples-toc: generate YAML table of contents for examples
examples-toc:
@python bin/build_example_toc.py ${EXAMPLE_SRC}

## format: reformat code
format:
${RUN} ruff format ${CODE_DIRS}

## generate: generate code
generate:
${RUN} bin/generate_code.py --codedir plotly
${RUN} ruff format plotly

## generate reference markdown files
reference:
${RUN} bin/generate_graph_objects_docs.py

## lint: check the code
lint:
${RUN} ruff check ${CODE_DIRS}

## test: run tests
test:
${RUN} pytest tests

## updatejs: update JavaScript bundle
updatejs:
${RUN} bin/updatejs.py --codedir plotly

## --: --

## clean: clean up repository
clean:
@find . -name '*~' -delete
@find . -name '.DS_Store' -delete
@rm -rf .coverage
@rm -rf .pytest_cache
@rm -rf .ruff_cache
@rm -rf dist
@rm -rf docs
@rm -rf pages/examples

## sync: update Python packages
sync:
uv sync --extra dev
19 changes: 9 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,21 @@ Built on top of [plotly.js](https://github.com/plotly/plotly.js), `plotly.py` is

## Installation

plotly.py may be installed using pip
plotly.py may be installed using pip:

```
pip install plotly
```

or conda.
or conda:

```
conda install -c conda-forge plotly
```

### Jupyter Widget Support

For use as a Jupyter widget, install `jupyter` and `anywidget`
packages using `pip`:
For use as a Jupyter widget, install the `jupyter` and `anywidget` packages using `pip`:

```
pip install jupyter anywidget
Expand All @@ -112,14 +111,14 @@ command line utility (legacy as of `plotly` version 4.9).

#### Kaleido

The [`kaleido`](https://github.com/plotly/Kaleido) package has no dependencies and can be installed
using pip
The [`kaleido`](https://github.com/plotly/Kaleido) package has no dependencies
and can be installed using pip:

```
pip install -U kaleido
```

or conda
or conda:

```
conda install -c conda-forge python-kaleido
Expand All @@ -129,13 +128,13 @@ conda install -c conda-forge python-kaleido

Some plotly.py features rely on fairly large geographic shape files. The county
choropleth figure factory is one such example. These shape files are distributed as a
separate `plotly-geo` package. This package can be installed using pip...
separate `plotly-geo` package. This package can be installed using pip:

```
pip install plotly-geo==1.0.0
```

or conda
or conda:

```
conda install -c plotly plotly-geo=1.0.0
Expand All @@ -145,7 +144,7 @@ conda install -c plotly plotly-geo=1.0.0

## Copyright and Licenses

Code and documentation copyright 2019 Plotly, Inc.
Code and documentation copyright Plotly, Inc.

Code released under the [MIT license](https://github.com/plotly/plotly.py/blob/main/LICENSE.txt).

Expand Down
Loading