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` |  |  | | [org.jetbrains.lets-plot:lets-plot-batik](https://redirect.github.com/JetBrains/lets-plot) | `4.8.0` → `4.11.0` |  |  | --- ### 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 \[[#​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)], \[[#​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` \[[#​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 \[[#​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 \[[#​1415](https://redirect.github.com/JetBrains/lets-plot/issues/1415)]. - Alpha is not supported in `elementText()` \[[#​1462](https://redirect.github.com/JetBrains/lets-plot/issues/1462)]. - `scaleAlpha()`: conflict of constant and mapped values of alpha aesthetic \[[#​706](https://redirect.github.com/JetBrains/lets-plot/issues/706)]. - `geomImshow()`: should render transparency for NaNs when all other pixel values are identical \[[#​1485](https://redirect.github.com/JetBrains/lets-plot/issues/1485)]. - `scaleColorGradient()`: `guide = "legend"` is rendered as a colorbar \[[#​1489](https://redirect.github.com/JetBrains/lets-plot/issues/1489)]. - Working with new types of data \[[#​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 \[[#​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 \[[#​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()` \[[#​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 \[[#​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 \[[#​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()` \[[#​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`) \[[#​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 \[[#​1421](https://redirect.github.com/JetBrains/lets-plot/issues/1421)]. - Unexpected replacement of double curly brackets with a single curly bracket \[[#​1433](https://redirect.github.com/JetBrains/lets-plot/issues/1433)]. - geom\_imshow: unclear error message when mixing transparencies \[[#​1088](https://redirect.github.com/JetBrains/lets-plot/issues/1088)]. - geom\_imshow and scale\_y\_reverse \[[#​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 \[[#​1444](https://redirect.github.com/JetBrains/lets-plot/issues/1444)]. - Allow tooltips param to accept list \[[#​1455](https://redirect.github.com/JetBrains/lets-plot/issues/1455)]. - Allow grouped tooltips for plots with multiple univariate geoms \[[#​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()` \[[#​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`) \[[#​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 \[[#​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 \[[#​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 \[[#​1397](https://redirect.github.com/JetBrains/lets-plot/issues/1397)]. - `ggtb()`: `sizeZoomin` and `sizeBasis` parameters for geometry scaling \[[#​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 \[[#​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)],\[[#​818](https://redirect.github.com/JetBrains/lets-plot/issues/818)], \[[#​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 \[[#​1399](https://redirect.github.com/JetBrains/lets-plot/issues/1399)]. - Tooltip shows duplicate lines when as\_discrete is applied twice to the same var \[[#​1400](https://redirect.github.com/JetBrains/lets-plot/issues/1400)]. - `geomSina`: incorrect shape in legend \[[#​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 \[[#​1409](https://redirect.github.com/JetBrains/lets-plot/issues/1409)]. - Integer numbers in facet strip titles are displayed as float \[[#​1386](https://redirect.github.com/JetBrains/lets-plot/issues/1386)]. - Error when using `scaleIdentity(aesthetic="shape")` \[[#​1212](https://redirect.github.com/JetBrains/lets-plot/issues/1212)]. - `ggsave`: theme option `face="italic"` doesn't work \[[#​1391](https://redirect.github.com/JetBrains/lets-plot/issues/1391)]. - Fail early if string format is incorrect \[[#​1410](https://redirect.github.com/JetBrains/lets-plot/issues/1410)]. - `statECDF()` takes a very long time for even moderately sized datasets \[[#​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 \[[#​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)], \[[#​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_*` \[[#​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 \[[#​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 \[[#​1415](https://redirect.github.com/JetBrains/lets-plot/issues/1415)]. - Alpha is not supported in element\_text() \[[#​1462](https://redirect.github.com/JetBrains/lets-plot/issues/1462)]. - scale\_alpha: conflict of constant and mapped values of alpha aesthetic \[[#​706](https://redirect.github.com/JetBrains/lets-plot/issues/706)]. - geom\_imshow(): should render transparency for NaNs when all other pixel values are identical \[[#​1485](https://redirect.github.com/JetBrains/lets-plot/issues/1485)]. - `scale_color_gradient()`: `guide='legend'` is rendered as a colorbar \[[#​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 \[[#​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 \[[#​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()` \[[#​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 \[[#​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 \[[#​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()` \[[#​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`) \[[#​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) \[[#​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 \[[#​1421](https://redirect.github.com/JetBrains/lets-plot/issues/1421)]. - Unexpected replacement of double curly brackets with a single curly bracket \[[#​1433](https://redirect.github.com/JetBrains/lets-plot/issues/1433)]. - Upgrade to a newer version of ws \[[#​1150](https://redirect.github.com/JetBrains/lets-plot/issues/1150)]. - geom\_imshow: unclear error message when mixing transparencies \[[#​1088](https://redirect.github.com/JetBrains/lets-plot/issues/1088)]. - geom\_imshow and scale\_y\_reverse \[[#​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 \[[#​1444](https://redirect.github.com/JetBrains/lets-plot/issues/1444)]. - Allow tooltips param to accept list \[[#​1455](https://redirect.github.com/JetBrains/lets-plot/issues/1455)]. - Allow grouped tooltips for plots with multiple univariate geoms \[[#​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 \[[#​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 \[[#​1423](https://redirect.github.com/JetBrains/lets-plot/issues/1423)]. - `stat_ecdf()` takes a very long time for even moderately sized datasets \[[#​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]
