@@ -58,64 +58,62 @@ Also read:
5858- [ Scientific mode in PyCharm] ( https://www.jetbrains.com/help/pycharm/matplotlib-support.html )
5959- [ Scientific mode in IntelliJ IDEA] ( https://www.jetbrains.com/help/idea/matplotlib-support.html )
6060
61- ## What is new in 4.7 .0
61+ ## What is new in 4.8 .0
6262
63- - #### Time Series Plotting
64- - Support for Python ` time ` and ` date ` objects.
65- - Support for timezone-aware ` datetime ` objects and Pandas/Polars ` Series ` .
63+ - #### ` geom_pointdensity() ` Geometry
6664
67- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b/images/time_date_datetime.png " alt =" f-25b/images/time_date_datetime.png " width =" 400 " height =" 237 " >
68-
69- See [ example notebook] ( https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/time_date_datetime.ipynb ) .
65+ <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25e/images/geom_pointdensity.png " alt =" f-25e/images/geom_pointdensity.png " width =" 400 " height =" 246 " >
7066
71- - #### Native support for PNG and PDF exports
72- Exporting to PNG and PDF formats now uses the ` ImageMagick ` library bundled with Lets-Plot Python wheels and available out-of-the-box. < br >
73- This replaces the previous dependency on the ` CairoSVG ` library and comes with improved support for LaTeX labels rasterization. < br >
67+ See [ example notebook ] ( https://lets-plot.org/releases/f-25e/geom_pointdensity.html ) .
68+
69+ - #### Explicit ` group ` aesthetic now overrides default grouping behavior instead of combining with it
7470
75- - #### ` geom_sina() ` Geometry
71+ > [ !IMPORTANT]
72+ > ** BREAKING CHANGE:**
73+ >
74+ > Previously, setting ` group='variable' ` would group by both the explicit variable AND any discrete
75+ > aesthetics (color, shape, etc.). \
76+ > Now it groups ONLY by the explicit variable, matching ` ggplot2 ` behavior. \
77+ > Use ` group=[var1, var2, ...] ` to group by multiple variables explicitly, \
78+ > and ` group=[] ` to disable any grouping.
7679
77- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b /images/geom_sina .png " alt =" f-25b /images/geom_sina .png " width =" 400 " height =" 276 " >
80+ <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25e /images/group_override_defaults .png " alt =" f-25e /images/group_override_defaults .png " width =" 400 " height =" 263 " >
7881
79- See [ example notebook] ( https://nbviewer.org/github/JetBrains/ lets-plot/blob/master/docs/f-25b/geom_sina.ipynb ) .
82+ See [ example notebook] ( https://lets-plot.org/releases/f-25e/group_override_defaults.html ) .
8083
81- - #### ` geom_text_repel ()` and ` geom_label_repel() ` Geometries
84+ - #### ` gggrid ()` : support for shared legends (parameter ` guides ` )
8285
83- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b /images/geom_repel .png " alt =" f-25b /images/geom_repel .png " width =" 400 " height =" 232 " >
86+ <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25e /images/gggrid_legend_collect .png " alt =" f-25e /images/group_override_defaults .png " width =" 500 " height =" 172 " >
8487
85- See [ example notebook] ( https://nbviewer.org/github/JetBrains/ lets-plot/blob/master/docs/f-25b/ggrepel.ipynb ) .
88+ See [ example notebook] ( https://lets-plot.org/releases/f-25e/gggrid_legend_collect.html ) .
8689
87- - #### ` waterfall_plot() ` Chart
90+ - #### Better handling of missing values in ` geom_line(), geom_path(), geom_ribbon() ` , and ` geom_area() `
8891
89- - Annotations support via ` relative_labels ` and ` absolute_labels ` parameters. <br >
90- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b/images/waterfall_plot_annotations.png " alt =" f-25b/images/waterfall_plot_annotations.png " width =" 400 " height =" 253 " >
92+ <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25e/images/missing_values_ribbon.png " alt =" f-25e/images/missing_values_ribbon.png " width =" 500 " height =" 192 " >
9193
92- See [ example notebook] ( https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/waterfall_plot_annotations.ipynb ) .
93-
94- - Support for combining waterfall bars with other geometry layers. <br >
95- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b/images/waterfall_plot_layers.png " alt =" f-25b/images/waterfall_plot_layers.png " width =" 400 " height =" 227 " >
94+ See [ example notebook] ( https://lets-plot.org/releases/f-25e/missing_values_line_path_area_ribbon.html ) .
9695
97- See [ example notebook ] ( https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/waterfall_plot_layers.ipynb ) .
96+ - #### ` geom_histogram() ` : custom bin bounds (parameter ` breaks ` )
9897
99- - #### Continuous Data on Discrete Scales
98+ See [ example notebook ] ( https://lets-plot.org/releases/f-25e/geom_histogram_param_breaks.html ) .
10099
101- Continuous data when used with discrete positional scales is no longer transformed to discrete data. <br >
102- Instead, it remains continuous, allowing for precise positioning of continuous elements relative to discrete ones. <br >
103- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b/images/combo_discrete_continuous.png " alt =" f-25b/images/combo_discrete_continuous.png " width =" 400 " height =" 151 " >
100+ - #### Legend automatically wraps to prevent overlap — up to 15 rows for vertical legends and 5 columns for horizontal ones
104101
105- See: [ example notebook] ( https://nbviewer.org/github/JetBrains/ lets-plot/blob/master/docs/f-25b/numeric_data_on_discrete_scale.ipynb ) .
102+ See [ example notebook] ( https://lets-plot.org/releases/f-25e/legend_wrap.html ) .
106103
107- > [ !TIP]
108- > New way of handling continuous data on discrete scales could potentially break existing plots.
109- > If you want to restore a broken plot to its original form, you can use the [ ` as_discrete() ` ] ( https://lets-plot.org/python/pages/api/lets_plot.mapping.as_discrete.html ) function to annotate continuous data as discrete.
104+ - #### ` flavor_standard() ` resets the theme's default color scheme
105+ Use to override other flavors or make defaults explicit.
110106
107+ See [ example notebook] ( https://lets-plot.org/releases/f-25e/flavor_standard.html ) .
111108
112- - #### Plot Layout
113- The default plot layout has been improved to better accommodate axis labels and titles. <br >
114- Also, new ` theme() ` options ` axis_text_spacing ` , ` axis_text_spacing_x ` , and ` axis_text_spacing_y ` control spacing between axis ticks and labels. <br >
115- <img src =" https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25b/images/plot_layout_diagram.png " alt =" f-25b/images/plot_layout_diagram.png " width =" 400 " height =" 175 " >
109+ - #### ` 'left' ` , ` 'right' ` , ` 'top' ` , and ` 'bottom' ` legend justification
116110
117- See the [ plot layout diagram ] ( https://nbviewer.org/github/JetBrains/ lets-plot/blob/master/docs/f-25b/plot_layout_scheme.ipynb ) showing various layout options and their effects on plot appearance .
111+ See [ example notebook ] ( https://lets-plot.org/releases/f-25e/legend_justification.html ) .
118112
113+ - #### ` ggtb() ` : Added ` size_zoomin ` and ` size_basis ` parameters to control point size scaling behavior when zooming (works with ` geom_point ` and related layers).
114+
115+ See: [ example notebook] ( https://lets-plot.org/releases/f-25e/ggtb_size_zoomin.html ) .
116+
119117
120118- #### And More
121119
0 commit comments