Bot releases are hidden (Show)
This release is 100% compatible with Lets-Plot v 4.3.3.
angle
aesthetic in geomPoint()
[#736].gggrid
in Jupyter notebook.theme
: left margin doesn't work for the plot_title
parameter [#1101].Published by alshan 6 months ago
Published by alshan 6 months ago
This release is 100% compatible with Lets-Plot v 4.3.1.
Parameter labWidth
in facetWrap()
and xLabWidth/yLabWidth
in facetGrid()
[LPK-237].
See: example notebook.
Parameter linetype
in elementLine()
and elementRect()
in theme()
[LPK-235].
See: example notebook.
Parameter arrow
in geomSpoke()
[#986].
See: example notebook.
Parameter sizeUnit
in geomPoint()
, geomText()
and geomLabel()
.
See: example notebook.
Auto-detection of orientation="y"
in bar-chart etc. [#558].
See: example notebook.
Parameter plotInset
in theme()
.
See: example notebook.
LetsPlot.theme
global property now accepts a sum of theme/flavor features [#657].geom_curve()
[#1053].scale_x_reverse()/scale_y_reverse()
[#1057].scale_x_reverse()/scale_y_reverse()
[#1058].linetype
parameter in elementLine()
and elementRect()
[LPK-235].Published by alshan 7 months ago
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.
axisOntop
in theme()
is now true
by default.geomCrossbar()
optional [LPK-233].null
for coord limit [#486].Published by alshan 9 months ago
The levels
parameter in asDiscrete()
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 for scaleXxx()
functions [#939, #946].
See: example notebook.
labelText
parameter in theme()
for annotation text settings [#930].
See: example notebook.
[BREAKING] Function margin()
is deprecated and will be removed in future releases.
Please replace all existing usages, i.e. theme(plotMargin=margin(..))
and elementText(margin=margin(..))
with a list or with just a number:
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]
gggrid()
doesn't use global theme settings.g
format doesn't use e-notation for small numbers [#965].geom_segment()
with position adjustment [#963].geomBoxplot()
: use outlierAlpha
to boxplot outliers (not apply alpha
).Published by alshan 12 months ago
Annotations in Barchart.
See: example notebook.
Common theme support in subplots (i.e. gggrid()
) [LPK-#197].
See: example notebook.
HCL
and CIELAB
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 in theme()
[#856].
See: example notebook.
Dual orientation for geometries:
geomErrorBar()
;geomCrossbar()
;geomPointRange()
;geomLineRange()
;geomRibbon()
.See: example notebook.
plot_margin
parameter in theme()
[#856].element_blank()
has no effect on plot title/subtitle/caption in theme()
[#913].Published by alshan about 1 year ago
geomCount()
/statSum()
[#821].plotMessage
parameter in theme(...)
[#863].If layer transparency is set via the alpha-channel in the colors RGBA specification and via the alpha
aesthetic,
then the alpha
aesthetic overrides the alpha-channel in the color. Previousely it was the opposite.
geomPie()
defaults:
strokeSide="both"
(was strokeSide="outer"
).strokeSide = "both"/"inner"
(was created automatically).geomBar()
now has solid outline color by default (was transparent).
geomTile()
, geomBin2D()
now have solid outline color by default (was transparent).
size
is 0 (i.e. tiles outline initially is not visible).[DEPRECATED] Function statCount2d
has been renamed to statCount2D
. The old name is deprecated.
Published by alshan about 1 year ago
Flavor-aware colors: pen, brush and paper
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()
and geom_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
and color
aesthetics - the width and color of pie sector arcs.strokeSide
parameter - which arcs to show (inner, outer, both).spacerWidth
and spacerColor
parameters - lines between sectors.See: example notebook.
sizeUnit
parameter : example notebook.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 parameter strokeColor
.
[BREAKING] geomBoxplot()
no longer support parameter sampling
.
[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
and stroke
parameters now affect outlier shapes.
geomCrossbar()
aesthetics take middle
argument instead of y
[#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 the direction
parameter when the orientation is changed.geomRibbon()
: not all tooltips are shown on a multi-layer plot [#847].Published by alshan over 1 year ago
geomLollipop()
.
See: example notebook.
Aesthetic stroke
and its scales scaleStroke()
, scaleStrokeIdentity()
.
See: example notebook.
Aesthetic linewidth
(for geomLollipop()
) and its scales scaleLinewidth()
, scaleLinewidthIdentity()
.
See: example notebook.
The 'newline' character (\n
) now works as line break
in legend text.
See: example notebook.
Horizontal error bars and vertical "dodge".
See: example notebook.
"Colorbar" in geom_imshow()
. Parameters show_legend
and color_by
[#717].
[BREAKING] geomDotplot()
and geomYDotplot()
no longer support parameter stat
.
[BREAKING] Identity scales don't create a legend by default.
ggsave
path [contribution by David Phillips].scaleXDiscrete
doesn't make scale discrete [#165].geom_imshow()
fail with an error: "The attribute "xlink:href" of the element is required"geom_imshow()
geom_raster()
[LPK-175].geom_segment()
doesn't take into account the alpha [#748].geom_density2d
: Internal error with None values in data [#702]...quantile..
is mapped to geom aesthetic.as_discrete()
[#653]."^size"
, where size
aesthetic is specified with a number).ggmarginal
[#681].facet_grid
: Internal error [#699].Published by alshan over 1 year ago
gggrid()
function (docs), as a replacement for earlier variant of gggrid().
ggsize()
See: example notebook.
jointPlot()
.
See: example notebook.
Axis position
parameter in position scales scaleX*(), scaleY*()
.
See: example notebook.
Drawing quantile lines and filling quantile areas in geomViolin()
and geomDensity()
.
See: example notebook.
angle
parameter in elementText()
in theme()
.
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
and density2df
geometry types in residualPlot()
.
[BREAKING] geomViolin()
no longer supports parameter drawQuantiles
. Use new quantileLines
and quantiles
parameters as needed.
[BREAKING] stack
and fill
position adjustments now stack objects on top of each other only if these objects belong to different groups.
If necessary, use mode="all"
in positionStack()
or positionFill()
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].
..quantile..
aesthetic change [#658].position='stack'
[#673].Published by alshan almost 2 years ago
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
showHalf
Static maps:
useCRS
parameter with value "provided" for geomMap()
and other geoms, working with SpatialDataset
.
See: example notebook.
Published by alshan almost 2 years ago
In geomText(), geomLabel()
:
\n
) now works as line break
lineheight
aestheticnudgeX, nudgeY
parametersvjust
and hjust
): "inward"
and "outward"
See: example notebook.
vjust
parameter in positionStack()
and positionFill()
.
See: example notebook.
Deprecated API:
positionStack
, new usage: positionStack()
positionFill
, new usage: positionFill()
geomBoxplot()
: default value for parameter whiskerWidth
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.
elementBlank()
has no effect in theme legendTitle
[#608].-
, /
, \
or |
present.Published by alshan about 2 years ago
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
hjust, vjust
for plot title, subtitle, caption, legend and axis titlesmargin
for plot title, subtitle, caption, axis titles and tick labelsParameter whiskerWidth
in geomBoxplot()
.
See: example notebook.
New geometry geomLabel()
.
See: example notebook.
New tooltip style after applying coordFlip()
[#580].
See: example notebook.
geomBoxplot
with zero height [#563].geomText
: wrong label alignment with hjust
0 and 1 [#592].breaks
parameter in scales [#507]Published by alshan about 2 years ago
BREAKING CHANGES: Due to refactorings performed in the source code, the v4.0.0 is no longer backward compatible with
earlier versions of the Lets-Plot Kotlin API.
org.jetbrains.letsPlot
to a more specific subpackages:
themes
coord
pos
identity, stack, fill, dodge, nudge
and jitterdodge
(defined in the Pos
object),org.jetbrains.letsPlot.pos
package:positionIdentity, positionStack, positionFill, positionDodge(), positionNudge()
and positionJitterDodge()
.In Kotlin project
import
statements: import jetbrains.letsPlot..
→ import org.jetbrains.letsPlot..
deprecation WARNING
and will offer to fix thisIn Jupyter notebook
Pos.abc
expressions with their new equivalents:
Pos.identity
→ positionIdentity
Pos.stack
→ positionStack
Pos.fill
→ positionFill
Pos.dodge
→ positionDodge()
Pos.nudge
→ positionNudge()
Pos.jitterdodge
→ positionJitterDodge()
NOTE: If your notebook also uses another Kotlin library which depends on an older version of Lets-Plot, then the
classloader may refuse to load classes from both libraries.
If this is the case, then you will want to do NOT update your notebook to Lets-Plot v4.0.0 as yet:
- Make sure your notebook is not using the
%useLatestDescriptors
line magic- Make sure you are using Kotlin Jupyter Kernel version 0.11.0.95 (or earlier), which bundles a previous version of Lets-Plot.
Published by alshan over 2 years ago
Global theme configuring with LetsPlot.theme
property.
See: example notebook.
Quantile-Quantile (Q-Q) plot:
geomQQ()
geomQQLine()
geomQQ2()
geomQQ2Line()
statQQ()
statQQLine()
statQQ2()
statQQ2Line()
qqPlot()
See: example notebook.
Marginal plots: the ggmarginal()
function.
See: example notebook.
Parameter orientation
in geoms: bar, boxplot, density, histogram, freqpoly, smooth, violin
.
See: example notebook.
New in plot theme:
face
parameter in elementText()
.
See: example notebook.
panelBorder
parameter in theme()
[#542].
See: example notebook.
Tooltip theme options, new parameters in theme()
:
tooltip
- tooltip rectangle options;tooltipText, tooltipTitleText
- tooltip text options;axisTooltipText, axisTooltipTextX, axisTooltipTextY
- axis tooltip text options.See: example notebook.
scaleColorGradientN()
and scaleFillGradientN()
functions [#504].
See: example notebook.
kotlinx.datetime
support.
arrow
parameter in geomSegment
- specification for arrow heads, as created by arrow()
function.
geomImage()
removed as it is not yet production ready.geom_violin
switched from systematic
to pick
.density
and ydensity
stats [#62].geom_violin
: add missing parameters kernel
, bw
, adjust
, n
, fs_max
to signature and docstring.Published by alshan over 2 years ago
New geometries:
geomViolin()
See: example notebook.
geomDotplot()
See: example notebook.
geomYDotplot()
See: example notebook.
Plot subtitle and caption:
subtitle
parameter in ggtitle()
and labs()
,
caption
parameter in labs()
,
plotSubtitle
and plotCaption
parameters in theme()
.
See: example notebook.
Multi-line labels: The 'newline' character (\n
) now works as line break
in plot title, subtitle and caption, in legend's title and in tooltips.
In tooltip customization API: the title()
option defines a tooltip "title" text which will always appear above the rest of the tooltip content.
See: example notebook.
Parameter scales
in facetGrid()/facetWrap()
[#451,
#479].
See: example notebook.
color()
will be removed in one of the future releases.geom_histogram(stat='density')
.Published by alshan almost 3 years ago
scaleXTime()
and scaleYTime()
.
See: example notebook.
plotBackground, legendBackground
parameters in theme()
[#485].
axisOntop, axisOntopX, axisOntopY
parameters in theme()
coord_fixed()
should adjust dimensions of "geom" panel accordingly [#478].Published by alshan almost 3 years ago
coordFlip()
.
See: example notebook
.
Date-time formatting support:
breaks
.See Out[7, 8, 10]
in
the example notebook
.
Pre-configured themes:
themeGrey(), themeLight(), themeClassic(), themeMinimal()
;themeMinimal2()
- the default theme, themeNone()
.Theme modification: more parameters were added to the theme()
function.
See: example notebook.
Note: fonts size, family and face still can not be configured.
CorrPlot()
function now also accepts pre-computed correlation coefficients.
Kotlin/JS IR: xxx.klib
artifacts are now available.
Theme.xxxBlank()
functions. Please use corresponding parameters in theme()
.Published by alshan about 3 years ago
Ordering categories:
New parameters added to the asDiscrete()
function:
orderBy
- name of the variable by which the ordering will be performed;order
- ordering direction: 1 for ascending direction and -1 for descending (default).See: as_discrete.