v4.7.0
[4.7.0] - 2025-07-17
Added
-
Time Series Plotting [#278],
[discussion],
[#678],
[LPK-129]:- Support for Python
timeanddateobjects. - Support for timezone-aware
datetimeobjects and Pandas/PolarsSeries.
See: example notebook.
- Support for Python
-
Geometries:
-
geom_sina()[#1298].See: example notebook.
-
geom_text_repel()andgeom_label_repel()[#1092].See: example notebook.
-
-
Layer Labels (Annotations):
-
Support in
geom_crossbar()See: example notebook.
-
Support in
waterfall_plot()viarelative_labelsandabsolute_labelsparameters.See: example notebook.
-
New
inherit_color()option in annotations configuration (see example notebooks above)
-
-
waterfall_plot()- support for combining waterfall bars with other geometry layers [#1344].See: example notebook.
-
Plot Layout:
- New
axis_text_spacing,axis_text_spacing_x, andaxis_text_spacing_yparameters intheme()to control spacing between axis ticks and labels. - See new plot layout diagram notebook showing various layout options and their effects on plot appearance.
- New
-
More variants to specify a color by name:
- all HTML/CSS colors;
- various naming styles, e.g.,
dark-gray,darkgrey,dark_grey,DARKGRAY, etc.; - grayscale colors from
gray0(black) togray100(white);
-
size_unitparameter ingeom_point(),geom_text/label()andgeom_pie()accepts two new values:'min'and'max'[#260].'min'sets the size unit to the smaller of the unit steps along the x and y axes, while'max'sets it to the larger.
This allows for more flexible relative sizing of points, pies and text in plots.See: example notebook.
Changed
-
Native support for PNG and PDF exports [#1268]:
Exporting to PNG and PDF formats now uses the
ImageMagicklibrary bundled with Lets-Plot Python wheels and available out-of-the-box.
This replaces the previous dependency on theCairoSVGlibrary and comes with improved support for LaTeX labels rasterization.
Related changes:ggsave: thewandhparameters override plot size, allowing to specify the output image size independently of the plot size.ggsave: thedpidefault value changed to 300.ggsave: theunitdefault value changed toin(inches).
-
Continuous data on discrete scales:
Continuous data when used with discrete positional scales is no longer transformed to discrete data.
Instead, it remains continuous, allowing for precise positioning of continuous elements relative to discrete ones.
This resolves issues where combining discrete and continuous data in the same plot was difficult or impossible: [#1279].See: example notebook.
Tip
New way of handling continuous data on discrete scales could potentially break existing plots.
If you want to restore a broken plot to its original form, you can use the as_discrete() function to annotate continuous data as discrete.
- [BREAKING] Dropped support for Python 3.8 as it is in the "end-of-life" of its release cycle.
- [BREAKING]
geom_boxplot(): when y-oriented, it now uses aestheticsxlower/xmiddle/xupperinstead oflower/middle/upper[#1319]. - [BREAKING]
waterfall_plot(): specialflow_typevalue forlabel=element_text(color=...)replaced withinherit. Seelabelin the documentation. - [DEPRECATED] The
position_dodgev()function and the'dodgev'value for thepositionparameter are deprecated and will be removed in future releases. - Plot layout: reduced margins and spacing for title, caption, axes, and legend.
- Updated RGB values for
lightgrayandgreen. To restore the previous colors, usegray75andlime, respectively. waterfall_plot(): the appearance of the legend has been improved.geom_violin(): tooltips are not shown in the centerline of the violin ifshow_half != 0.geom_crossbar(): the midline is not shown in the legend whenfattenis set to 0, or when there is no mapping for it.geom_pointrange(): the midpoint will not be drawn if the y aesthetic is set toNone.geom_band(): thealphaaesthetic only affects the inner part of the geometry, as ingeom_rect().geom_band(): show tooltip over the whole band, not just at the edges.
Fixed
- AWT: plot prevents wheel events from bubbling up to the parent component.
- Added tooltip for
geom_hlineandgeom_vlineongeom_livemap[#1056]. geom_boxplot: unable to draw a y-oriented plot withstat='identity'[#1319].- Can't add layer which uses continuous data to a plot where other layers use discrete input [#1323].
- Multiline legend labels were not vertically centered with their keys [#1331].
- Poor alignment in legend between columns [#1332].
- Ordered data was re-ordered by
geom_boxplot[#1342]. geom_rect: fixed data conversion forgeom_livemap[#1347].ggsave: incorrect output when exporting markdown demo to PNG [#1362].as_discrete()does not work with aes addition [#1363].- Sec: CVE-2024-47554 (commons-io) [#1231]