Releases: JetBrains/lets-plot-kotlin
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.
Fixed
v4.4.2
[4.4.2] - 2023-08-23
Added
-
Flavor-aware colors: pen, brush and paper
- By default, all geometries utilize new flavor-aware colors.
- Theme
geom
parameter allows redefinition of "geom colors":theme(geom = elementGeom(pen, brush, paper))
.
See: example notebook.
-
Support for variadic line width and/or color in
geom_line()
andgeom_path()
[LP-313].Ses: example notebook.
-
themeVoid()
:
example notebook -
statECDF()
:
example notebook. -
geomFunction()
:
example notebook. -
statSummary()
:
example notebook. -
statSummaryBin()
:
example notebook. -
Stat.sum()
statistic:
example notebook. -
Stat.boxplotOutlier()
statistic:
example notebook. -
In tooltip customization API:
disableSplitting()
function [#189]. -
In
geomPie()
:stroke
andcolor
aesthetics - the width and color of pie sector arcs.strokeSide
parameter - which arcs to show (inner, outer, both).spacerWidth
andspacerColor
parameters - lines between sectors.
See: example notebook.
sizeUnit
parameter : example notebook.
Changed
Note: Due to major package refactoring in the main Lets-Plot library, this version (4.4.2) of the Kotlin API
is not compatible with versions of Lets-Plot library v3.2.0 and earlier.
-
The default qualitative color palette is now Color Brewer "Set1" (was "Set2")
-
Geometries default colors are now flavor-dependent: example notebook.
-
Geometries default size/line-width is now slightly bigger.
-
Point size is adjusted to match the width of a line of the same "size".
-
[BREAKING] Kotlin/JS LEGACY apps are no longer supported.
-
[BREAKING]
geomPie()
no longer supports parameterstrokeColor
. -
[BREAKING]
geomBoxplot()
no longer support parametersampling
. -
[BREAKING]
geomPointRange()
: size aesthetic shouldn't affect line width [#751]:
linewidth
aesthetic is now used for the line width,size
- for mid-point size only. -
geomBoxplot()
:size
andstroke
parameters now affect outlier shapes.
Fixed
- ggsave: saving geomImshow() to SVG produces fuzzy picture [#188].
geomCrossbar()
aesthetics takemiddle
argument instead ofy
[#804].geomBoxplot()
doesn't apply alpha to outliers [#754].geomBoxplot()
: outliers do not show tooltips.geomBoxplot()
: some strange outliers drawn here [#143].geomStep()
: no tooltips.geomStep()
: add 'tooltips' parameter [#195].geomStep()
: toggle the behavior of thedirection
parameter when the orientation is changed.geomRibbon()
: not all tooltips are shown on a multi-layer plot [#847].- Bug in empty plot: IndexOutOfBoundsException [#194].
- How to remove side tooltips without anchor? [#189].
v4.4.1
v4.4.0
[4.4.0] - 2023-05-10
Added
-
geomLollipop()
.See: example notebook.
-
Aesthetic
stroke
and its scalesscaleStroke()
,scaleStrokeIdentity()
.See: example notebook.
-
Aesthetic
linewidth
(forgeomLollipop()
) and its scalesscaleLinewidth()
,scaleLinewidthIdentity()
.See: example notebook.
-
The 'newline' character (
\n
) now works asline break
in legend text.See: example notebook.
-
Horizontal error bars and vertical "dodge".
See: example notebook.
-
"Colorbar" in
geom_imshow()
. Parametersshow_legend
andcolor_by
[#717].
Changed
-
[BREAKING]
geomDotplot()
andgeomYDotplot()
no longer support parameterstat
. -
[BREAKING] Identity scales don't create a legend by default.
Fixed
- Support multiple subdirectories in
ggsave
path [contribution by David Phillips]. scaleXDiscrete
doesn't make scale discrete [#165].- Batik:
geom_imshow()
fail with an error: "The attribute "xlink:href" of the elementis required"
- Batik: bug with usage of "&" [#713].
- Categorical ordering, it's not respected for Boxplot and violin
plot [#746]. - Groups not sorted similarly when using facets [#679].
- HTML export: exclude computation messages from the output [#725].
- Image export not working with
geom_imshow()
andgeom_raster()
[LPK-175]. geom_segment()
doesn't take into account the alpha [#748].geom_density2d
: Internal error with None values in data [#702].- DateTime metadata is not applied for scales other than
X/Y [LPK-174]. - Quantile should be shown in tooltip if the variable
..quantile..
is mapped to geom aesthetic. - Bad default formatting for stat variables [#654].
- The scale name does not apply with
as_discrete()
[#653]. - Tooltip is not shown when configured for 'const' value [#610].
- Fix crash when try to add a constant to a tooltip (e.g.
"^size"
, wheresize
aesthetic is specified with a number). - "Variable not found" error in
ggmarginal
[#681]. facet_grid
: Internal error [#699].- Tooltips bug [LPK-176].
v4.3.0
[4.3.0] - 2023-03-09
Added
-
gggrid()
function (docs), as a replacement for earlier variant of gggrid().- plots inner area alignment in grid
- nested grids
- works well with
ggsize()
See: example notebook.
-
jointPlot()
.See: example notebook.
-
Axis
position
parameter in position scalesscaleX*(), scaleY*()
.See: example notebook.
-
Drawing quantile lines and filling quantile areas in
geomViolin()
andgeomDensity()
.See: example notebook.
-
angle
parameter inelementText()
intheme()
.See: example notebook.
-
Additional "color" aesthetics:
paint_a, paint_b, paint_c
.These aesthetics are flexible and can be used as either "color" or "fill" as needed.
See Multiple Color Scales demo.
Also added a set of related "color scale" functions with the "aesthetic" parameter for configuring of additional color scales.
See New "Scale" Functions demo.
-
density2d
anddensity2df
geometry types inresidualPlot()
.
Changed
-
[BREAKING]
geomViolin()
no longer supports parameterdrawQuantiles
. Use newquantileLines
andquantiles
parameters as needed. -
[BREAKING]
stack
andfill
position adjustments now stack objects on top of each other only if these objects belong to different groups.If necessary, use
mode="all"
inpositionStack()
orpositionFill()
to stack objects regardless of their group.See: example notebook.
-
[BREAKING] The deprecation level raised to "ERROR" for all API that was deprecated in v. 4.2.0 and earlier.
-
[DEPRECATED] The earlier variant of gggrid().
From now-on please use new variant added in this release: new gggrid().
-
Sampling: drastically increased default N for "pick sampling" and for other types of sampling [#687].
Fixed
- Tooltip does not reflect
..quantile..
aesthetic change [#658]. - 'map_join': variable is lost after "stat" [#664].
- Error when tooltip has variable mapped to aesthetic used by stat [#665].
- Groups not sorted similarly when
position='stack'
[#673]. - Area ridges: fill overlaps geometry borders when colors are repeated [#674].
- Sampling: increase the default N for "pick sampling" and for other types of sampling [#687].
v4.2.0
[4.2.0] - 2022-12-29
Added
-
residualPlot()
.See: example notebook.
-
geomAreaRidges()
.See: example notebook.
-
geomPie()
.See: example notebook.
-
Annotations for pie chart:
See: example notebook.
-
New variables computed by 'count' and 'count2d' statistics: '..sum..', '..prop..', '..proppct..'.
See: example notebook.
-
geomImshow()
.See: image_101,
image_fisher_boat,
image_grayscale,
image_extent -
New parameters in
geomViolin()
:tailsCutoff
(example notebook)showHalf
(example notebook)
-
Static maps:
-
useCRS
parameter with value "provided" forgeomMap()
and other geoms, working withSpatialDataset
.See: example notebook.
-
Changed
- Upgraded Lets-Plot version to 3.0.0 (was 2.5.1).
- Java/Swing platf.: Apache Batik upgraded to v.1.16 [#624], [LPK #140].
- The default size is increased for the plot title and decreased for the caption.
- Upgraded Kotlin version to 1.7.21 (was 1.7.20).
Fixed
v4.1.1
[4.1.1] - 2022-11-08
Added
-
In
geomText(), geomLabel()
:- the 'newline' character (
\n
) now works asline break
lineheight
aestheticnudgeX, nudgeY
parameters- special text alignments (
vjust
andhjust
):"inward"
and"outward"
See: example notebook.
- the 'newline' character (
-
vjust
parameter inpositionStack()
andpositionFill()
.See: example notebook.
Changed
-
Deprecated API:
positionStack
, new usage:positionStack()
positionFill
, new usage:positionFill()
-
geomBoxplot()
: default value for parameterwhiskerWidth
is 0.5. -
Upgraded Kotlin version to 1.7.20 (was 1.6.21).
-
Upgraded Lets-Plot version to 2.5.1 (was 2.5.0).
See Lets-Plot What is new in 2.5.1
for more details.
Fixed
elementBlank()
has no effect in themelegendTitle
[#608].- Tooltip: different formats for same aesthetic Y [#579].
- Positioning with "constant" x/y doesn't work on axis with log10 transform [#618].
- Positional "constant" doesn't honor axis limits [#619].
- Several issues leading to crush in Swing/Batik apps. Related to [discussions]
- Text labels got trimmed occasionally, when symbols
-
,/
,\
or|
present.
v4.1.0
[4.1.0] - 2022-09-30
Added
-
New theme:
themeBW()
.See: example notebook.
-
Color schemes (flavors) applicable to existing themes:
flavorDarcula()
flavorSolarizedLight()
flavorSolarizedDark()
flavorHighContrastLight()
flavorHighContrastDark()
See: example notebook.
-
Viridis color scales:
scaleColorViridis()
,scaleFillViridis()
.See: example notebook.
-
New parameters in theme's
elementText()
:size, family
(example notebook)hjust, vjust
for plot title, subtitle, caption, legend and axis titles
(example notebook)margin
for plot title, subtitle, caption, axis titles and tick labels
(example notebook)
-
Parameter
whiskerWidth
ingeomBoxplot()
.See: example notebook.
-
New geometry
geomLabel()
.See: example notebook.
Changed
-
New tooltip style after applying
coordFlip()
[#580].See: example notebook.
Fixed
- Density and area geoms: preserve the z-order when grouping [#552].
- Boxplot, violin, crossbar: position dodge width=0.95 should be used by default [#553].
- Unclear size unit of width [#589].
- No tooltips for
geomBoxplot
with zero height [#563]. geomText
: wrong label alignment withhjust
0 and 1 [#592].- Documentation for the
breaks
parameter in scales [#507]