Releases: JetBrains/lets-plot
v4.3.0rc2
Updated version v4.3.0rc2
v4.3.0rc1
Updated version v4.3.0rc1
v4.2.0
[4.2.0] - 2023-12-28
Added
-
Support for
Categoricals:- Support for
pandas.Categoricaldata type [#914]. - The
levelsparameter inas_discrete()function [#931].
See: example notebook.
- Support for
-
Support for superscript for numbers in scientific notation [#743].
Warning!
Do NOT(!) use
exponent_format='pow'if you are planning to export plot to a raster format (PNG,PDF).The
CairoSVGlibrary (which is under the hood of ourggsave()function) does not handretspanelement properly end breaks superscript notation when transforming SVG to PNG/PDF.More details: Kozea/CairoSVG#317
See: example notebook. -
Support exporting plot to a file-like object.
Convenience methods:to_svg(),to_html(),to_png(),to_pdf()[#885], [#590].See: example notebook.
-
Sharing of X,Y-scale limits between subplots in
gggrid()[#718].See: example notebook.
-
geom_spoke()[#738].See: example notebook.
-
scale_x_log2(),scale_y_log2()[#922]. -
High-contrast tileset "BW" for
geom_livemap().See: example notebook.
-
New variables computed by
'count'and'count2d'statistics:'..sumprop..','..sumpct..'[#936].See: example notebook.
-
Support using dictionaries for breaks/labels/values customization in
scale_xxx()functions [#169], [#882].See: example notebook.
-
The
lablimparameter inscale_xxx()functions [#939, #946].See: example notebook.
-
label_textparameter intheme()for annotation text settings [#930].See: example notebook.
-
NumberFormat: new flag
~to trim trailing zeros.
Changed
-
[BREAKING] Function
margin()is deprecated and will be removed in future releases.
Please replace all existing usages, i.e.theme(plot_margin=margin(..))andelement_text(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.
-
Upgraded Apache Batik to version 1.17 [#887]
Fixed
- Jitter reproducibility in geom_jitter, position_jitter, position_jitterdodge [#911].
- Facets: order = 0 doesn't work as expected [#923].
- geom_livemap: fix missing styles (e.g. road outline on high zooms) [#926].
- geom_livemap: freeze at zoom 10 [#892].
- 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].
scale_continuous()fails with non-color aesthetics [#953].- NumberFormat:
gformat 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].
v4.2.0rc1
Updated version v4.2.0rc1
v4.1.0
[4.1.0] - 2023-11-03
Added
-
Annotations in Barchart
See: example notebook.
-
Common theme support in subplots (i.e.
gggrid()) [LPK-#197].See: example notebook.
-
HCLandCIELABcolor space for hue color scale and gradient color scales [#876].See: example notebook.
-
New scale transformations:
'log2'and'symlog'.See: example notebook.
-
plot_marginparameter intheme()[#856].See: example notebook.
-
Dual orientation for geometries:
geom_errorbar()geom_crossbar()geom_pointrange()geom_linerange()geom_ribbon()
See: example notebook.
-
Python 3.12 support [#907].
Changed
- [BREAKING]
stat_summary()andstat_summary_binno longer supports computing of additional variables specified in mappings.
Fixed
- Husl palette equivalent [#876].
- Tooltips are trimmed and not visible on a very narrow chart [#837].
geom_crossbar: an error occurs if the mapped values of aesthetics are not populated [#886].- 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_marginparameter intheme()[#856].- Subplot themes not inherited by parent [LPK-#197].
- Saving plots in PDF format using ggsave() [#710].
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.1.0rc1
Updated version v4.1.0rc1
v4.0.1
[4.0.1] - 2023-09-13
Added
-
plot_messageparameter intheme(...)[#863].
See: example notebook. -
Add
geom_count()/stat_sum()[#821].
See: example notebook.
Changed
-
If layer transparency is set via the alpha-channel in the colors RGBA specification and via the
alphaaesthetic,
then thealphaaesthetic overrides the alpha-channel in the color. Previousely it was the opposite. -
geom_pie()defaults:- "stroke" is visible and
stroke_side='both'(wasstroke_side='outer'). - the "hole" is not created automatically when
stroke_side = 'both'/'inner'(was created automatically).
- "stroke" is visible and
-
geom_bar()now has solid outline color by default (was transparent). -
geom_tile(),geom_bin2d()now have solid outline color by default (was transparent).- however, by default the
sizeis 0 (i.e. tiles outline initially is not visible).
- however, by default the
Fixed
geom_tile(),geom_bin2d(): thealphaaesthetic is applied to the tiles outline.scale_x_datetime(): error building plot for early dates [#346].geom_livemap(): theme/flavor plot background is not shown [#857].geom_livemap(): in AWT dragging a map in a facet moves maps in all facets.geom_livemap(): support rectangle 'linetype' [#307].theme_void()+flavor_xxx(): no expected plot background [#858].- Inconsistent color in legend when using
paint_a/paint_b/paint_c[#867].
v4.0.0
[4.0.0] - 2023-08-17
Added
-
Flavor-aware colors: pen, brush and paper
- By default, all geometries utilize new flavor-aware colors.
- Theme
geomparameter allows redefinition of "geom colors":theme(geom=element_geom(pen, brush,paper)).
See: example notebook.
-
stat_summary():
example notebook. -
stat_summary_bin():
example notebook. -
stat_ecdf():
example notebook. -
geom_function():
example notebook. -
theme_void()[#830] :
example notebook. -
"sum"statistic [#821]:
example notebook. -
"boxplot_outlier"statistic: example notebook. -
Support for variadic line width and/or color in
geom_line()andgeom_path()[#313]. -
In tooltip customization API:
disable_splitting()function [LPK-189]. -
In
geom_pie():strokeandcoloraesthetics - the width and color of pie sector arcs.stroke_sideparameter - which arcs to show (inner, outer, both).spacer_widthandspacer_colorparameters - lines between sectors.
See: example notebook.
size_unitparameter : example notebook.
Changed
-
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]
geom_pie()no longer supports parameterstroke_color. -
[BREAKING]
geom_boxplot()no longer support parametersampling. -
[BREAKING]
geom_pointrange():sizeaesthetic shouldn't affect line width [#751]:linewidthaesthetic is used for line width,size- for mid-point size only. -
geom_boxplot():sizeandstrokeparameters now affect outlier shapes. -
[BREAKING, only affects users of Lets-Plot Kotlin API]
The entire project has undergone package refactoring.
As a result of package names changed, Lets-Plot v4.0.0 is partially incompatible
with Lets-Plot Kotlin API versions 4.4.1 and earlier.
Fixed
ggsave()doesn't save geom_raster() layer to a file [#778].ggsave(): saving geomImshow() to SVG produces fuzzy picture [LPK-188].ggsave(): saving geomImshow() to raster format produces fuzzy picture.geom_crossbar()aesthetics takemiddleargument instead ofy[#804].geom_boxplot()doesn't apply alpha to outliers [#754].geom_boxplot()outliers do not show tooltips.geom_step()no tooltips.geom_step(): toggle the behavior of thedirectionparameter when the orientation is changed.geom_livemap(): memory leak when re-run cells without reloading a page.geom_ribbon(): not all tooltips are shown on a multi-layer plot [#847].- Bug in empty plot: IndexOutOfBoundsException [#194].
- Weird tooltip/legend in case of extremely long value [#315].
- panning on interactive map should be more responsive [#336].
- Offline mode doesn't work with manylinux wheels [#808].
v4.0.0rc1
Updated version v4.0.0rc1
v3.2.0
[3.2.0] - 2023-05-09
Added
-
geom_lollipop().See: example notebook.
-
Aesthetic
stroke[#320]
and its scalesscale_stroke(),scale_stroke_identity().See: example notebook.
-
Aesthetic
linewidth(forgeom_lollipop()) and its scalesscale_linewidth(),scale_linewidth_identity().See: example notebook.
-
The 'newline' character (
\n) now works asline breakin legend
text ([#726])See: example notebook.
-
Horizontal error bars and vertical "dodge" ([#735]).
See: example notebook.
-
Colorbar in
geom_imshow(). Parametersshow_legend
andcolor_by[#717].
Changed
-
[BREAKING]
geom_dotplot()andgeom_ydotplot()no longer support parameterstat. -
Position adjustment settings:
width, heightparameters ofgeom_jitter()have priority over thewidth, heightparameters
ofposition_jitter()function;nudge_x, nudge_yparameters ofgeom_text(), geom_label()have priority overx, yparameters
ofposition_nudge()function.
-
geom_text(), geom_label()usestat='identity'by default. -
JVM/Batik: improved "paint manager" which now has better performance and fixes issues with artifacts that could appear beyond the plot component.
Fixed
- 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", wheresizeaesthetic is specified with a number). - "Variable not found" error in
ggmarginal[#681]. facet_grid: Internal error [#699].- Export to SVG fails if breaks are given by integers [#763].
- Remove hard IPython dependency [#749].
- Tooltips bug [LPK-176].
- livemap: doesn't work well with gggrid [#750].
- livemap: memory leak caused by a document event handler.
- livemap: flickering when zooming with the buttons.
- livemap: tooltip text doesn't reflect data under the cursor [#709].