Skip to content

fix(deps): update org.jetbrains.lets-plot - #6815

Open
renovate-bot wants to merge 1 commit into
apache:masterfrom
renovate-bot:renovate/org.jetbrains.lets-plot
Open

renovate-bot wants to merge 1 commit into
apache:masterfrom
renovate-bot:renovate/org.jetbrains.lets-plot

Conversation

@renovate-bot

@renovate-bot renovate-bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
org.jetbrains.lets-plot:lets-plot-kotlin-jvm 4.11.2 → 4.15.0 age confidence
org.jetbrains.lets-plot:lets-plot-batik 4.8.0 → 4.11.0 age confidence

Release Notes

JetBrains/lets-plot-kotlin (org.jetbrains.lets-plot:lets-plot-kotlin-jvm)

v4.15.0

This release is 100% compatible with Lets-Plot v 4.11.0,
GeoTools v 33.2

Added
  • theme(): new tooltipMerge and tooltipMaxCount parameters to combine the general tooltips of multiple targets into a single tooltip.

    See: example notebook.

  • Text halos improve readability on varied backgrounds. New haloWidth and haloColor parameters are supported in geomText()/geomTextRepel() and by labels in corrPlot().

    See: example notebook.

  • SpatialDataset objects can be displayed as compact preview tables in Kotlin notebooks [LPK-274].

    See: example notebook.

Fixed
  • Incorrect hjust/vjust/angle justification of vertical-axis tick labels (theme(axisTextY=elementText(...))).
  • Rotated vertical-axis tick labels could be wrongly dropped or kept by overlap-based break filtering.
  • Misaligned or mismatched axis tick labels when some breaks are dropped after layout.

v4.14.1

This release is 100% compatible with Lets-Plot v 4.10.3,
GeoTools v 33.2

Changed
  • Updated dependencies:
    • kotlinx.datetime 0.7.1
    • kotlinx.serialization 1.9.0
    • weisj.jsvg 2.1.0
    • jupyterApi 0.15.3-893-1

v4.14.0

This release is 100% compatible with Lets-Plot v 4.10.1,
GeoTools v 33.2

Added
  • WasmJS support [LPK-296], [LPC-52].

  • ggdeck() — a new function for overlaying multiple independent plots in a single unified view.

    In a typical scenario, one axis is shared by all plots in the deck, enabling dual-axis effects and multivariate comparisons.

    See examples:

  • Datetime: %f formatting pattern — support for milliseconds when formatting datetime values, zero-padded to 3 digits [#​1482].

    See: example notebook.

  • In legends:

    • Aesthetic overrides in guideLegend() can now customize filled 2D legend keys:

      • size controls the key border width;
      • width and height control the relative key size.

      See: example notebook.

  • Indication of removed records [LPK-81], [#​686].

    When records in data are dropped by active sampling or because they contain missing or out-of-bounds values, the user is now informed of the number of dropped records and the reason they were dropped.

    The new naRm parameter in applicable geomXxx() and statXxx() functions controls the display of such messages:

    • naRm=false (default) — records are removed and messages are shown;
    • naRm=true — records are removed silently.

    See: example notebook.

  • Sampling methods can now be chained with the + operator.

    See: example notebook.

  • Alpha (transparency) component:

    • Hex colors accept #RRGGBBAA or #RGBA notation.
    • Colors accept an opacity suffix in the form "named color / opacity", for example "steelblue / 0.35".

    See: example notebook.

  • Facet strip labels now honor angle in elementText() for stripTextX and stripTextY [#​1383].

    Thanks to a contribution by tentrillion.

    See: example notebook.

  • In geomImshow(), new parameters for controlling the colorbar breaks and labels [#​1486]:

    • breaks, labels, lablim, format
Changed
  • Java Swing: Apache Batik components are deprecated. Use the Swing/AWT components instead.
Fixed
  • Add 'synchronized tooltips' feature [#​1415].
  • Alpha is not supported in elementText() [#​1462].
  • scaleAlpha(): conflict of constant and mapped values of alpha aesthetic [#​706].
  • geomImshow(): should render transparency for NaNs when all other pixel values are identical [#​1485].
  • scaleColorGradient(): guide = "legend" is rendered as a colorbar [#​1489].
  • Working with new types of data [#​184].

v4.13.0

This release is 100% compatible with Lets-Plot v 4.9.0,
GeoTools v 33.2

Added
  • Plot Annotations:

    • New labels parameter in geomSmooth() designed to display statistical summaries of the fitted model directly on the plot.
      This parameter accepts a smoothLabels() object, which provides access to model-specific variables like $R^2$, the regression equation and others [#​1388].

      See: example notebook.

    • Plot tags. A tag can be specified via labs(tag = ...) and styled using theme parameters [#​1407].

      See: example notebook and updated Plot Layout Diagrams.

    • Plot tags customization parameters in theme():

      • plotTag - sets the tag style via elementText().
      • plotTagLocation - specifies the area used for positioning the tag.
      • plotTagPosition - specifies the position of the tag within the selected area.
      • plotTagPrefix - text added before the tag value.
      • plotTagSuffix - text added after the tag value.

      See: example notebook.

  • Geometries:

  • Color Scales:

    • New palette() method for color scales: generates a list of hex color codes that can be used with scaleColorManual() or scaleFillManual() to maintain consistent colors across multiple plots [#​1444].

      See: example notebook.

    • New overflow parameter in scaleColorBrewer() / scaleFillBrewer(): controls how colors are generated when more colors are needed than the palette provides.
      Options: "interpolate" ("i"), "cycle" ("c"), "generate" ("g").

      See: example notebook.

  • Positional Scales:

  • gggrid(): interactive pan/zoom now propagates across subplots with shared axes (sharex / sharey) [#​1413].

    See: example notebook.

  • Swing Apps:

    Support for plot default interactions and custom toolbar component.

    For more details, see Interactions demo in the "lets-plot-mini-apps" repository.

Changed
  • Kotlin: v2.2.20 (was v1.9.25).

  • Artifact changes in the core Lets-Plot library (v4.9.0):

    • New artifact for JVM Swing applications: org.jetbrains.lets-plot:lets-plot-swing.
      This artifact provides the SwingPlotPanel class, which can be used to display plots in Swing applications instead of the now-obsolete DefaultPlotPanelBatik.
      For details, see the jvm-swing-app example in the "lets-plot-mini-apps" repository.
    • [BREAKING]: Removed JavaFX artifacts.
      The org.jetbrains.lets-plot:lets-plot-jfx artifact is no longer available.
      Replace it with new org.jetbrains.lets-plot:lets-plot-swing dependency and use SwingPlotPanel instead of DefaultPlotPanelJfx.
      For details, see the jvm-javafx-app example in the "lets-plot-mini-apps" repository.
    • [BREAKING]: Removed plot-image-export module.
      The org.jetbrains.lets-plot:lets-plot-image-export artifact is no longer available.
      The PlotImageExport utility has been moved to the platf-awt module: org.jetbrains.letsPlot.awt.plot.PlotImageExport.
      The required org.jetbrains.lets-plot:platf-awt dependency is likely already present in your project.
  • [BREAKING]: ColorBrewer palettes: changed default behavior when the requested number of colors exceeds the palette's maximum size.
    Now defaults to "interpolate" for sequential/diverging palettes and "generate" for qualitative palettes.
    Previously, depending on the palette type, this either resulted in duplicate colors or random additional colors.
    Use the new overflow parameter to explicitly control this behavior.

  • Missing values in geomAreaRidges() create gaps in geometries instead of being interpolated over.

  • Discrete color scales (Brewer, Manual) now produce a colorbar guide when used with continuous data.
    Previously they produced a legend guide regardless of the data type.

Fixed
  • Drop commons-io dependency [#​1421].
  • Unexpected replacement of double curly brackets with a single curly bracket [#​1433].
  • geom_imshow: unclear error message when mixing transparencies [#​1088].
  • geom_imshow and scale_y_reverse [#​1210].
  • Nice to be able to get a list of colors from a color scale object [#​1444].
  • Allow tooltips param to accept list [#​1455].
  • Allow grouped tooltips for plots with multiple univariate geoms [#​1460].
  • Fixed a regression in geomTextRepel() / geomLabelRepel(): points with empty labels were incorrectly skipped
    before building the repel obstacle set, so they were not included in collision avoidance and labels could overlap
    dense point clusters.

v4.12.1

This release is 100% compatible with Lets-Plot v 4.8.2,
GeoTools v 33.2

Added
  • Support for kotlin.time.Duration and java.time.Duration [LPK-294].
Fixed
  • Horizontal geom_boxplot() with alpha specified is displayed incorrectly [LPK-295].

v4.12.0

This release is 100% compatible with Lets-Plot v 4.8.1,
GeoTools v 33.2

Added
  • Geometries:

  • 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 (parameter guides).

      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 for themeGrey().

    • New theme functions for setting legend justification: legendJustificationTop(), legendJustificationRight(),

      legendJustificationBottom(), and legendJustificationLeft().

      See: example notebook.

    • Support for inward axis ticks.

      See: example notebook.

  • Markdown:

    • Support for target attribute for links.
    • Links now open in a new tab by default [#​1397].
  • ggtb(): sizeZoomin and sizeBasis parameters for geometry scaling [#​1369].

    See: example notebook.

  • New output parameter 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.

  • CenteredPlotPanel helper class for displaying plots centered in Swing applications.

Changed
  • [BREAKING] Explicit group aesthetic 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=listOf(var1, var2, ...) to group by multiple variables explicitly,
and group=emptyList<Any>() to disable any grouping.

  • Missing values in geomLine(), geomPath(), geomRibbon(), and geomArea() create gaps in geometries instead of being interpolated over [LPK-269],[#​818], [#​1406].

    See: example notebook.

  • theme: the exponentFormat default 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].
  • geomPie on geospatial plot with mapJoin failes to render without explicit group aesthetic.
  • 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 option face="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.
JetBrains/lets-plot (org.jetbrains.lets-plot:lets-plot-batik)

v4.11.0

Added
  • theme(): new tooltip_merge and tooltip_max_count parameters to combine the general tooltips of multiple targets into a single tooltip.

    See: example notebook.

  • Text halos improve readability on varied backgrounds. New halo_width and halo_color parameters are supported in geom_text()/geom_text_repel() and by labels in corr_plot().

    See: example notebook.

Fixed
  • Incorrect hjust/vjust/angle justification of vertical-axis tick labels (theme(axis_text_y=element_text(...)))
  • Rotated vertical-axis tick labels could be wrongly dropped or kept by overlap-based break filtering
  • Misaligned or mismatched axis tick labels when some breaks are dropped after layout

v4.10.3

Changed
  • Upgrade WeisJ/jsvg to 2.1.0

v4.10.1

Fixed
  • facet_wrap(), error when ncol or nrow parameter not specified: 'ncol' must be positive, was null

v4.10.0

Added
  • ggdeck() — a new function for overlaying multiple independent plots in a single unified view.

    In a typical scenario, one axis is shared by all plots in the deck, enabling dual-axis effects and multivariate comparisons.

    See examples:

  • Datetime: %f formatting pattern — support for milliseconds when formatting datetime values, zero-padded to 3 digits [#​1482].

    See: example notebook.

  • In legends:

    • override_aes in guide_legend() can now customize filled 2D legend keys:

      • size controls the key border width;
      • width and height control the relative key size.

      See: example notebook.

  • Indication of removed records [LPK-81], [#​686].

    When records in data are dropped by active sampling or because they contain missing or out-of-bounds values, the user is now informed of the number of dropped records and the reason they were dropped.

    The new na_rm parameter in geom_xxx() and stat_xxx() functions controls the display of such messages:

    • na_rm=false (default) — records are removed and messages are shown;
    • na_rm=true — records are removed silently.

    See: example notebook.

  • Alpha (transparency) component:

    • Hex colors accept #RRGGBBAA or #RGBA notation.
    • Colors accept an opacity suffix in the form "named color / opacity", for example "steelblue / 0.35".

    See: example notebook.

  • Facet strip labels now honor angle in element_text() for strip_text_* [#​1383].

    Thanks to a contribution by tentrillion.

    See: example notebook.

  • In geom_imshow(), new parameters for controlling the colorbar breaks and labels [#​1486]:

    • breaks, labels, lablim, format
  • geom_livemap(): the new interactive parameter controls map interactivity. Set interactive=False to disable panning and zooming and hide map controls.

    See: example notebook.

  • Memo for Kotlin API users:

Changed
  • [BREAKING] Dropped support for Python 3.9 as it is in the "end-of-life" of its release cycle. The minimum supported Python version is now 3.10.

  • Swing-Batik components are deprecated. Use the Swing/AWT components instead (doesn't affect Python users).

Fixed
  • Add 'synchronized tooltips' feature [#​1415].
  • Alpha is not supported in element_text() [#​1462].
  • scale_alpha: conflict of constant and mapped values of alpha aesthetic [#​706].
  • geom_imshow(): should render transparency for NaNs when all other pixel values are identical [#​1485].
  • scale_color_gradient(): guide='legend' is rendered as a colorbar [#​1489].

v4.9.0

Added
  • Python 3.14 support.

  • Python 3.14 free-threading support [#​1454].

  • Plot Annotations:

    • New labels parameter in geom_smooth() designed to display statistical summaries of the fitted model directly on the plot.
      This parameter accepts a smooth_labels() object, which provides access to model-specific variables like $R^2$, the regression equation and others.

      See: example notebook.

    • Plot tags. A tag can be specified via labs(tag=...) and styled using theme parameters [#​1407].

      See: example notebook and updated plot layout scheme.

    • Plot tags customization parameters in theme():

      • plot_tag - sets the tag style via element_text().
      • plot_tag_location - specifies the area used for positioning the tag.
      • plot_tag_position - specifies the position of the tag within the selected area.
      • plot_tag_prefix - text added before the tag value.
      • plot_tag_suffix - text added after the tag value.

      See: example notebook.

  • Geometries:

  • Color Scales:

    • New palette() method for color scales: generates a list of hex color codes that can be used with scale_color_manual() to maintain consistent colors across multiple plots [#​1444].

      See: example notebook.

    • New overflow parameter in scale_color_brewer() / scale_fill_brewer(): controls how colors are generated when more colors are needed than the palette provides.
      Options: 'interpolate' ('i'), 'cycle' ('c'), 'generate' ('g').

      See: example notebook.

  • Positional Scales:

  • gggrid(): interactive pan/zoom now propagates across subplots with shared axes (sharex/sharey) [#​1413].

    See: example notebook.

Changed
  • [BREAKING]: ColorBrewer palettes: changed default behavior when the requested number of colors exceeds the palette's maximum size.
    Now defaults to 'interpolate' for sequential/diverging palettes and 'generate' for qualitative palettes.
    Previously, depending on the palette type, this either resulted in duplicate colors or random additional colors.
    Use the new overflow parameter to explicitly control this behavior.

  • Reduced import overhead by nearly two orders of magnitude (from ~1.2s down to ~0.02s) [#​1469].

  • Missing values in geom_area_ridges() create gaps in geometries instead of being interpolated over.

  • Discrete color scales (Brewer, Manual) now produce a colorbar guide when used with continuous data.
    Previously they produced a legend guide regardless of the data type.

  • Changes affecting users on the JVM platform:

    • Upgraded the Kotlin version to 2.2.20 (was 1.9.25).
    • New artifact for JVM Swing applications: org.jetbrains.lets-plot:lets-plot-swing.
      This artifact provides the SwingPlotPanel class, which can be used to display plots in Swing applications instead of the now-obsolete DefaultPlotPanelBatik.
      For details, see the jvm-swing-app example in the "lets-plot-mini-apps" repository.
    • [BREAKING]: Removed JavaFX artifacts.
      The org.jetbrains.lets-plot:lets-plot-jfx artifact is no longer available.
      Replace it with new org.jetbrains.lets-plot:lets-plot-swing dependency and use SwingPlotPanel instead of DefaultPlotPanelJfx.
      For details, see the jvm-javafx-app example in the "lets-plot-mini-apps" repository.
    • [BREAKING]: Removed plot-image-export module.
      The org.jetbrains.lets-plot:lets-plot-image-export artifact is no longer available.
      The PlotImageExport utility has been moved to the platf-awt module.
      The required org.jetbrains.lets-plot:platf-awt dependency is likely already present in your project.
Fixed
  • Drop commons-io dependency [#​1421].
  • Unexpected replacement of double curly brackets with a single curly bracket [#​1433].
  • Upgrade to a newer version of ws [#​1150].
  • geom_imshow: unclear error message when mixing transparencies [#​1088].
  • geom_imshow and scale_y_reverse [#​1210].
  • Nice to be able to get a list of colors from a color scale object [#​1444].
  • Allow tooltips param to accept list [#​1455].
  • Allow grouped tooltips for plots with multiple univariate geoms [#​1460].
  • Fixed a regression in geom_text_repel() / geom_label_repel(): points with empty labels were incorrectly skipped
    before building the repel obstacle set, so they were not included in collision avoidance and labels could overlap
    dense point clusters.

v4.8.2

Fixed
  • Hyperlinks support for lets-plot-compose.
  • Colab no longer rendering lets-plot with empty setup HTML [#​1436]

v4.8.1

Fixed
  • saving plots as png takes a very long time [#​1423].
  • stat_ecdf() takes a very long time for even moderately sized datasets [#​1424].
  • lets-plot plots are not displayed in plots pane [PST-8170].
  • inconsistencies in theme/flavor inheritance in gggrid() subplots.

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "every 3 weeks on Monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@forking-renovate

forking-renovate Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: src/bom-thirdparty/build.gradle.kts
Command failed: ./gradlew -Dorg.gradle.jvmargs=-Xms512m -Xmx512m --console=plain --dependency-verification lenient -q --write-verification-metadata sha256,pgp dependencies

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Could not resolve all artifacts for configuration 'classpath'.
> Could not resolve org.eclipse.jgit:org.eclipse.jgit:7.8.0.202609011348-r.
  Required by:
      settings file 'settings.gradle.kts'
   > Could not resolve org.eclipse.jgit:org.eclipse.jgit:7.8.0.202609011348-r.
      > Could not get resource 'https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/7.8.0.202609011348-r/org.eclipse.jgit-7.8.0.202609011348-r.pom'.
         > Could not GET 'https://repo.maven.apache.org/maven2/org/eclipse/jgit/org.eclipse.jgit/7.8.0.202609011348-r/org.eclipse.jgit-7.8.0.202609011348-r.pom'. Received status code 429 from server: Too Many Requests

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to generate a Build Scan (powered by Develocity).
> Get more help at https://help.gradle.org.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
There was a failure while populating the build operation queue: The root project is not yet available for build.
> The root project is not yet available for build.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to generate a Build Scan (powered by Develocity).
> Get more help at https://help.gradle.org.
==============================================================================

BUILD FAILED in 14s

@renovate-bot
renovate-bot force-pushed the renovate/org.jetbrains.lets-plot branch from 0c3318e to 41d889c Compare October 1, 2026 11:41
@renovate-bot
renovate-bot force-pushed the renovate/org.jetbrains.lets-plot branch from 41d889c to 7a7f38d Compare October 13, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant