Skip to content

Releases: JetBrains/lets-plot-kotlin

v4.10.0

20 Mar 21:17
Compare
Choose a tag to compare

[4.10.0] - 2025-03-20

This release is 100% compatible with Lets-Plot v 4.6.1,
GeoTools v 32.1

Added

  • Grouping plots:

  • Geometries:

  • Texts and labels:

  • In the nudge position adjustment -
    the ability to specify absolute shift values for nudge:

    • unit parameter in positionNudge().
    • nudgeUnit parameter in geomText() and geomLabel()

    See example notebook.

  • Theme:

    • Parameters legendTicks and legendTicksLength for fine-grained control over colorbar tick marks [#1262].

      See: example notebook.

  • Aliases for transparent color: "" (blank string), "blank" and "transparent" color [#1281].

Changed

  • [DEPRECATED] class GGBunch is deprecated. Please use ggbunch() function instead.
  • [BREAKING] The height parameter has been deprecated for the geomErrorBar.
  • Axis breaks: the minimum distance between axis labels was reduced to avoid unsuitable layouts.
  • Axis breaks: changed default lower_exp_bound to -7 and upper_exp_bound to 6 (same as in theme(...)).
  • Axis labels: changed default justification for rotated labels.
  • Axis labels: changed orientation of automatic vertical labels.
  • [BREAKING] geoms tile, bin2d, contour, contourf, density2d, density2df : default coordinate system changed from 'fixed' to 'cartesian'.
  • [BREAKING] tiles in geomBin2d() are sized according to the binwidth value, not the maximum possible.
  • [BREAKING] In Lets-Plot JS API v 4.6.0 (only Lets-Plot/JS users): signature of "buildPlotFromXXX" functions changed, see current Kotlin/JS declarations:
  • [BREAKING] In Lets-Plot v 4.6.0, Maven artifacts:
    • artifacts platf-awt, platf-batik, platf-jfx-swing are no longer published with a "-jvm" suffix.
      Before, these artifacts could be used in dependencies either with or without the "-jvm" suffix. Now only without suffix.
    • artifact "org.jetbrains.lets-plot:deprecated-in-v4-jvm" is removed.

Fixed

  • Incorrectly rendered Area chart [#1295].
  • Tooltip should not cover and hide the geometry that it provides info for [#1275].
  • General purpose scaleContinuous: can't use the expand parameter [#1285].
  • Error when using stat='summary' if the data contains NaN values [#1301].
  • Broken plotBackground in gggrid [#1124].
  • plotBackground not inheriting from rect [#1278]
  • gggrid: allow title and other labels for the entire figure [#715].
  • ggbunch: overall title [#321].
  • Expand discrete axis according to tile size with geomTile [#1284].

v4.9.3

16 Dec 22:36
Compare
Choose a tag to compare

[4.9.3] - 2024-12-16

This release is 100% compatible with Lets-Plot v 4.5.2,
GeoTools v 32.1

Changed

  • Number formatting:
    • We have aligned our specifications with D3.js (rather than Python): g format type with ~ (e.g. ~g) now truncates trailing zeros, and without ~ it doesn't.
    • The default number formatter now respects theme(exponent_format=...) settings and does not use 's' format type for large numbers.
  • Legends with more than 200 items are now not rendered.

Fixed

  • Bad precision in the default tooltip format when using coord limits [#1134].
  • Display integer values without fractional part in tooltips [#1186].
  • Suboptimal tooltip positioning in facets [#1187].
  • Incorrect Y-axis layout with facets and panel_inset [#1194].
  • Grouped plot hits the limit of 1000 and doesn't render with not-friendly exception [#1224].
  • Kandy toPNG reports NullPointerException [#1228]
  • Wrong formatting when type='g' for small values [#1238].
  • Formatting when type='g' for large values throws exception [#1239].
  • Wrong formatting when type='s' with explicit precision [#1240].
  • Extra trim in formatted number when type='g' [#1241].
  • Axis breaks are badly formatted if explicitly set [#1245].
  • Badly formatted zero break for the "~g" format [#1246].
  • How to adjust the vertical position of geom_text when using position_dodge [#1248].
  • Incorrect result for format(9.999, ".2f") [#1251].
  • Tooltips overlapping when not enough vertical space for them [#1254].
  • Plot limited to 1000 lines (Internal error: IllegalStateException : Too many groups: 1099) [#1261].
  • Nice to have tooltip to inherit formatting configured for axis [LPK-229].

v4.9.2

19 Nov 18:36
Compare
Choose a tag to compare

[4.9.2] - 2024-11-19

Same as 4.9.1, added missing Maven artifacts.

v4.9.1

18 Nov 22:04
Compare
Choose a tag to compare

[4.9.1] - 2024-11-18

This release is 100% compatible with Lets-Plot v 4.5.1,
GeoTools v 32.1

Changed

  • Migrated to new Kotlin Jupyter integration.

v4.9.0

01 Nov 19:24
Compare
Choose a tag to compare

[4.9.0] - 2024-11-01

This release is 100% compatible with Lets-Plot v 4.5.1.

Added

  • ggtb(): enable zoom/pan interactivity on plot [#38],[#983],[#1019]

    See example notebook.

  • Interactive links in tooltips/labels/texts [#1091].

    See example notebook.

  • Formatting:

    • LaTeX support: superscript, subscript ([#861]) and Greek letters ([#960]).

      See example notebook.

    • Scientific notation: compact form. Enable the compact form using the exponentFormat parameter in theme() [#1071].

      See example notebook.

  • In theme():

    • parameters legendMargin, legendSpacing, legendSpacingX, legendSpacingY, legendBoxSpacing,

      and functions legendBoxHorizontal/Vertical(), legendBoxJustificationLeft/Right/Top/Bottom/Center() [#1180].

      See example notebook.

    • parameters legendKey, legendKeySize/Width/Height/Spacing/SpacingX/SpacingY[#1181].

      See example notebook.

    • parameters stripBackgroundX/Y, stripTextX/Y [#1195].

      See example notebook.

  • Custom linetype patterns [#1198]:

    • a list specifying the pattern of dashes and gaps used to draw the line: listOf(dash, gap, dash, gap, ...);
    • a list with a specified offset: listOf(offset, listOf(dash, gap, dash, gap, ...));
    • a string of an even number (up to eight) of hexadecimal digits specifying the lengths in consecutive positions in the string.

    See example notebook.

  • Geometries:

  • expandLimits() [#820].

    See example notebook.

  • Support for 3-character hex color codes

Changed

  • Parameters labwidth in facetWrap(), xLabwidth, yLabwidth in facetGrid(): the maximum label length is applied after splitting at \n separators, if present.

  • themeLight() is now the default theme in qqPlot().

  • [BREAKING] For API deprecated in v4.0 the deprecation level raised to "Error".

Fixed

  • waterfallPlot: faceting doesn't work without a measure mapping [#1152].
  • waterfallPlot: tooltips don't work with column names from original dataset [#1153].
  • Legend icon background is not transparent when legendBackground is set to "blank" in theme [#1167].
  • Unable to display or save graph when using geomPath [#1168].
  • Legend icon background should inherit the fill color of the plot panel (i.e. grey when themeGrey() is used).
  • Vertex sampling uses different tolerances for objects within the same plot [#1174].
  • samplingVertexVW() doesn't work as expected [#1175].
  • samplingVertexDP() may break rings [#1176].
  • ggmarginal: bottom boxplot is broken [#1189].
  • Offscreen cells are sometimes not rendered in JupyterLab.
  • legendJustification() doesn't work if legendPositionTop() [#1031].
  • coordPolar: geomPoint tooltips should take in account point size [#1214].

v4.8.0

20 Aug 21:39
Compare
Choose a tag to compare

[4.8.0] - 2024-08-20

This release is 100% compatible with Lets-Plot v 4.4.0, v 4.4.1.

Added

Changed

  • The triangular point shape is now anchored to the data point via the centroid

Fixed

  • ggsave (.svg) transforms geom_text integer to float [#626].
  • Int DataFrame column names are being converted to float string representation [#901].
  • linetype = 0 ("blank") should make lines invisible [#712].
  • geomDensity2D, geomDensity2DFilled: support weight aesthetic [#791].
  • Discrete axis labels unnecessarily rotate 90 degrees when applying coord system limits.
  • Axis title via labs() breaks the date-time scale [#1113].
  • JavaFX IllegalArgumentException: Unsupported attribute display in Pane.

v4.7.3

30 May 17:47
Compare
Choose a tag to compare

[4.7.3] - 2024-05-30

This release is 100% compatible with Lets-Plot v 4.3.3.

Added

Fixed

  • Undesired vertical scroller when displaying gggrid in Jupyter notebook.
  • Memory leak in SVG observable model (thanks to contribution by Ilya Muradyan).
  • GeoJson structure breaks if the ring start label occurs several times [#1086].
  • theme: left margin doesn't work for the plot_title parameter [#1101].
  • Improve border line type experience [LPK-220].

v4.7.2

25 Apr 22:20
Compare
Choose a tag to compare

[4.7.2] - 2024-04-25

This release is 100% compatible with Lets-Plot v 4.3.2.

Fixed

  • LP occasionally crashes when drawing polygons [#1084].
  • Regression of issue [#966].
  • Linetype doesn't work for geomTile() [LPK-241].

v4.7.1

22 Apr 21:29
Compare
Choose a tag to compare

[4.7.1] - 2024-04-22

This release is 100% compatible with Lets-Plot v 4.3.1.

Added

Changed

  • LetsPlot.theme global property now accepts a sum of theme/flavor features [#657].

Fixed

  • ggmarginal(): broken coloring [#760].
  • Incorrect 'plot_background' area (with empty space capture) [#918].
  • geom_density2df: uneven borders [#941].
  • Line segments in geom_density2df() do not get interpolated when used with coord_polar() [#1037].
  • arrow on segment: reduce arrow size for short segments [#1040].
  • arrow on curve sometimes looks weird [#1041].
  • Error when build geom_smooth() with se=False [#1050].
  • Add tooltips for geom_curve() [#1053].
  • Incorrect position for bar annotations when specifying scale_x_reverse()/scale_y_reverse() [#1057].
  • Missing outer bar annotations when specifying scale_x_reverse()/scale_y_reverse() [#1058].
  • Plot layout breaks when marginal layers are used [#1074].
  • Discrete scale doesn't work for datetime data [LPK-231].
  • Add linetype parameter in elementLine() and elementRect() [LPK-235].
  • Any way to line-wrap facet labels? [LPK-237].
  • Missing marginal gridlines.
  • Cryptic error message on geom_boxplot with orientation="y" [#600].

v4.7.0

15 Mar 21:06
Compare
Choose a tag to compare

[4.7.0] - 2024-03-15

Added

  • coordPolar()

    The polar coordinate system is most commonly used for pie charts, but

    it can also be used for constructing Spider or Radar charts using the flat option.

    See: example notebook.

  • In the theme() function:

    • panelInset parameter - primarily used for plots with polar coordinates.

      See: example notebook.

    • panelBorderOntop parameter - enables the drawing of panel border on top of the plot geoms.

    • panelGridOntop, panelGridOntopX, panelGridOntopY parameters - enable the drawing of grid lines on top of the plot geoms.

  • geomCurve()

    See: example notebook.

  • [UNIQUE] Visualizing graph-like data with geomSegment() and geomCurve().

    • Aesthetics sizeStart, sizeEnd, strokeStart and strokeEnd enable better alignment of

      segments/curves with nodes of the graph by considering the size of the nodes.

    • The spacer parameter allows for additional manual fine-tuning.

    See: example notebook.

  • alphaStroke parameter in geomLabel() to enable the applying of alpha to color [#1029].

    See: example notebook.

Changed

  • Parameter axisOntop in theme() is now true by default.

Fixed

  • Bug with Tooltips in Swing/Batik [LPK-225].
  • coordMap() should distort tiles size to account for different unit size at different latitudes [#331].
  • geomErrorbar(): wrong positioning of tooltips [#992].
  • geomPath(): tooltip position interpolation [#855].
  • Stacked bar-chart annotation: labels go out of the plot when zooming-in using coord_cartesian(xlim, ylim) [#981].
  • Facets: "free scales" options are ignored by discrete axis [#955].
  • Bar width is too large when x-domain is defined via x-scale limits [#1013].
  • How to hide only main tooltip? [LPK-#232].
  • Make middle strip in geomCrossbar() optional [LPK-233].
  • Can't set null for coord limit [#486].
  • Scale limits don't work for bars/area [LPK-219], [#978].
  • No gridlines when axisOntop=True [#1012].
  • Displaying tooltips on a multilayer plot [#1030].
  • Make segment geometry better suited for graphs visualization [#572].