Releases: JetBrains/lets-plot-kotlin
v4.9.1
v4.9.0
[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 intheme()
[#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.
- a list specifying the pattern of dashes and gaps used to draw the line:
-
Geometries:
-
geomBlank()
[#831]. -
base
parameter inwaterfallPlot()
[#1159].See example notebook.
-
checkOverlap
parameter ingeomText()
andgeomLabel()
.See example notebook.
-
marginal
parameter inqqPlot()
:See example notebook.
-
inheritAes
parameter in layers [#1172].
-
-
expandLimits()
[#820].See example notebook.
-
Support for 3-character hex color codes
Changed
-
Parameters
labwidth
infacetWrap()
,xLabwidth, yLabwidth
infacetGrid()
: the maximum label length is applied after splitting at\n
separators, if present. -
themeLight()
is now the default theme inqqPlot()
. -
[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" intheme
[#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 iflegendPositionTop()
[#1031].- coordPolar: geomPoint tooltips should take in account point size [#1214].
v4.8.0
[4.8.0] - 2024-08-20
This release is 100% compatible with Lets-Plot v 4.4.0, v 4.4.1.
Added
-
Waterfall plot [#975]:
See example notebook.
-
geomBand()
[#733]:See example notebook.
-
Custom legends [#774]:
manualKey
parameter in plot layerlayerKey()
function
See example notebook.
-
In legends:
-
title
parameter inguideLegend()
andguideColorbar()
functionsSee example notebook.
-
override aesthetics in the
guideLegend()
function [#807]:See example notebook.
-
-
plotTitlePosition
andplotCaptionPosition
parameters intheme()
[#1027].See example notebook.
-
threshold
parameter ingeomHistogram()
[#1122].See example notebook.
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
[4.7.3] - 2024-05-30
This release is 100% compatible with Lets-Plot v 4.3.3.
Added
- Support for
angle
aesthetic ingeomPoint()
[#736].
See example notebook.
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 theplot_title
parameter [#1101].- Improve border line type experience [LPK-220].
v4.7.2
v4.7.1
[4.7.1] - 2024-04-22
This release is 100% compatible with Lets-Plot v 4.3.1.
Added
-
Parameter
labWidth
infacetWrap()
andxLabWidth/yLabWidth
infacetGrid()
[LPK-237].See: example notebook.
-
Parameter
linetype
inelementLine()
andelementRect()
intheme()
[LPK-235].See: example notebook.
-
Parameter
arrow
ingeomSpoke()
[#986].See: example notebook.
-
Parameter
sizeUnit
ingeomPoint()
,geomText()
andgeomLabel()
.See: example notebook.
-
Auto-detection of
orientation="y"
in bar-chart etc. [#558].See: example notebook.
-
Parameter
plotInset
intheme()
.See: example notebook.
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 inelementLine()
andelementRect()
[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
[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 theflat
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()
andgeomCurve()
.-
Aesthetics
sizeStart, sizeEnd, strokeStart
andstrokeEnd
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 ingeomLabel()
to enable the applying ofalpha
tocolor
[#1029].See: example notebook.
Changed
- Parameter
axisOntop
intheme()
is nowtrue
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].
v4.6.0
[4.6.0] - 2024-01-10
Added
-
The
levels
parameter inasDiscrete()
function [#931].See: example notebook.
-
Support for superscript for numbers in scientific notation [#743].
See: example notebook.
-
Sharing of X,Y-scale limits between subplots in
gggrid()
[#718].See: example notebook.
-
geomSpoke()
[#738].See: example notebook.
-
scaleXLog2(), scaleYLog2()
[#922]. -
New variables computed by
'count'
and'count2d'
statistics:'..sumprop..'
,'..sumpct..'
[#936].See: example notebook.
-
Support using dictionaries for breaks/labels/values customization in
scaleXxx()
functions [#169], [#882].See: example notebook.
-
The
lablim
parameter forscaleXxx()
functions [#939, #946].See: example notebook.
-
labelText
parameter intheme()
for annotation text settings [#930].See: example notebook.
Changed
-
[BREAKING] Function
margin()
is deprecated and will be removed in future releases.
Please replace all existing usages, i.e.theme(plotMargin=margin(..))
andelementText(margin=margin(..))
with a list or with just a number:- a number or list of one number - the same margin it applied to all four sides;
- a list of two numbers - the first margin applies to the top and bottom, the second - to the left and right;
- a list of three numbers - the first margin applies to the top, the second - to the right and left,
the third - to the bottom; - a list of four numbers - the margins are applied to the top, right, bottom and left in that order.
See: example notebook.
-
Geotools: migrate to v30 [#217].
[BREAKING] GeoTools v30 and up is not backward compatible with v29 and below due to
renaming of all "org.opengis" packages into "org.geotools.api" ones.
See release notes: http://geotoolsnews.blogspot.com/2023/09/geotools-30-rc-released.html -
Upgraded Apache Batik to version 1.17 [#887]
Fixed
- Jitter reproducibility in geomJitter, positionJitter, positionJitterDodge [#911].
- Bug with Tooltips in Swing/Batik [#225].
- Facets: order = 0 doesn't work as expected [#923].
- Enormous CPU / Time/ Memory consumption on some data [#932].
- gggrid: composite plot is not visible if saved with ggsave [#942].
- gggrid doesn't override global theme [#966].
- Marginal box-plots aren't shown when requested on more than 1 plot side.
- Marginal plot: use "pen" as default color for marginal layers.
gggrid()
doesn't use global theme settings.- NumberFormat:
g
format doesn't use e-notation for small numbers [#965]. - Tooltips: graphical artifacts and bad performance in multi-line plot in Batik [#967].
- Wrong tooltip position on
geom_segment()
with position adjustment [#963]. geomBoxplot()
: useoutlierAlpha
to boxplot outliers (not applyalpha
).
v.4.5.0
[4.5.0] - 2023-11-06
Added
-
Annotations in Barchart.
See: example notebook.
-
Common theme support in subplots (i.e.
gggrid()
) [LPK-#197].See: example notebook.
-
HCL
andCIELAB
color space for hue color scale and gradient color scales [#876].See: example notebook.
-
New scale transformations:
'log2'
and'symlog'
.See: example notebook.
-
plotMargin
parameter intheme()
[#856].See: example notebook.
-
Dual orientation for geometries:
geomErrorBar()
;geomCrossbar()
;geomPointRange()
;geomLineRange()
;geomRibbon()
.
See: example notebook.
Fixed
- Husl palette equivalent [#876].
- Tooltips are trimmed and not visible on a very narrow chart [#837].
- Exception label is unresizeble, uncopyable and uncontrollable [#902].
- Flickering during plot downsizing [#888].
- Bad default formatting of numeric values in annotations [#905].
- corr_plot: unexpected whitespace between the "geometry area" and the legend [#877].
- scale_log: an option to generate only breaks which are integer powers of 10 needed [#850].
- Trimmed legend when bounds of the rightmost X-axis tick label exceeds the axis length [#851].
- HTML files exported using ggsave() are missing the encoding specification [#900].
plot_margin
parameter intheme()
[#856].- Subplot themes not inherited by parent [LPK-#197].
element_blank()
has no effect on plot title/subtitle/caption intheme()
[#913].- Lollipop in legend is disproportionately large [LPK-216].
- geomBar with fill, produces tooltips artefacts [#895].
- Exception, when trying to build plot with column name containing line breakes [#894].
- Added "grey" spelling for the gray color (earlier - "gray" only).
v4.4.3
[4.4.3] - 2023-09-15
Added
geomCount()
/statSum()
[#821].
See: example notebook.plotMessage
parameter intheme(...)
[#863].
See: example notebook.- KDocs for the stats.
Changed
-
If layer transparency is set via the alpha-channel in the colors RGBA specification and via the
alpha
aesthetic,
then thealpha
aesthetic overrides the alpha-channel in the color. Previousely it was the opposite. -
geomPie()
defaults:- "stroke" is visible and
strokeSide="both"
(wasstrokeSide="outer"
). - the "hole" is not created automatically when
strokeSide = "both"/"inner"
(was created automatically).
- "stroke" is visible and
-
geomBar()
now has solid outline color by default (was transparent). -
geomTile()
,geomBin2D()
now have solid outline color by default (was transparent).- however, by default the
size
is 0 (i.e. tiles outline initially is not visible).
- however, by default the
-
[DEPRECATED] Function
statCount2d
has been renamed tostatCount2D
. The old name is deprecated.