Releases: plotly/plotly.py
v4.13.0 - Magical Error Messages and Documentation, plus Speedups and Faceted Maps
See the fully release announcement at https://community.plotly.com/t/announcing-plotly-py-4-13-magical-error-messages-and-documentation-plus-speedups-and-faceted-maps/47497
Added
px.choropleth
,px.scatter_geo
andpx.line_geo
now support faceting as well asfitbounds
andbasemap_visible
2923px.scatter_geo
andpx.line_geo
now supportgeojson
/featureidkey
input 2923px.scatter_geo
now supportssymbol
2923go.Figure
now has aset_subplots
method to set subplots on an already
existing figure. 2866- Added
Turbo
colorscale and fancier swatch display functions
2882 - A utility function
image_array_to_data_uri
has been added in
plotly.utils
, in order to transform NumPy arrays to data b64 URIs (which
can be passed to the source parameter ofgo.Image
, or to layout images).
2879 - the
selector
argument to updater/selector functions now acceptsint
s andstr
s
2894
Updated
- the JSON serialization of plotly figures has been accelerated thanks to a
different handling of Infinity and NaN values. For example, a figure with a
1000x1000 Heatmap should now serialize 2x faster. 2880 - Coding mistakes with "magic underscores" now return significantly more ergonomic error
messages 2843 - Error messages related to impossible subplot geometries are now much more helpful
2897
Fixed
px.scatter_geo
support fortext
is fixed 2923- the
x
andy
parameters ofpx.imshow
are now used also in the case where
an Image trace is used (for RGB data or withbinary_string=True
). However,
only numerical values are accepted (while the Heatmap trace allows date or
string values forx
andy
). 2761
v4.12.0 - Horizontal and Vertical Lines and Rectangles
See the full release announcement at https://community.plotly.com/t/announcing-plotly-py-4-12-horizontal-and-vertical-lines-and-rectangles/46783
Added
- For
add_trace
,add_shape
,add_annotation
andadd_layout_image
, therow
and/orcol
argument now also accept the string"all"
.row="all"
adds the object to all the subplot rows andcol="all"
adds the object to all the subplot columns. (#2840) - Shapes that reference the plot axes in one dimension and the data in another dimension can be added with the new
add_hline
,add_vline
,add_hrect
,add_vrect
functions, which also support therow="all"
andcol="all"
arguments. (#2840) - The
add_trace
,add_shape
,add_annotation
,add_layout_image
,add_hline
,add_vline
,add_hrect
,add_vrect
functions accept an argumentexclude_empty_subplots
which ifTrue
, only adds the object to subplots already containing traces or layout objects. This is useful in conjunction with therow="all"
andcol="all"
arguments. (#2840) - For all
go.Figure
functions accepting a selector argument (e.g.,select_traces
), this argument can now also be a function which is passed each relevant graph object (in the case ofselect_traces
, it is passed every trace in the figure). For graph objects where this function returns true, the graph object is included in the selection. (#2844)
Updated
- Updated Plotly.js to version 1.57.1. See the plotly.js CHANGELOG for more information. These changes are reflected in the auto-generated
plotly.graph_objects
module.
v4.11.0 - Period positioning on date axes
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
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()
andplotly.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 newbinary_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
andbinary_compression_level
control
how to generate the b64 string (#2691px.imshow
has a newconstrast_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()
withhtml=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
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 toplotly.io.to_image
andplotly.io.write_image
. Theengine
argument may be set to"kaleido"
,"orca"
, or"auto"
. The default isengine="auto"
, in which case the Kaleido backend is enabled if thekaleido
package from PyPI is installed, otherwise Orca is used. (#2613). plotly.express.timeline()
added as an official alternative toplotly.figure_factories.create_gantt()
(#2626)create_hexbin_mapbox()
added to Figure Factories, with thanks to @RenaudLN for the impressive contribution!facet_row_spacing
andfacet_col_spacing
added to Plotly Express cartesian 2d functions (#2614)base
added to Plotly Expressbar
andbar_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
whenrender_mode="webgl"
in Plotly Express (#2614) - regression from 4.8.1 whereby
"parent"
was not accepted as part ofpath
forpx.sunburst()
andpx.treemap()
(#2640) create_dendrogram()
figure factory now works correctly withscipy
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 withkind
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
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 bareint
-like values forrows
/cols
as well as lists thereof (#2546), with thanks to @MCBoarder289 for the contribution!
Fixed
row
/col
now acceptint
-like values, not strictlyint
values (#2451), with thanks to @MCBoarder289 for the contribution!- Fixed special cases with
px.sunburst
andpx.treemap
withpath
input (#2524) - Fixed bug in
hover_data
argument ofpx
functions, when the column name is changed with labels andhover_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 datetimex
values (#2554) - Fixed bug in
px.sunburst
andpx.treemap
: when thecolor
andvalues
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 setsline_group=<variable>
in wide mode by default (#2599)- Corrected some regex warnings (#2577), with thanks to @georgevdd for the contribution!
v4.8.1
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
andplotly.express.colors
v4.8.0 - Plotly Express Support for Wide- and Mixed-Form Data, plus a Pandas backend
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 viapandas.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
andy
should behave similarly. (#2336)- New datasets have been added to
plotly.express.data
:stocks
,experiment
,medals_wide
andmedals_long
. (#2336) - plotly
go.Figure
andgo.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
andstripmode
arguments for 2d-cartesian functions in Plotly Express (i.e.scatter
,line
,area
,bar
,histogram
,violin
,box
,strip
,funnel
,density_heatmap
anddensity_contour
) has been refined (#2336):- wide-form data support: if either
x
ory
(but not both) may now be provided as a list of column references intodata_frame
or columns of data, in which case the imputed data frame will be treated as "wide" data andmelt()
ed internally before applying the usual mapping rules, with function-specific defaults. - if neither
x
nory
is provided butdata_frame
is, the data frame will be treated as "wide" with defaults depending on the value oforientation
(andorientation
has accordingly been added toscatter
,line
,density_heatmap
, anddensity_contour
for this purpose). Previously this would have resulted in an empty figure. - if
x
ory
is missing, it is inferred to be the index ofdata_frame
ifdata_frame
provided, otherwise a stable index of integers starting at 0. In the case ofpx.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 likepx.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 tov
(h
). Previously it always defaulted tov
but this is not considered a breaking change, as the cases in which it now defaults toh
caused unreadable output if set tov
. - if both
x
andy
are provided and one of them does not contain continuous values,orientation
defaults to the value perpendicular to that axis. Previously it always defaulted tov
but this is not considered a breaking change, as the cases in which it now defaults toh
caused unreadable output if set tov
. - if both
x
andy
are provided tohistogram
, and ifx
,y
andz
are provided todensity_heatmap
ordensity_contour
, thenhistfunc
now defaults tosum
so as to avoid ignoring the provided data, and to causehistogram
andbar
to behave more similarly. violinmode
,boxmode
andstripmode
now default tooverlay
ifx
(y
) in inv
(h
) orientation is also mapped tocolor
, to avoid strange spacing issues with the previous default ofgroup
in all cases.
- wide-form data support: if either
- The Plotly Express arguments
color_discrete_map
,symbol_map
andline_dash_map
now accept the string"identity"
which causes the corresponding input data to be used as-is rather than mapped intocolor_discrete_sequence
,symbol_sequence
orline_dash_sequence
, respectively. (#2336) - Plotly Express now accepts
px.Constant
orpx.Range
objects in the place of column references so as to express constant or increasing integer values. (#2336)
v4.7.1
Fixed
- Fix
AttributeError: module 'plotly.graph_objs' has no attribute 'FigureWidget'
exception onfrom plotly.graph_objs import *
whenipywidgets
is not installed. Error also occurred when importingplotly.figure_factor
. It is now possible to importplotly.graph_objs.FigureWidget
whenipywidgets
is not installed, and an informativeImportError
exception will be raised in theFigureWidget
constructor (#2443, #1111). - Fix
TypeError: unhashable type: 'Template'
duringFigure
construction whenplotly.io.templates.default
is set to aTemplate
object rather than a string.
v4.7.0
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 ofpx
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.