Multiplatform plotting library based on the Grammar of Graphics
plot_message
parameter in theme(...)
[#863].
See: example notebook.
Add geom_count()
/stat_sum()
[#821].
See: example notebook.
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.
geom_pie()
defaults:
stroke_side='both'
(was stroke_side='outer'
).stroke_side = 'both'/'inner'
(was created automatically).geom_bar()
now has solid outline color by default (was transparent).
geom_tile()
, geom_bin2d()
now have solid outline color by default (was transparent).
size
is 0 (i.e. tiles outline initially is not visible).geom_tile()
, geom_bin2d()
: the alpha
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].paint_a/paint_b/paint_c
[#867].Flavor-aware colors: pen, brush and paper
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()
and geom_path()
[#313].
In tooltip customization API:
disable_splitting()
function [LPK-189].
In geom_pie()
:
stroke
and color
aesthetics - the width and color of pie sector arcs.stroke_side
parameter - which arcs to show (inner, outer, both).spacer_width
and spacer_color
parameters - lines between sectors.See: example notebook.
size_unit
parameter : example notebook.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 parameter stroke_color
.
[BREAKING] geom_boxplot()
no longer support parameter sampling
.
[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
and stroke
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.
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 take middle
argument instead of y
[#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 the direction
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].geom_lollipop()
.
See: example notebook.
Aesthetic stroke
[#320]
and its scales scale_stroke()
, scale_stroke_identity()
.
See: example notebook.
Aesthetic linewidth
(for geom_lollipop()
) and its scales scale_linewidth()
, scale_linewidth_identity()
.
See: example notebook.
The 'newline' character (\n
) now works as line break
in legend
text ([#726])
See: example notebook.
Horizontal error bars and vertical "dodge" ([#735]).
See: example notebook.
Colorbar in geom_imshow()
. Parameters show_legend
and color_by
[#717].
[BREAKING] geom_dotplot()
and geom_ydotplot()
no longer support parameter stat
.
Position adjustment settings:
width, height
parameters of geom_jitter()
have priority over the width, height
parameters
of position_jitter()
function;nudge_x, nudge_y
parameters of geom_text(), geom_label()
have priority over x, y
parameters
of position_nudge()
function.geom_text(), geom_label()
use stat='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.
geom_imshow()
fail with an error: "The attribute "xlink:href" of the element geom_imshow()
and 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].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 scales scale_x_*(), scale_y_*()
.
See: example notebook.
angle
parameter in element_text()
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.
Drawing quantile lines and filling quantile areas in geom_violin()
and geom_density()
See: example notebook.
geodesic
parameter for geom_segment()
and geom_path()
.
See: example notebook.
density2d
and density2df
geometry types in residual_plot()
.
The MinGW
toolchain is no longer required for installing of Lets-Plot
on Windows
.
[BREAKING] geom_violin()
no longer supports parameter draw_quantiles
. Use new quantile_lines
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 position_stack()
or position_fill()
to stack objects regardless of their group.
See: example notebook.
..quantile..
aesthetic change [#658].color_by
parameter of the residual_plot()
should group the data points [#662].position='stack'
[#673].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 for geom_path()
and geom_segment()
(replaces the retired geodesic
parameter in geom_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 in geom_violin()
See: example notebook.
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 the geom_point()
and geom_pie()
geometry layers.