You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+64-1Lines changed: 64 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,69 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
## Unreleased
6
6
7
7
8
+
## [7.0.0] - 2026-08-25
9
+
10
+
### Fixed
11
+
- Fix `hex_to_rgb` parsing of 3-digit shorthand hexadecimal colors such as `#FFF`[[#5662](https://github.com/plotly/plotly.py/pull/5662)], with thanks to @genrichez for the contribution!
12
+
- Improve `px.*_map()` auto-fitting behavior when `zoom` and `center` are not specified [[#5686](https://github.com/plotly/plotly.py/pull/5686)]
13
+
- Add `<!doctype html>` to the `to_html()` template to comply with modern web standards [[#5693](https://github.com/plotly/plotly.py/pull/5693)], with thanks to @mishrakushal for the contribution!
14
+
- Apply `histfunc`/`z` aggregation to `marginal_x`/`marginal_y="histogram"` subplots in `density_heatmap`/`density_contour`, instead of always showing raw bin counts [[#3521](https://github.com/plotly/plotly.py/issues/3521)], with thanks to @lucasjamar for the contribution!
15
+
- Fix `mpl_to_plotly` silently dropping matplotlib path collections in data coordinates (such as violin plots, pcolor, event plots, stack plots, fill_between, and stem plots) by rendering them as filled polygons or lines [[#5702](https://github.com/plotly/plotly.py/pull/5702)], with thanks to @robertoffmoura for the contribution!
16
+
17
+
### Updated
18
+
- Update plotly.js from version 3.6.0 to version 4.0.0 [[#5673](https://github.com/plotly/plotly.py/pull/5673)]. This is a major-version release with many changes. See the [plotly.js release notes](https://github.com/plotly/plotly.js/releases/tag/v4.0.0) for the full list. The most significant changes include:
19
+
- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710), [#7945](https://github.com/plotly/plotly.js/issues/7945)]
20
+
- Add "Share Chart" modebar button for generating a chart-sharing link via Plotly Cloud [[#7909](https://github.com/plotly/plotly.js/pull/7909)]
21
+
- Remove `scattermapbox`, `choroplethmapbox`, `densitymapbox` trace types, the `mapbox` subplot, and the `mapboxAccessToken` config option [[#7860](https://github.com/plotly/plotly.js/pull/7860)]. Use the equivalent `*map` traces instead.
22
+
- The corresponding `graph_objects` and Plotly Express functions have also been removed in plotly.py; use the `map` versions instead
23
+
- Drop support for MathJax v2, and add support for v4 [[#7898](https://github.com/plotly/plotly.js/pull/7898)]. MathJax is the JavaScript library used for rendering mathematical equations in plotly charts.
24
+
- Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [culori](https://culorijs.org)[[#7536](https://github.com/plotly/plotly.js/pull/7536), [#7962](https://github.com/plotly/plotly.js/pull/7962)]. There are some changes to supported color string formats as a result:
25
+
-`rgb()`/`rgba()` strings with decimal 0–1 fractions are no longer supported
26
+
-`hsv()` color strings are no longer supported
27
+
- Strings with invalid syntax such as `hsl(120, 50% 50%)` are no longer supported
- Replace `country-regex` with `country-iso-search` to search for country names in choropleth, scattergeo traces [[#7856](https://github.com/plotly/plotly.js/pull/7856)]. Most country names are handled exactly the same; a small number of legacy entries have been removed.
30
+
- Change `layout.geo.fitbounds` default from `false` to `'locations'`[[#7895](https://github.com/plotly/plotly.js/pull/7895)]. `geo` subplots will now auto-fit the initial view to the trace data by default.
31
+
- Dynamically compute `center` and `zoom` values for `scattermap` and `densitymap` traces. The initial map view will now auto-fit to the trace data by default. Add `layout.map.fitbounds` attribute (default `'locations'`) to enable or disable auto-fitting behavior [[#7884](https://github.com/plotly/plotly.js/pull/7884), [#7913](https://github.com/plotly/plotly.js/pull/7913)]
32
+
- Fix GeoJSON bounding-box computation for `choropleth` and `scattergeo` traces whose geometry crosses the antimeridian [[#7891](https://github.com/plotly/plotly.js/pull/7891)]
33
+
34
+
## [7.0.0rc0] - 2026-07-29
35
+
36
+
### Removed
37
+
- Remove the deprecated Figure Factory functions `create_2d_density`, `create_annotated_heatmap`, `create_bullet`, `create_candlestick`, `create_choropleth`, `create_distplot`, `create_facet_grid`, `create_gantt`, `create_hexbin_mapbox`, `create_ohlc`, `create_scatterplotmatrix`, and `create_violin`[[#5627](https://github.com/plotly/plotly.py/pull/5627)]
38
+
- Remove support for Kaleido versions less than v1.0.0 for static image generation [[#5677](https://github.com/plotly/plotly.py/pull/5677)]
39
+
- Remove support for Orca for static image generation [[#5677](https://github.com/plotly/plotly.py/pull/5677)]
40
+
- Remove `engine` argument from functions `fig.write_image()`,`fig.to_image()`, `pio.write_image()`, `pio.write_images()`, `pio.to_image()`, `pio.full_figure_for_development()`, and from renderer constructors [[#5677](https://github.com/plotly/plotly.py/pull/5677)]
41
+
42
+
### Updated
43
+
- Update plotly.js from version 3.6.0 to version 4.0.0-rc.0 [[#5673](https://github.com/plotly/plotly.py/pull/5673)]. This is a major-version release candidate with many changes. See the [plotly.js release notes](https://github.com/plotly/plotly.js/releases/tag/v4.0.0-rc.0) for the full list. The most significant changes include:
44
+
- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710)]
45
+
- Add "Share Chart" modebar button for generating a chart-sharing link via Plotly Cloud [[#7909](https://github.com/plotly/plotly.js/pull/7909)]
46
+
- Remove `scattermapbox`, `choroplethmapbox`, `densitymapbox` trace types, the `mapbox` subplot, and the `mapboxAccessToken` config option [[#7860](https://github.com/plotly/plotly.js/pull/7860)]. Use the equivalent `*map` traces instead.
47
+
- The corresponding `graph_objects` and Plotly Express functions have also been removed in plotly.py; use the `map` versions instead
48
+
- Drop support for MathJax v2, and add support for v4 [[#7898](https://github.com/plotly/plotly.js/pull/7898)]. MathJax is the JavaScript library used for rendering mathematical equations in plotly charts.
49
+
- Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [color](https://github.com/Qix-/color)[[#7536](https://github.com/plotly/plotly.js/pull/7536)]. There are some changes to supported color string formats as a result:
50
+
-`rgb()`/`rgba()` strings with decimal 0–1 fractions are no longer supported
- Replace `country-regex` with `country-iso-search` to search for country names in choropleth, scattergeo traces [[#7856](https://github.com/plotly/plotly.js/pull/7856)]. Most country names are handled exactly the same; a small number of legacy entries have been removed.
54
+
- Change `layout.geo.fitbounds` default from `false` to `'locations'`[[#7895](https://github.com/plotly/plotly.js/pull/7895)]. `geo` subplots will now auto-fit the initial view to the trace data by default.
55
+
- Dynamically compute `center` and `zoom` values for `scattermap` and `densitymap` traces. The initial map view will now auto-fit to the trace data by default. Add `layout.map.fitbounds` attribute (default `'locations'`) to enable or disable auto-fitting behavior [[#7884](https://github.com/plotly/plotly.js/pull/7884), [#7913](https://github.com/plotly/plotly.js/pull/7913)]
56
+
- Fix GeoJSON bounding-box computation for `choropleth` and `scattergeo` traces whose geometry crosses the antimeridian [[#7891](https://github.com/plotly/plotly.js/pull/7891)]
57
+
58
+
## [6.9.0] - 2026-07-09
59
+
60
+
### Fixed
61
+
- Raise a clear `ValueError` when an unsupported marginal plot type is passed to Plotly Express, instead of failing later with a cryptic `'NoneType' object has no attribute 'constructor'` message [[#5625](https://github.com/plotly/plotly.py/pull/5625)], with thanks to @eugen-goebel for the contribution!
62
+
- Read and write figure JSON files as UTF-8 in `read_json`/`write_json` so figures containing non-ASCII text are handled correctly on platforms whose default encoding is not UTF-8 (e.g. cp1252 on Windows) [[#5633](https://github.com/plotly/plotly.py/pull/5633)]
63
+
64
+
65
+
### Updated
66
+
- Update plotly.js from version 3.6.0 to version 3.7.0. See the plotly.js [release notes](https://github.com/plotly/plotly.js/releases/tag/v3.7.0) for more information [[#5639](https://github.com/plotly/plotly.py/pull/5639)]. Notable changes include:
67
+
- Rename `sendDataToCloud` modebar button to `sendChartToCloud`, and update to upload chart to Plotly Cloud [[#7802](https://github.com/plotly/plotly.js/pull/7802), [#7852](https://github.com/plotly/plotly.js/pull/7852), [#7854](https://github.com/plotly/plotly.js/pull/7854)]
68
+
- Fix stale `scattergl` error bars after toggling traces with mixed error bar visibility [[#7773](https://github.com/plotly/plotly.js/issues/7773)]
69
+
- Fix geo `fitbounds` to choose a compact longitude range when point data straddles the antimeridian [[#7837](https://github.com/plotly/plotly.js/pull/7837)]
70
+
8
71
## [6.8.0] - 2026-06-03
9
72
10
73
### Added
@@ -186,7 +249,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
186
249
- Drop deprecated `zauto`, `zmin` and `zmax` from the surface trace [[#7234](https://github.com/plotly/plotly.js/pull/7234)]
187
250
- Drop deprecated `autotick` attributes from cartesian axes [[#7236](https://github.com/plotly/plotly.js/pull/7236)]
188
251
- Drop `transforms` from the API [[#7240](https://github.com/plotly/plotly.js/pull/7240), [#7254](https://github.com/plotly/plotly.js/pull/7254)]
189
-
- Deprecate Mapbox-based traces.[[#4900](https://github.com/plotly/plotly.py/pull/4900)]. See the [MapLibre Migration](https://plotly.com/python/mapbox-to-maplibre/) page for details on migrating from Mapbox to Maplibre.
252
+
- Deprecate Mapbox-based traces.[[#4900](https://github.com/plotly/plotly.py/pull/4900)]. See the [MapLibre Migration](https://plotly.com/python/mapbox-to-maplibre/) page for details on migrating from Mapbox to MapLibre.
190
253
- Update plotly.py to use base64 encoding of typed arrays e.g. numpy in plotly JSON to keep precision intact and improve performance [[#4470](https://github.com/plotly/plotly.py/pull/4470)].
191
254
- Make plotly-express dataframe agnostic via Narwhals [[#4790](https://github.com/plotly/plotly.py/pull/4790)].
192
255
- Update `go.FigureWidget` to use `anywidget`[[#4823](https://github.com/plotly/plotly.py/pull/4823)]
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+22-14Lines changed: 22 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,7 +67,7 @@ you can do it directly on GitHub by clicking on the "Edit this page on GitHub" l
67
67
68
68
We use Git and GitHub to manage our project;
69
69
if you are not familiar with them,
70
-
there are great resources like <http://try.github.io/> to get you started.
70
+
there are great resources like <https://try.github.io/> to get you started.
71
71
72
72
The first step is to [fork the repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) on GitHub
73
73
so that you have your own copy to work with.
@@ -99,7 +99,7 @@ source .venv/bin/activate
99
99
100
100
Alternatively,
101
101
you can use [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands)
102
-
or [virtualenv](http://docs.python-guide.org/en/latest/dev/virtualenvs/)
102
+
or [virtualenv](https://docs.python-guide.org/en/latest/dev/virtualenvs/)
103
103
to create and manage your virtual environment;
104
104
see those tools' documentation for more information.
105
105
@@ -251,7 +251,7 @@ Two kinds of Jupyter support are included:
251
251
which allows us to avoid embedding `plotly.js` in the notebook output.
252
252
The JupyterLab extension source code is located at `js/src/mimeExtension.ts`
253
253
and the compiled extension code is located at `plotly/labextension` in the built Python package.
254
-
The command `jupyter labextension build` (which is one of the steps called by `npm run build`) compiles the extension
254
+
The command `jupyter-builder build` (which is one of the steps called by `npm run build`) compiles the extension
255
255
and places the build artifacts in `plotly/labextension`.
This downloads new versions of `plot-schema.json` and `plotly.min.js` from the `plotly/plotly.js` GitHub repository
276
-
and places them in `plotly/package_data`.
277
-
It then regenerates all of the `graph_objs` classes based on the new schema,
278
-
and finally runs `npm install` in `js/` to refresh `js/package-lock.json` against the new `plotly.js`.
279
-
Commit the updated `js/package-lock.json` along with the regenerated files.
280
-
281
-
The JupyterLab extension and FigureWidget bundles in `plotly/labextension` and `plotly/package_data/widgetbundle.js`
282
-
are rebuilt as part of the release flow (see [RELEASE.md](RELEASE.md)) rather than on every plotly.js bump.
283
-
284
-
If you need to skip the `npm install` step entirely (e.g. `npm` isn't available),
276
+
and places them in `codegen/resources/` and `plotly/package_data/`, respectively.
277
+
278
+
It then does the following:
279
+
- Regenerates all of the `graph_objs` classes based on the new schema
280
+
- Runs `npm install` in `js/` to refresh `js/package-lock.json` against the new `plotly.js`
281
+
- Runs `npm run build` to rebuild the JupyterLab extension and FigureWidget bundles in `plotly/labextension` and `plotly/package_data/widgetbundle.js`.
282
+
283
+
Commit the updated files under:
284
+
-`codegen/resources/`
285
+
-`js/`
286
+
-`plotly/graph_objs/`
287
+
-`plotly/labextension/`
288
+
-`plotly/offline/`
289
+
-`plotly/package_data/`
290
+
291
+
If you need to skip the `npm` steps entirely (e.g. `npm` isn't available),
285
292
set the `SKIP_NPM=1` environment variable:
286
293
287
294
```bash
288
295
SKIP_NPM=1 python commands.py updateplotlyjs
289
296
```
290
297
291
-
If you do skip it, you'll need to run `npm install` in `js/` yourself before committing so the lockfile stays in sync.
298
+
If you do skip it, you'll need to find a way to manually run `npm install && npm run build` in `js/` before committing,
299
+
so that the lockfile and build artifacts stay in sync with `js/package.json`.
0 commit comments