lets-plot 4.7.0rc2__cp310-cp310-macosx_11_0_arm64.whl → 4.7.1rc1__cp310-cp310-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.

Files changed (61) hide show
  1. lets_plot/__init__.py +14 -14
  2. lets_plot/_global_settings.py +0 -4
  3. lets_plot/_kbridge.py +11 -3
  4. lets_plot/_version.py +1 -1
  5. lets_plot/bistro/corr.py +28 -27
  6. lets_plot/bistro/im.py +4 -4
  7. lets_plot/bistro/joint.py +7 -7
  8. lets_plot/bistro/qq.py +16 -16
  9. lets_plot/bistro/residual.py +10 -10
  10. lets_plot/bistro/waterfall.py +26 -27
  11. lets_plot/export/ggsave_.py +29 -17
  12. lets_plot/frontend_context/_configuration.py +2 -2
  13. lets_plot/frontend_context/_html_contexts.py +6 -6
  14. lets_plot/geo_data/core.py +26 -22
  15. lets_plot/geo_data/geocoder.py +67 -56
  16. lets_plot/mapping.py +3 -3
  17. lets_plot/package_data/lets-plot.min.js +1 -1
  18. lets_plot/plot/annotation.py +5 -5
  19. lets_plot/plot/coord.py +4 -4
  20. lets_plot/plot/core.py +77 -141
  21. lets_plot/plot/expand_limits_.py +2 -2
  22. lets_plot/plot/facet.py +21 -17
  23. lets_plot/plot/font_features.py +3 -3
  24. lets_plot/plot/geom.py +1129 -1103
  25. lets_plot/plot/geom_extras.py +1 -1
  26. lets_plot/plot/geom_function_.py +16 -13
  27. lets_plot/plot/geom_imshow_.py +8 -7
  28. lets_plot/plot/geom_livemap_.py +38 -13
  29. lets_plot/plot/ggbunch_.py +1 -1
  30. lets_plot/plot/gggrid_.py +3 -3
  31. lets_plot/plot/ggtb_.py +1 -1
  32. lets_plot/plot/guide.py +9 -7
  33. lets_plot/plot/label.py +9 -9
  34. lets_plot/plot/marginal_layer.py +4 -4
  35. lets_plot/plot/plot.py +17 -16
  36. lets_plot/plot/pos.py +15 -15
  37. lets_plot/plot/sampling.py +8 -8
  38. lets_plot/plot/scale.py +153 -150
  39. lets_plot/plot/scale_colormap_mpl.py +9 -6
  40. lets_plot/plot/scale_convenience.py +6 -6
  41. lets_plot/plot/scale_identity_.py +9 -9
  42. lets_plot/plot/scale_position.py +16 -16
  43. lets_plot/plot/series_meta.py +7 -1
  44. lets_plot/plot/stat.py +64 -60
  45. lets_plot/plot/subplots.py +31 -22
  46. lets_plot/plot/theme_.py +93 -92
  47. lets_plot/plot/theme_set.py +15 -14
  48. lets_plot/plot/tooltip.py +14 -14
  49. lets_plot/plot/util.py +33 -3
  50. lets_plot/settings_utils.py +12 -12
  51. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/METADATA +63 -43
  52. lets_plot-4.7.1rc1.dist-info/RECORD +95 -0
  53. lets_plot_kotlin_bridge.cpython-310-darwin.so +0 -0
  54. lets_plot-4.7.0rc2.dist-info/RECORD +0 -95
  55. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/WHEEL +0 -0
  56. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/licenses/LICENSE +0 -0
  57. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/licenses/licenses/LICENSE.FreeType +0 -0
  58. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/licenses/licenses/LICENSE.ImageMagick +0 -0
  59. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/licenses/licenses/LICENSE.expat +0 -0
  60. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/licenses/licenses/LICENSE.fontconfig +0 -0
  61. {lets_plot-4.7.0rc2.dist-info → lets_plot-4.7.1rc1.dist-info}/top_level.txt +0 -0
lets_plot/plot/tooltip.py CHANGED
@@ -141,11 +141,11 @@ class layer_tooltips(FeatureSpec):
141
141
  a string template ('{.1f}') or a date/time format ('%d.%m.%y').
142
142
  The numeric format for non-numeric value will be ignored.
143
143
  If you need to include a brace character in the literal text,
144
- it can be escaped by doubling: `{{` and `}}`.
144
+ it can be escaped by doubling: ``{{`` and ``}}``.
145
145
 
146
146
  Returns
147
147
  -------
148
- `layer_tooltips`
148
+ ``layer_tooltips``
149
149
  Layer tooltips specification.
150
150
 
151
151
  Notes
@@ -157,8 +157,8 @@ class layer_tooltips(FeatureSpec):
157
157
 
158
158
  ----
159
159
 
160
- The string template in `format` will allow to change lines
161
- for the default tooltip without `line` specifying.
160
+ The string template in ``format`` will allow to change lines
161
+ for the default tooltip without ``line`` specifying.
162
162
  Also the template will change the line for side tooltips.
163
163
  Aes and var formats are not interchangeable, i.e. var format
164
164
  will not be applied to aes, mapped to this variable.
@@ -234,7 +234,7 @@ class layer_tooltips(FeatureSpec):
234
234
 
235
235
  Returns
236
236
  -------
237
- `layer_tooltips`
237
+ ``layer_tooltips``
238
238
  Layer tooltips specification.
239
239
 
240
240
  Notes
@@ -329,7 +329,7 @@ class layer_tooltips(FeatureSpec):
329
329
 
330
330
  Returns
331
331
  -------
332
- `layer_tooltips`
332
+ ``layer_tooltips``
333
333
  Layer tooltips specification.
334
334
 
335
335
  Examples
@@ -364,7 +364,7 @@ class layer_tooltips(FeatureSpec):
364
364
 
365
365
  Returns
366
366
  -------
367
- `layer_tooltips`
367
+ ``layer_tooltips``
368
368
  Layer tooltips specification.
369
369
 
370
370
  Examples
@@ -390,7 +390,7 @@ class layer_tooltips(FeatureSpec):
390
390
 
391
391
  def color(self, value):
392
392
  """
393
- Function `color(value)` is deprecated.
393
+ Function ``color(value)`` is deprecated.
394
394
 
395
395
  """
396
396
  print("WARN: The function color() is deprecated and is no longer supported.")
@@ -410,15 +410,15 @@ class layer_tooltips(FeatureSpec):
410
410
 
411
411
  Returns
412
412
  -------
413
- `layer_tooltips`
413
+ ``layer_tooltips``
414
414
  Layer tooltips specification.
415
415
 
416
416
  Notes
417
417
  -----
418
- The specification rules are the same as for the `lines()` function:
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 `\\\\n` as a text separator.
421
+ A long title can be split into multiple lines using ``\\\\n`` as a text separator.
422
422
 
423
423
  Examples
424
424
  --------
@@ -454,13 +454,13 @@ class layer_tooltips(FeatureSpec):
454
454
 
455
455
  Returns
456
456
  -------
457
- `layer_tooltips`
457
+ ``layer_tooltips``
458
458
  Layer tooltips specification.
459
459
 
460
460
  Notes
461
461
  -----
462
- By default, the `disable_splitting()` function moves all side tooltips to the general tooltip.
463
- If the content of a general tooltip is specified with the `line()` functions,
462
+ By default, the ``disable_splitting()`` function moves all side tooltips to the general tooltip.
463
+ If the content of a general tooltip is specified with the ``line()`` functions,
464
464
  the general tooltip will get the given lines, and the side tooltips will be hidden.
465
465
 
466
466
  Examples
lets_plot/plot/util.py CHANGED
@@ -4,10 +4,10 @@
4
4
  #
5
5
  from typing import Any, Tuple, Sequence, Optional, Dict, List
6
6
 
7
- from lets_plot._type_utils import is_pandas_data_frame
7
+ from lets_plot._type_utils import is_pandas_data_frame, is_polars_dataframe
8
8
  from lets_plot.geo_data_internals.utils import find_geo_names
9
9
  from lets_plot.mapping import MappingMeta
10
- from lets_plot.plot.core import aes, FeatureSpec
10
+ from lets_plot.plot.core import aes, FeatureSpec, PlotSpec
11
11
  from lets_plot.plot.series_meta import _infer_type, TYPE_UNKNOWN, TYPE_DATE_TIME, _detect_time_zone
12
12
 
13
13
 
@@ -18,6 +18,21 @@ def as_boolean(val, *, default):
18
18
  return bool(val) and val != 'False'
19
19
 
20
20
 
21
+ def update_plot_aes_mapping(plot: PlotSpec, add_mapping: FeatureSpec):
22
+ existing_spec = plot.props().get('mapping', aes())
23
+ merged_mapping = {**existing_spec.as_dict(), **add_mapping.as_dict()}
24
+
25
+ # Re-annotate the data with the merged mapping.
26
+ data = plot.props().get('data', None)
27
+ data, processed_mapping, data_meta = as_annotated_data(data, aes(**merged_mapping))
28
+ plot.props()['data'] = data
29
+ plot.props()['mapping'] = processed_mapping
30
+
31
+ # Add data_meta to plot properties
32
+ for key, value in data_meta.items():
33
+ plot.props()[key] = value
34
+
35
+
21
36
  def as_annotated_data(data: Any, mapping_spec: FeatureSpec) -> Tuple:
22
37
  data_type_by_var: Dict[str, str] = {} # VarName to Type
23
38
  mapping_meta_by_var: Dict[str, Dict[str, MappingMeta]] = {} # VarName to Dict[Aes, MappingMeta]
@@ -60,6 +75,21 @@ def as_annotated_data(data: Any, mapping_spec: FeatureSpec) -> Tuple:
60
75
 
61
76
  if is_pandas_data_frame(data) and data[var_name].dtype.name == 'category' and data[var_name].dtype.ordered:
62
77
  series_annotation['factor_levels'] = data[var_name].cat.categories.to_list()
78
+
79
+ elif is_polars_dataframe(data):
80
+ import polars
81
+
82
+ col_dtype = data[var_name].dtype
83
+ if isinstance(col_dtype, polars.datatypes.Enum):
84
+ series_annotation['factor_levels'] = list(col_dtype.categories)
85
+ elif isinstance(col_dtype, polars.datatypes.Categorical):
86
+ # # It does not seem possible to get categories in correct order from the Categorical dtype.
87
+ # categories_series = data[var_name].cat.get_categories()
88
+ # indises = [col_dtype.categories[cat] for cat in categories_series]
89
+ # cats = [col_dtype.categories[i] for i in indises]
90
+ # series_annotation['factor_levels'] = categories_series.to_list()
91
+ pass
92
+
63
93
  elif var_name in mapping_meta_by_var:
64
94
  levels = last_not_none(list(map(lambda mm: mm.levels, mapping_meta_by_var[var_name].values())))
65
95
  if levels is not None:
@@ -101,7 +131,7 @@ def as_annotated_data(data: Any, mapping_spec: FeatureSpec) -> Tuple:
101
131
  if order is not None:
102
132
  mapping_annotation.setdefault('parameters', {})['order'] = order
103
133
 
104
- # add mapping meta if custom label is set or if series annotation for var doesn't contain order options
134
+ # add mapping meta if a custom label is set or if series annotation for var doesn't contain order options
105
135
  # otherwise don't add mapping meta - it's redundant, nothing unique compared to series annotation
106
136
  if len(mapping_annotation):
107
137
  mapping_annotation['aes'] = aesthetic
@@ -12,8 +12,8 @@ __all__ = ['maptiles_zxy', 'maptiles_lets_plot', 'maptiles_solid']
12
12
 
13
13
  def maptiles_lets_plot(url: str = None, theme: str = None) -> dict:
14
14
  """
15
- Make vector tiles config. Can be used individually in `geom_livemap()`
16
- or in every livemap via `LetsPlot.set()`.
15
+ Make vector tiles config. Can be used individually in `geom_livemap() <https://lets-plot.org/python/pages/api/lets_plot.geom_livemap.html>`__
16
+ or in every livemap via `LetsPlot.set() <https://lets-plot.org/python/pages/api/lets_plot.LetsPlot.html#lets_plot.LetsPlot.set>`__.
17
17
 
18
18
  Parameters
19
19
  ----------
@@ -33,8 +33,8 @@ def maptiles_lets_plot(url: str = None, theme: str = None) -> dict:
33
33
  If you are using Safari and having trouble loading tiles, try disabling the NSURLSession Websocket feature.
34
34
  Go to `Develop -> Experimental Features -> NSURLSession Websocket` to turn it off.
35
35
 
36
- Also, you could use raster tiles from `lets_plot.tilesets`, e.g.
37
- `ggplot() + geom_livemap(tiles=tilesets.OPEN_TOPO_MAP)`
36
+ Also, you could use raster tiles from ``lets_plot.tilesets``, e.g.
37
+ ``ggplot() + geom_livemap(tiles=tilesets.OPEN_TOPO_MAP)``.
38
38
 
39
39
  Examples
40
40
  --------
@@ -86,8 +86,8 @@ def maptiles_lets_plot(url: str = None, theme: str = None) -> dict:
86
86
  def maptiles_zxy(url: str, attribution: str = None, min_zoom: int = None, max_zoom: int = None, subdomains: str = None,
87
87
  **other_args) -> dict:
88
88
  """
89
- Make raster tiles config. Can be used individually in `geom_livemap()`
90
- or in every livemap via `LetsPlot.set()`.
89
+ Make raster tiles config. Can be used individually in `geom_livemap() <https://lets-plot.org/python/pages/api/lets_plot.geom_livemap.html>`__
90
+ or in every livemap via `LetsPlot.set() <https://lets-plot.org/python/pages/api/lets_plot.LetsPlot.html#lets_plot.LetsPlot.set>`__.
91
91
 
92
92
  Parameters
93
93
  ----------
@@ -99,9 +99,9 @@ def maptiles_zxy(url: str, attribution: str = None, min_zoom: int = None, max_zo
99
99
  An attribution or a copyright notice to display on the map as required by the tile license.
100
100
  Supports HTML links: ``'<a href="http://www.example.com">Example</a>'``.
101
101
  min_zoom : int
102
- Minimal zoom limit, an integer from 1 to 15. Should be less than or equal to `max_zoom`.
102
+ Minimal zoom limit, an integer from 1 to 15. Should be less than or equal to ``max_zoom``.
103
103
  max_zoom : int
104
- Maximal zoom limit, an integer from 1 to 15. Should be greater than or equal to `min_zoom`.
104
+ Maximal zoom limit, an integer from 1 to 15. Should be greater than or equal to ``min_zoom``.
105
105
  subdomains : str
106
106
  Each character of this list is interpreted as standalone tile servers, so an interactive map
107
107
  can request tiles from any of these servers independently for better load balance. If url
@@ -156,8 +156,8 @@ def maptiles_zxy(url: str, attribution: str = None, min_zoom: int = None, max_zo
156
156
 
157
157
  def maptiles_solid(color: str):
158
158
  """
159
- Make solid color tiles config. Can be used individually in `geom_livemap()`
160
- or in every livemap via `LetsPlot.set()`.
159
+ Make solid color tiles config. Can be used individually in `geom_livemap() <https://lets-plot.org/python/pages/api/lets_plot.geom_livemap.html>`__
160
+ or in every livemap via `LetsPlot.set() <https://lets-plot.org/python/pages/api/lets_plot.LetsPlot.html#lets_plot.LetsPlot.set>`__.
161
161
 
162
162
  Parameters
163
163
  ----------
@@ -191,8 +191,8 @@ def maptiles_solid(color: str):
191
191
 
192
192
  def maptiles_chessboard():
193
193
  """
194
- Make solid color tiles with chessboard pattern. Can be used individually in `geom_livemap()`
195
- or in every livemap via `LetsPlot.set()`.
194
+ Make solid color tiles with chessboard pattern. Can be used individually in `geom_livemap() <https://lets-plot.org/python/pages/api/lets_plot.geom_livemap.html>`__
195
+ or in every livemap via `LetsPlot.set() <https://lets-plot.org/python/pages/api/lets_plot.LetsPlot.html#lets_plot.LetsPlot.set>`__.
196
196
 
197
197
  Returns
198
198
  -------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lets-plot
3
- Version: 4.7.0rc2
3
+ Version: 4.7.1rc1
4
4
  Summary: An open source library for statistical plotting
5
5
  Home-page: https://lets-plot.org
6
6
  Author: JetBrains
@@ -34,6 +34,7 @@ License-File: licenses/LICENSE.expat
34
34
  License-File: licenses/LICENSE.fontconfig
35
35
  Requires-Dist: pypng
36
36
  Requires-Dist: palettable
37
+ Requires-Dist: pillow
37
38
  Dynamic: author
38
39
  Dynamic: author-email
39
40
  Dynamic: classifier
@@ -105,38 +106,63 @@ Also read:
105
106
  - [Scientific mode in PyCharm](https://www.jetbrains.com/help/pycharm/matplotlib-support.html)
106
107
  - [Scientific mode in IntelliJ IDEA](https://www.jetbrains.com/help/idea/matplotlib-support.html)
107
108
 
108
- ## What is new in 4.6.0
109
+ ## What is new in 4.7.0
109
110
 
110
- - #### Markdown Support in *Title*, *Subtitle*, *Caption*, and Axis Labels
111
- <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">
111
+ - #### Time Series Plotting
112
+ - Support for Python `time` and `date` objects.
113
+ - Support for timezone-aware `datetime` objects and Pandas/Polars `Series`.
114
+
115
+ <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">
112
116
 
113
- See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/markdown.ipynb).
117
+ See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/time_date_datetime.ipynb).
118
+
119
+ - #### Native support for PNG and PDF exports
120
+ Exporting to PNG and PDF formats now uses the `ImageMagick` library bundled with Lets-Plot Python wheels and available out-of-the-box. <br>
121
+ This replaces the previous dependency on the `CairoSVG` library and comes with improved support for LaTeX labels rasterization. <br>
122
+
123
+ - #### `geom_sina()` Geometry
124
+
125
+ <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">
126
+
127
+ See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/geom_sina.ipynb).
128
+
129
+ - #### `geom_text_repel()` and `geom_label_repel()` Geometries
114
130
 
115
- - #### Support for Multiline Axis Labels, Text Justification in Axis Labels
116
- <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">
131
+ <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">
117
132
 
118
- See examples: [multiline axis labels](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/multiline_axis_labels.ipynb),
119
- [axis label justification](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/axis_label_justification.ipynb),
133
+ See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/ggrepel.ipynb).
120
134
 
121
- - #### `geom_hex()` Geometry
122
- <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">
135
+ - #### `waterfall_plot()` Chart
123
136
 
124
- See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/geom_hex.ipynb).
137
+ - Annotations support via `relative_labels` and `absolute_labels` parameters. <br>
138
+ <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">
125
139
 
126
- - #### `ggbunch()` Function: Combining Plots with Custom Layout
127
- It replaces the deprecated `GGBunch` class. <br/>
128
- <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">
129
-
130
- See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/ggbunch_indonesia.ipynb).
140
+ See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/waterfall_plot_annotations.ipynb).
141
+
142
+ - Support for combining waterfall bars with other geometry layers. <br>
143
+ <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">
131
144
 
132
- <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">
145
+ See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/waterfall_plot_layers.ipynb).
133
146
 
134
- See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/magnifier_inset.ipynb).
147
+ - #### Continuous Data on Discrete Scales
135
148
 
136
- - #### Parameters `start` and `direction` in `geom_pie()` Geometry
137
- <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">
149
+ Continuous data when used with discrete positional scales is no longer transformed to discrete data. <br>
150
+ Instead, it remains continuous, allowing for precise positioning of continuous elements relative to discrete ones. <br>
151
+ <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">
138
152
 
139
- See [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25a/geom_pie_params.ipynb).
153
+ See: [example notebook](https://nbviewer.org/github/JetBrains/lets-plot/blob/master/docs/f-25b/numeric_data_on_discrete_scale.ipynb).
154
+
155
+ > [!TIP]
156
+ > New way of handling continuous data on discrete scales could potentially break existing plots.
157
+ > 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.
158
+
159
+
160
+ - #### Plot Layout
161
+ The default plot layout has been improved to better accommodate axis labels and titles. <br>
162
+ Also, new `theme()` options `axis_text_spacing`, `axis_text_spacing_x`, and `axis_text_spacing_y` control spacing between axis ticks and labels. <br>
163
+ <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">
164
+
165
+ 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.
140
166
 
141
167
 
142
168
  - #### And More
@@ -146,35 +172,29 @@ Also read:
146
172
 
147
173
  ## Recent Updates in the [Gallery](https://lets-plot.org/python/pages/gallery.html)
148
174
 
175
+ <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/raincloud.ipynb">
176
+ <img src="https://github.com/JetBrains/lets-plot-docs/blob/41d87786905efdd5995f66e6a2734255548f00dc/source/_static/images/changelog/4.7.0/square-raincloud.png?raw=true" alt="images/changelog/4.7.0/square-raincloud.png" width="128" height="128">
177
+ </a>
178
+ <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/europe_capitals.ipynb">
179
+ <img src="https://github.com/JetBrains/lets-plot-docs/blob/41d87786905efdd5995f66e6a2734255548f00dc/source/_static/images/changelog/4.7.0/square-europe_capitals.png?raw=true" alt="images/changelog/4.7.0/square-europe_capitals.png" width="128" height="128">
180
+ </a>
181
+ <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/trading_chart.ipynb">
182
+ <img src="https://github.com/JetBrains/lets-plot-docs/blob/41d87786905efdd5995f66e6a2734255548f00dc/source/_static/images/changelog/4.7.0/square-trading_chart.png?raw=true" alt="images/changelog/4.7.0/square-trading_chart.png" width="128" height="128">
183
+ </a>
149
184
  <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/magnifier_inset.ipynb">
150
185
  <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">
151
186
  </a>
152
187
  <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/ggbunch_indonesia.ipynb">
153
188
  <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">
154
189
  </a>
155
- <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/theme_legend_scheme.ipynb">
156
- <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">
157
- </a>
158
- <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/interact_pan_zoom.ipynb">
159
- <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">
160
- </a>
161
- <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/lp_verse.ipynb">
162
- <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">
190
+ <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/lets_plot_in_2024.ipynb">
191
+ <img src="https://github.com/JetBrains/lets-plot-docs/blob/41d87786905efdd5995f66e6a2734255548f00dc/source/_static/images/changelog/4.7.0/square-lets_plot_in_2024.png?raw=true" alt="images/changelog/4.7.0/square-lets_plot_in_2024.png" width="128" height="128">
163
192
  </a>
164
- <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/us_unemployment.ipynb">
165
- <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">
193
+ <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/plot_layout_scheme.ipynb">
194
+ <img src="https://github.com/JetBrains/lets-plot-docs/blob/41d87786905efdd5995f66e6a2734255548f00dc/source/_static/images/changelog/4.7.0/square-plot_layout_scheme.png?raw=true" alt="images/changelog/4.7.0/square-plot_layout_scheme.png" width="128" height="128">
166
195
  </a>
167
- <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/venn_diagram.ipynb">
168
- <img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24b/images/gal_venn_diagram.png" alt="f-24b/images/gal_venn_diagram.png" width="128" height="128">
169
- </a>
170
- <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/cookbook/geom_spoke.ipynb">
171
- <img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24b/images/gal_spoke.png" alt="f-24b/images/gal_spoke.png" width="128" height="128">
172
- </a>
173
- <a href="https://www.kaggle.com/code/alshan/indonesia-volcanoes-on-map">
174
- <img src="https://raw.githubusercontent.com/JetBrains/lets-plot/master/docs/f-24b/images/gal_indonesia_volcanoes_on_map.png" alt="f-24b/images/gal_indonesia_volcanoes_on_map.png" width="128" height="128">
175
- </a>
176
- <a href="https://www.kaggle.com/code/alshan/japanese-volcanoes-on-map">
177
- <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">
196
+ <a href="https://nbviewer.org/github/JetBrains/lets-plot-docs/blob/master/source/examples/demo/theme_legend_scheme.ipynb">
197
+ <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">
178
198
  </a>
179
199
 
180
200
 
@@ -0,0 +1,95 @@
1
+ lets_plot_kotlin_bridge.cpython-310-darwin.so,sha256=b_U3JqE6clmSMB_rTq2dH1XDNzdCPnD-oL0Bl0Ac7Os,17245104
2
+ lets_plot/__init__.py,sha256=FB5djy7eJGMVACeqRx5zuVO6z7xcRKfg2TV6Bjm7eGw,12179
3
+ lets_plot/_global_settings.py,sha256=DSagEhxxfBlrxGQsk4ydwmOmMSOIJfJegBNFKLpdllk,7502
4
+ lets_plot/_kbridge.py,sha256=og2sh9UZFdoUf91vZxvYhJHs4Ph1lRfzVSFwgYBs-NI,5667
5
+ lets_plot/_type_utils.py,sha256=mlNG1J0Lgt7n0gERJZFkdhP6B3C7iZD5WRMB0yS6-r0,3828
6
+ lets_plot/_version.py,sha256=RNYjhDHytyuAV_QwhNx-a_Ffeph2NtH6g86OgNVR1Mk,236
7
+ lets_plot/mapping.py,sha256=VDvkHxiNXfTNWV3dzBYa3Cfy8z7VdW12papmTUlL06M,3584
8
+ lets_plot/settings_utils.py,sha256=nDtemq2zuEJ6Qulm1IXvSPhKEQt2xtztwkD247cg4sU,9087
9
+ lets_plot/tilesets.py,sha256=gN7gfn4qnXZj699LyxpDWwEuWwNmAJr2ZQ7VJX7rzoU,10382
10
+ lets_plot/bistro/__init__.py,sha256=4Vix3Qu2P4zqGiDx8gnTd3usCLQQGBRKhseSNjrsBUY,426
11
+ lets_plot/bistro/_plot2d_common.py,sha256=NuRH-tJ-PKtC4X69hvtGu9Zhn0IvsGviDeHoy3JuXSQ,3883
12
+ lets_plot/bistro/corr.py,sha256=rOjbCDr5GE6DPK4UFrErDrRBnofeQrinkNeu-kk5wDc,13923
13
+ lets_plot/bistro/im.py,sha256=Dc3B0B264jHV1od8VuxcvoQZGC7sHu2kRSy2lWenCt4,6453
14
+ lets_plot/bistro/joint.py,sha256=GyUFViwCGmY63UmKg9Llm80B86qQGvrUoz99PlhdIGo,6723
15
+ lets_plot/bistro/qq.py,sha256=BeTc2VGBNIxvArs80jptXzc-dhKhZk6HhFUQeBqTbN0,8298
16
+ lets_plot/bistro/residual.py,sha256=5j06FACUYN4HEe5gtUT7xOn-BPETn9fHOvgmIbQPAyQ,12490
17
+ lets_plot/bistro/waterfall.py,sha256=ZZ2ytdkzyhpzCALyt9cZ-vhmUuOFt4x3poCWKhNUBRg,14880
18
+ lets_plot/export/__init__.py,sha256=lDs6fqtQjkgJyKqeYlOdhrHMN__TeggTz73hgHAkyzc,188
19
+ lets_plot/export/ggsave_.py,sha256=SySbUiGpliARh9BixhoZFCLawiJ1j_yjiWq6AhoPM54,5736
20
+ lets_plot/frontend_context/__init__.py,sha256=nqIogfMulwKRY2l_v3Rn7tXMQ1btasX9f7dwfrVaj_A,204
21
+ lets_plot/frontend_context/_configuration.py,sha256=2Z33jBwKjW5OgKyTzvQtBwLthJuaMXpLviYAatFNbrw,5563
22
+ lets_plot/frontend_context/_frontend_ctx.py,sha256=073vxq0laO6ubol3kJK6aBbWo9Fr2_olbQEZUbr_QFc,359
23
+ lets_plot/frontend_context/_html_contexts.py,sha256=cFOnsewM3L0dwSf49MMeD8_5ajMqU7xzH2DX82xrBUg,4130
24
+ lets_plot/frontend_context/_intellij_python_json_ctx.py,sha256=pklGvBxke3nvK4gWgK5TuFAEzr2ywDtLtC7_V9lHMPE,1116
25
+ lets_plot/frontend_context/_json_contexts.py,sha256=5yzjvcyg5ZXgVJPWkN5GNiaa2BBUkxd2BXzF0QnCfdA,1371
26
+ lets_plot/frontend_context/_jupyter_notebook_ctx.py,sha256=jphbEqRfSY3tGa8ITmvDNi8utqo2eyn25sAChymMdZE,4562
27
+ lets_plot/frontend_context/_mime_types.py,sha256=Ka1IlWM8IgKZJePrg1GHDwNqH1Lz3z3AWAjLY6ylSb8,239
28
+ lets_plot/frontend_context/_static_html_page_ctx.py,sha256=8LMWMNw_S57FKptEytvQdtwGqe7v7FCu5oOGRETdovk,841
29
+ lets_plot/frontend_context/_static_svg_ctx.py,sha256=xc4EP8Lsa1kRID1-Jb5R40uG02OEMTKVwdUaSw4yQ_0,820
30
+ lets_plot/frontend_context/_webbr_html_page_ctx.py,sha256=n_RunY5jmUn5UW_uD_DI_JSATIiTX3YWZtKLwReKNAY,868
31
+ lets_plot/frontend_context/sandbox.py,sha256=7fKogCbxiYbE3zt6efsaISP5t3-kbgGeDJ3MLr11u2g,140
32
+ lets_plot/geo_data/__init__.py,sha256=vSa3yEc79hgIyXPEMTK2sAroRARs71nd5hrKO9sNiM4,588
33
+ lets_plot/geo_data/core.py,sha256=dzfSWRB_UZDAbD_UfYOM0OHpUBfCFnNZvDXuPRCo1Pk,10393
34
+ lets_plot/geo_data/geocoder.py,sha256=vbwSMa-MheMV7_4auklKFMrvWNpeDVAuT0q1Yzh14So,35084
35
+ lets_plot/geo_data/geocodes.py,sha256=DOdJKa2UVrf4ME64_6H9prrzLZ5ohgp9SKRnq4zgVu0,17861
36
+ lets_plot/geo_data/livemap_helper.py,sha256=vmmkC8FkBckFlSLpsps794OtYqRnEVCGn5NkZLOmw9o,2085
37
+ lets_plot/geo_data/to_geo_data_frame.py,sha256=jvOi2xyoJPK_CPEDvjidzeI3d8o06HtD0ZLmsHHG5-M,5321
38
+ lets_plot/geo_data/type_assertion.py,sha256=ldO3pgs_RA8OFCXhoykdCXjZZi8YhPWcLTM377_vh8k,775
39
+ lets_plot/geo_data/gis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ lets_plot/geo_data/gis/fluent_dict.py,sha256=WR1uREV2vx_krAQdegol1fIIebtbWm3bb_8jDt7uj-E,7030
41
+ lets_plot/geo_data/gis/geocoding_service.py,sha256=UfM0xMf_9MC0_8EtHiJTLSI6CKbrC4_OqtMSTg2oCxI,1652
42
+ lets_plot/geo_data/gis/geometry.py,sha256=kPtKDx35N4p7vhtaLOVA0rfHqsVYSDwMT5NhD8ydijQ,2418
43
+ lets_plot/geo_data/gis/json_request.py,sha256=CSNQRcgVVkeYjJ4uQ8_ppJ3CFgPm4JqmmeVR6q9HE-Y,10546
44
+ lets_plot/geo_data/gis/json_response.py,sha256=kpulh_-3CuRtP8lGSu6vdYFuZe5UHvt0s6-cvIK524Y,12353
45
+ lets_plot/geo_data/gis/request.py,sha256=TzNcbX05YY4eB9_y78FBVI6mCtbPCgdQnm5M_h7e_n4,17413
46
+ lets_plot/geo_data/gis/response.py,sha256=7Ac2VN4Hl9iffm7wAyfL80Wzo7sG9A1F5BqzJU3uZgQ,8014
47
+ lets_plot/geo_data_internals/__init__.py,sha256=4R6hr7MVB9iRi9JNQm_UUQL9jCe_dYDtizw_230V2Yg,234
48
+ lets_plot/geo_data_internals/constants.py,sha256=IDpHhOOg7dbfIKqLNSk3AGa-5HjDcnItFZDxCm4fylw,428
49
+ lets_plot/geo_data_internals/utils.py,sha256=phV_Q84xz4uZH2jI9WLUrYDyZAz0d2-00OOLxkRH4iw,967
50
+ lets_plot/package_data/lets-plot.min.js,sha256=z8CCH015rmktvbEgVLu29JrMJwkp35IAfrAw29xEtE0,2761328
51
+ lets_plot/plot/__init__.py,sha256=RNsQuVS8qe4Xf4so7PJiQJKdYYnDMIqydUQNzstqhZI,1771
52
+ lets_plot/plot/_global_theme.py,sha256=hOV9MzYpfjdF6hDE3mfLv_LqFtaouCJcccoW8pGoFoU,297
53
+ lets_plot/plot/annotation.py,sha256=2gwx2QZ2N-uH--XdckdWpJTZYCx9rdEohc5Wybxgfmg,9851
54
+ lets_plot/plot/coord.py,sha256=IG1EJYfEUIueGVBny-e2Vfc5NZJCJ4_B-Djtwk7sPxI,7984
55
+ lets_plot/plot/core.py,sha256=CI_N3t2MLAs5guiNWdG34VHIyZlWGmI1KSJScgnyHic,35224
56
+ lets_plot/plot/expand_limits_.py,sha256=q5Vrx4nls_KbFCyQIo1YTXznMaa7TFx0_HAMNRSzwMk,2445
57
+ lets_plot/plot/facet.py,sha256=I4BRTJ_7Jc1v9NL6xiSzLxqnpdSgqaWOaS3BFwHVubA,7303
58
+ lets_plot/plot/font_features.py,sha256=ju-DUr_t2frOxm3_gQjA6gmQmfwuP1SAtF7dxnLGiao,2242
59
+ lets_plot/plot/geom.py,sha256=FpnVMAHQgjWAbCH_ajyYZbTT9RiSnRm06XXBi2Nygo0,410745
60
+ lets_plot/plot/geom_extras.py,sha256=pVfd_A0TrrrQecuJw4TN4Ea297Rpz7seYYuZcxqg-O8,1696
61
+ lets_plot/plot/geom_function_.py,sha256=wws5Cl0huD08vqk0Oqi3CoinT9ynpJScMjP4_b-jzeM,8317
62
+ lets_plot/plot/geom_imshow_.py,sha256=G_DzmyTTZdNye0g9indu3KqQssClmoUqy-0ilurtrWo,14605
63
+ lets_plot/plot/geom_livemap_.py,sha256=FOA4R8KRpY5w8vlAWjtiOys2v0zwo1czbFb089Xm_Eg,13269
64
+ lets_plot/plot/ggbunch_.py,sha256=qSuw07ImjECJW0EzqnWtbWkc59b9NKh-4O1wNe2AbSE,3093
65
+ lets_plot/plot/gggrid_.py,sha256=ZpQ6KSaS3qqoSmrrxPzchubW3yq07epkUgdhT6S6pug,3899
66
+ lets_plot/plot/ggtb_.py,sha256=mnO58p_gARa90iM42_Znaz5afjCkAg3dDpDRO75C0Nk,1639
67
+ lets_plot/plot/guide.py,sha256=Y4qChtVYOehEqGzqHPLDvAZeoRK-P9dDHPTktP109ho,7052
68
+ lets_plot/plot/label.py,sha256=QAvhppOa6w4shG5qDkcfRjRTzIafcmmSxyI3MXIOc3c,4634
69
+ lets_plot/plot/marginal_layer.py,sha256=NtyX0spOYmRztnte2xQJ3iFhKVq-fzmjBqD_a79s5mU,6376
70
+ lets_plot/plot/plot.py,sha256=5H3GCE2xabpkwRRLbhrHvpmfg9v9EQxLWJpbRRrx-as,8382
71
+ lets_plot/plot/pos.py,sha256=Wh_0xTPGmpd4JAo8i2L6wa6AHbXGYeLrNFGvHQea1bY,10229
72
+ lets_plot/plot/sampling.py,sha256=J_KOgrbIx58xXr3t8xoUeHHpHweJ5yXqbC1nHG2p8_A,8505
73
+ lets_plot/plot/sandbox_.py,sha256=Tb5UwJqe8HMMSCbDLdrj_BcxPSkmyxy-hI0_2L6kpBk,545
74
+ lets_plot/plot/scale.py,sha256=O4kKjpW8xVWj1HFXAawM9LoWDLHHDP1I80uu9UohTZA,142105
75
+ lets_plot/plot/scale_colormap_mpl.py,sha256=EFf-6gGniGFKGRYanfiM8dSkWNdiau_Wefb6wDT7Gxs,10729
76
+ lets_plot/plot/scale_convenience.py,sha256=7c0WEbazscWleBH7_ezstmIb1wjOYu-4Ab1-HWy0Rvk,4128
77
+ lets_plot/plot/scale_identity_.py,sha256=la4yAUfCgoKCDn5mgbqwa9fm8U5Oa_w7k9ARDsNtgi4,23816
78
+ lets_plot/plot/scale_position.py,sha256=cqXmVa8nv2L6tPeFut29rpWIg4LSOiNUkFB_ocGRFew,47004
79
+ lets_plot/plot/series_meta.py,sha256=o9J01J5A-vsPbMlSaEaBFpXvm1O3pURyx339dPinPWo,7162
80
+ lets_plot/plot/stat.py,sha256=ufeXV_wNPe3Qi6cPeQ4Er_GP346mSGLwNI6tmnDR9PU,24401
81
+ lets_plot/plot/subplots.py,sha256=zC3xTKLIkH4YyLK2QTp8X-E1HbynYDF2LZQ5LZo6pZw,11852
82
+ lets_plot/plot/subplots_util.py,sha256=T04pwI7LaYliUqEdRHog1SGExVt9XosQk6XDwqOg7q0,913
83
+ lets_plot/plot/theme_.py,sha256=HW5ziKQx6xCOIVc38soBLeyw9LVyITW05yAVh06wcpo,37581
84
+ lets_plot/plot/theme_set.py,sha256=oyCHL_V92NWJC7-u__TOhuIJkfkSYQOWord3nDPEB1Y,9205
85
+ lets_plot/plot/tooltip.py,sha256=ggHSMn8-lFbyWqQ9cj2Q8WFiGJW5yHzMQNJugU-tab0,16013
86
+ lets_plot/plot/util.py,sha256=WS4CR9dH5xdLm8fRrX5kR9dQL0XZEiCTvtzz_yo-4bE,10456
87
+ lets_plot-4.7.1rc1.dist-info/licenses/LICENSE,sha256=r43VKLFaMylB4Ru-pE07j0cfUO7wQpMnWm-uZ8hEqMw,1066
88
+ lets_plot-4.7.1rc1.dist-info/licenses/licenses/LICENSE.FreeType,sha256=7YOXABSJgU7bZvuf8s6ySO493IEQ2hotc3nsCvHx3us,6718
89
+ lets_plot-4.7.1rc1.dist-info/licenses/licenses/LICENSE.ImageMagick,sha256=pVbFKSyHyaaseVyAZpsMNmD59ynejEdr8rEPg6sbNOw,12577
90
+ lets_plot-4.7.1rc1.dist-info/licenses/licenses/LICENSE.expat,sha256=MbFd6CqhmoRRVhaaF6VIi_WX5WGywxjRWe1YMTmyXoc,1144
91
+ lets_plot-4.7.1rc1.dist-info/licenses/licenses/LICENSE.fontconfig,sha256=UaUaqYI3BP2QvMxhbN0X66u1srPpy96IbKAscAIogGc,8616
92
+ lets_plot-4.7.1rc1.dist-info/METADATA,sha256=Y5164A3ckjMUZsA5cIfhto7t47zKbPcuz9tRAVXJc4M,12933
93
+ lets_plot-4.7.1rc1.dist-info/WHEEL,sha256=wyHf6UDzyHyUK-aDYscyyyExpYI7SeEZ9xjyEiU4cnw,109
94
+ lets_plot-4.7.1rc1.dist-info/top_level.txt,sha256=ID-ORXUWN-oVZmD4YFy1rQVm2QT1D-MlGON3vdxqgpY,34
95
+ lets_plot-4.7.1rc1.dist-info/RECORD,,
@@ -1,95 +0,0 @@
1
- lets_plot_kotlin_bridge.cpython-310-darwin.so,sha256=pn7yulUcDr0phkzzz6vla5Efxv5HqG1NBFc8E4D3t64,17211696
2
- lets_plot/__init__.py,sha256=JBXXtPi4nwhU9jrsUXcQTP1iaGF0jbHBVk_66pohq9I,11224
3
- lets_plot/_global_settings.py,sha256=TDxQp44IWvAUDWXnNQKIumAfrGEBHHg6OMuQNbiodA0,7778
4
- lets_plot/_kbridge.py,sha256=as2-FrQEQs5JUEyFq7_wGJY9hhctN3FXso8a1SGbwDE,5048
5
- lets_plot/_type_utils.py,sha256=mlNG1J0Lgt7n0gERJZFkdhP6B3C7iZD5WRMB0yS6-r0,3828
6
- lets_plot/_version.py,sha256=ygYpJIAx-Tc3nd1kCSIOavq9lVy47R4eP0g0Z_5_X8M,236
7
- lets_plot/mapping.py,sha256=q-O14pcnAosRIWcgg9-CkXMF43p5H7cKbyT4ne9w6hY,3576
8
- lets_plot/settings_utils.py,sha256=PrceNltN0JNzYxkIx0hwGgzX9dNxgVNqZY5hQ-r8QMQ,8434
9
- lets_plot/tilesets.py,sha256=gN7gfn4qnXZj699LyxpDWwEuWwNmAJr2ZQ7VJX7rzoU,10382
10
- lets_plot/bistro/__init__.py,sha256=4Vix3Qu2P4zqGiDx8gnTd3usCLQQGBRKhseSNjrsBUY,426
11
- lets_plot/bistro/_plot2d_common.py,sha256=NuRH-tJ-PKtC4X69hvtGu9Zhn0IvsGviDeHoy3JuXSQ,3883
12
- lets_plot/bistro/corr.py,sha256=nfxVWcS1UOfIMXWuE69-2ya0Omxi5jhIcRp3pSTxHZA,12892
13
- lets_plot/bistro/im.py,sha256=46OPkYKvvXlsx5d1LxcxPqApXh-ns-J2p1YN8WIb_tw,6445
14
- lets_plot/bistro/joint.py,sha256=BIAII_eYGyHJ43kk7BABqRDhUMIIpLNafMN-0YDrl_w,6571
15
- lets_plot/bistro/qq.py,sha256=4AMBjbtcwE4mQNmZSglGt1w8MnvhNqg7CZEVNb9fUr4,8098
16
- lets_plot/bistro/residual.py,sha256=el9B_nd4vT53hIXvgVtqbMr5QvjxLZwzH4UbCGxlxbM,12332
17
- lets_plot/bistro/waterfall.py,sha256=XXo3onoxfzD2OODwftqfJ0sb5NuL1Q8lqqQbb-UA4-E,14267
18
- lets_plot/export/__init__.py,sha256=lDs6fqtQjkgJyKqeYlOdhrHMN__TeggTz73hgHAkyzc,188
19
- lets_plot/export/ggsave_.py,sha256=Vt0Ai-ccGDg-IjPtHCQJCKL5lMHSk-38MNJcrBdkT50,5020
20
- lets_plot/frontend_context/__init__.py,sha256=nqIogfMulwKRY2l_v3Rn7tXMQ1btasX9f7dwfrVaj_A,204
21
- lets_plot/frontend_context/_configuration.py,sha256=Xxbbm1rP7ZaH2HIPf4LrCby4Z-LI-CKlEUxzWX7fQF0,5567
22
- lets_plot/frontend_context/_frontend_ctx.py,sha256=073vxq0laO6ubol3kJK6aBbWo9Fr2_olbQEZUbr_QFc,359
23
- lets_plot/frontend_context/_html_contexts.py,sha256=sk4VG0aBa0sGXTV1PIWPKjPRM5lE-hkVEcGDyd0k-1o,4142
24
- lets_plot/frontend_context/_intellij_python_json_ctx.py,sha256=pklGvBxke3nvK4gWgK5TuFAEzr2ywDtLtC7_V9lHMPE,1116
25
- lets_plot/frontend_context/_json_contexts.py,sha256=5yzjvcyg5ZXgVJPWkN5GNiaa2BBUkxd2BXzF0QnCfdA,1371
26
- lets_plot/frontend_context/_jupyter_notebook_ctx.py,sha256=jphbEqRfSY3tGa8ITmvDNi8utqo2eyn25sAChymMdZE,4562
27
- lets_plot/frontend_context/_mime_types.py,sha256=Ka1IlWM8IgKZJePrg1GHDwNqH1Lz3z3AWAjLY6ylSb8,239
28
- lets_plot/frontend_context/_static_html_page_ctx.py,sha256=8LMWMNw_S57FKptEytvQdtwGqe7v7FCu5oOGRETdovk,841
29
- lets_plot/frontend_context/_static_svg_ctx.py,sha256=xc4EP8Lsa1kRID1-Jb5R40uG02OEMTKVwdUaSw4yQ_0,820
30
- lets_plot/frontend_context/_webbr_html_page_ctx.py,sha256=n_RunY5jmUn5UW_uD_DI_JSATIiTX3YWZtKLwReKNAY,868
31
- lets_plot/frontend_context/sandbox.py,sha256=7fKogCbxiYbE3zt6efsaISP5t3-kbgGeDJ3MLr11u2g,140
32
- lets_plot/geo_data/__init__.py,sha256=vSa3yEc79hgIyXPEMTK2sAroRARs71nd5hrKO9sNiM4,588
33
- lets_plot/geo_data/core.py,sha256=GWQTPn7-miSiB-ovGZItFlHs5XiQqqFbNdRMPFnFjNA,9346
34
- lets_plot/geo_data/geocoder.py,sha256=CNqb_DMm_yJgE5ItyW8J4kq7kQo8fp4lHuUHPiOo3sM,33713
35
- lets_plot/geo_data/geocodes.py,sha256=DOdJKa2UVrf4ME64_6H9prrzLZ5ohgp9SKRnq4zgVu0,17861
36
- lets_plot/geo_data/livemap_helper.py,sha256=vmmkC8FkBckFlSLpsps794OtYqRnEVCGn5NkZLOmw9o,2085
37
- lets_plot/geo_data/to_geo_data_frame.py,sha256=jvOi2xyoJPK_CPEDvjidzeI3d8o06HtD0ZLmsHHG5-M,5321
38
- lets_plot/geo_data/type_assertion.py,sha256=ldO3pgs_RA8OFCXhoykdCXjZZi8YhPWcLTM377_vh8k,775
39
- lets_plot/geo_data/gis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- lets_plot/geo_data/gis/fluent_dict.py,sha256=WR1uREV2vx_krAQdegol1fIIebtbWm3bb_8jDt7uj-E,7030
41
- lets_plot/geo_data/gis/geocoding_service.py,sha256=UfM0xMf_9MC0_8EtHiJTLSI6CKbrC4_OqtMSTg2oCxI,1652
42
- lets_plot/geo_data/gis/geometry.py,sha256=kPtKDx35N4p7vhtaLOVA0rfHqsVYSDwMT5NhD8ydijQ,2418
43
- lets_plot/geo_data/gis/json_request.py,sha256=CSNQRcgVVkeYjJ4uQ8_ppJ3CFgPm4JqmmeVR6q9HE-Y,10546
44
- lets_plot/geo_data/gis/json_response.py,sha256=kpulh_-3CuRtP8lGSu6vdYFuZe5UHvt0s6-cvIK524Y,12353
45
- lets_plot/geo_data/gis/request.py,sha256=TzNcbX05YY4eB9_y78FBVI6mCtbPCgdQnm5M_h7e_n4,17413
46
- lets_plot/geo_data/gis/response.py,sha256=7Ac2VN4Hl9iffm7wAyfL80Wzo7sG9A1F5BqzJU3uZgQ,8014
47
- lets_plot/geo_data_internals/__init__.py,sha256=4R6hr7MVB9iRi9JNQm_UUQL9jCe_dYDtizw_230V2Yg,234
48
- lets_plot/geo_data_internals/constants.py,sha256=IDpHhOOg7dbfIKqLNSk3AGa-5HjDcnItFZDxCm4fylw,428
49
- lets_plot/geo_data_internals/utils.py,sha256=phV_Q84xz4uZH2jI9WLUrYDyZAz0d2-00OOLxkRH4iw,967
50
- lets_plot/package_data/lets-plot.min.js,sha256=AR351W9fNyKk6SXnirqgehQl6eIEPmFSdWpuIW4MjVE,2758969
51
- lets_plot/plot/__init__.py,sha256=RNsQuVS8qe4Xf4so7PJiQJKdYYnDMIqydUQNzstqhZI,1771
52
- lets_plot/plot/_global_theme.py,sha256=hOV9MzYpfjdF6hDE3mfLv_LqFtaouCJcccoW8pGoFoU,297
53
- lets_plot/plot/annotation.py,sha256=6bOJunvFRo99jAIFo6d5KEfZ0ILKB2vi1naG8nntynE,9839
54
- lets_plot/plot/coord.py,sha256=h9ZTNmSbRjIdVTL_TTl9Dn5AsY46tYxuAKddUPjwe8s,7976
55
- lets_plot/plot/core.py,sha256=sotPQUtQY75nRTKDH5BO5iBiZqMNVZ5s7PPVLNK0vYw,36199
56
- lets_plot/plot/expand_limits_.py,sha256=UJzBbNNrdSG7osANmchQ-Jcg27DuSzFXGu27-WxiPSI,2307
57
- lets_plot/plot/facet.py,sha256=1vDo1xk0G95x2SSf6HNWfeEgXS-FDxtpd18fo63_6gI,7030
58
- lets_plot/plot/font_features.py,sha256=vUc_ICerwqnwwJbDaAm_fS8fmbRTZHzPoAHRszw0SF4,2238
59
- lets_plot/plot/geom.py,sha256=8emJF_6B15lvLbWSP1ZNxaF3qvqkUFq0nRZXoWCbdXA,386154
60
- lets_plot/plot/geom_extras.py,sha256=I_ERjnZlk5VyilJELx0sA_4C2a_Ycjc2Thas-I6WZoo,1694
61
- lets_plot/plot/geom_function_.py,sha256=J8gx5U7zjlE9aYJTUsy8hr9dQ4ibZ9X7KMNvIVmQwqM,7861
62
- lets_plot/plot/geom_imshow_.py,sha256=I7l2rm0QzATN8a4Lt5mJC4G3YsvbJA4OiBjl2JlZ6kw,14439
63
- lets_plot/plot/geom_livemap_.py,sha256=LfuxJ2BHK9AeN6-z8YEnp24HYSguSu0jdJlKCIxjKTA,12201
64
- lets_plot/plot/ggbunch_.py,sha256=kRAZGcDDe33SrU9kH_XVJqJBTfW3ho3VXm3ZchUzPO4,3091
65
- lets_plot/plot/gggrid_.py,sha256=6M7YRxcrpftAardpKTMbkIeN0V7CB9FvFLdlSAKhZMA,3893
66
- lets_plot/plot/ggtb_.py,sha256=k4mzIwP-o9xSJ1-0Hb099dSxq8a-kEUjUjuug0I1-Cc,1637
67
- lets_plot/plot/guide.py,sha256=C-mDgjXKwQz_Pv6OB1rcQohAIUAl0QvoApPsAR5lbs4,6694
68
- lets_plot/plot/label.py,sha256=iXTTLP-AjFtHRnti8v4mZMnGLRNLhsxhvetoQPhi8H0,4549
69
- lets_plot/plot/marginal_layer.py,sha256=Y4FMmQZlUuLxzjjntVQThuV8scG6LbEmDGjstGMOls4,6357
70
- lets_plot/plot/plot.py,sha256=t7zXnu6tiqhwvthO4C7CfaYv2gH_zPzQ8ias9cK3m3Y,8282
71
- lets_plot/plot/pos.py,sha256=2ZPUdwAEK2_MQBbFch7kSFJqnPqQTl-JbKQGOuKrYAg,10063
72
- lets_plot/plot/sampling.py,sha256=qy0aesxFgpx-cO0-dC1Wv9r4oSbtz7hRPC9YsNk9Pyo,8489
73
- lets_plot/plot/sandbox_.py,sha256=Tb5UwJqe8HMMSCbDLdrj_BcxPSkmyxy-hI0_2L6kpBk,545
74
- lets_plot/plot/scale.py,sha256=d_cTAnRdTHwSPnUp7mmCTjM6PDOKmr9FMESGu3DQOzk,136949
75
- lets_plot/plot/scale_colormap_mpl.py,sha256=D5iWNaWGWpVFCJiNDwf-wHa8Snbd1YiWp6yktOkUl_A,10267
76
- lets_plot/plot/scale_convenience.py,sha256=VWe9BJhFlUbWL2CLrOrxPy523dGIKIOL7A2H7OPx8_0,4116
77
- lets_plot/plot/scale_identity_.py,sha256=qHo_CI7Xb9Olqza_MqvEV672AaaXM9gWac20SX4AGc4,23796
78
- lets_plot/plot/scale_position.py,sha256=3k8pe_opLrjC5fM3c_Yrjhzc5qPI5APvUoNVFYsqKy0,46972
79
- lets_plot/plot/series_meta.py,sha256=ar_97wY5_dM5vjaXpGKHwPMuNhktzwTlxMKkSM9R4O4,6852
80
- lets_plot/plot/stat.py,sha256=rXYtkOzsNQi51zPv3NaKZDdk5LPGLN2SjkCVeoewlZk,22893
81
- lets_plot/plot/subplots.py,sha256=v9zzddkG0mMtpNAYWb-shf3kv5deNE8zH5KvYeRsC6I,11331
82
- lets_plot/plot/subplots_util.py,sha256=T04pwI7LaYliUqEdRHog1SGExVt9XosQk6XDwqOg7q0,913
83
- lets_plot/plot/theme_.py,sha256=s4zdHoTo9Zo8kWsh5ECWyXTR18CCcAuxK0u5NhSiTe4,32550
84
- lets_plot/plot/theme_set.py,sha256=USNU-ccPKlZ4KEC1ij92n-SHY5271Ru_c1CQIIWXonI,9103
85
- lets_plot/plot/tooltip.py,sha256=AvRjT5UPop5wVORFHnaVeBhAIHTYbIjf0FXXUTB4Qvg,15983
86
- lets_plot/plot/util.py,sha256=omMkUHNHZ7HuCowhhoMvJSewfHqizgBv3iuZ-mt4KPw,9078
87
- lets_plot-4.7.0rc2.dist-info/licenses/LICENSE,sha256=r43VKLFaMylB4Ru-pE07j0cfUO7wQpMnWm-uZ8hEqMw,1066
88
- lets_plot-4.7.0rc2.dist-info/licenses/licenses/LICENSE.FreeType,sha256=7YOXABSJgU7bZvuf8s6ySO493IEQ2hotc3nsCvHx3us,6718
89
- lets_plot-4.7.0rc2.dist-info/licenses/licenses/LICENSE.ImageMagick,sha256=pVbFKSyHyaaseVyAZpsMNmD59ynejEdr8rEPg6sbNOw,12577
90
- lets_plot-4.7.0rc2.dist-info/licenses/licenses/LICENSE.expat,sha256=MbFd6CqhmoRRVhaaF6VIi_WX5WGywxjRWe1YMTmyXoc,1144
91
- lets_plot-4.7.0rc2.dist-info/licenses/licenses/LICENSE.fontconfig,sha256=UaUaqYI3BP2QvMxhbN0X66u1srPpy96IbKAscAIogGc,8616
92
- lets_plot-4.7.0rc2.dist-info/METADATA,sha256=Q0VMsC_m7-bTyz1h82XhqAJ6L3kECCgwaTkk7hZ5NZg,11504
93
- lets_plot-4.7.0rc2.dist-info/WHEEL,sha256=wyHf6UDzyHyUK-aDYscyyyExpYI7SeEZ9xjyEiU4cnw,109
94
- lets_plot-4.7.0rc2.dist-info/top_level.txt,sha256=ID-ORXUWN-oVZmD4YFy1rQVm2QT1D-MlGON3vdxqgpY,34
95
- lets_plot-4.7.0rc2.dist-info/RECORD,,