lets-plot 4.7.2rc1__cp311-cp311-macosx_11_0_arm64.whl → 4.8.0rc1__cp311-cp311-macosx_11_0_arm64.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/__init__.py +1 -1
- lets_plot/_version.py +1 -1
- lets_plot/bistro/_plot2d_common.py +6 -0
- lets_plot/bistro/joint.py +4 -4
- lets_plot/bistro/residual.py +1 -1
- lets_plot/export/ggsave_.py +35 -18
- lets_plot/package_data/lets-plot.min.js +1 -1
- lets_plot/plot/core.py +38 -7
- lets_plot/plot/facet.py +3 -3
- lets_plot/plot/geom.py +295 -16
- lets_plot/plot/geom_livemap_.py +8 -0
- lets_plot/plot/gggrid_.py +20 -7
- lets_plot/plot/ggtb_.py +28 -2
- lets_plot/plot/label.py +1 -1
- lets_plot/plot/pos.py +32 -8
- lets_plot/plot/scale_identity_.py +20 -16
- lets_plot/plot/theme_.py +18 -10
- lets_plot/plot/theme_set.py +39 -15
- lets_plot/plot/tooltip.py +1 -1
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/METADATA +10 -6
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/RECORD +29 -29
- lets_plot_kotlin_bridge.cpython-311-darwin.so +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/WHEEL +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/LICENSE +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.FreeType +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.ImageMagick +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.expat +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.fontconfig +0 -0
- {lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/top_level.txt +0 -0
lets_plot/plot/ggtb_.py
CHANGED
|
@@ -7,7 +7,7 @@ from .core import FeatureSpec
|
|
|
7
7
|
__all__ = ['ggtb']
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def ggtb() -> FeatureSpec:
|
|
10
|
+
def ggtb(size_basis=None, size_zoomin=None) -> FeatureSpec:
|
|
11
11
|
"""
|
|
12
12
|
Add a toolbar to a chart.
|
|
13
13
|
|
|
@@ -31,6 +31,32 @@ def ggtb() -> FeatureSpec:
|
|
|
31
31
|
- The toolbar does not work with interactive maps.
|
|
32
32
|
- The toolbar cannot be used with plots using a polar coordinate system.
|
|
33
33
|
|
|
34
|
+
Parameters
|
|
35
|
+
----------
|
|
36
|
+
size_zoomin : int, default=0
|
|
37
|
+
Control how zooming in affects the size of geometry objects on the plot. Currently, works only with
|
|
38
|
+
the geom_point layer and layers based on it (geom_jitter, geom_sina, etc.).
|
|
39
|
+
|
|
40
|
+
0 - size never increases;
|
|
41
|
+
|
|
42
|
+
-1 - size will be increasing without limits;
|
|
43
|
+
|
|
44
|
+
n - the number of times the size of objects will increase (relative to the initial state of the plot).
|
|
45
|
+
Farther zooming will no longer affect the size.
|
|
46
|
+
|
|
47
|
+
size_basis : {'x', 'y', 'min', 'max'}, default='max'
|
|
48
|
+
Defines the axis along which the scaling factor for geometry objects will be calculated.
|
|
49
|
+
|
|
50
|
+
'x' - size changes only when zooming in/out along x-axis;
|
|
51
|
+
|
|
52
|
+
'y' - size changes only when zooming in/out along y-axis;
|
|
53
|
+
|
|
54
|
+
'min' - size changes when zooming in/out along any axis, but the change is determined by the axis
|
|
55
|
+
with the minimum zoom factor;
|
|
56
|
+
|
|
57
|
+
'max' - size changes when zooming in/out along any axis, but the change is determined by the axis
|
|
58
|
+
with the maximum zoom factor.
|
|
59
|
+
|
|
34
60
|
Returns
|
|
35
61
|
-------
|
|
36
62
|
``FeatureSpec``
|
|
@@ -52,4 +78,4 @@ def ggtb() -> FeatureSpec:
|
|
|
52
78
|
ggtb()
|
|
53
79
|
|
|
54
80
|
"""
|
|
55
|
-
return FeatureSpec(kind='ggtoolbar', name=None)
|
|
81
|
+
return FeatureSpec(kind='ggtoolbar', name=None, size_basis=size_basis, size_zoomin=size_zoomin)
|
lets_plot/plot/label.py
CHANGED
|
@@ -32,7 +32,7 @@ def ggtitle(label, subtitle=None):
|
|
|
32
32
|
|
|
33
33
|
Notes
|
|
34
34
|
-----
|
|
35
|
-
Split a long title/subtitle into two lines or more using
|
|
35
|
+
Split a long title/subtitle into two lines or more using ``\\n`` as a text separator.
|
|
36
36
|
|
|
37
37
|
Examples
|
|
38
38
|
--------
|
lets_plot/plot/pos.py
CHANGED
|
@@ -251,17 +251,29 @@ def position_stack(vjust=None, mode=None):
|
|
|
251
251
|
--------
|
|
252
252
|
.. jupyter-execute::
|
|
253
253
|
:linenos:
|
|
254
|
-
:emphasize-lines:
|
|
254
|
+
:emphasize-lines: 12,18
|
|
255
255
|
|
|
256
256
|
from lets_plot import *
|
|
257
257
|
LetsPlot.setup_html()
|
|
258
258
|
data = {
|
|
259
|
-
'x': [
|
|
259
|
+
'x': [-2, -2, -2, 2, 2, 2],
|
|
260
260
|
'y': [1, 2, 3, 1, 2, 3],
|
|
261
261
|
'g': ["a", "b", "b", "a", "a", "b"],
|
|
262
262
|
}
|
|
263
|
-
|
|
264
|
-
|
|
263
|
+
gggrid([
|
|
264
|
+
ggplot(data, aes('x', 'y', fill='g')) + \\
|
|
265
|
+
geom_label(aes(label='y'), size=10,
|
|
266
|
+
color="white", show_legend=False,
|
|
267
|
+
position=position_stack(mode='groups')) + \\
|
|
268
|
+
scale_y_continuous(limits=[0, 6]) + \\
|
|
269
|
+
ggtitle("mode='groups'"),
|
|
270
|
+
ggplot(data, aes('x', 'y', fill='g')) + \\
|
|
271
|
+
geom_label(aes(label='y'), size=10,
|
|
272
|
+
color="white", show_legend=False,
|
|
273
|
+
position=position_stack(mode='all')) + \\
|
|
274
|
+
scale_y_continuous(limits=[0, 6]) + \\
|
|
275
|
+
ggtitle("mode='all'"),
|
|
276
|
+
])
|
|
265
277
|
|
|
266
278
|
"""
|
|
267
279
|
return _pos('stack', vjust=vjust, mode=mode)
|
|
@@ -298,17 +310,29 @@ def position_fill(vjust=None, mode=None):
|
|
|
298
310
|
--------
|
|
299
311
|
.. jupyter-execute::
|
|
300
312
|
:linenos:
|
|
301
|
-
:emphasize-lines:
|
|
313
|
+
:emphasize-lines: 12,18
|
|
302
314
|
|
|
303
315
|
from lets_plot import *
|
|
304
316
|
LetsPlot.setup_html()
|
|
305
317
|
data = {
|
|
306
318
|
'x': [1, 1, 1, 1, 1, 2, 2, 2],
|
|
307
|
-
'y': [1, 2,
|
|
319
|
+
'y': [1, 2, 1, 3, 5, 1, 2, 2],
|
|
308
320
|
'g': ["a", "a", "b", "b", "b", "a", "a", "b"],
|
|
309
321
|
}
|
|
310
|
-
|
|
311
|
-
|
|
322
|
+
gggrid([
|
|
323
|
+
ggplot(data, aes('x', 'y', fill='g')) + \\
|
|
324
|
+
geom_label(aes(label='y'), size=10,
|
|
325
|
+
color="white", show_legend=False,
|
|
326
|
+
position=position_fill(mode='groups')) + \\
|
|
327
|
+
coord_cartesian(ylim=[0, 1.1]) + \\
|
|
328
|
+
ggtitle("mode='groups'"),
|
|
329
|
+
ggplot(data, aes('x', 'y', fill='g')) + \\
|
|
330
|
+
geom_label(aes(label='y'), size=10,
|
|
331
|
+
color="white", show_legend=False,
|
|
332
|
+
position=position_fill(mode='all')) + \\
|
|
333
|
+
coord_cartesian(ylim=[0, 1.1]) + \\
|
|
334
|
+
ggtitle("mode='all'"),
|
|
335
|
+
])
|
|
312
336
|
|
|
313
337
|
"""
|
|
314
338
|
return _pos('fill', vjust=vjust, mode=mode)
|
|
@@ -21,7 +21,8 @@ __all__ = ['scale_identity',
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def scale_identity(aesthetic, *,
|
|
24
|
-
name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
24
|
+
name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
25
|
+
format=None, **other):
|
|
25
26
|
"""
|
|
26
27
|
Use this scale when your data has already been scaled.
|
|
27
28
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -95,7 +96,8 @@ def scale_identity(aesthetic, *,
|
|
|
95
96
|
**other)
|
|
96
97
|
|
|
97
98
|
|
|
98
|
-
def scale_color_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
99
|
+
def scale_color_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
100
|
+
format=None):
|
|
99
101
|
"""
|
|
100
102
|
Use this scale when your data has already been scaled.
|
|
101
103
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -164,7 +166,8 @@ def scale_color_identity(name=None, breaks=None, labels=None, lablim=None, limit
|
|
|
164
166
|
format=format)
|
|
165
167
|
|
|
166
168
|
|
|
167
|
-
def scale_fill_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
169
|
+
def scale_fill_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
170
|
+
format=None):
|
|
168
171
|
"""
|
|
169
172
|
Use this scale when your data has already been scaled.
|
|
170
173
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -233,7 +236,8 @@ def scale_fill_identity(name=None, breaks=None, labels=None, lablim=None, limits
|
|
|
233
236
|
format=format)
|
|
234
237
|
|
|
235
238
|
|
|
236
|
-
def scale_shape_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
239
|
+
def scale_shape_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
240
|
+
format=None):
|
|
237
241
|
"""
|
|
238
242
|
Use this scale when your data has already been scaled.
|
|
239
243
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -300,13 +304,11 @@ def scale_shape_identity(name=None, breaks=None, labels=None, lablim=None, limit
|
|
|
300
304
|
limits=limits,
|
|
301
305
|
na_value=na_value,
|
|
302
306
|
guide=guide,
|
|
303
|
-
format=format
|
|
304
|
-
#
|
|
305
|
-
solid=None,
|
|
306
|
-
discrete=True)
|
|
307
|
+
format=format)
|
|
307
308
|
|
|
308
309
|
|
|
309
|
-
def scale_linetype_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
310
|
+
def scale_linetype_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
311
|
+
format=None):
|
|
310
312
|
"""
|
|
311
313
|
Use this scale when your data has already been scaled.
|
|
312
314
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -377,12 +379,11 @@ def scale_linetype_identity(name=None, breaks=None, labels=None, lablim=None, li
|
|
|
377
379
|
limits=limits,
|
|
378
380
|
na_value=na_value,
|
|
379
381
|
guide=guide,
|
|
380
|
-
format=format
|
|
381
|
-
#
|
|
382
|
-
discrete=True)
|
|
382
|
+
format=format)
|
|
383
383
|
|
|
384
384
|
|
|
385
|
-
def scale_alpha_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
385
|
+
def scale_alpha_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
386
|
+
format=None):
|
|
386
387
|
"""
|
|
387
388
|
Use this scale when your data has already been scaled.
|
|
388
389
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -452,7 +453,8 @@ def scale_alpha_identity(name=None, breaks=None, labels=None, lablim=None, limit
|
|
|
452
453
|
format=format)
|
|
453
454
|
|
|
454
455
|
|
|
455
|
-
def scale_size_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
456
|
+
def scale_size_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
457
|
+
format=None):
|
|
456
458
|
"""
|
|
457
459
|
Use this scale when your data has already been scaled.
|
|
458
460
|
I.e. it already represents aesthetic values that the library can handle directly.
|
|
@@ -522,7 +524,8 @@ def scale_size_identity(name=None, breaks=None, labels=None, lablim=None, limits
|
|
|
522
524
|
format=format)
|
|
523
525
|
|
|
524
526
|
|
|
525
|
-
def scale_linewidth_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
527
|
+
def scale_linewidth_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
528
|
+
format=None):
|
|
526
529
|
"""
|
|
527
530
|
Use this scale when your data has already been scaled.
|
|
528
531
|
I.e. it already represents aesthetic values that can be handled directly.
|
|
@@ -590,7 +593,8 @@ def scale_linewidth_identity(name=None, breaks=None, labels=None, lablim=None, l
|
|
|
590
593
|
format=format)
|
|
591
594
|
|
|
592
595
|
|
|
593
|
-
def scale_stroke_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
596
|
+
def scale_stroke_identity(name=None, breaks=None, labels=None, lablim=None, limits=None, na_value=None, guide='none',
|
|
597
|
+
format=None):
|
|
594
598
|
"""
|
|
595
599
|
Use this scale when your data has already been scaled.
|
|
596
600
|
I.e. it already represents aesthetic values that can be handled directly.
|
lets_plot/plot/theme_.py
CHANGED
|
@@ -102,7 +102,7 @@ def theme(*,
|
|
|
102
102
|
|
|
103
103
|
Parameters
|
|
104
104
|
----------
|
|
105
|
-
exponent_format : {'e', 'pow', 'pow_full'} or tuple, default='
|
|
105
|
+
exponent_format : {'e', 'pow', 'pow_full'} or tuple, default='pow'
|
|
106
106
|
Controls the appearance of numbers formatted with 'e' or 'g' types.
|
|
107
107
|
|
|
108
108
|
Value is either a string - style, or a tuple: (style, lower_exp_bound, upper_exp_bound)
|
|
@@ -178,15 +178,16 @@ def theme(*,
|
|
|
178
178
|
Set 'blank' or result of `element_blank() <https://lets-plot.org/python/pages/api/lets_plot.element_blank.html>`__ to draw nothing and assign no space.
|
|
179
179
|
Set `element_text() <https://lets-plot.org/python/pages/api/lets_plot.element_text.html>`__ to specify legend title parameters, inherited from ``title``.
|
|
180
180
|
legend_position : {'none', 'left', 'right', 'bottom', 'top'} or list
|
|
181
|
-
The position of legends.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
181
|
+
The position of legends.
|
|
182
|
+
To remove the plot legend, use the 'none' value.
|
|
183
|
+
If parameter is a list, then it should be a two-element numeric vector [x, y], where each value is between 0 and 1.
|
|
184
|
+
These coordinates position the legend inside the plotting area, where [0, 0] is the bottom left corner and [1, 1] is the top right corner.
|
|
185
|
+
The anchor point of the legend box can be controlled with ``legend_justification``.
|
|
186
|
+
legend_justification : {'center', 'left', 'right', 'top', 'bottom'} or list
|
|
187
|
+
Anchor point of the legend box for positioning.
|
|
188
|
+
Determines which point of the legend box is placed at the coordinates specified by ``legend_position``.
|
|
189
|
+
If parameter is a list, then it should be a two-element numeric vector [x, y], where each value is between 0 and 1.
|
|
190
|
+
The pair [0, 0] corresponds to the bottom left corner of the legend box, and [1, 1] corresponds to the top right corner.
|
|
190
191
|
legend_direction : {'horizontal', 'vertical'}
|
|
191
192
|
Layout of items in legends.
|
|
192
193
|
legend_margin : number or list of numbers
|
|
@@ -669,6 +670,13 @@ def element_markdown(
|
|
|
669
670
|
Specify how non-data components of the plot are drawn.
|
|
670
671
|
This theme element draws text with Markdown support.
|
|
671
672
|
|
|
673
|
+
Supported features:
|
|
674
|
+
|
|
675
|
+
- Emphasis (\*, \*\*, \*\*\*, _, __, ___)
|
|
676
|
+
- Coloring with inline style (<span style='color:red'>text</span>)
|
|
677
|
+
- Links with anchor tags (<a href="https://lets-plot.org">Lets-Plot</a>). Supports target attribute (default is "_blank")
|
|
678
|
+
- Multiple lines using double space and a newline delimiter ( ``\\n``)
|
|
679
|
+
|
|
672
680
|
Parameters
|
|
673
681
|
----------
|
|
674
682
|
color : str
|
lets_plot/plot/theme_set.py
CHANGED
|
@@ -6,6 +6,7 @@ from .core import FeatureSpec
|
|
|
6
6
|
|
|
7
7
|
__all__ = [
|
|
8
8
|
'theme_grey',
|
|
9
|
+
'theme_gray',
|
|
9
10
|
'theme_light',
|
|
10
11
|
'theme_classic',
|
|
11
12
|
'theme_minimal',
|
|
@@ -17,13 +18,14 @@ __all__ = [
|
|
|
17
18
|
'flavor_solarized_light',
|
|
18
19
|
'flavor_solarized_dark',
|
|
19
20
|
'flavor_high_contrast_light',
|
|
20
|
-
'flavor_high_contrast_dark'
|
|
21
|
+
'flavor_high_contrast_dark',
|
|
22
|
+
'flavor_standard'
|
|
21
23
|
]
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
def theme_grey():
|
|
25
27
|
"""
|
|
26
|
-
|
|
28
|
+
Set the grey background with white gridlines.
|
|
27
29
|
|
|
28
30
|
Returns
|
|
29
31
|
-------
|
|
@@ -48,9 +50,16 @@ def theme_grey():
|
|
|
48
50
|
return FeatureSpec('theme', name="grey")
|
|
49
51
|
|
|
50
52
|
|
|
53
|
+
def theme_gray():
|
|
54
|
+
"""
|
|
55
|
+
Set the gray background with white gridlines. It is an alias for `theme_grey() <https://lets-plot.org/python/pages/api/lets_plot.theme_grey.html>`__
|
|
56
|
+
"""
|
|
57
|
+
return FeatureSpec('theme', name="gray")
|
|
58
|
+
|
|
59
|
+
|
|
51
60
|
def theme_light():
|
|
52
61
|
"""
|
|
53
|
-
|
|
62
|
+
Set the light grey lines of various widths on the white background.
|
|
54
63
|
|
|
55
64
|
Returns
|
|
56
65
|
-------
|
|
@@ -77,7 +86,7 @@ def theme_light():
|
|
|
77
86
|
|
|
78
87
|
def theme_classic():
|
|
79
88
|
"""
|
|
80
|
-
|
|
89
|
+
Set the dark grey axes and no gridlines on the white background.
|
|
81
90
|
|
|
82
91
|
Returns
|
|
83
92
|
-------
|
|
@@ -104,7 +113,7 @@ def theme_classic():
|
|
|
104
113
|
|
|
105
114
|
def theme_minimal():
|
|
106
115
|
"""
|
|
107
|
-
|
|
116
|
+
Set a minimalistic theme without axes lines.
|
|
108
117
|
|
|
109
118
|
Returns
|
|
110
119
|
-------
|
|
@@ -131,8 +140,8 @@ def theme_minimal():
|
|
|
131
140
|
|
|
132
141
|
def theme_minimal2():
|
|
133
142
|
"""
|
|
134
|
-
|
|
135
|
-
|
|
143
|
+
Set the default theme similar to `theme_minimal() <https://lets-plot.org/python/pages/api/lets_plot.theme_minimal.html>`__
|
|
144
|
+
adding an x-axis line and only major gridlines.
|
|
136
145
|
|
|
137
146
|
Returns
|
|
138
147
|
-------
|
|
@@ -159,7 +168,7 @@ def theme_minimal2():
|
|
|
159
168
|
|
|
160
169
|
def theme_none():
|
|
161
170
|
"""
|
|
162
|
-
|
|
171
|
+
Set a basic blue-accented scheme with the light blue background.
|
|
163
172
|
|
|
164
173
|
Returns
|
|
165
174
|
-------
|
|
@@ -186,7 +195,7 @@ def theme_none():
|
|
|
186
195
|
|
|
187
196
|
def theme_bw():
|
|
188
197
|
"""
|
|
189
|
-
|
|
198
|
+
Set a dark grey plot border and grey gridlines on the white background.
|
|
190
199
|
|
|
191
200
|
Returns
|
|
192
201
|
-------
|
|
@@ -213,7 +222,8 @@ def theme_bw():
|
|
|
213
222
|
|
|
214
223
|
def theme_void():
|
|
215
224
|
"""
|
|
216
|
-
|
|
225
|
+
Set a completely blank (or "void") background theme by removing all
|
|
226
|
+
non-data elements: no borders, axes, or gridlines.
|
|
217
227
|
|
|
218
228
|
Returns
|
|
219
229
|
-------
|
|
@@ -241,7 +251,7 @@ def theme_void():
|
|
|
241
251
|
|
|
242
252
|
def flavor_darcula():
|
|
243
253
|
"""
|
|
244
|
-
Darcula color scheme.
|
|
254
|
+
Set the Darcula color scheme.
|
|
245
255
|
|
|
246
256
|
Returns
|
|
247
257
|
-------
|
|
@@ -272,7 +282,7 @@ def flavor_darcula():
|
|
|
272
282
|
|
|
273
283
|
def flavor_solarized_light():
|
|
274
284
|
"""
|
|
275
|
-
Solarized
|
|
285
|
+
Set the Solarized Light color scheme.
|
|
276
286
|
|
|
277
287
|
Returns
|
|
278
288
|
-------
|
|
@@ -303,7 +313,7 @@ def flavor_solarized_light():
|
|
|
303
313
|
|
|
304
314
|
def flavor_solarized_dark():
|
|
305
315
|
"""
|
|
306
|
-
Solarized
|
|
316
|
+
Set the Solarized Dark color scheme.
|
|
307
317
|
|
|
308
318
|
Returns
|
|
309
319
|
-------
|
|
@@ -334,7 +344,7 @@ def flavor_solarized_dark():
|
|
|
334
344
|
|
|
335
345
|
def flavor_high_contrast_light():
|
|
336
346
|
"""
|
|
337
|
-
|
|
347
|
+
Set a high-contrast light color scheme.
|
|
338
348
|
|
|
339
349
|
Returns
|
|
340
350
|
-------
|
|
@@ -365,7 +375,7 @@ def flavor_high_contrast_light():
|
|
|
365
375
|
|
|
366
376
|
def flavor_high_contrast_dark():
|
|
367
377
|
"""
|
|
368
|
-
|
|
378
|
+
Set a high-contrast dark color scheme.
|
|
369
379
|
|
|
370
380
|
Returns
|
|
371
381
|
-------
|
|
@@ -392,3 +402,17 @@ def flavor_high_contrast_dark():
|
|
|
392
402
|
|
|
393
403
|
"""
|
|
394
404
|
return FeatureSpec('theme', name=None, flavor="high_contrast_dark")
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
def flavor_standard():
|
|
408
|
+
"""
|
|
409
|
+
Set the theme’s default color scheme.
|
|
410
|
+
Use to override other flavors or make defaults explicit.
|
|
411
|
+
|
|
412
|
+
Returns
|
|
413
|
+
-------
|
|
414
|
+
``FeatureSpec``
|
|
415
|
+
Theme specification.
|
|
416
|
+
|
|
417
|
+
"""
|
|
418
|
+
return FeatureSpec('theme', name=None, flavor="standard")
|
lets_plot/plot/tooltip.py
CHANGED
|
@@ -418,7 +418,7 @@ class layer_tooltips(FeatureSpec):
|
|
|
418
418
|
The specification rules are the same as for the ``lines()`` function:
|
|
419
419
|
variables and aesthetics can be used in the template.
|
|
420
420
|
The resulting string will be at the beginning of the general tooltip, centered and highlighted in bold.
|
|
421
|
-
A long title can be split into multiple lines using
|
|
421
|
+
A long title can be split into multiple lines using ``\\n`` as a text separator.
|
|
422
422
|
|
|
423
423
|
Examples
|
|
424
424
|
--------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lets-plot
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.8.0rc1
|
|
4
4
|
Summary: An open source library for statistical plotting
|
|
5
5
|
Home-page: https://lets-plot.org
|
|
6
6
|
Author: JetBrains
|
|
@@ -59,7 +59,7 @@ Dynamic: summary
|
|
|
59
59
|
|
|
60
60
|
**Lets-Plot** is a multiplatform plotting library built on the principles of the Grammar of Graphics.
|
|
61
61
|
|
|
62
|
-
The library
|
|
62
|
+
The library design is heavily influenced by Leland Wilkinson's work [The Grammar of Graphics](https://www.goodreads.com/book/show/2549408.The_Grammar_of_Graphics) describing the deep features that underlie all statistical graphics.
|
|
63
63
|
|
|
64
64
|
> This grammar [...] is made up of a set of independent components that can be composed in many different ways. This makes [it] very powerful because you are not limited to a set of pre-specified graphics, but you can create new graphics that are precisely tailored for your problem.
|
|
65
65
|
> - Hadley Wickham, "[ggplot2: Elegant Graphics for Data Analysis](https://ggplot2-book.org/index.html)"
|
|
@@ -68,7 +68,7 @@ The library' design is heavily influenced by Leland Wilkinson work [The Grammar
|
|
|
68
68
|
## Grammar of Graphics for Python [](https://pypi.org/project/lets-plot)
|
|
69
69
|
|
|
70
70
|
A bridge between R (ggplot2) and Python data visualization. \
|
|
71
|
-
To learn more see the documentation site at **[lets-plot.org](https://lets-plot.org)**.
|
|
71
|
+
To learn more, see the documentation site at **[lets-plot.org/python](https://lets-plot.org/python)**.
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
## Grammar of Graphics for Kotlin [](https://github.com/JetBrains/lets-plot-kotlin/releases/latest)
|
|
@@ -77,15 +77,19 @@ To learn more see the documentation site at **[lets-plot.org](https://lets-plot.
|
|
|
77
77
|
Create plots in [Kotlin Notebook](https://plugins.jetbrains.com/plugin/16340-kotlin-notebook),
|
|
78
78
|
[Datalore](https://datalore.jetbrains.com/report/static/HZqq77cegYd.E7get_WnChZ/aTA9lQnPkRwdCzT6uy95GZ), [Jupyter with Kotlin Kernel](https://github.com/Kotlin/kotlin-jupyter#readme) \
|
|
79
79
|
or any other notebook that supports `Kotlin Kernel`. \
|
|
80
|
-
To learn more see the **[Lets-Plot Kotlin API](https://github.com/JetBrains/lets-plot-kotlin)** project at GitHub.
|
|
80
|
+
To learn more, see the **[Lets-Plot Kotlin API](https://github.com/JetBrains/lets-plot-kotlin)** project at GitHub.
|
|
81
81
|
|
|
82
82
|
### Compose Multiplatform
|
|
83
83
|
Embed Lets-Plot charts in [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform) applications. \
|
|
84
|
-
To learn more see the **[Lets-Plot
|
|
84
|
+
To learn more, see the **[Lets-Plot Compose Frontend](https://github.com/JetBrains/lets-plot-compose)** project at GitHub.
|
|
85
85
|
|
|
86
86
|
### JVM and Kotlin/JS
|
|
87
87
|
Embed Lets-Plot charts in JVM (Swing, JavaFX) and Kotlin/JS applications. <br>
|
|
88
|
-
To learn more see the **[Lets-Plot Kotlin API](https://github.com/JetBrains/lets-plot-kotlin)** project at GitHub.
|
|
88
|
+
To learn more, see the **[Lets-Plot Kotlin API](https://github.com/JetBrains/lets-plot-kotlin)** project at GitHub.
|
|
89
|
+
|
|
90
|
+
### Documentation
|
|
91
|
+
|
|
92
|
+
Kotlin API documentation site: [lets-plot.org/kotlin](https://lets-plot.org/kotlin).
|
|
89
93
|
|
|
90
94
|
## "Lets-Plot in SciView" plugin
|
|
91
95
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
lets_plot_kotlin_bridge.cpython-311-darwin.so,sha256=
|
|
2
|
-
lets_plot/__init__.py,sha256=
|
|
1
|
+
lets_plot_kotlin_bridge.cpython-311-darwin.so,sha256=UHmBi2G9Rn2mjjpB4CEZDJK8yHphScIvRFXXjsATzFI,17075008
|
|
2
|
+
lets_plot/__init__.py,sha256=2dIH3b4--QPY5ld01MK40O_-x9cMrw-H3mZm_aXmaag,12179
|
|
3
3
|
lets_plot/_global_settings.py,sha256=DSagEhxxfBlrxGQsk4ydwmOmMSOIJfJegBNFKLpdllk,7502
|
|
4
4
|
lets_plot/_kbridge.py,sha256=og2sh9UZFdoUf91vZxvYhJHs4Ph1lRfzVSFwgYBs-NI,5667
|
|
5
5
|
lets_plot/_type_utils.py,sha256=mlNG1J0Lgt7n0gERJZFkdhP6B3C7iZD5WRMB0yS6-r0,3828
|
|
6
|
-
lets_plot/_version.py,sha256=
|
|
6
|
+
lets_plot/_version.py,sha256=PtyrcoJwrxLrRIvtRe16k9YeGlCaceb3uWrRklET1mk,236
|
|
7
7
|
lets_plot/mapping.py,sha256=VDvkHxiNXfTNWV3dzBYa3Cfy8z7VdW12papmTUlL06M,3584
|
|
8
8
|
lets_plot/settings_utils.py,sha256=nDtemq2zuEJ6Qulm1IXvSPhKEQt2xtztwkD247cg4sU,9087
|
|
9
9
|
lets_plot/tilesets.py,sha256=gN7gfn4qnXZj699LyxpDWwEuWwNmAJr2ZQ7VJX7rzoU,10382
|
|
10
10
|
lets_plot/bistro/__init__.py,sha256=4Vix3Qu2P4zqGiDx8gnTd3usCLQQGBRKhseSNjrsBUY,426
|
|
11
|
-
lets_plot/bistro/_plot2d_common.py,sha256=
|
|
11
|
+
lets_plot/bistro/_plot2d_common.py,sha256=YW7t2jHxvbUUERMPHjgCsZadeBl4244ioZLoF30Ok_A,4122
|
|
12
12
|
lets_plot/bistro/corr.py,sha256=rOjbCDr5GE6DPK4UFrErDrRBnofeQrinkNeu-kk5wDc,13923
|
|
13
13
|
lets_plot/bistro/im.py,sha256=Dc3B0B264jHV1od8VuxcvoQZGC7sHu2kRSy2lWenCt4,6453
|
|
14
|
-
lets_plot/bistro/joint.py,sha256=
|
|
14
|
+
lets_plot/bistro/joint.py,sha256=c7oTAr7XrpVjiQt17ufjevTROIYJddyrNY5qGjpcMCg,6757
|
|
15
15
|
lets_plot/bistro/qq.py,sha256=BeTc2VGBNIxvArs80jptXzc-dhKhZk6HhFUQeBqTbN0,8298
|
|
16
|
-
lets_plot/bistro/residual.py,sha256=
|
|
16
|
+
lets_plot/bistro/residual.py,sha256=vaU_XHYdruZZR71D1V2SyZWbNehv9RA_-Ka76EtTo9E,12506
|
|
17
17
|
lets_plot/bistro/waterfall.py,sha256=ZZ2ytdkzyhpzCALyt9cZ-vhmUuOFt4x3poCWKhNUBRg,14880
|
|
18
18
|
lets_plot/export/__init__.py,sha256=lDs6fqtQjkgJyKqeYlOdhrHMN__TeggTz73hgHAkyzc,188
|
|
19
|
-
lets_plot/export/ggsave_.py,sha256=
|
|
19
|
+
lets_plot/export/ggsave_.py,sha256=vvPgSZYmRYHZavX_gh76zWqnDwVKQ4HgG35UnEYbbqc,6404
|
|
20
20
|
lets_plot/frontend_context/__init__.py,sha256=nqIogfMulwKRY2l_v3Rn7tXMQ1btasX9f7dwfrVaj_A,204
|
|
21
21
|
lets_plot/frontend_context/_configuration.py,sha256=2Z33jBwKjW5OgKyTzvQtBwLthJuaMXpLviYAatFNbrw,5563
|
|
22
22
|
lets_plot/frontend_context/_frontend_ctx.py,sha256=073vxq0laO6ubol3kJK6aBbWo9Fr2_olbQEZUbr_QFc,359
|
|
@@ -47,49 +47,49 @@ lets_plot/geo_data/gis/response.py,sha256=7Ac2VN4Hl9iffm7wAyfL80Wzo7sG9A1F5BqzJU
|
|
|
47
47
|
lets_plot/geo_data_internals/__init__.py,sha256=4R6hr7MVB9iRi9JNQm_UUQL9jCe_dYDtizw_230V2Yg,234
|
|
48
48
|
lets_plot/geo_data_internals/constants.py,sha256=IDpHhOOg7dbfIKqLNSk3AGa-5HjDcnItFZDxCm4fylw,428
|
|
49
49
|
lets_plot/geo_data_internals/utils.py,sha256=phV_Q84xz4uZH2jI9WLUrYDyZAz0d2-00OOLxkRH4iw,967
|
|
50
|
-
lets_plot/package_data/lets-plot.min.js,sha256=
|
|
50
|
+
lets_plot/package_data/lets-plot.min.js,sha256=X-TZ6BV-JnLXaamOLEVLq_3yOT-VlEd4suhPrH8a_xU,2737178
|
|
51
51
|
lets_plot/plot/__init__.py,sha256=RNsQuVS8qe4Xf4so7PJiQJKdYYnDMIqydUQNzstqhZI,1771
|
|
52
52
|
lets_plot/plot/_global_theme.py,sha256=hOV9MzYpfjdF6hDE3mfLv_LqFtaouCJcccoW8pGoFoU,297
|
|
53
53
|
lets_plot/plot/annotation.py,sha256=2gwx2QZ2N-uH--XdckdWpJTZYCx9rdEohc5Wybxgfmg,9851
|
|
54
54
|
lets_plot/plot/coord.py,sha256=IG1EJYfEUIueGVBny-e2Vfc5NZJCJ4_B-Djtwk7sPxI,7984
|
|
55
|
-
lets_plot/plot/core.py,sha256=
|
|
55
|
+
lets_plot/plot/core.py,sha256=M-wCEz8HooatVJygts54SoGNBZsjTOW28_8ZHcJpEsc,36614
|
|
56
56
|
lets_plot/plot/expand_limits_.py,sha256=q5Vrx4nls_KbFCyQIo1YTXznMaa7TFx0_HAMNRSzwMk,2445
|
|
57
|
-
lets_plot/plot/facet.py,sha256=
|
|
57
|
+
lets_plot/plot/facet.py,sha256=xwz8M3_l4PfjkZsvXj_aIzhybJSN7ke8pAcY-L36Pvg,7297
|
|
58
58
|
lets_plot/plot/font_features.py,sha256=ju-DUr_t2frOxm3_gQjA6gmQmfwuP1SAtF7dxnLGiao,2242
|
|
59
|
-
lets_plot/plot/geom.py,sha256=
|
|
59
|
+
lets_plot/plot/geom.py,sha256=EwX24PcQvXKleUA_6811AJiF0pQ6jxZ_jdnUQiNYFrs,423285
|
|
60
60
|
lets_plot/plot/geom_extras.py,sha256=pVfd_A0TrrrQecuJw4TN4Ea297Rpz7seYYuZcxqg-O8,1696
|
|
61
61
|
lets_plot/plot/geom_function_.py,sha256=wws5Cl0huD08vqk0Oqi3CoinT9ynpJScMjP4_b-jzeM,8317
|
|
62
62
|
lets_plot/plot/geom_imshow_.py,sha256=G_DzmyTTZdNye0g9indu3KqQssClmoUqy-0ilurtrWo,14605
|
|
63
|
-
lets_plot/plot/geom_livemap_.py,sha256=
|
|
63
|
+
lets_plot/plot/geom_livemap_.py,sha256=vmE_uGPT3wjz50POKsD5y1aRbSn07dqa0V6qtjT9Obo,13277
|
|
64
64
|
lets_plot/plot/ggbunch_.py,sha256=qSuw07ImjECJW0EzqnWtbWkc59b9NKh-4O1wNe2AbSE,3093
|
|
65
|
-
lets_plot/plot/gggrid_.py,sha256=
|
|
66
|
-
lets_plot/plot/ggtb_.py,sha256=
|
|
65
|
+
lets_plot/plot/gggrid_.py,sha256=5u4McYjQKfnmGs0_eXEBYyof_MuDig0_lakga2ypTjA,4619
|
|
66
|
+
lets_plot/plot/ggtb_.py,sha256=ZscIqa89hwyCtXAFHT_cR4R-GCDiPI66gfcyWqVZ2eM,2812
|
|
67
67
|
lets_plot/plot/guide.py,sha256=Y4qChtVYOehEqGzqHPLDvAZeoRK-P9dDHPTktP109ho,7052
|
|
68
|
-
lets_plot/plot/label.py,sha256=
|
|
68
|
+
lets_plot/plot/label.py,sha256=Wf9tMBdlYK4v1JTK2wi-PkqdXB2wGXaTpRhx8auFJGY,4632
|
|
69
69
|
lets_plot/plot/marginal_layer.py,sha256=NtyX0spOYmRztnte2xQJ3iFhKVq-fzmjBqD_a79s5mU,6376
|
|
70
70
|
lets_plot/plot/plot.py,sha256=5H3GCE2xabpkwRRLbhrHvpmfg9v9EQxLWJpbRRrx-as,8382
|
|
71
|
-
lets_plot/plot/pos.py,sha256=
|
|
71
|
+
lets_plot/plot/pos.py,sha256=Dohs925Xg-m7wtPI0FgmuIwfc5SgId4RpJfL3EmngAA,11403
|
|
72
72
|
lets_plot/plot/sampling.py,sha256=J_KOgrbIx58xXr3t8xoUeHHpHweJ5yXqbC1nHG2p8_A,8505
|
|
73
73
|
lets_plot/plot/sandbox_.py,sha256=Tb5UwJqe8HMMSCbDLdrj_BcxPSkmyxy-hI0_2L6kpBk,545
|
|
74
74
|
lets_plot/plot/scale.py,sha256=O4kKjpW8xVWj1HFXAawM9LoWDLHHDP1I80uu9UohTZA,142105
|
|
75
75
|
lets_plot/plot/scale_colormap_mpl.py,sha256=EFf-6gGniGFKGRYanfiM8dSkWNdiau_Wefb6wDT7Gxs,10729
|
|
76
76
|
lets_plot/plot/scale_convenience.py,sha256=7c0WEbazscWleBH7_ezstmIb1wjOYu-4Ab1-HWy0Rvk,4128
|
|
77
|
-
lets_plot/plot/scale_identity_.py,sha256=
|
|
77
|
+
lets_plot/plot/scale_identity_.py,sha256=ZXURPZCE3sONYWoStcoK9NhGzsrcvLg1KsDI0vRoTXA,23865
|
|
78
78
|
lets_plot/plot/scale_position.py,sha256=cqXmVa8nv2L6tPeFut29rpWIg4LSOiNUkFB_ocGRFew,47004
|
|
79
79
|
lets_plot/plot/series_meta.py,sha256=o9J01J5A-vsPbMlSaEaBFpXvm1O3pURyx339dPinPWo,7162
|
|
80
80
|
lets_plot/plot/stat.py,sha256=ufeXV_wNPe3Qi6cPeQ4Er_GP346mSGLwNI6tmnDR9PU,24401
|
|
81
81
|
lets_plot/plot/subplots.py,sha256=zC3xTKLIkH4YyLK2QTp8X-E1HbynYDF2LZQ5LZo6pZw,11852
|
|
82
82
|
lets_plot/plot/subplots_util.py,sha256=T04pwI7LaYliUqEdRHog1SGExVt9XosQk6XDwqOg7q0,913
|
|
83
|
-
lets_plot/plot/theme_.py,sha256=
|
|
84
|
-
lets_plot/plot/theme_set.py,sha256=
|
|
85
|
-
lets_plot/plot/tooltip.py,sha256=
|
|
83
|
+
lets_plot/plot/theme_.py,sha256=DnDmTm1eUBQyLZrtAzkPY0KjU6rTK8JpHvMniNxvgog,39119
|
|
84
|
+
lets_plot/plot/theme_set.py,sha256=OsexoHFzF7zg2oJdyfPI-dXeba9OOYS-nAzKv5ENGTo,9956
|
|
85
|
+
lets_plot/plot/tooltip.py,sha256=w2OHySKcftTFeT55KfHrOBV4uB_aE009RDsb2pF70tw,16011
|
|
86
86
|
lets_plot/plot/util.py,sha256=WS4CR9dH5xdLm8fRrX5kR9dQL0XZEiCTvtzz_yo-4bE,10456
|
|
87
|
-
lets_plot-4.
|
|
88
|
-
lets_plot-4.
|
|
89
|
-
lets_plot-4.
|
|
90
|
-
lets_plot-4.
|
|
91
|
-
lets_plot-4.
|
|
92
|
-
lets_plot-4.
|
|
93
|
-
lets_plot-4.
|
|
94
|
-
lets_plot-4.
|
|
95
|
-
lets_plot-4.
|
|
87
|
+
lets_plot-4.8.0rc1.dist-info/licenses/LICENSE,sha256=r43VKLFaMylB4Ru-pE07j0cfUO7wQpMnWm-uZ8hEqMw,1066
|
|
88
|
+
lets_plot-4.8.0rc1.dist-info/licenses/licenses/LICENSE.FreeType,sha256=7YOXABSJgU7bZvuf8s6ySO493IEQ2hotc3nsCvHx3us,6718
|
|
89
|
+
lets_plot-4.8.0rc1.dist-info/licenses/licenses/LICENSE.ImageMagick,sha256=pVbFKSyHyaaseVyAZpsMNmD59ynejEdr8rEPg6sbNOw,12577
|
|
90
|
+
lets_plot-4.8.0rc1.dist-info/licenses/licenses/LICENSE.expat,sha256=MbFd6CqhmoRRVhaaF6VIi_WX5WGywxjRWe1YMTmyXoc,1144
|
|
91
|
+
lets_plot-4.8.0rc1.dist-info/licenses/licenses/LICENSE.fontconfig,sha256=UaUaqYI3BP2QvMxhbN0X66u1srPpy96IbKAscAIogGc,8616
|
|
92
|
+
lets_plot-4.8.0rc1.dist-info/METADATA,sha256=9JXZq1LsJ4NVgNwfXqR_JNc7siCGNBQPGS_f3BlmFX4,13071
|
|
93
|
+
lets_plot-4.8.0rc1.dist-info/WHEEL,sha256=qxQkdhERtGxJzqnVOBnucx1aUmU2n3HmuzYdln_LyOw,109
|
|
94
|
+
lets_plot-4.8.0rc1.dist-info/top_level.txt,sha256=ID-ORXUWN-oVZmD4YFy1rQVm2QT1D-MlGON3vdxqgpY,34
|
|
95
|
+
lets_plot-4.8.0rc1.dist-info/RECORD,,
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
{lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.FreeType
RENAMED
|
File without changes
|
{lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.ImageMagick
RENAMED
|
File without changes
|
{lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.expat
RENAMED
|
File without changes
|
{lets_plot-4.7.2rc1.dist-info → lets_plot-4.8.0rc1.dist-info}/licenses/licenses/LICENSE.fontconfig
RENAMED
|
File without changes
|
|
File without changes
|