Releases: JetBrains/lets-plot-kotlin
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.
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 element is 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].