| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2025-12-02 | 7.6 kB | |
| v4.12.0 source code.tar.gz | 2025-12-02 | 35.0 MB | |
| v4.12.0 source code.zip | 2025-12-02 | 35.8 MB | |
| Totals: 3 Items | 70.8 MB | 0 | |
[4.12.0] - 2025-12-02
This release is 100% compatible with Lets-Plot v 4.8.1, GeoTools v 33.2
Added
-
Geometries:
geomPointDensity()[#1370].
See: example notebook.
- Geoms with 1-to-1 statistics (such as
geomQQ(),geomSina()) preserve the mapping to original data after statistical transformation.
See: example notebook.
geomHistogram(): 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:
flavorStandard()sets the theme's default color scheme [#1277].
Use to override other flavors or to make defaults explicit.
See: example notebook.
-
themeGray()as an alias forthemeGrey(). -
New
themefunctions for setting legend justification:legendJustificationTop(),legendJustificationRight(),
legendJustificationBottom(), andlegendJustificationLeft().
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():sizeZoominandsizeBasisparameters for geometry scaling [#1369].
See: example notebook.
- New
outputparameter for the library descriptor to control output types stored in notebook cells [LPK-277].\ Thanks to AndreiKingsley for the contribution!%use lets-plot(output="js, png")
Available output types:
- js - Classic Web output: HTML+JS
- ktnb - Kotlin Notebook Swing-based rendering
- svg - Static SVG output
- png - Static PNG output
Default: "js, ktnb, svg"
Note: Static images (SVG/PNG) are hidden when js or ktnb outputs are present, and only displayed in environments where JavaScript is not executed (e.g., GitHub).
This option can be helpful when a Kotlin Notebook file size becomes a problem. \ For example, when working with large datasets where plot interactivity is not a priority, storing only static output (SVG or PNG) can significantly reduce file size.
CenteredPlotPanelhelper class for displaying plots centered in Swing applications.
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, matchingggplot2behavior. \ Usegroup=listOf(var1, var2, ...)to group by multiple variables explicitly, \ andgroup=emptyList<Any>()to disable any grouping.
- Missing values in
geomLine(), geomPath(), geomRibbon(), andgeomArea()create gaps in geometries instead of being interpolated over [[LPK-269],[#818](https://github.com/LPK-269],[/issues/818)], [#1406].
See: example notebook.
-
theme: theexponentFormatdefault 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
- Group by multiple columns [LPK-136].
geomPieon geospatial plot withmapJoinfailes to render without explicitgroupaesthetic.geomDensity2D: NullPointerException when weight aesthetic contains None values [#1399].- Tooltip shows duplicate lines when as_discrete is applied twice to the same var [#1400].
geomSina: incorrect shape in legend [#1403].geomDensity2D: Incorrect processing of weighted statistics when None value occurs in the x or y column.facetWrap: 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
scaleIdentity(aesthetic="shape")[#1212]. ggsave: theme optionface="italic"doesn't work [#1391].- Fail early if string format is incorrect [#1410].
statECDF()takes a very long time for even moderately sized datasets [#1424].- inconsistencies in theme/flavor inheritance in
gggrid()subplots.