Releases: JetBrains/lets-plot
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].
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 break
in 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, height
parameters ofgeom_jitter()
have priority over thewidth, height
parameters
ofposition_jitter()
function;nudge_x, nudge_y
parameters ofgeom_text(), geom_label()
have priority overx, y
parameters
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 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].- 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].
v3.2.0rc1
Updated version v3.2.0rc1
v3.1.0
[3.1.0] - 2023-03-07
Added
-
gggrid()
function.See: example notebook.
-
joint_plot()
See: example notebook.
-
Export to PNG files in
ggsave()
.Note: export to PNG file requires the CairoSVG library.
See: example notebook.
-
Axis
position
parameter in position scalesscale_x_*(), scale_y_*()
.See: example notebook.
-
angle
parameter inelement_text()
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.
-
Drawing quantile lines and filling quantile areas in
geom_violin()
andgeom_density()
See: example notebook.
-
geodesic
parameter forgeom_segment()
andgeom_path()
.See: example notebook.
-
density2d
anddensity2df
geometry types inresidual_plot()
.
Changed
-
The
MinGW
toolchain is no longer required for installing ofLets-Plot
onWindows
. -
[BREAKING]
geom_violin()
no longer supports parameterdraw_quantiles
. Use newquantile_lines
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, usemode="all""
inposition_stack()
orposition_fill()
to stack objects regardless of their group.See: example notebook.
Fixed
- Tooltip does not reflect
..quantile..
aesthetic change [#658]. color_by
parameter of theresidual_plot()
should group the data points [#662].- '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].
- livemap: hide tooltips when user is zooming-in by double-clicks [#659].
- livemap: wrong position when path goes through the antimeridian [#682].
- livemap: wrong position if path is on a circle of latitude [#683].
- livemap: tooltip may show wrong data on density2df [#684].
- livemap: geom_text vjust="center" is a bit off [#132].
- livemap: segment that goes through the antimeridian should be straight [#692].
- livemap: apply alpha to the pie chart and to its tooltip color marker.
- Layout: uneven plot margins for the horizontal axis [#705].
- Sampling: increase the default N for "pick sampling" and for other types of sampling [#687].
v3.1.0rc1
Updated version v3.1.0rc1
v3.0.0
[3.0.0] - 2022-12-15
Added
-
Python wheel for Python 3.11.
-
residual_plot()
.See: example notebook.
-
geom_area_ridges()
.See: example notebook.
-
geom_pie()
.See: example notebook.
-
Annotations for pie chart:
See: example notebook.
-
New variables computed by
'count'
and'count2d'
statistics:'..sum..'
,'..prop..'
,'..proppct..'
.See: example notebook.
-
Maps:
-
"Spatial pies" on interactive maps.
See: example notebook.
-
The
flat
parameter forgeom_path()
andgeom_segment()
(replaces the retiredgeodesic
parameter ingeom_livemap
).See: example notebook.
-
-
Static maps:
-
The value "provided" for
use_crs
parameter.See: example notebook.
-
-
geom_imshow()
:-
Improved performance by orders of magnitude.
-
Transparency of
NaN
values in grayscale images [#631].
See: example notebook. -
alpha
parameter [#630].
See: example notebook.
-
-
tails_cutoff
parameter ingeom_violin()
See: example notebook.
Changed
- [BREAKING] Dropped support for Python 3.6 as it is in the "end-of-life" of its release cycle.
- [BREAKING]
geom_livemap()
itself no longer draws geometries, so the following options are no longer supported:
symbol
,data
,mapping
,map
,map_join
,ontop
,stat
,position
,show_legend
,sampling
,tooltips
.
To draw point and pie markers on map, please, use thegeom_point()
andgeom_pie()
geometry layers. - 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
- Themes: can't change plot background after applying a "flavor" [#623].
- Layout: uneven left/right, top/bottom plot margins [#625].
- A plot building error with empty data on various geoms.
- Precision error in gradient [#634].
- geom_livemap: wrong position when datapoints geodesic line goes close to the N.P. [#645].
v3.0.0rc2
Updated version v3.0.0rc2
v3.0.0rc1
Updated version v3.0.0rc1
v2.5.1
[2.5.1] - 2022-11-03
Added
-
geom_text(), geom_label()
:- the 'newline' character (
\n
) now works asline break
([#605]) lineheight
aesthetic ([#324])nudge_x, nudge_y
parameters ([#324])- special text alignments (
vjust
andhjust
):"inward"
and"outward"
([#324])
See: example notebook.
- the 'newline' character (
-
vjust
parameter inposition_stack()
andposition_fill()
[#323].See: example notebook.
-
use_crs
parameter ingeom_map()
and other geoms, working withGeoDataFrame
See: example notebook.
-
geom_imshow()
(formergeom_image()
):-
extent
parameterSee: example notebook.
-
vmin, vmax, cmap
parametersSee: example notebook.
-
-
image_matrix()
:-
vmin, vmax, cmap
parametersSee: example notebook.
-
Changed
-
geom_image()
renamed togeom_imshow()
See updated examples: image 101,
Fisher's boat. -
geom_boxplot()
: default value for parameterwhisker_width
is 0.5. -
Upgraded Kotlin version to 1.7.20 (was 1.6.21).
Fixed
- element_blank() has no effect in theme legend_title [#608].
geom_livemap()
: add support of geom_label parameters [#601].- 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].
- Parameter
norm
ingeom_imshow()
. - Several issues leading to crush in Swing/Batik apps. Related to [discussions]
- Text labels got trimmed occasionally, when symbols
-
,/
,\
or|
present. geom_livemap()
doesn't load vector tiles insideiframe
with certain security policies.