Update: version 4.13 was released since this was posted.
I’m happy to announce that Plotly.py 4.12 is now available for download via pip
and conda
! For up-to-date installation and upgrading instructions (including the extra required steps for JupyterLab!) please see our Getting Started documentation page and if you run into trouble, check out our Troubleshooting Guide. Note that we skipped an announcement for version 4.11 so we’re adding the news in this post.
What’s new in Plotly.py 4.12
Our changelog has details and links to individual pull requests, but here are the highlights:
Easy Labelled Horizontal and Vertical Lines and Rectangles
Plotly has always supported the ability to draw lines and polygons on figures, as well as position text on figures but drawing and labelling simple axis-aligned shapes that don’t move when you pan away from the initial view has always been tricky and verbose.
In 4.12 we’ve added new convenience methods to figures: .add_hline()
, .add_vline()
, .add_hrect()
and .add_vrect()
. These methods allow you to very easily add lines and rectangles to your figures, with optional automatically-positioned labels!
Adding Line, Rectangles and Traces to Multiple Subplots at Once
The new methods above all automatically add shapes and text to all the subplots in a figure by default thanks to the new accepted value "all"
for the row
and col
arguments (and the “all” behaviour can be overridden by manually setting row
or col
to a number as well!). This new value is also accepted by add_shape()
, add_annotation()
and even add_trace()
, although the defaults there have not changed. This means you can now easily add a copy of the same trace to each subplot in a figure:
New xref
and yref
values for layout
objects
As part of the work above, layout.shapes
, layout.annotations
and layout.images
now all support a new xref
/yref
mode for positioning. In the past, only absolute "paper"
or data "x"
coordinates were accepted, which made sense in a single-subplot context, but correctly positioning elements on multiple subplots required a lot of manual bookkeeping. You can now position these elements using e.g. xref="x2 domain"
, in which case the value of x
is interpreted such that 0 and 1 are mapped to layout.xaxis2.domain[0]
and layout.xaxis2.domain[1]
. This enables you to easily position shapes with respect to subplot bounds.
What was new in Plotly.py 4.11
Our changelog has details and links to individual pull requests, but here are the highlights:
Period positioning on date
axes
When plotting data on date
axes, if your data coded “January 1” or “January 31” in fact refers to data collected throughout the month of January, for example, you can configure your traces to display their marks at the start end, or middle of the month with the xperiod
and xperiodalignment
attributes. In the example below, the raw data is all coded with an X value of the 10th of the month, but is binned into monthly periods with xperiod="M1"
and then displayed at the start, middle and end of the period. This feature was anonymously sponsored, and we thank our sponsor on behalf of the community!
Powered by Plotly.js 1.57 and perfect for Dash 1.17
This release of Plotly.py inherits all of the improvements to the underlying Javascript library that powers it. The full Plotly.js 1.57 changelog contains more details about what changed under the hood.
The version of Plotly.js that Plotly.py 4.12 is built on is the same one that’s bundled with the just-released Dash 1.17 so we recommend that if you’re a Dash user you upgrade to both Dash 1.17 and Plotly.py 4.12 to get the full benefit of all of these libraries working together.
Get it now!
To sum up: Plotly.py 4.12 is out and if you’re excited about any of the above features, head on over to our Getting Started documentation page for full installation instructions, and don’t forget to upgrade your JupyterLab extensions if that is your environment of choice!
In Case You Missed It: Previous 4.x Announcements
- Plotly.py 4.10:
date
-axis andpx.timeline()
improvements- Full Figures for Development
- A Faster
px.imshow()
- Plotly.py 4.9:
- Kaleido for static image export
- Hexbin Tile Maps
- Timelines
- Plotly.py 4.8:
- Plotly Express Support for Wide- and Mixed-Form Data
- a Pandas backend
- Plotly.py 4.7:
- Major performance improvments
- Shape-drawing
- Plotly.py 4.6:
- unified hover labels
- excluding weekends from time-series axes
imshow
labelling andxarray
support
- Plotly.py 4.5:
- legend titles
- GeoJSON choropleth improvements
- a new sunburst/treemap
path
API uniformtext
- Plotly.py 4.4:
- new Plotly Express functions for pie charts, sunbursts, treemaps, funnels maps,
- Plotly.py 4.3:
px.imshow
for heatmaps and full-color images- facet wrapping in Plotly Express,
- Plotly.py 4.2:
- Treemaps
- Plotly Express input enhancements to work without data frames
texttemplate
everywhere
- Plotly.py 4.1:
- Mapbox maps without Mapbox tokens
- Choropleth and Density mapbox maps
- Indicators (big numbers, gauges, bullet charts)
- Plotly.py 4.0 :
- offline-only
plotly.express
-first- displayable anywhere