Releases: JetBrains/lets-plot
v4.8.2
v4.8.2rc1
Updated version v4.8.2rc1
v4.8.1
v4.8.1rc1
Updated version v4.8.1rc1
v4.8.0
[4.8.0] - 2025-11-05
Added
-
Geometries:
-
geom_pointdensity()[#1370].See: example notebook.
-
Geoms with 1-to-1 statistics (such as
geom_qq(),geom_sina()) preserve the mapping to original data after statistical transformation.See: example notebook.
-
geom_histogram(): custom bin bounds (parameterbreaks) [#1382].See: example notebook.
-
-
Plot Layout:
-
The legend automatically wraps to prevent overlap - up to 15 rows for vertical legends and 5 columns for horizontal ones [#1235].
See: example notebook.
-
gggrid(): support for shared legends (parameterguides).See: example notebook.
-
-
Plot Theme:
-
flavor_standard()sets the theme's default color scheme [#1277].
Use to override other flavors or make defaults explicit.See: example notebook.
-
theme_gray()as an alias fortheme_grey(). -
legend_justificationparameter oftheme()accepts additional string values:'left','right','top', and'bottom'.See: example notebook.
-
Support for inward axis ticks.
See: example notebook.
-
-
Markdown:
- Support for
targetattribute for links. - Links now open in a new tab by default [#1397].
- Support for
-
ggtb():size_zoominandsize_basisparameters for geometry scaling [#1369].See: example notebook.
Changed
-
[BREAKING] Explicit
groupaesthetic now overrides default grouping behavior instead of combining with it [#1401].See: example notebook.
Important
Previously, setting group='variable' would group by both the explicit variable AND any discrete
aesthetics (color, shape, etc.).
Now it groups ONLY by the explicit variable, matching ggplot2 behavior.
Use group=[var1, var2, ...] to group by multiple variables explicitly,
and group=[] to disable any grouping.
-
Missing values in
geom_line(), geom_path(), geom_ribbon(), andgeom_area()create gaps in geometries instead of being interpolated over [#818], [#1406].See: example notebook.
-
theme: theexponent_formatdefault value changed to'pow'- superscript powers of 10 (was e-notation). -
The multi-layer line plot now shows tooltips for each series simultaneously, in the same way that a single-layer plot with color mapped to series does.
Fixed
geom_pieon geospatioal plot withmap_joinfailes to render without explicitgroupaesthetic.- geom_density2d: NullPointerException when weight aesthetic contains None values [#1399].
- Tooltip shows duplicate lines when as_discrete is applied twice to the same var [#1400].
- geom_sina: incorrect shape in legend [#1403].
- geom_density2d: Incorrect processing of weighted statistics when None value occurs in the x or y column.
- facet_wrap: indescriptive error when the specified facet variable is not present in the dataset [#1409].
- Integer numbers in facet strip titles are displayed as float [#1386].
- Error when using scale_identity(aesthetic="shape") [#1212].
- ggsave: theme option face="italic" doesn't work [#1391].
- Fail early if string format is incorrect [#1410].
v4.8.0rc1
Updated version v4.8.0rc1
v4.7.3
[4.7.3] - 2025-09-12
Changed
ggsave(): Large plot dimensions without units now require explicit unit specification.
When plot size exceeds 20 without specifying units (e.g.,ggsave(p, 300, 400)),
we ask to specify units explicitly:
ggsave(p, 300, 400, unit='px')orggsave(p, 3, 4, unit='in').
Fixed
ggtb()support in Swing/Batik frontend.- Multiline support for axis labels in polar coordinates.
- When the plot size in
ggsave()is specified in pixels,dpinow affects
only the physical size, not the pixel dimensions as before. - Blocking
SwingUtilities.invokeAndWait()call in plot image export (AWT backend)
v4.7.2
[4.7.2] - 2025-09-01
Added
-
Plot Layout:
- New
strip_spacing,strip_spacing_x, andstrip_spacing_yparameters intheme()to control spacing between the facet strip (title bar) and the plot panel. - New
panel_spacing,panel_spacing_x, andpanel_spacing_yparameters intheme()to control spacing between plot panels in faceted plots, [#1380].
See: example notebook.
- New
-
Image resolution is saved in the metadata of PNG files created with
ggsave().
Changed
- plot-image-export: switched from Batik to Graphics2D API
Fixed
- ggsave(): memory leak when using
geom_raster(). - Incorrect physical image size when exporting PDF with
ggsave()without specifyingdpi.
v4.7.2rc1
Updated version v4.7.2rc1
v4.7.1
[4.7.1] - 2025-08-13
Added
- ggsave():
- support font synthesis for italic and bold styles.
pxunit support for PNG and PDF formats.w,handunitparameters support for SVG [#1368].
Changed
-
facet_wrap()now drops factor levels that do not appear in the data (i.e., empty panels) by default [#1322].
To keep unused factor levels, use the newdropparameter, i.e.,drop=False.See: example notebook.
-
Removed extra spacing between facet strips and plot panels in
facet_wrap()andfacet_grid().
Fixed
- geom_livemap: can't draw a path crossing the antimeridian [#649].
- Tooltip for a line have higher priority than points, even if the point is specified first in the layer list [#1060].
- geom_ribbon(): tooltip appears in the wrong place on flipped ribbon [#1334].
- Arrow crossing -180 longitude is split into two arrows [#1364].
- Coordinate limits do not work on reversed scales [#1365]
- Misaligned axis labels and ticks in polar coordinates.
- Display order of fill categories not being set correctly in stacked plots? [#1367]
- Polars: add handling for
Enumvalues [#1373] - Unclear error when using geom_rect with discrete scales [#1287]
- xlim() breaks default scale_x_datetime() [#1348]
- scale_x_reverse breaks datetime formatting [#1257]
- theme(plot_title="blank") doesn't work with gggrid [#1349]
- theme: error parsing color value pen [#1216]
- Incorrect appearance of stacked density plot in polar coordinates [#1375]