Skip to content

Releases: plotly/plotly.py

v4.11.0 - Period positioning on date axes

01 Oct 14:11
Compare
Choose a tag to compare

See the full release announcement at https://community.plotly.com/t/announcing-plotly-py-4-12-horizontal-and-vertical-lines-and-rectangles/46783

Updated

  • Updated Plotly.js to version 1.56.0. See the plotly.js CHANGELOG for more information. These changes are reflected in the auto-generated plotly.graph_objects module.

v4.10.0 - date-axis improvements, a Faster px.imshow() and Full Figures for Development

10 Sep 13:15
Compare
Choose a tag to compare

See the full announcement at https://community.plotly.com/t/announcing-plotly-py-4-10-date-axis-improvements-a-faster-px-imshow-and-full-figures-for-development/44685

Added

  • Added plotly.io.full_figure_for_development() and plotly.graph_objects.Figure.full_figure_for_development() (#2737)

Updated

  • Updated Plotly.js to version 1.55.2. See the plotly.js CHANGELOG for more information. These changes are reflected in the auto-generated plotly.graph_objects module.
  • px.imshow has a new binary_string boolean argument, which passes the
    image data as a b64 binary string when True. Using binary strings allow for
    faster image rendering and smaller figure size. Additional optional arguments
    binary_backend, binary_format and binary_compression_level control
    how to generate the b64 string (#2691
  • px.imshow has a new constrast_rescaling argument in order to choose how
    to set data values corresponding to the bounds of the color range
    (#2691

Fixed

  • Plotly Express no longer converts datetime columns of input dataframes to UTC (#2749)
  • Plotly Express has more complete support for datetimes as additional hover_data (#2749)
  • Histogram selection behaviour with FigureWidget (#2711) with thanks to @meffmadd
  • Behaviour of full_html() with html=False (#2469) with thanks to @tallamjr
  • ff.distplot() now only computes traces that will be shown (#2730) with thanks to @akbo
  • Pandas backend .hist() works with latest version of Pandas (#2713) with thanks to @Kerybas

v4.9.0 - Kaleido for static image export, Hexbin Tile Maps, and Timelines

16 Jul 13:30
Compare
Choose a tag to compare

See the full announcement at https://community.plotly.com/t/announcing-plotly-py-4-9-kaleido-for-static-image-export-hexbin-tile-maps-and-timelines/42524

Added

  • Added image export support using Kaleido. The image export backend can be configured using the new engine argument to plotly.io.to_image and plotly.io.write_image. The engine argument may be set to "kaleido", "orca", or "auto". The default is engine="auto", in which case the Kaleido backend is enabled if the kaleido package from PyPI is installed, otherwise Orca is used. (#2613).
  • plotly.express.timeline() added as an official alternative to plotly.figure_factories.create_gantt() (#2626)
  • create_hexbin_mapbox() added to Figure Factories, with thanks to @RenaudLN for the impressive contribution!
  • facet_row_spacing and facet_col_spacing added to Plotly Express cartesian 2d functions (#2614)
  • base added to Plotly Express bar and bar_polar functions (#2626)
  • px.NO_COLOR constant to override wide-form color assignment in Plotly Express (#2614)

Fixed

  • trendline traces are now of type scattergl when render_mode="webgl" in Plotly Express (#2614)
  • regression from 4.8.1 whereby "parent" was not accepted as part of path for px.sunburst() and px.treemap() (#2640)
  • create_dendrogram() figure factory now works correctly with scipy 1.5.1 (#2627)

Updated

  • Updated Plotly.js to version 1.54.6. See the plotly.js CHANGELOG for more information.
  • Added all cartesian-2d Plotly Express functions, plus imshow, to Pandas backend with kind option (#2541)
  • plotly.express.imshow now uses data frame index and columns names and values to populate axis parameters by default (#2539)
  • Javascript extensions are now build using Node 12, and have an updated package-lock.json with many fewer security warnings (#2636)

v4.8.2

26 Jun 19:46
Compare
Choose a tag to compare

See the full announcement at https://community.plotly.com/t/announcing-plotly-py-4-8-plotly-express-support-for-wide-and-mixed-form-data-plus-a-pandas-backend/40048

Updated

  • Updated Plotly.js to version 1.54.5. See the plotly.js CHANGELOG for more information. This version includes various bug and security fixes.
  • add_traces() now accepts bare int-like values for rows/cols as well as lists thereof (#2546), with thanks to @MCBoarder289 for the contribution!

Fixed

  • row/col now accept int-like values, not strictly int values (#2451), with thanks to @MCBoarder289 for the contribution!
  • Fixed special cases with px.sunburst and px.treemap with path input (#2524)
  • Fixed bug in hover_data argument of px functions, when the column name is changed with labels and hover_data is a dictionary setting up a specific format for the hover data (#2544).
  • Made the Plotly Express trendline argument more robust and made it work with datetime x values (#2554)
  • Fixed bug in px.sunburst and px.treemap: when the color and values arguments correspond to the same column, a different aggregation function has to be used for the two arguments (#2591)
  • Plotly Express wide mode now accepts mixed integer and float columns (#2598)
  • Plotly Express range_(x|y) should not impact the unlinked range of marginal subplots (#2600)
  • px.line now sets line_group=<variable> in wide mode by default (#2599)
  • Corrected some regex warnings (#2577), with thanks to @georgevdd for the contribution!

v4.8.1

29 May 03:17
Compare
Choose a tag to compare

See the full announcement at https://community.plotly.com/t/announcing-plotly-py-4-8-plotly-express-support-for-wide-and-mixed-form-data-plus-a-pandas-backend/40048

Fixed

  • Fixed the accidental removal of some functions and submodules from plotly.colors and plotly.express.colors

v4.8.0 - Plotly Express Support for Wide- and Mixed-Form Data, plus a Pandas backend

26 May 14:21
Compare
Choose a tag to compare

See the full announcement at https://community.plotly.com/t/announcing-plotly-py-4-8-plotly-express-support-for-wide-and-mixed-form-data-plus-a-pandas-backend/40048

Key new documentation pages:

Added

  • plotly now provides a Plotly Express-backed Pandas-compatible plotting backend, which can be activated via pandas.options.plotting.backend = "plotly". Note that it is not intended to implement every Pandas plotting function, nor is it intended to replicate the behaviour of every argument, although per the changes below, x and y should behave similarly. (#2336)
  • New datasets have been added to plotly.express.data: stocks, experiment, medals_wide and medals_long. (#2336)
  • plotly go.Figure and go.FigureWidget now have a _repr_html_ and a _repr_mimebundle_ method, which are standard hooks for integration in systems based on IPython. In particular, with _repr_html_ plotly figures can now be used within sphinx-gallery without any scraper. These additions should not change anything to the way plotly figures are displayed in notebook environments, since the _ipython_display_ method (already present in earlier versions) takes precedence over the new methods.

Updated

  • The behaviour of the x, y, orientation, histfunc, violinmode, boxmode and stripmode arguments for 2d-cartesian functions in Plotly Express (i.e. scatter, line, area, bar, histogram, violin, box, strip, funnel, density_heatmap and density_contour) has been refined (#2336):
    • wide-form data support: if either x or y (but not both) may now be provided as a list of column references into data_frame or columns of data, in which case the imputed data frame will be treated as "wide" data and melt()ed internally before applying the usual mapping rules, with function-specific defaults.
    • if neither x nor y is provided but data_frame is, the data frame will be treated as "wide" with defaults depending on the value of orientation (and orientation has accordingly been added to scatter, line, density_heatmap, and density_contour for this purpose). Previously this would have resulted in an empty figure.
    • if x or y is missing, it is inferred to be the index of data_frame if data_frame provided, otherwise a stable index of integers starting at 0. In the case of px.bar, if the provided value is not continuous, the missing value is treated as a column of 1s named "count", so as to behave more like px.histogram and to avoid sizing the resulting bars differently based on their position in the column. Previously, missing values defaulted to integers starting at 0 per trace which made it potentially inconsistent or misleading.
    • if x (y) is missing, orientation now defaults to v (h). Previously it always defaulted to v but this is not considered a breaking change, as the cases in which it now defaults to h caused unreadable output if set to v.
    • if both x and y are provided and one of them does not contain continuous values, orientation defaults to the value perpendicular to that axis. Previously it always defaulted to v but this is not considered a breaking change, as the cases in which it now defaults to h caused unreadable output if set to v.
    • if both x and y are provided to histogram, and if x, y and z are provided to density_heatmap or density_contour, then histfunc now defaults to sum so as to avoid ignoring the provided data, and to cause histogram and bar to behave more similarly.
    • violinmode, boxmode and stripmode now default to overlay if x (y) in in v (h) orientation is also mapped to color, to avoid strange spacing issues with the previous default of group in all cases.
  • The Plotly Express arguments color_discrete_map, symbol_map and line_dash_map now accept the string "identity" which causes the corresponding input data to be used as-is rather than mapped into color_discrete_sequence, symbol_sequence or line_dash_sequence, respectively. (#2336)
  • Plotly Express now accepts px.Constant or px.Range objects in the place of column references so as to express constant or increasing integer values. (#2336)

v4.7.1

08 May 13:10
Compare
Choose a tag to compare

Fixed

  • Fix AttributeError: module 'plotly.graph_objs' has no attribute 'FigureWidget' exception on from plotly.graph_objs import * when ipywidgets is not installed. Error also occurred when importing plotly.figure_factor. It is now possible to import plotly.graph_objs.FigureWidget when ipywidgets is not installed, and an informative ImportError exception will be raised in the FigureWidget constructor (#2443, #1111).
  • Fix TypeError: unhashable type: 'Template' during Figure construction when plotly.io.templates.default is set to a Template object rather than a string.

v4.7.0

06 May 16:26
Compare
Choose a tag to compare

Updated

  • Updated Plotly.js to version 1.54.1. See the plotly.js CHANGELOG for more information. The main new feature of this version of Plotly.js is the possibility to draw layout shapes, using custom dragmodes and corresponding modebar buttons.
  • The sphinx-gallery scraper has been updated to work with different structures of galleries #2149

Added

  • The hover_data parameter of px functions can now be a dictionary. This makes it possible to skip hover information for some arguments or to change the formatting of hover informatiom #2377.
  • It's now possible to build a development version of Plotly.py against the build artifacts from a non-master branch of Plotly.js, which makes for faster QA and development cycles #2349. Thanks @zouhairm for this Pull Request!

Fixed

  • Plotly Express trendlines now handle missing data correctly #2357

Performance

This version includes several performance improvements (#2368, #2403).

  • Child graph objects (e.g. figure.layout.xaxis) are no longer created eagerly during graph object construction. Instead, they are created lazily the first time the property is accessed.
  • Property validation is now disabled for select internal operations.
  • When used with Python 3.7 and above, ploty.py now takes advantage of PEP-562 to perform submodule imports lazily. This dramatically improves import times.

v4.6.0

09 Apr 14:53
Compare
Choose a tag to compare

Updated

  • Updated Plotly.js to version 1.53.0. See the plotly.js CHANGELOG for more information on the numerous new features and bug fixes of this release. The main features of the Plotly.js release are
    • Introduce range breaks on date axes (for example, to remove week-ends) via layout.xaxis.rangebreaks
    • Introduce a new unified x (or y) hovermode (layout.hovermode="x unified"), in which the hover box shows the information for all traces at a given x (or y) position
    • Add node.customdata and link.customdata to sankey traces
  • Updated contributing notes for more explanations on how to contribute to plotly.py #2290. Please give feedback on these notes!
  • Updated documentation examples #2325, and to show how to color links in Sankey diagrams #2291.
  • Special thanks to @SylwiaOliwia2 and @dangercrow for improving our documentation!

Added

  • px.imshow now accepts xarray inputs, with metadata being used for axis labels, hover and colorbar #2166

Fixed

  • Fixed handling of opacity in px.pie, px.funnel_area, px.density_mapbox, px.funnel #2317, with thanks to @tvaucher for the contribution!

v4.5.4

11 Mar 20:38
Compare
Choose a tag to compare

Updated

Fixed

  • Jupyterlab extension now compatible with both Jupyterlab 1.2 and 2.0 #2261 with thanks to @consideRatio for the contribution!
  • Fixed a bug when using boolean values for the color argument of px functions #2127
  • Corrected import bug which was occuring with old versions of ipywidgets #2265
  • Fixed python 3.8 syntax warning #2262, with thanks to @sgn for the contribution!