Skip to content

Releases: plotly/plotly.py

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!

v4.5.3

06 Mar 04:18
Compare
Choose a tag to compare

Updated

  • Removed development dependency on nose testing framework #2217

Fixed

  • JupyterLab extension now compatible with JupyterLab 2.0 #2245 with thanks to @consideRatio for the contribution!

v4.5.2

25 Feb 05:11
Compare
Choose a tag to compare

Fixed

  • Fix build errors in JupyterLab extension by pinning version of @types/plotly.js #2223

v4.5.1

19 Feb 21:53
Compare
Choose a tag to compare

Updated

  • Updated Plotly.js to version 1.52.2. See the plotly.js CHANGELOG for more information on bug fixes.

Fixed

  • update_annotations, update_shapes and update_layout_images now no longer require the patch argument, as per the docstring #2167
  • px.defaults no longer accepts arbitrary keys #2168
  • better error message when pandas is not installed #2125
  • support columns of numerical type in path argument of px.sunburst/px.treemap and add values of color column in hoverlabel for px.sunburst/px.treemap #2133

v4.5.0

22 Jan 20:11
Compare
Choose a tag to compare

[4.5.0] - 2020-01-22

Updated

  • Updated Plotly.js to version 1.52.1. See the plotly.js CHANGELOG for more information on numerous new attribute and bug fixes.
  • Plotly Express uses the new legend.title attribute and so now has shorter trace names #2051
  • The heuristic used by px.parallel_categories to determine which columns of the data frame to draw has been changed and made more configurable with the dimensions_max_cardinality argument #2102
  • The simple_white colorbar styling has been streamlined #2110
  • The jupyterlab-plotly and plotlywidget JupyterLab extensions should now share code when installed together, resulting in smaller JupyterLab vendor bundle sizes #2103

Fixed

  • Plotly Express category_orders are now respected independent of the contents of the data set #2084
  • go.Scattergl symbols now accept numeric specification #1928
  • px.scatter trendline coefficients are now more readable #1984
  • Built-in cyclical color scales now all have identical start and end points #2016

Added

  • px.sunburst and px.treemap now accept a path argument for passing
    columns of a rectangular dataframe to build the charts #2006
  • px.choropleth now accepts a user-supplied geojson attribute #2057
  • px.choropleth and px.choropleth_mapbox now accept featureidkey to specify the GeoJSON field to use to match locations #2057
  • px.choropleth and px.choropleth_mapbox now accept discrete color #2057
  • px.bar_polar now accepts continuous color #2017
  • New layout.uniformtext attribute allows for automatic standardization of font sizes across bar-like and hierarchical traces. See the plotly.js CHANGELOG for more information

v4.4.1

10 Dec 16:55
6fb1052
Compare
Choose a tag to compare

[4.4.1] - 2019-12-10

Fixed

  • Fixed improper JSON encoding exception when the pillow module not installed #1993