lets-plot 4.6.0rc1__cp311-cp311-win_amd64.whl → 4.6.2__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of lets-plot might be problematic. Click here for more details.
- lets_plot/_version.py +1 -1
- lets_plot/bistro/im.py +1 -1
- lets_plot/export/ggsave_.py +1 -1
- lets_plot/frontend_context/_configuration.py +8 -1
- lets_plot/geo_data/__init__.py +2 -1
- lets_plot/package_data/lets-plot.min.js +1 -1
- lets_plot/plot/geom.py +84 -46
- lets_plot/plot/geom_livemap_.py +2 -22
- lets_plot/plot/ggtb_.py +0 -1
- lets_plot/plot/pos.py +6 -1
- lets_plot/plot/theme_.py +17 -14
- lets_plot/tilesets.py +69 -4
- {lets_plot-4.6.0rc1.dist-info → lets_plot-4.6.2.dist-info}/METADATA +40 -45
- {lets_plot-4.6.0rc1.dist-info → lets_plot-4.6.2.dist-info}/RECORD +18 -18
- {lets_plot-4.6.0rc1.dist-info → lets_plot-4.6.2.dist-info}/WHEEL +1 -1
- lets_plot_kotlin_bridge.cp311-win_amd64.pyd +0 -0
- {lets_plot-4.6.0rc1.dist-info → lets_plot-4.6.2.dist-info/licenses}/LICENSE +0 -0
- {lets_plot-4.6.0rc1.dist-info → lets_plot-4.6.2.dist-info}/top_level.txt +0 -0
lets_plot/plot/geom.py
CHANGED
|
@@ -939,8 +939,8 @@ def geom_histogram(mapping=None, *, data=None, stat=None, position=None, show_le
|
|
|
939
939
|
Result of the call to the `sampling_xxx()` function.
|
|
940
940
|
To prevent any sampling for this layer pass value "none" (string "none").
|
|
941
941
|
threshold : float, default=None
|
|
942
|
-
If a bin's `..count..` is less than the threshold,
|
|
943
|
-
Dropping empty bins is particularly useful for faceted plots with free scales.
|
|
942
|
+
If a bin's `..count..` is less than the threshold, it will be removed, but only if it is on the left or right edge of the histogram.
|
|
943
|
+
Dropping empty edge bins is particularly useful for faceted plots with free scales.
|
|
944
944
|
tooltips : `layer_tooltips`
|
|
945
945
|
Result of the call to the `layer_tooltips()` function.
|
|
946
946
|
Specify appearance, style and content.
|
|
@@ -1466,23 +1466,23 @@ def geom_hex(mapping=None, *, data=None, stat=None, position=None, show_legend=N
|
|
|
1466
1466
|
Override `bins`. The default is to use bin widths that cover the entire range of the data.
|
|
1467
1467
|
drop : bool, default=True
|
|
1468
1468
|
Specify whether to remove all hexagonal bins with 0 counts.
|
|
1469
|
-
width_unit : {'res', 'identity', 'size', 'px'}, default='
|
|
1469
|
+
width_unit : {'res', 'identity', 'size', 'px'}, default='res'
|
|
1470
1470
|
Unit for width of the hexagon.
|
|
1471
1471
|
Possible values:
|
|
1472
1472
|
|
|
1473
|
-
- 'res':
|
|
1474
|
-
- 'identity':
|
|
1475
|
-
- 'size':
|
|
1476
|
-
- 'px':
|
|
1473
|
+
- 'res': if `stat='binhex'`, the unit equals the hexagonal bin width (`binwidth[0]`); otherwise, it represents the smallest distance between adjacent hexagons along the corresponding axis;
|
|
1474
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
1475
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
1476
|
+
- 'px': the unit is measured in screen pixels.
|
|
1477
1477
|
|
|
1478
|
-
height_unit : {'res', 'identity', 'size', 'px'}, default='
|
|
1478
|
+
height_unit : {'res', 'identity', 'size', 'px'}, default='res'
|
|
1479
1479
|
Unit for height of the hexagon.
|
|
1480
1480
|
Possible values:
|
|
1481
1481
|
|
|
1482
|
-
- 'res':
|
|
1483
|
-
- 'identity':
|
|
1484
|
-
- 'size':
|
|
1485
|
-
- 'px':
|
|
1482
|
+
- 'res': if `stat='binhex'`, the unit equals the hexagonal bin height (`binwidth[1]`); otherwise, it represents the smallest distance between adjacent hexagons along the corresponding axis;
|
|
1483
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
1484
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
1485
|
+
- 'px': the unit is measured in screen pixels.
|
|
1486
1486
|
|
|
1487
1487
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
1488
1488
|
Define the color aesthetic for the geometry.
|
|
@@ -1581,6 +1581,21 @@ def geom_hex(mapping=None, *, data=None, stat=None, position=None, show_legend=N
|
|
|
1581
1581
|
fill='darkgreen') + \\
|
|
1582
1582
|
ggsize(600, 450)
|
|
1583
1583
|
|
|
1584
|
+
|
|
|
1585
|
+
|
|
1586
|
+
.. jupyter-execute::
|
|
1587
|
+
:linenos:
|
|
1588
|
+
:emphasize-lines: 7-8
|
|
1589
|
+
|
|
1590
|
+
import numpy as np
|
|
1591
|
+
from lets_plot import *
|
|
1592
|
+
LetsPlot.setup_html()
|
|
1593
|
+
np.random.seed(42)
|
|
1594
|
+
x, y = np.random.multivariate_normal(mean=[-98, 39], cov=[[100, 0], [0, 10]], size=100).T
|
|
1595
|
+
ggplot() + geom_livemap() + \\
|
|
1596
|
+
geom_hex(aes(x, y, fill='..density..'), \\
|
|
1597
|
+
bins=[10, 5], alpha=.5, show_legend=False)
|
|
1598
|
+
|
|
1584
1599
|
"""
|
|
1585
1600
|
return _geom('hex',
|
|
1586
1601
|
mapping=mapping,
|
|
@@ -1642,19 +1657,19 @@ def geom_tile(mapping=None, *, data=None, stat=None, position=None, show_legend=
|
|
|
1642
1657
|
Unit for width of the tile.
|
|
1643
1658
|
Possible values:
|
|
1644
1659
|
|
|
1645
|
-
- 'res':
|
|
1646
|
-
- 'identity':
|
|
1647
|
-
- 'size':
|
|
1648
|
-
- 'px':
|
|
1660
|
+
- 'res': the unit equals the smallest distance between adjacent tiles along the corresponding axis;
|
|
1661
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
1662
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
1663
|
+
- 'px': the unit is measured in screen pixels.
|
|
1649
1664
|
|
|
1650
1665
|
height_unit : {'res', 'identity', 'size', 'px'}, default='res'
|
|
1651
1666
|
Unit for height of the tile.
|
|
1652
1667
|
Possible values:
|
|
1653
1668
|
|
|
1654
|
-
- 'res':
|
|
1655
|
-
- 'identity':
|
|
1656
|
-
- 'size':
|
|
1657
|
-
- 'px':
|
|
1669
|
+
- 'res': the unit equals the smallest distance between adjacent tiles along the corresponding axis;
|
|
1670
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
1671
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
1672
|
+
- 'px': the unit is measured in screen pixels.
|
|
1658
1673
|
|
|
1659
1674
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
1660
1675
|
Define the color aesthetic for the geometry.
|
|
@@ -1871,7 +1886,7 @@ def geom_raster(mapping=None, *, data=None, stat=None, position=None, show_legen
|
|
|
1871
1886
|
def geom_errorbar(mapping=None, *, data=None, stat=None, position=None, show_legend=None, inherit_aes=None,
|
|
1872
1887
|
manual_key=None,
|
|
1873
1888
|
sampling=None, tooltips=None,
|
|
1874
|
-
width_unit=None,
|
|
1889
|
+
width_unit=None,
|
|
1875
1890
|
color_by=None,
|
|
1876
1891
|
**other_args):
|
|
1877
1892
|
"""
|
|
@@ -1912,22 +1927,13 @@ def geom_errorbar(mapping=None, *, data=None, stat=None, position=None, show_leg
|
|
|
1912
1927
|
Specify appearance, style and content.
|
|
1913
1928
|
Set tooltips='none' to hide tooltips from the layer.
|
|
1914
1929
|
width_unit : {'res', 'identity', 'size', 'px'}, default='res'
|
|
1915
|
-
Unit for the whisker width of the
|
|
1930
|
+
Unit for the whisker width of the error bar.
|
|
1916
1931
|
Possible values:
|
|
1917
1932
|
|
|
1918
|
-
- 'res':
|
|
1919
|
-
- 'identity':
|
|
1920
|
-
- 'size':
|
|
1921
|
-
- 'px':
|
|
1922
|
-
|
|
1923
|
-
height_unit : {'res', 'identity', 'size', 'px'}, default='res'
|
|
1924
|
-
Unit for the whisker height of the horizontal error bar.
|
|
1925
|
-
Possible values:
|
|
1926
|
-
|
|
1927
|
-
- 'res': value 1 corresponds to the resolution along the y-axis, i.e. the minimum distance between data points;
|
|
1928
|
-
- 'identity': value 1 corresponds to the distance from 0 to 1 on the y-axis;
|
|
1929
|
-
- 'size': value 1 corresponds to the diameter of a point of size 1;
|
|
1930
|
-
- 'px': value 1 corresponds to 1 pixel.
|
|
1933
|
+
- 'res': the unit equals the smallest distance between adjacent error bars along the corresponding axis;
|
|
1934
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
1935
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
1936
|
+
- 'px': the unit is measured in screen pixels.
|
|
1931
1937
|
|
|
1932
1938
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
1933
1939
|
Define the color aesthetic for the geometry.
|
|
@@ -1955,7 +1961,7 @@ def geom_errorbar(mapping=None, *, data=None, stat=None, position=None, show_leg
|
|
|
1955
1961
|
- alpha : transparency level of a layer. Accept values between 0 and 1.
|
|
1956
1962
|
- color (colour) : color of the geometry lines. For more info see `Color and Fill <https://lets-plot.org/python/pages/aesthetics.html#color-and-fill>`__.
|
|
1957
1963
|
- size : line width. Define bar line width.
|
|
1958
|
-
- width
|
|
1964
|
+
- width : size of the whiskers of error bar. Typically range between 0 and 1. Values that are greater than 1 lead to overlapping of the bars.
|
|
1959
1965
|
- linetype : type of the line. Accept codes or names (0 = 'blank', 1 = 'solid', 2 = 'dashed', 3 = 'dotted', 4 = 'dotdash', 5 = 'longdash', 6 = 'twodash'), a hex string (up to 8 digits for dash-gap lengths), or a list pattern [offset, [dash, gap, ...]] / [dash, gap, ...]. For more info see `Line Types <https://lets-plot.org/python/pages/aesthetics.html#line-types>`__.
|
|
1960
1966
|
|
|
1961
1967
|
----
|
|
@@ -2017,9 +2023,22 @@ def geom_errorbar(mapping=None, *, data=None, stat=None, position=None, show_leg
|
|
|
2017
2023
|
'c': ['gr1', 'gr2', 'gr1', 'gr2']
|
|
2018
2024
|
}
|
|
2019
2025
|
ggplot(data) + \\
|
|
2020
|
-
geom_errorbar(aes(y='y', xmin='xmin', xmax='xmax', color='c'),
|
|
2026
|
+
geom_errorbar(aes(y='y', xmin='xmin', xmax='xmax', color='c'), width=0.1, size=2)
|
|
2021
2027
|
|
|
2022
2028
|
"""
|
|
2029
|
+
if mapping is not None and 'height' in mapping.props():
|
|
2030
|
+
print("WARN: using 'height' aesthetic parameter for errorbar was deprecated.\n"
|
|
2031
|
+
" Please, use 'width' aesthetic instead.")
|
|
2032
|
+
mapping.props()['width'] = mapping.props().pop('height')
|
|
2033
|
+
if 'height' in other_args:
|
|
2034
|
+
print("WARN: using 'height' parameter for errorbar was deprecated.\n"
|
|
2035
|
+
" Please, use 'width' parameter instead.")
|
|
2036
|
+
other_args['width'] = other_args.pop('height')
|
|
2037
|
+
if 'height_unit' in other_args:
|
|
2038
|
+
print("WARN: using 'height_unit' parameter for errorbar was deprecated.\n"
|
|
2039
|
+
" Please, use 'width_unit' parameter instead.")
|
|
2040
|
+
other_args.pop('height_unit')
|
|
2041
|
+
|
|
2023
2042
|
return _geom('errorbar',
|
|
2024
2043
|
mapping=mapping,
|
|
2025
2044
|
data=data,
|
|
@@ -2031,7 +2050,6 @@ def geom_errorbar(mapping=None, *, data=None, stat=None, position=None, show_leg
|
|
|
2031
2050
|
sampling=sampling,
|
|
2032
2051
|
tooltips=tooltips,
|
|
2033
2052
|
width_unit=width_unit,
|
|
2034
|
-
height_unit=height_unit,
|
|
2035
2053
|
color_by=color_by,
|
|
2036
2054
|
**other_args)
|
|
2037
2055
|
|
|
@@ -2085,10 +2103,10 @@ def geom_crossbar(mapping=None, *, data=None, stat=None, position=None, show_leg
|
|
|
2085
2103
|
Unit for the width of the crossbar.
|
|
2086
2104
|
Possible values:
|
|
2087
2105
|
|
|
2088
|
-
- 'res':
|
|
2089
|
-
- 'identity':
|
|
2090
|
-
- 'size':
|
|
2091
|
-
- 'px':
|
|
2106
|
+
- 'res': the unit equals the smallest distance between adjacent crossbars along the corresponding axis;
|
|
2107
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
2108
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
2109
|
+
- 'px': the unit is measured in screen pixels.
|
|
2092
2110
|
|
|
2093
2111
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
2094
2112
|
Define the color aesthetic for the geometry.
|
|
@@ -3679,10 +3697,10 @@ def geom_boxplot(mapping=None, *, data=None, stat=None, position=None, show_lege
|
|
|
3679
3697
|
Unit for the width of the boxplot.
|
|
3680
3698
|
Possible values:
|
|
3681
3699
|
|
|
3682
|
-
- 'res':
|
|
3683
|
-
- 'identity':
|
|
3684
|
-
- 'size':
|
|
3685
|
-
- 'px':
|
|
3700
|
+
- 'res': the unit equals the smallest distance between adjacent boxes along the corresponding axis;
|
|
3701
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
3702
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
3703
|
+
- 'px': the unit is measured in screen pixels.
|
|
3686
3704
|
|
|
3687
3705
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
3688
3706
|
Define the color aesthetic for the geometry.
|
|
@@ -6969,6 +6987,7 @@ def geom_text(mapping=None, *, data=None, stat=None, position=None, show_legend=
|
|
|
6969
6987
|
na_text=None,
|
|
6970
6988
|
nudge_x=None, nudge_y=None,
|
|
6971
6989
|
size_unit=None,
|
|
6990
|
+
nudge_unit=None,
|
|
6972
6991
|
check_overlap=None,
|
|
6973
6992
|
color_by=None,
|
|
6974
6993
|
**other_args):
|
|
@@ -7038,6 +7057,14 @@ def geom_text(mapping=None, *, data=None, stat=None, position=None, show_legend=
|
|
|
7038
7057
|
size_unit : {'x', 'y'}
|
|
7039
7058
|
Relate the size of the text to the length of the unit step along one of the axes.
|
|
7040
7059
|
If None, no fitting is performed.
|
|
7060
|
+
nudge_unit : {'identity', 'size', 'px'}, default='identity'
|
|
7061
|
+
Units for x and y nudging.
|
|
7062
|
+
Possible values:
|
|
7063
|
+
|
|
7064
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
7065
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
7066
|
+
- 'px': the unit is measured in screen pixels.
|
|
7067
|
+
|
|
7041
7068
|
check_overlap : bool, default=False
|
|
7042
7069
|
If True, skip plotting text that overlaps previous text in the same layer.
|
|
7043
7070
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
@@ -7190,6 +7217,7 @@ def geom_text(mapping=None, *, data=None, stat=None, position=None, show_legend=
|
|
|
7190
7217
|
na_text=na_text,
|
|
7191
7218
|
nudge_x=nudge_x, nudge_y=nudge_y,
|
|
7192
7219
|
size_unit=size_unit,
|
|
7220
|
+
nudge_unit=nudge_unit,
|
|
7193
7221
|
check_overlap=check_overlap,
|
|
7194
7222
|
color_by=color_by,
|
|
7195
7223
|
**other_args)
|
|
@@ -7205,6 +7233,7 @@ def geom_label(mapping=None, *, data=None, stat=None, position=None, show_legend
|
|
|
7205
7233
|
label_padding=None, label_r=None, label_size=None,
|
|
7206
7234
|
alpha_stroke=None,
|
|
7207
7235
|
size_unit=None,
|
|
7236
|
+
nudge_unit=None,
|
|
7208
7237
|
check_overlap=None,
|
|
7209
7238
|
color_by=None, fill_by=None,
|
|
7210
7239
|
**other_args):
|
|
@@ -7282,6 +7311,14 @@ def geom_label(mapping=None, *, data=None, stat=None, position=None, show_legend
|
|
|
7282
7311
|
size_unit : {'x', 'y'}
|
|
7283
7312
|
Relate the size of the text label to the length of the unit step along one of the axes.
|
|
7284
7313
|
If None, no fitting is performed.
|
|
7314
|
+
nudge_unit : {'identity', 'size', 'px'}, default='identity'
|
|
7315
|
+
Units for x and y nudging.
|
|
7316
|
+
Possible values:
|
|
7317
|
+
|
|
7318
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
7319
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
7320
|
+
- 'px': the unit is measured in screen pixels.
|
|
7321
|
+
|
|
7285
7322
|
check_overlap : bool, default=False
|
|
7286
7323
|
If True, skip plotting text that overlaps previous text in the same layer.
|
|
7287
7324
|
color_by : {'fill', 'color', 'paint_a', 'paint_b', 'paint_c'}, default='color'
|
|
@@ -7442,6 +7479,7 @@ def geom_label(mapping=None, *, data=None, stat=None, position=None, show_legend
|
|
|
7442
7479
|
label_size=label_size,
|
|
7443
7480
|
alpha_stroke=alpha_stroke,
|
|
7444
7481
|
size_unit=size_unit,
|
|
7482
|
+
nudge_unit=nudge_unit,
|
|
7445
7483
|
check_overlap=check_overlap,
|
|
7446
7484
|
color_by=color_by, fill_by=fill_by,
|
|
7447
7485
|
**other_args)
|
lets_plot/plot/geom_livemap_.py
CHANGED
|
@@ -272,33 +272,13 @@ def _prepare_tiles(tiles: Optional[Union[str, dict]]) -> Optional[dict]:
|
|
|
272
272
|
|
|
273
273
|
|
|
274
274
|
def _warn_deprecated_tiles(tiles: Union[dict, None]):
|
|
275
|
-
# TODO: Remove this warning in future releases.
|
|
276
|
-
|
|
277
275
|
if tiles is None:
|
|
278
276
|
maptiles_url = get_global_val(MAPTILES_URL)
|
|
279
277
|
else:
|
|
280
278
|
maptiles_url = tiles[MAPTILES_URL]
|
|
281
279
|
|
|
282
|
-
if
|
|
283
|
-
|
|
284
|
-
if not maptiles_url.startswith("https://cartocdn_[abc].global.ssl.fastly.net/"):
|
|
285
|
-
return
|
|
286
|
-
if 'base-midnight' not in maptiles_url and 'base-antique' not in maptiles_url and 'base-flatblue' not in maptiles_url:
|
|
287
|
-
return
|
|
288
|
-
|
|
289
|
-
if tiles is None:
|
|
290
|
-
if not has_global_value(MAPTILES_ATTRIBUTION):
|
|
291
|
-
return
|
|
292
|
-
maptiles_attribution = get_global_val(MAPTILES_ATTRIBUTION)
|
|
293
|
-
else:
|
|
294
|
-
maptiles_attribution = tiles[MAPTILES_ATTRIBUTION]
|
|
295
|
-
|
|
296
|
-
if not isinstance(maptiles_attribution, str):
|
|
297
|
-
return
|
|
298
|
-
if not maptiles_attribution.endswith('map data: <a href="https://www.openstreetmap.org/copyright">© OpenStreetMap contributors</a> <a href="https://carto.com/attributions#basemaps">© CARTO</a>, <a href="https://carto.com/attributions">© CARTO</a>'):
|
|
299
|
-
return
|
|
300
|
-
|
|
301
|
-
print(f"WARN: The tileset is no longer available and the corresponding constant will be removed in future releases.")
|
|
280
|
+
# Check if the current tiles should be deprecated and print a deprecation message. Otherwise, return.
|
|
281
|
+
return
|
|
302
282
|
|
|
303
283
|
|
|
304
284
|
def _prepare_location(location: Union[str, List[float]]) -> Optional[dict]:
|
lets_plot/plot/ggtb_.py
CHANGED
lets_plot/plot/pos.py
CHANGED
|
@@ -156,8 +156,13 @@ def position_nudge(x=None, y=None, unit=None):
|
|
|
156
156
|
Nudging width.
|
|
157
157
|
y : float
|
|
158
158
|
Nudging height.
|
|
159
|
-
unit : {'identity', 'size', 'px'}
|
|
159
|
+
unit : {'identity', 'size', 'px'}, default='identity'
|
|
160
160
|
Units for x and y nudging.
|
|
161
|
+
Possible values:
|
|
162
|
+
|
|
163
|
+
- 'identity': a unit of 1 corresponds to a difference of 1 in data space;
|
|
164
|
+
- 'size': a unit of 1 corresponds to the diameter of a point with `size=1`;
|
|
165
|
+
- 'px': the unit is measured in screen pixels.
|
|
161
166
|
|
|
162
167
|
Returns
|
|
163
168
|
-------
|
lets_plot/plot/theme_.py
CHANGED
|
@@ -601,12 +601,11 @@ def element_text(
|
|
|
601
601
|
Can be used with values out of range, but behaviour is not specified.
|
|
602
602
|
margin : number or list of numbers
|
|
603
603
|
Margins around the text.
|
|
604
|
-
|
|
605
604
|
The margin may be specified using a number or a list of numbers:
|
|
605
|
+
|
|
606
606
|
- a number or list of one number - the same margin it applied to all four sides;
|
|
607
607
|
- a list of two numbers - the first margin applies to the top and bottom, the second - to the left and right;
|
|
608
|
-
- a list of three numbers -
|
|
609
|
-
the third - to the bottom;
|
|
608
|
+
- a list of three numbers - the first margin applies to the top, the second - to the right and left, the third - to the bottom;
|
|
610
609
|
- a list of four numbers - the margins are applied to the top, right, bottom and left in that order.
|
|
611
610
|
|
|
612
611
|
It is acceptable to use None for any side; in this case, the default side value for this element will be used.
|
|
@@ -658,8 +657,8 @@ def element_markdown(
|
|
|
658
657
|
Text color.
|
|
659
658
|
family : str
|
|
660
659
|
Font family.
|
|
661
|
-
face :
|
|
662
|
-
Font face
|
|
660
|
+
face : {'plain', 'italic', 'bold', 'bold_italic'}, default='plain'
|
|
661
|
+
Font face.
|
|
663
662
|
size : int
|
|
664
663
|
Text size in px.
|
|
665
664
|
angle : float
|
|
@@ -678,12 +677,11 @@ def element_markdown(
|
|
|
678
677
|
Can be used with values out of range, but behaviour is not specified.
|
|
679
678
|
margin : number or list of numbers
|
|
680
679
|
Margins around the text.
|
|
681
|
-
|
|
682
680
|
The margin may be specified using a number or a list of numbers:
|
|
681
|
+
|
|
683
682
|
- a number or list of one number - the same margin it applied to all four sides;
|
|
684
683
|
- a list of two numbers - the first margin applies to the top and bottom, the second - to the left and right;
|
|
685
|
-
- a list of three numbers - the first margin applies to the top, the second - to the right and left,
|
|
686
|
-
the third - to the bottom;
|
|
684
|
+
- a list of three numbers - the first margin applies to the top, the second - to the right and left, the third - to the bottom;
|
|
687
685
|
- a list of four numbers - the margins are applied to the top, right, bottom and left in that order.
|
|
688
686
|
|
|
689
687
|
It is acceptable to use None for any side; in this case, the default side value for this element will be used.
|
|
@@ -699,15 +697,20 @@ def element_markdown(
|
|
|
699
697
|
--------
|
|
700
698
|
.. jupyter-execute::
|
|
701
699
|
:linenos:
|
|
702
|
-
:emphasize-lines:
|
|
700
|
+
:emphasize-lines: 12
|
|
703
701
|
|
|
704
|
-
import numpy as np
|
|
705
702
|
from lets_plot import *
|
|
706
703
|
LetsPlot.setup_html()
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
704
|
+
ggplot() + \\
|
|
705
|
+
geom_blank() + \\
|
|
706
|
+
labs(
|
|
707
|
+
title='*Hello*, **world**',
|
|
708
|
+
subtitle='_Simple plot_',
|
|
709
|
+
caption='*Powered by **lets-plot***',
|
|
710
|
+
x='Title **X**',
|
|
711
|
+
y='Title **Y**'
|
|
712
|
+
) + \\
|
|
713
|
+
theme(title=element_markdown())
|
|
711
714
|
|
|
712
715
|
"""
|
|
713
716
|
return {'markdown': True, **locals()}
|
lets_plot/tilesets.py
CHANGED
|
@@ -140,7 +140,6 @@ def _carto_tiles(tileset, cdn):
|
|
|
140
140
|
if cdn == 'carto':
|
|
141
141
|
base_url = "https://{{s}}.basemaps.cartocdn.com/rastertiles/{tileset}/{{z}}/{{x}}/{{y}}{hi_res}.png"
|
|
142
142
|
elif cdn == 'fastly':
|
|
143
|
-
# TODO: remove this branch in future releases
|
|
144
143
|
base_url = "https://cartocdn_{{s}}.global.ssl.fastly.net/{tileset}/{{z}}/{{x}}/{{y}}{hi_res}.png"
|
|
145
144
|
else:
|
|
146
145
|
raise ValueError("Unknown carto cdn: {}. Expected 'carto' or 'fastly'.".format(cdn))
|
|
@@ -268,19 +267,85 @@ Examples
|
|
|
268
267
|
|
|
269
268
|
CARTO_MIDNIGHT_COMMANDER, CARTO_MIDNIGHT_COMMANDER_HIRES = _carto_tiles('base-midnight', cdn='fastly')
|
|
270
269
|
"""
|
|
271
|
-
|
|
270
|
+
CARTO tiles, midnight commander theme.
|
|
271
|
+
|
|
272
|
+
Examples
|
|
273
|
+
--------
|
|
274
|
+
.. jupyter-execute::
|
|
275
|
+
:linenos:
|
|
276
|
+
:emphasize-lines: 4
|
|
277
|
+
|
|
278
|
+
from lets_plot import *
|
|
279
|
+
from lets_plot import tilesets
|
|
280
|
+
LetsPlot.setup_html()
|
|
281
|
+
ggplot() + geom_livemap(tiles=tilesets.CARTO_MIDNIGHT_COMMANDER)
|
|
282
|
+
|
|
283
|
+
|
|
|
284
|
+
|
|
285
|
+
.. jupyter-execute::
|
|
286
|
+
:linenos:
|
|
287
|
+
:emphasize-lines: 4
|
|
288
|
+
|
|
289
|
+
from lets_plot import *
|
|
290
|
+
from lets_plot import tilesets
|
|
291
|
+
LetsPlot.setup_html()
|
|
292
|
+
ggplot() + geom_livemap(tiles=tilesets.CARTO_MIDNIGHT_COMMANDER_HIRES)
|
|
272
293
|
|
|
273
294
|
"""
|
|
274
295
|
|
|
275
296
|
CARTO_ANTIQUE, CARTO_ANTIQUE_HIRES = _carto_tiles('base-antique', cdn='fastly')
|
|
276
297
|
"""
|
|
277
|
-
|
|
298
|
+
CARTO tiles, antique theme.
|
|
299
|
+
|
|
300
|
+
Examples
|
|
301
|
+
--------
|
|
302
|
+
.. jupyter-execute::
|
|
303
|
+
:linenos:
|
|
304
|
+
:emphasize-lines: 4
|
|
305
|
+
|
|
306
|
+
from lets_plot import *
|
|
307
|
+
from lets_plot import tilesets
|
|
308
|
+
LetsPlot.setup_html()
|
|
309
|
+
ggplot() + geom_livemap(tiles=tilesets.CARTO_ANTIQUE)
|
|
310
|
+
|
|
311
|
+
|
|
|
312
|
+
|
|
313
|
+
.. jupyter-execute::
|
|
314
|
+
:linenos:
|
|
315
|
+
:emphasize-lines: 4
|
|
316
|
+
|
|
317
|
+
from lets_plot import *
|
|
318
|
+
from lets_plot import tilesets
|
|
319
|
+
LetsPlot.setup_html()
|
|
320
|
+
ggplot() + geom_livemap(tiles=tilesets.CARTO_ANTIQUE_HIRES)
|
|
278
321
|
|
|
279
322
|
"""
|
|
280
323
|
|
|
281
324
|
CARTO_FLAT_BLUE, CARTO_FLAT_BLUE_HIRES = _carto_tiles('base-flatblue', cdn='fastly')
|
|
282
325
|
"""
|
|
283
|
-
|
|
326
|
+
CARTO tiles, flat blue theme.
|
|
327
|
+
|
|
328
|
+
Examples
|
|
329
|
+
--------
|
|
330
|
+
.. jupyter-execute::
|
|
331
|
+
:linenos:
|
|
332
|
+
:emphasize-lines: 4
|
|
333
|
+
|
|
334
|
+
from lets_plot import *
|
|
335
|
+
from lets_plot import tilesets
|
|
336
|
+
LetsPlot.setup_html()
|
|
337
|
+
ggplot() + geom_livemap(tiles=tilesets.CARTO_FLAT_BLUE)
|
|
338
|
+
|
|
339
|
+
|
|
|
340
|
+
|
|
341
|
+
.. jupyter-execute::
|
|
342
|
+
:linenos:
|
|
343
|
+
:emphasize-lines: 4
|
|
344
|
+
|
|
345
|
+
from lets_plot import *
|
|
346
|
+
from lets_plot import tilesets
|
|
347
|
+
LetsPlot.setup_html()
|
|
348
|
+
ggplot() + geom_livemap(tiles=tilesets.CARTO_FLAT_BLUE_HIRES)
|
|
284
349
|
|
|
285
350
|
"""
|
|
286
351
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: lets-plot
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.2
|
|
4
4
|
Summary: An open source library for statistical plotting
|
|
5
5
|
Home-page: https://lets-plot.org
|
|
6
6
|
Author: JetBrains
|
|
@@ -29,7 +29,7 @@ Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
|
29
29
|
Classifier: Intended Audience :: Science/Research
|
|
30
30
|
Classifier: Intended Audience :: Developers
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
|
-
License-File:
|
|
32
|
+
License-File: LICENSE
|
|
33
33
|
Requires-Dist: pypng
|
|
34
34
|
Requires-Dist: palettable
|
|
35
35
|
Dynamic: author
|
|
@@ -40,6 +40,7 @@ Dynamic: description-content-type
|
|
|
40
40
|
Dynamic: home-page
|
|
41
41
|
Dynamic: keywords
|
|
42
42
|
Dynamic: license
|
|
43
|
+
Dynamic: license-file
|
|
43
44
|
Dynamic: maintainer
|
|
44
45
|
Dynamic: maintainer-email
|
|
45
46
|
Dynamic: project-url
|
|
@@ -102,45 +103,38 @@ Also read:
|
|
|
102
103
|
- [Scientific mode in PyCharm](https://www.jetbrains.com/help/pycharm/matplotlib-support.html)
|
|
103
104
|
- [Scientific mode in IntelliJ IDEA](https://www.jetbrains.com/help/idea/matplotlib-support.html)
|
|
104
105
|
|
|
105
|
-
## What is new in 4.
|
|
106
|
+
## What is new in 4.6.0
|
|
106
107
|
|
|
107
|
-
- ####
|
|
108
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-
|
|
108
|
+
- #### Markdown Support in *Title*, *Subtitle*, *Caption*, and Axis Labels
|
|
109
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/markdown.png" alt="f-25a/images/markdown.png" width="400" height="237">
|
|
109
110
|
|
|
110
|
-
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-
|
|
111
|
+
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/markdown.ipynb).
|
|
111
112
|
|
|
112
|
-
- ####
|
|
113
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-
|
|
113
|
+
- #### Support for Multiline Axis Labels, Text Justification in Axis Labels
|
|
114
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/multiline_axis_labels.png" alt="f-25a/images/multiline_axis_labels.png" width="400" height="275">
|
|
114
115
|
|
|
115
|
-
See [
|
|
116
|
+
See examples: [multiline axis labels](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/multiline_axis_labels.ipynb),
|
|
117
|
+
[axis label justification](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/axis_label_justification.ipynb),
|
|
116
118
|
|
|
117
|
-
- ####
|
|
118
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-
|
|
119
|
+
- #### `geom_hex()` Geometry
|
|
120
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/geom_hex.png" alt="f-25a/images/geom_hex.png" width="370" height="296">
|
|
119
121
|
|
|
120
|
-
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-
|
|
122
|
+
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/geom_hex.ipynb).
|
|
121
123
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
- #### Compact Scientific Notation Formatting
|
|
126
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24g/images/compact_exp.png" alt="f-24g/images/compact_exp.png" width="400" height="174">
|
|
124
|
+
- #### `ggbunch()` Function: Combining Plots with Custom Layout
|
|
125
|
+
It replaces the deprecated `GGBunch` class. <br/>
|
|
126
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/ggbunch_indonesia.png" alt="f-25a/images/ggbunch_indonesia.png" width="400" height="164">
|
|
127
127
|
|
|
128
|
-
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-
|
|
129
|
-
|
|
130
|
-
> [!CAUTION]
|
|
131
|
-
> `pow` and `pow_full` options are not supported in PDF and PNG exports.
|
|
128
|
+
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/ggbunch_indonesia.ipynb).
|
|
132
129
|
|
|
133
|
-
-
|
|
134
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24g/images/gg_marins.png" alt="f-24g/images/gg_marins.png" width="400" height="249">
|
|
130
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/magnifier_inset.png" alt="f-25a/images/magnifier_inset.png" width="400" height="251">
|
|
135
131
|
|
|
136
|
-
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-
|
|
132
|
+
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/magnifier_inset.ipynb).
|
|
137
133
|
|
|
138
|
-
- ####
|
|
139
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-
|
|
134
|
+
- #### Parameters `start` and `direction` in `geom_pie()` Geometry
|
|
135
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/geom_pie_params.png" alt="f-25a/images/geom_pie_params.png" width="400" height="119">
|
|
140
136
|
|
|
141
|
-
See
|
|
142
|
-
[legend key](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-24g/theme_legend_key.ipynb),
|
|
143
|
-
[facet strip](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-24g/theme_facet_strip_xy.ipynb).
|
|
137
|
+
See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/geom_pie_params.ipynb).
|
|
144
138
|
|
|
145
139
|
|
|
146
140
|
- #### And More
|
|
@@ -150,6 +144,21 @@ Also read:
|
|
|
150
144
|
|
|
151
145
|
## Recent Updates in the [Gallery](https://lets-plot.org/python/pages/gallery.html)
|
|
152
146
|
|
|
147
|
+
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/magnifier_inset.ipynb">
|
|
148
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/magnifier_inset.png" alt="f-25a/images/magnifier_inset.png" width="128" height="128">
|
|
149
|
+
</a>
|
|
150
|
+
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/ggbunch_indonesia.ipynb">
|
|
151
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-25a/images/ggbunch_indonesia.png" alt="f-25a/images/ggbunch_indonesia.png" width="128" height="128">
|
|
152
|
+
</a>
|
|
153
|
+
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/theme_legend_scheme.ipynb">
|
|
154
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24g/images/theme_legend_scheme.png" alt="f-24g/images/theme_legend_scheme.png" width="128" height="128">
|
|
155
|
+
</a>
|
|
156
|
+
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/interact_pan_zoom.ipynb">
|
|
157
|
+
<img src="https://github.com/JetBrains/lets-plot-docs/blob/4b9571b8af759574fa2db313a102069d8f8c7238/source/_static/images/changelog/4.5.0/interact_pan_zoom.png?raw=true" alt="images/changelog/4.5.0/interact_pan_zoom.png" width="128" height="128">
|
|
158
|
+
</a>
|
|
159
|
+
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/lp_verse.ipynb">
|
|
160
|
+
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24g/images/lp_verse.png" alt="f-24g/images/lp_verse.png" width="128" height="128">
|
|
161
|
+
</a>
|
|
153
162
|
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/us_unemployment.ipynb">
|
|
154
163
|
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24e/images/us_unemployment.png" alt="f-24e/images/us_unemployment.png" width="128" height="128">
|
|
155
164
|
</a>
|
|
@@ -165,21 +174,7 @@ Also read:
|
|
|
165
174
|
<a href="https://www.kaggle.com/code/alshan/japanese-volcanoes-on-map">
|
|
166
175
|
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24b/images/gal_japanese_volcanoes_on_map.png" alt="f-24b/images/gal_japanese_volcanoes_on_map.png" width="128" height="128">
|
|
167
176
|
</a>
|
|
168
|
-
|
|
169
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24a/images/gal_bbc_cookbook.png" alt="f-24a/images/gal_bbc_cookbook.png" width="128" height="128">
|
|
170
|
-
</a>
|
|
171
|
-
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/palmer_penguins.ipynb">
|
|
172
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24a/images/gal_penguins.png" alt="f-24a/images/gal_penguins.png" width="128" height="128">
|
|
173
|
-
</a>
|
|
174
|
-
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/periodic_table.ipynb">
|
|
175
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24a/images/gal_periodic_table.png" alt="f-24a/images/gal_periodic_table.png" width="128" height="128">
|
|
176
|
-
</a>
|
|
177
|
-
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/wind_rose.ipynb">
|
|
178
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24a/images/gal_wind_rose.png" alt="f-24a/images/gal_wind_rose.png" width="128" height="128">
|
|
179
|
-
</a>
|
|
180
|
-
<a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/heatmap_in_polar_coord.ipynb">
|
|
181
|
-
<img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24a/images/gal_polar_heatmap.png" alt="f-24a/images/gal_polar_heatmap.png" width="128" height="128">
|
|
182
|
-
</a>
|
|
177
|
+
|
|
183
178
|
|
|
184
179
|
## Change Log
|
|
185
180
|
|