Releases: JetBrains/lets-plot
v4.3.1rc1
Updated version v4.3.1rc1
v4.3.0
[4.3.0] - 2024-03-07
Added
-
coord_polar()
The polar coordinate system is most commonly used for pie charts, but
it can also be used for constructing Spyder or Radar charts using theflat
option.See: example notebook.
-
In the
theme()
function:-
panel_inset
parameter - primarily used for plots with polar coordinates.See: example notebook.
-
panel_border_ontop
parameter - enables the drawing of panel border on top of the plot geoms. -
panel_grid_ontop, panel_grid_ontop_x, panel_grid_ontop_y
parameters - enable the drawing of grid lines on top of the plot geoms.
-
-
geom_curve()
See: example notebook.
-
[UNIQUE] Visualizing graph-like data with
geom_segment()
andgeom_curve()
.-
Aesthetics
size_start, size_end, stroke_start
andstroke_end
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:
-
-
alpha_stroke
parameter ingeom_label()
to enable the applying ofalpha
tocolor
[#1029].See: example notebook.
-
Showing plots in external browser
The
LetsPlot.setup_show_ext()
directive allows plots to be displayed in an external browser window.
Changed
- [BREAKING] Function
geom_image()
is removed. Please usegeom_imshow()
instead. - Parameter
axis_ontop
intheme()
is nowTrue
by default.
Fixed
- coord_map() should distort tiles size to account for different unit size at different latitudes[#331].
- geom_errorbar(): wrong positioning of tooltips [#992].
- geom_path(): 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 None for coord limit [#486].
- Scale limits don't work for bars/area [LPK-219], [#978].
- No gridlines when axis_ontop=True [#1012].
- bar-plot: do not draw bar border adjacent to the axis [#845].
- Displaying tooltips on a multilayer plot [#1030].
- Make segment geometry better suited for graphs visualization [#572].
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.Categorical
data type [#914]. - The
levels
parameter 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
CairoSVG
library (which is under the hood of ourggsave()
function) does not handretspan
element 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
lablim
parameter inscale_xxx()
functions [#939, #946].See: example notebook.
-
label_text
parameter 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:
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].
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.
-
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.
-
plot_margin
parameter 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_bin
no 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_margin
parameter 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_message
parameter 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
alpha
aesthetic,
then thealpha
aesthetic 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
size
is 0 (i.e. tiles outline initially is not visible).
- however, by default the
Fixed
geom_tile()
,geom_bin2d()
: thealpha
aesthetic 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
geom
parameter 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()
:stroke
andcolor
aesthetics - the width and color of pie sector arcs.stroke_side
parameter - which arcs to show (inner, outer, both).spacer_width
andspacer_color
parameters - lines between sectors.
See: example notebook.
size_unit
parameter : 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()
:size
aesthetic shouldn't affect line width [#751]:linewidth
aesthetic is used for line width,size
- for mid-point size only. -
geom_boxplot()
:size
andstroke
parameters 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 takemiddle
argument 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 thedirection
parameter 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].