Download Latest Version v4.7.0 source code.tar.gz (134.4 MB)
Email in envelope

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

Home / v4.7.0
Name Modified Size InfoDownloads / Week
Parent folder
lets-plot.min.js 2025-07-17 2.8 MB
README.md 2025-07-17 7.6 kB
v4.7.0 source code.tar.gz 2025-07-17 134.4 MB
v4.7.0 source code.zip 2025-07-17 136.5 MB
Totals: 4 Items   273.7 MB 1

[4.7.0] - 2025-07-17

Added

  • Time Series Plotting [#278], [discussion], [#678], [LPK-129]:
  • Support for Python time and date objects.
  • Support for timezone-aware datetime objects and Pandas/Polars Series.

See: example notebook.

  • Geometries:

  • geom_sina() [#1298].

    See: example notebook.

  • geom_text_repel() and geom_label_repel() [#1092].

    See: example notebook.

  • Layer Labels (Annotations):

  • Support in geom_crossbar()

    See: example notebook.

  • Support in waterfall_plot() via relative_labels and absolute_labels parameters.

    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, and axis_text_spacing_y parameters in theme() to control spacing between axis ticks and labels.

  • See new plot layout diagram notebook showing various layout options and their effects on plot appearance.

  • 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) to gray100 (white);

See the complete list of named colors.

  • size_unit parameter in geom_point(), geom_text/label() and geom_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 ImageMagick library bundled with Lets-Plot Python wheels and available out-of-the-box.
This replaces the previous dependency on the CairoSVG library and comes with improved support for LaTeX labels rasterization.
Related changes: - ggsave: the w and h parameters override plot size, allowing to specify the output image size independently of the plot size. - ggsave: the dpi default value changed to 300. - ggsave: the unit default value changed to in (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 aesthetics xlower/xmiddle/xupper instead of lower/middle/upper [#1319].
  • [BREAKING] waterfall_plot(): special flow_type value for label=element_text(color=...) replaced with inherit. See label in the documentation.
  • [DEPRECATED] The position_dodgev() function and the 'dodgev' value for the position parameter 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 lightgray and green. To restore the previous colors, use gray75 and lime, respectively.
  • waterfall_plot(): the appearance of the legend has been improved.
  • geom_violin(): tooltips are not shown in the centerline of the violin if show_half != 0.
  • geom_crossbar(): the midline is not shown in the legend when fatten is 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 to None.
  • geom_band(): the alpha aesthetic only affects the inner part of the geometry, as in geom_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_hline and geom_vline on geom_livemap [#1056].
  • geom_boxplot: unable to draw a y-oriented plot with stat='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 for geom_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]
Source: README.md, updated 2025-07-17