Download Latest Version v4.9.0 source code.tar.gz (197.1 MB)
Email in envelope

Get an email when there's a new version of Lets-Plot

Home / v4.9.0
Name Modified Size InfoDownloads / Week
Parent folder
lets-plot.min.js 2026-03-11 2.8 MB
README.md 2026-03-11 7.3 kB
v4.9.0 source code.tar.gz 2026-03-11 197.1 MB
v4.9.0 source code.zip 2026-03-11 199.3 MB
Totals: 4 Items   399.2 MB 0

[4.9.0] - 2026-03-11

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:

  • New geom_bracket(), geom_bracket_dodge() [#1114].

    See: example notebook.

  • geom_imshow():

    • Support for custom colormaps [#780].
    • New cguide parameter: use to customize the colorbar for grayscale images.

    See: example notebook.

  • 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:

  • New break_width parameter that specifies a fixed distance between axis breaks.

    See examples:

  • Support for axis minor ticks via axis_minor_ticks and axis_minor_ticks_length parameters in theme() [#1379].

    See: example notebook.

  • 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.
Source: README.md, updated 2026-03-11