renovate-bot opened a new pull request, #6815:
URL: https://github.com/apache/jmeter/pull/6815

   This PR contains the following updates:
   
   | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | 
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
   |---|---|---|---|
   | 
[org.jetbrains.lets-plot:lets-plot-kotlin-jvm](https://redirect.github.com/JetBrains/lets-plot-kotlin)
 | `4.11.2` → `4.15.0` | 
![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.lets-plot:lets-plot-kotlin-jvm/4.15.0?slim=true)
 | 
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.lets-plot:lets-plot-kotlin-jvm/4.11.2/4.15.0?slim=true)
 |
   | 
[org.jetbrains.lets-plot:lets-plot-batik](https://redirect.github.com/JetBrains/lets-plot)
 | `4.8.0` → `4.11.0` | 
![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.lets-plot:lets-plot-batik/4.11.0?slim=true)
 | 
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.lets-plot:lets-plot-batik/4.8.0/4.11.0?slim=true)
 |
   
   ---
   
   ### Release Notes
   
   <details>
   <summary>JetBrains/lets-plot-kotlin 
(org.jetbrains.lets-plot:lets-plot-kotlin-jvm)</summary>
   
   ### 
[`v4.15.0`](https://redirect.github.com/JetBrains/lets-plot-kotlin/blob/HEAD/CHANGELOG.md#4150---2026-06-30)
   
   This release is 100% compatible with Lets-Plot [v 
4.11.0](https://redirect.github.com/JetBrains/lets-plot/releases/tag/v4.11.0),
   GeoTools [v 
33.2](https://redirect.github.com/geotools/geotools/releases/tag/33.2)
   
   ##### Added
   
   - `theme()`: new `tooltipMerge` and `tooltipMaxCount` parameters to combine 
the general tooltips of multiple targets into a single tooltip.
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.15.0/tooltip_merge.html).
   
   - 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](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.15.0/text_halo.html).
   
   - `SpatialDataset` objects can be displayed as compact preview tables in 
Kotlin notebooks 
\[[LPK-274](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/274)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.15.0/spatial_dataset_presentation.html).
   
   ##### 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`](https://redirect.github.com/JetBrains/lets-plot-kotlin/blob/HEAD/CHANGELOG.md#4141---2026-06-10)
   
   This release is 100% compatible with Lets-Plot [v 
4.10.3](https://redirect.github.com/JetBrains/lets-plot/releases/tag/v4.10.3),
   GeoTools [v 
33.2](https://redirect.github.com/geotools/geotools/releases/tag/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`](https://redirect.github.com/JetBrains/lets-plot-kotlin/blob/HEAD/CHANGELOG.md#4140---2026-05-26)
   
   This release is 100% compatible with Lets-Plot [v 
4.10.1](https://redirect.github.com/JetBrains/lets-plot/releases/tag/v4.10.1),
   GeoTools [v 
33.2](https://redirect.github.com/geotools/geotools/releases/tag/33.2)
   
   ##### Added
   
   - **WasmJS** support 
\[[LPK-296](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/296)],
 \[[LPC-52](https://redirect.github.com/JetBrains/lets-plot-compose/issues/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:
   
     - [dual-axis 
effect](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/ggdeck_dual_axis.html)
     - [multivariate 
comparison](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/ggdeck_plot_overlay.html)
   
   - Datetime: `%f` formatting pattern — support for milliseconds when 
formatting datetime values, zero-padded to 3 digits 
\[[#&#8203;1482](https://redirect.github.com/JetBrains/lets-plot/issues/1482)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/milliseconds_format.html).
   
   - 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](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/legend_key_size.html).
   
   - Indication of removed records 
\[[LPK-81](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/81)], 
\[[#&#8203;686](https://redirect.github.com/JetBrains/lets-plot/issues/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](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/removed_records_indication.html).
   
   - Sampling methods can now be chained with the `+` operator.
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/removed_records_indication.html).
   
   - 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](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/color_alpha.html).
   
   - Facet strip labels now honor `angle` in `elementText()` for `stripTextX` 
and `stripTextY` 
\[[#&#8203;1383](https://redirect.github.com/JetBrains/lets-plot/issues/1383)].
   
     Thanks to a contribution by 
[tentrillion](https://redirect.github.com/tentrillion).
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/master/docs/examples/jupyter-notebooks/f-4.14.0/strip_text_angle.html).
   
   - In `geomImshow()`, new parameters for controlling the colorbar breaks and 
labels 
\[[#&#8203;1486](https://redirect.github.com/JetBrains/lets-plot/issues/1486)]:
     - `breaks`, `labels`, `lablim`, `format`
   
   ##### Changed
   
   - Java Swing: Apache Batik components are deprecated. Use the Swing/AWT 
components instead.
   
   ##### Fixed
   
   - Add 'synchronized tooltips' feature 
\[[#&#8203;1415](https://redirect.github.com/JetBrains/lets-plot/issues/1415)].
   - Alpha is not supported in `elementText()` 
\[[#&#8203;1462](https://redirect.github.com/JetBrains/lets-plot/issues/1462)].
   - `scaleAlpha()`: conflict of constant and mapped values of alpha aesthetic 
\[[#&#8203;706](https://redirect.github.com/JetBrains/lets-plot/issues/706)].
   - `geomImshow()`: should render transparency for NaNs when all other pixel 
values are identical 
\[[#&#8203;1485](https://redirect.github.com/JetBrains/lets-plot/issues/1485)].
   - `scaleColorGradient()`: `guide = "legend"` is rendered as a colorbar 
\[[#&#8203;1489](https://redirect.github.com/JetBrains/lets-plot/issues/1489)].
   - Working with new types of data 
\[[#&#8203;184](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/184)].
   
   ### 
[`v4.13.0`](https://redirect.github.com/JetBrains/lets-plot-kotlin/blob/HEAD/CHANGELOG.md#4130---2026-03-20)
   
   This release is 100% compatible with Lets-Plot [v 
4.9.0](https://redirect.github.com/JetBrains/lets-plot/releases/tag/v4.9.0),
   GeoTools [v 
33.2](https://redirect.github.com/geotools/geotools/releases/tag/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 
\[[#&#8203;1388](https://redirect.github.com/JetBrains/lets-plot/discussions/1388)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/smooth_summary.html).
   
     - **Plot tags**. A tag can be specified via `labs(tag = ...)` and styled 
using theme parameters 
\[[#&#8203;1407](https://redirect.github.com/JetBrains/lets-plot/issues/1407)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/plot_tags.html)
 and updated [Plot Layout 
Diagrams](https://lets-plot.org/kotlin/presentation-options.html#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](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/plot_tags.html).
   
   - Geometries:
   
     - New `geomBracket()`, `geomBracketDodge()` 
\[[#&#8203;1114](https://redirect.github.com/JetBrains/lets-plot/issues/1114)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/geom_bracket.html).
   
     - `geomImshow()`:
   
       - Support for custom colormaps 
\[[#&#8203;780](https://redirect.github.com/JetBrains/lets-plot/issues/780)].
       - New `cguide` parameter: use to customize the colorbar for grayscale 
images.
   
         See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/image_custom_cmap.html).
   
   - 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 
\[[#&#8203;1444](https://redirect.github.com/JetBrains/lets-plot/issues/1444)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/scale_color_palette.html).
   
     - 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](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/scale_brewer_overflow.html).
   
   - Positional Scales:
   
     - New `breakWidth` parameter that specifies a fixed distance between axis 
breaks.
   
       See examples:
   
       - [datetime 
scale](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/scale_break_width_datetime.html)
       - [time (duration) 
scale](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/scale_break_width_duration.html)
       - [log10 
scale](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/scale_break_width_log10.html)
   
     - Support for axis minor ticks via `axisMinorTicks` and 
`axisMinorTicksLength` parameters in `theme()` 
\[[#&#8203;1379](https://redirect.github.com/JetBrains/lets-plot/issues/1379)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/axis_minor_ticks.html).
   
   - `gggrid()`: interactive pan/zoom now propagates across subplots with 
shared axes (`sharex` / `sharey`) 
\[[#&#8203;1413](https://redirect.github.com/JetBrains/lets-plot/issues/1413)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.13.0/gggrid_scale_share_zoom.html).
   
   - Swing Apps:
   
     Support for plot ***default interactions*** and custom toolbar component.
   
     For more details, see [Interactions 
demo](https://redirect.github.com/alshan/lets-plot-mini-apps/blob/main/jvm-swing-app/src/main/kotlin/InteractionsDemoMain.kt)
 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](https://redirect.github.com/alshan/lets-plot-mini-apps/tree/main/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](https://redirect.github.com/alshan/lets-plot-mini-apps/tree/main/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 
\[[#&#8203;1421](https://redirect.github.com/JetBrains/lets-plot/issues/1421)].
   - Unexpected replacement of double curly brackets with a single curly 
bracket 
\[[#&#8203;1433](https://redirect.github.com/JetBrains/lets-plot/issues/1433)].
   - geom\_imshow: unclear error message when mixing transparencies 
\[[#&#8203;1088](https://redirect.github.com/JetBrains/lets-plot/issues/1088)].
   - geom\_imshow and scale\_y\_reverse 
\[[#&#8203;1210](https://redirect.github.com/JetBrains/lets-plot/issues/1210)].
   - Nice to be able to get a list of colors from a color scale object 
\[[#&#8203;1444](https://redirect.github.com/JetBrains/lets-plot/issues/1444)].
   - Allow tooltips param to accept list 
\[[#&#8203;1455](https://redirect.github.com/JetBrains/lets-plot/issues/1455)].
   - Allow grouped tooltips for plots with multiple univariate geoms 
\[[#&#8203;1460](https://redirect.github.com/JetBrains/lets-plot/issues/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`](https://redirect.github.com/JetBrains/lets-plot-kotlin/blob/HEAD/CHANGELOG.md#4121---2025-12-22)
   
   This release is 100% compatible with Lets-Plot [v 
4.8.2](https://redirect.github.com/JetBrains/lets-plot/releases/tag/v4.8.2),
   GeoTools [v 
33.2](https://redirect.github.com/geotools/geotools/releases/tag/33.2)
   
   ##### Added
   
   - Support for `kotlin.time.Duration` and `java.time.Duration` 
\[[LPK-294](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/294)].
   
   ##### Fixed
   
   - Horizontal `geom_boxplot()` with alpha specified is displayed incorrectly 
\[[LPK-295](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/295)].
   
   ### 
[`v4.12.0`](https://redirect.github.com/JetBrains/lets-plot-kotlin/blob/HEAD/CHANGELOG.md#4120---2025-12-02)
   
   This release is 100% compatible with Lets-Plot [v 
4.8.1](https://redirect.github.com/JetBrains/lets-plot/releases/tag/v4.8.0),
   GeoTools [v 
33.2](https://redirect.github.com/geotools/geotools/releases/tag/33.2)
   
   ##### Added
   
   - Geometries:
     - `geomPointDensity()` 
\[[#&#8203;1370](https://redirect.github.com/JetBrains/lets-plot/issues/1370)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/geom_pointdensity.html).
   
     - Geoms with 1-to-1 statistics (such as `geomQQ()`, `geomSina()`) preserve 
the mapping to original data after statistical transformation.
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/stat_data_bijection.html).
   
     - `geomHistogram()`: custom bin bounds (parameter `breaks`) 
\[[#&#8203;1382](https://redirect.github.com/JetBrains/lets-plot/issues/1382)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/geom_histogram_param_breaks.html).
   
   - Plot Layout:
     - The legend automatically wraps to prevent overlap - up to 15 rows for 
vertical legends and 5 columns for horizontal ones 
\[[#&#8203;1235](https://redirect.github.com/JetBrains/lets-plot/issues/1235)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/legend_wrap.html).
   
     - `gggrid()`: support for shared legends (parameter `guides`).
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/gggrid_legend_collect.html).
   
   - Plot Theme:
     - `flavorStandard()` sets the theme's default color scheme 
\[[#&#8203;1277](https://redirect.github.com/JetBrains/lets-plot/issues/1277)]. 
<br>
       Use to override other flavors or to make defaults explicit.
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/flavor_standard.html).
   
     - `themeGray()` as an alias for `themeGrey()`.
   
     - New `theme` functions for setting legend justification: 
`legendJustificationTop()`, `legendJustificationRight()`, <br>
       `legendJustificationBottom()`, and `legendJustificationLeft()`.
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/legend_justification.html).
   
     - Support for inward axis ticks.
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/axis_tick_direction.html).
   
   - Markdown:
     - Support for `target` attribute for links.
     - Links now open in a new tab by default 
\[[#&#8203;1397](https://redirect.github.com/JetBrains/lets-plot/issues/1397)].
   
   - `ggtb()`: `sizeZoomin` and `sizeBasis` parameters for geometry scaling 
\[[#&#8203;1369](https://redirect.github.com/JetBrains/lets-plot/issues/1369)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/ggtb_size_zoomin.html).
   
   - New `output` parameter for the library descriptor to control output types 
stored in notebook cells 
\[[LPK-277](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/277)].\
     Thanks to [AndreiKingsley](https://redirect.github.com/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`](https://redirect.github.com/JetBrains/lets-plot/blob/master/platf-awt/src/main/kotlin/org/jetbrains/letsPlot/awt/plot/component/CenteredPlotPanel.kt)
 helper class for displaying plots centered in Swing applications.
   
   ##### Changed
   
   - \[**BREAKING**] Explicit `group` aesthetic now overrides default grouping 
behavior instead of combining with it 
\[[#&#8203;1401](https://redirect.github.com/JetBrains/lets-plot/issues/1401)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/group_override_defaults.html).
   
   > \[!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](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/269)],\[[#&#8203;818](https://redirect.github.com/JetBrains/lets-plot/issues/818)],
 \[[#&#8203;1406](https://redirect.github.com/JetBrains/lets-plot/issues/1406)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot-kotlin/refs/heads/master/docs/examples/jupyter-notebooks/f-4.12.0/missing_values_line_path_area_ribbon.html).
   
   - `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](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/136)].
   - `geomPie` on geospatial plot with `mapJoin` failes to render without 
explicit `group` aesthetic.
   - `geomDensity2D`: NullPointerException when weight aesthetic contains None 
values 
\[[#&#8203;1399](https://redirect.github.com/JetBrains/lets-plot/issues/1399)].
   - Tooltip shows duplicate lines when as\_discrete is applied twice to the 
same var 
\[[#&#8203;1400](https://redirect.github.com/JetBrains/lets-plot/issues/1400)].
   - `geomSina`: incorrect shape in legend 
\[[#&#8203;1403](https://redirect.github.com/JetBrains/lets-plot/issues/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 
\[[#&#8203;1409](https://redirect.github.com/JetBrains/lets-plot/issues/1409)].
   - Integer numbers in facet strip titles are displayed as float 
\[[#&#8203;1386](https://redirect.github.com/JetBrains/lets-plot/issues/1386)].
   - Error when using `scaleIdentity(aesthetic="shape")` 
\[[#&#8203;1212](https://redirect.github.com/JetBrains/lets-plot/issues/1212)].
   - `ggsave`: theme option `face="italic"` doesn't work 
\[[#&#8203;1391](https://redirect.github.com/JetBrains/lets-plot/issues/1391)].
   - Fail early if string format is incorrect 
\[[#&#8203;1410](https://redirect.github.com/JetBrains/lets-plot/issues/1410)].
   - `statECDF()` takes a very long time for even moderately sized datasets 
\[[#&#8203;1424](https://redirect.github.com/JetBrains/lets-plot/issues/1424)].
   - inconsistencies in theme/flavor inheritance in `gggrid()` subplots.
   
   </details>
   
   <details>
   <summary>JetBrains/lets-plot 
(org.jetbrains.lets-plot:lets-plot-batik)</summary>
   
   ### 
[`v4.11.0`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#4110---2026-06-30)
   
   ##### 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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26c/tooltip_merge.html).
   
   - 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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26c/text_halo.html).
   
   ##### 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`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#4103---2026-06-10)
   
   ##### Changed
   
   - Upgrade WeisJ/jsvg to 2.1.0
   
   ### 
[`v4.10.1`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#4101---2026-05-20)
   
   ##### Fixed
   
   - facet\_wrap(), error when `ncol` or `nrow` parameter not specified: 'ncol' 
must be positive, was null
   
   ### 
[`v4.10.0`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#4100---2026-05-20)
   
   ##### 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:
   
     - [dual-axis 
effect](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/ggdeck_dual_axis.html)
     - [multivariate 
comparison](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/ggdeck_plot_overlay.html)
   
   - Datetime: `%f` formatting pattern — support for milliseconds when 
formatting datetime values, zero-padded to 3 digits 
\[[#&#8203;1482](https://redirect.github.com/JetBrains/lets-plot/issues/1482)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/milliseconds_format.html).
   
   - 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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/legend_key_size.html).
   
   - Indication of removed records 
\[[LPK-81](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/81)], 
\[[#&#8203;686](https://redirect.github.com/JetBrains/lets-plot/issues/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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/removed_records_indication.html).
   
   - 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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/color_alpha.html).
   
   - Facet strip labels now honor `angle` in `element_text()` for 
`strip_text_*` 
\[[#&#8203;1383](https://redirect.github.com/JetBrains/lets-plot/issues/1383)].
   
     Thanks to a contribution by 
[tentrillion](https://redirect.github.com/tentrillion).
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/strip_text_angle.html).
   
   - In `geom_imshow()`, new parameters for controlling the colorbar breaks and 
labels 
\[[#&#8203;1486](https://redirect.github.com/JetBrains/lets-plot/issues/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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26b/geom_livemap_interactive.html).
   
   - Memo for Kotlin API users:
     - Added WasmJS support 
\[[LPK-296](https://redirect.github.com/JetBrains/lets-plot-kotlin/issues/296)],
 \[[LPC-52](https://redirect.github.com/JetBrains/lets-plot-compose/issues/52)].
   
   ##### Changed
   
   - \[**BREAKING**] Dropped support for Python 3.9 as it is in the 
["end-of-life"](https://devguide.python.org/versions/#unsupported-versions) 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 
\[[#&#8203;1415](https://redirect.github.com/JetBrains/lets-plot/issues/1415)].
   - Alpha is not supported in element\_text() 
\[[#&#8203;1462](https://redirect.github.com/JetBrains/lets-plot/issues/1462)].
   - scale\_alpha: conflict of constant and mapped values of alpha aesthetic 
\[[#&#8203;706](https://redirect.github.com/JetBrains/lets-plot/issues/706)].
   - geom\_imshow(): should render transparency for NaNs when all other pixel 
values are identical 
\[[#&#8203;1485](https://redirect.github.com/JetBrains/lets-plot/issues/1485)].
   - `scale_color_gradient()`: `guide='legend'` is rendered as a colorbar 
\[[#&#8203;1489](https://redirect.github.com/JetBrains/lets-plot/issues/1489)].
   
   ### 
[`v4.9.0`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#490---2026-03-11)
   
   ##### Added
   
   - Python 3.14 support.
   
   - Python 3.14 free-threading support 
\[[#&#8203;1454](https://redirect.github.com/JetBrains/lets-plot/issues/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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/smooth_summary.html).
   
     - **Plot tags**. A tag can be specified via `labs(tag=...)` and styled 
using theme parameters 
\[[#&#8203;1407](https://redirect.github.com/JetBrains/lets-plot/issues/1407)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/plot_tags.html)
 and updated [plot layout 
scheme](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/plot_layout_scheme.html).
   
     - 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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/plot_tags.html).
   
   - Geometries:
     - New `geom_bracket()`, `geom_bracket_dodge()` 
\[[#&#8203;1114](https://redirect.github.com/JetBrains/lets-plot/issues/1114)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/geom_bracket.html).
   
     - `geom_imshow()`:
       - Support for custom colormaps 
\[[#&#8203;780](https://redirect.github.com/JetBrains/lets-plot/issues/780)].
       - New `cguide` parameter: use to customize the colorbar for grayscale 
images.
   
         See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/image_custom_cmap.html).
   
   - 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 
\[[#&#8203;1444](https://redirect.github.com/JetBrains/lets-plot/issues/1444)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/scale_color_palette.html).
   
     - 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](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/scale_brewer_overflow.html).
   
   - Positional Scales:
     - New `break_width` parameter that specifies a fixed distance between axis 
breaks.
   
       See examples:
   
       - [datetime 
scale](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/scale_break_width_datetime.html)
       - [time (duration) 
scale](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/scale_break_width_duration.html)
       - [log10 
scale](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/scale_break_width_log10.html)
   
     - Support for axis minor ticks via `axis_minor_ticks` and 
`axis_minor_ticks_length` parameters in `theme()` 
\[[#&#8203;1379](https://redirect.github.com/JetBrains/lets-plot/issues/1379)].
   
       See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/axis_minor_ticks.html).
   
   - `gggrid()`: interactive pan/zoom now propagates across subplots with 
shared axes (`sharex`/`sharey`) 
\[[#&#8203;1413](https://redirect.github.com/JetBrains/lets-plot/issues/1413)].
   
     See: [example 
notebook](https://raw.githack.com/JetBrains/lets-plot/master/docs/f-26a/gggrid_scale_share_zoom.html).
   
   ##### 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) 
\[[#&#8203;1469](https://redirect.github.com/JetBrains/lets-plot/issues/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](https://redirect.github.com/alshan/lets-plot-mini-apps/tree/main/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](https://redirect.github.com/alshan/lets-plot-mini-apps/tree/main/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 
\[[#&#8203;1421](https://redirect.github.com/JetBrains/lets-plot/issues/1421)].
   - Unexpected replacement of double curly brackets with a single curly 
bracket 
\[[#&#8203;1433](https://redirect.github.com/JetBrains/lets-plot/issues/1433)].
   - Upgrade to a newer version of ws 
\[[#&#8203;1150](https://redirect.github.com/JetBrains/lets-plot/issues/1150)].
   - geom\_imshow: unclear error message when mixing transparencies 
\[[#&#8203;1088](https://redirect.github.com/JetBrains/lets-plot/issues/1088)].
   - geom\_imshow and scale\_y\_reverse 
\[[#&#8203;1210](https://redirect.github.com/JetBrains/lets-plot/issues/1210)].
   - Nice to be able to get a list of colors from a color scale object 
\[[#&#8203;1444](https://redirect.github.com/JetBrains/lets-plot/issues/1444)].
   - Allow tooltips param to accept list 
\[[#&#8203;1455](https://redirect.github.com/JetBrains/lets-plot/issues/1455)].
   - Allow grouped tooltips for plots with multiple univariate geoms 
\[[#&#8203;1460](https://redirect.github.com/JetBrains/lets-plot/issues/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`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#482---2026-12-19)
   
   ##### Fixed
   
   - Hyperlinks support for lets-plot-compose.
   - Colab no longer rendering lets-plot with empty setup HTML 
\[[#&#8203;1436](https://redirect.github.com/JetBrains/lets-plot/issues/1436)]
   
   ### 
[`v4.8.1`](https://redirect.github.com/JetBrains/lets-plot/blob/HEAD/CHANGELOG.md#481---2025-12-01)
   
   ##### Fixed
   
   - saving plots as png takes a very long time 
\[[#&#8203;1423](https://redirect.github.com/JetBrains/lets-plot/issues/1423)].
   - `stat_ecdf()` takes a very long time for even moderately sized datasets 
\[[#&#8203;1424](https://redirect.github.com/JetBrains/lets-plot/issues/1424)].
   - lets-plot plots are not displayed in plots pane 
\[[PST-8170](https://redirect.github.com/posit-dev/positron/issues/8170)].
   - inconsistencies in theme/flavor inheritance in `gggrid()` subplots.
   
   </details>
   
   ---
   
   ### 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](https://redirect.github.com/renovatebot/renovate/discussions) if that's 
undesired.
   
   ---
   
    - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this 
box
   
   ---
   
   This PR was generated by [Mend Renovate](https://mend.io/renovate/). View 
the [repository job log](https://developer.mend.io/github/apache/jmeter).
   
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to