plotnine 0.15.0.dev3__py3-none-any.whl → 0.15.2__py3-none-any.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.
- plotnine/__init__.py +2 -0
- plotnine/_mpl/layout_manager/_engine.py +1 -1
- plotnine/_mpl/layout_manager/_layout_items.py +126 -41
- plotnine/_mpl/layout_manager/_layout_tree.py +712 -314
- plotnine/_mpl/layout_manager/_spaces.py +305 -101
- plotnine/_mpl/patches.py +70 -34
- plotnine/_mpl/text.py +144 -63
- plotnine/_mpl/utils.py +1 -1
- plotnine/_utils/__init__.py +50 -107
- plotnine/_utils/context.py +78 -2
- plotnine/_utils/ipython.py +35 -51
- plotnine/_utils/quarto.py +26 -0
- plotnine/_utils/yippie.py +115 -0
- plotnine/composition/__init__.py +11 -0
- plotnine/composition/_beside.py +55 -0
- plotnine/composition/_compose.py +471 -0
- plotnine/composition/_plot_spacer.py +60 -0
- plotnine/composition/_stack.py +55 -0
- plotnine/coords/coord.py +3 -3
- plotnine/data/__init__.py +31 -0
- plotnine/data/anscombe-quartet.csv +45 -0
- plotnine/doctools.py +4 -4
- plotnine/facets/facet.py +4 -4
- plotnine/facets/strips.py +17 -28
- plotnine/geoms/annotate.py +13 -13
- plotnine/geoms/annotation_logticks.py +7 -8
- plotnine/geoms/annotation_stripes.py +6 -6
- plotnine/geoms/geom.py +60 -27
- plotnine/geoms/geom_abline.py +3 -2
- plotnine/geoms/geom_area.py +2 -2
- plotnine/geoms/geom_bar.py +1 -0
- plotnine/geoms/geom_bin_2d.py +6 -2
- plotnine/geoms/geom_blank.py +0 -3
- plotnine/geoms/geom_boxplot.py +8 -4
- plotnine/geoms/geom_col.py +2 -2
- plotnine/geoms/geom_count.py +6 -2
- plotnine/geoms/geom_crossbar.py +3 -3
- plotnine/geoms/geom_density_2d.py +6 -2
- plotnine/geoms/geom_dotplot.py +2 -2
- plotnine/geoms/geom_errorbar.py +2 -2
- plotnine/geoms/geom_errorbarh.py +2 -2
- plotnine/geoms/geom_histogram.py +1 -1
- plotnine/geoms/geom_hline.py +3 -2
- plotnine/geoms/geom_linerange.py +2 -2
- plotnine/geoms/geom_map.py +5 -5
- plotnine/geoms/geom_path.py +11 -12
- plotnine/geoms/geom_point.py +4 -5
- plotnine/geoms/geom_pointdensity.py +4 -0
- plotnine/geoms/geom_pointrange.py +3 -5
- plotnine/geoms/geom_polygon.py +2 -3
- plotnine/geoms/geom_qq.py +4 -0
- plotnine/geoms/geom_qq_line.py +4 -0
- plotnine/geoms/geom_quantile.py +4 -0
- plotnine/geoms/geom_raster.py +4 -5
- plotnine/geoms/geom_rect.py +3 -4
- plotnine/geoms/geom_ribbon.py +7 -7
- plotnine/geoms/geom_rug.py +1 -1
- plotnine/geoms/geom_segment.py +2 -2
- plotnine/geoms/geom_sina.py +3 -3
- plotnine/geoms/geom_smooth.py +7 -3
- plotnine/geoms/geom_step.py +2 -2
- plotnine/geoms/geom_text.py +2 -3
- plotnine/geoms/geom_violin.py +8 -5
- plotnine/geoms/geom_vline.py +3 -2
- plotnine/ggplot.py +64 -85
- plotnine/guides/guide.py +7 -10
- plotnine/guides/guide_colorbar.py +3 -3
- plotnine/guides/guide_legend.py +3 -3
- plotnine/guides/guides.py +6 -6
- plotnine/helpers.py +49 -0
- plotnine/iapi.py +28 -5
- plotnine/labels.py +3 -3
- plotnine/layer.py +36 -19
- plotnine/mapping/_atomic.py +178 -0
- plotnine/mapping/_env.py +13 -2
- plotnine/mapping/_eval_environment.py +1 -1
- plotnine/mapping/aes.py +85 -49
- plotnine/scales/__init__.py +2 -0
- plotnine/scales/limits.py +7 -7
- plotnine/scales/scale.py +3 -3
- plotnine/scales/scale_color.py +82 -18
- plotnine/scales/scale_continuous.py +6 -4
- plotnine/scales/scale_datetime.py +28 -14
- plotnine/scales/scale_discrete.py +1 -1
- plotnine/scales/scale_identity.py +21 -2
- plotnine/scales/scale_manual.py +8 -2
- plotnine/scales/scale_xy.py +2 -2
- plotnine/stats/binning.py +4 -1
- plotnine/stats/smoothers.py +23 -36
- plotnine/stats/stat.py +20 -32
- plotnine/stats/stat_bin.py +6 -5
- plotnine/stats/stat_bin_2d.py +11 -9
- plotnine/stats/stat_bindot.py +13 -16
- plotnine/stats/stat_boxplot.py +6 -6
- plotnine/stats/stat_count.py +6 -9
- plotnine/stats/stat_density.py +7 -10
- plotnine/stats/stat_density_2d.py +12 -8
- plotnine/stats/stat_ecdf.py +7 -6
- plotnine/stats/stat_ellipse.py +9 -6
- plotnine/stats/stat_function.py +10 -8
- plotnine/stats/stat_hull.py +6 -3
- plotnine/stats/stat_identity.py +5 -2
- plotnine/stats/stat_pointdensity.py +5 -7
- plotnine/stats/stat_qq.py +46 -20
- plotnine/stats/stat_qq_line.py +16 -11
- plotnine/stats/stat_quantile.py +15 -9
- plotnine/stats/stat_sina.py +13 -15
- plotnine/stats/stat_smooth.py +8 -10
- plotnine/stats/stat_sum.py +5 -2
- plotnine/stats/stat_summary.py +7 -10
- plotnine/stats/stat_summary_bin.py +11 -14
- plotnine/stats/stat_unique.py +5 -2
- plotnine/stats/stat_ydensity.py +8 -11
- plotnine/themes/elements/__init__.py +2 -1
- plotnine/themes/elements/element_line.py +17 -9
- plotnine/themes/elements/margin.py +64 -1
- plotnine/themes/theme.py +9 -1
- plotnine/themes/theme_538.py +0 -1
- plotnine/themes/theme_bw.py +0 -1
- plotnine/themes/theme_dark.py +0 -1
- plotnine/themes/theme_gray.py +6 -5
- plotnine/themes/theme_light.py +1 -1
- plotnine/themes/theme_matplotlib.py +5 -5
- plotnine/themes/theme_seaborn.py +7 -4
- plotnine/themes/theme_void.py +9 -8
- plotnine/themes/theme_xkcd.py +0 -1
- plotnine/themes/themeable.py +109 -31
- plotnine/typing.py +17 -6
- plotnine/watermark.py +3 -3
- {plotnine-0.15.0.dev3.dist-info → plotnine-0.15.2.dist-info}/METADATA +13 -6
- plotnine-0.15.2.dist-info/RECORD +221 -0
- {plotnine-0.15.0.dev3.dist-info → plotnine-0.15.2.dist-info}/WHEEL +1 -1
- plotnine/plot_composition/__init__.py +0 -10
- plotnine/plot_composition/_compose.py +0 -436
- plotnine/plot_composition/_spacer.py +0 -32
- plotnine-0.15.0.dev3.dist-info/RECORD +0 -215
- /plotnine/{plot_composition → composition}/_plotspec.py +0 -0
- {plotnine-0.15.0.dev3.dist-info → plotnine-0.15.2.dist-info}/licenses/LICENSE +0 -0
- {plotnine-0.15.0.dev3.dist-info → plotnine-0.15.2.dist-info}/top_level.txt +0 -0
|
@@ -1,436 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from copy import deepcopy
|
|
4
|
-
from dataclasses import dataclass
|
|
5
|
-
from io import BytesIO
|
|
6
|
-
from typing import TYPE_CHECKING
|
|
7
|
-
|
|
8
|
-
from .._utils.ipython import (
|
|
9
|
-
get_display_function,
|
|
10
|
-
get_ipython,
|
|
11
|
-
)
|
|
12
|
-
from ..options import get_option
|
|
13
|
-
from ._plotspec import plotspec
|
|
14
|
-
|
|
15
|
-
if TYPE_CHECKING:
|
|
16
|
-
from pathlib import Path
|
|
17
|
-
from typing import Generator, Iterator, Self
|
|
18
|
-
|
|
19
|
-
from matplotlib.figure import Figure
|
|
20
|
-
|
|
21
|
-
from plotnine._mpl.gridspec import p9GridSpec
|
|
22
|
-
from plotnine._utils.ipython import FigureFormat
|
|
23
|
-
from plotnine.ggplot import PlotAddable, ggplot
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class Compose:
|
|
27
|
-
"""
|
|
28
|
-
Arrange two or more plots
|
|
29
|
-
|
|
30
|
-
Parameters
|
|
31
|
-
----------
|
|
32
|
-
operands:
|
|
33
|
-
The objects to be put together (composed).
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
def __init__(self, operands: list[ggplot | Compose]):
|
|
37
|
-
self.operands = operands
|
|
38
|
-
|
|
39
|
-
# These are created in the _create_figure method
|
|
40
|
-
self.figure: Figure
|
|
41
|
-
self.plotspecs: list[plotspec]
|
|
42
|
-
self.gridspec: p9GridSpec
|
|
43
|
-
|
|
44
|
-
def __add__(self, rhs: ggplot | Compose) -> Compose:
|
|
45
|
-
"""
|
|
46
|
-
Add rhs to the composition
|
|
47
|
-
|
|
48
|
-
Parameters
|
|
49
|
-
----------
|
|
50
|
-
rhs:
|
|
51
|
-
What to add to the composition
|
|
52
|
-
"""
|
|
53
|
-
return self.__class__([*self, rhs])
|
|
54
|
-
|
|
55
|
-
def __sub__(self, rhs: ggplot | Compose) -> Compose:
|
|
56
|
-
"""
|
|
57
|
-
Add the rhs besides the composition
|
|
58
|
-
|
|
59
|
-
Parameters
|
|
60
|
-
----------
|
|
61
|
-
rhs:
|
|
62
|
-
What to place besides the composition
|
|
63
|
-
"""
|
|
64
|
-
return self.__class__([self, rhs])
|
|
65
|
-
|
|
66
|
-
def __and__(self, rhs: PlotAddable) -> Compose:
|
|
67
|
-
"""
|
|
68
|
-
Add rhs to all plots in the composition
|
|
69
|
-
|
|
70
|
-
Parameters
|
|
71
|
-
----------
|
|
72
|
-
rhs:
|
|
73
|
-
What to add.
|
|
74
|
-
"""
|
|
75
|
-
self = deepcopy(self)
|
|
76
|
-
|
|
77
|
-
def add_other(op: Compose):
|
|
78
|
-
for item in op:
|
|
79
|
-
if isinstance(item, Compose):
|
|
80
|
-
add_other(item)
|
|
81
|
-
else:
|
|
82
|
-
item += rhs
|
|
83
|
-
|
|
84
|
-
add_other(self)
|
|
85
|
-
return self
|
|
86
|
-
|
|
87
|
-
def __mul__(self, rhs: PlotAddable) -> Compose:
|
|
88
|
-
"""
|
|
89
|
-
Add rhs to the outermost nesting level of the composition
|
|
90
|
-
|
|
91
|
-
Parameters
|
|
92
|
-
----------
|
|
93
|
-
rhs:
|
|
94
|
-
What to add.
|
|
95
|
-
"""
|
|
96
|
-
from plotnine import ggplot
|
|
97
|
-
|
|
98
|
-
self = deepcopy(self)
|
|
99
|
-
|
|
100
|
-
for item in self:
|
|
101
|
-
if isinstance(item, ggplot):
|
|
102
|
-
item += rhs
|
|
103
|
-
return self
|
|
104
|
-
|
|
105
|
-
def __len__(self) -> int:
|
|
106
|
-
"""
|
|
107
|
-
Number of operand
|
|
108
|
-
"""
|
|
109
|
-
return len(self.operands)
|
|
110
|
-
|
|
111
|
-
def __iter__(self) -> Iterator[ggplot | Compose]:
|
|
112
|
-
"""
|
|
113
|
-
Return an iterable of all the operands
|
|
114
|
-
"""
|
|
115
|
-
return iter(self.operands)
|
|
116
|
-
|
|
117
|
-
def _ipython_display_(self):
|
|
118
|
-
"""
|
|
119
|
-
Display plot in the output of the cell
|
|
120
|
-
"""
|
|
121
|
-
return self._display()
|
|
122
|
-
|
|
123
|
-
@property
|
|
124
|
-
def nrow(self) -> int:
|
|
125
|
-
"""
|
|
126
|
-
Number of rows in the composition
|
|
127
|
-
"""
|
|
128
|
-
return 0
|
|
129
|
-
|
|
130
|
-
@property
|
|
131
|
-
def ncol(self) -> int:
|
|
132
|
-
"""
|
|
133
|
-
Number of cols in the composition
|
|
134
|
-
"""
|
|
135
|
-
return 0
|
|
136
|
-
|
|
137
|
-
@property
|
|
138
|
-
def last_plot(self):
|
|
139
|
-
"""
|
|
140
|
-
Last plot added to the composition
|
|
141
|
-
"""
|
|
142
|
-
from plotnine import ggplot
|
|
143
|
-
|
|
144
|
-
last_operand = self.operands[-1]
|
|
145
|
-
if isinstance(last_operand, ggplot):
|
|
146
|
-
return last_operand
|
|
147
|
-
else:
|
|
148
|
-
return last_operand.last_plot
|
|
149
|
-
|
|
150
|
-
def __deepcopy__(self, memo):
|
|
151
|
-
"""
|
|
152
|
-
Deep copy without copying the figure
|
|
153
|
-
"""
|
|
154
|
-
cls = self.__class__
|
|
155
|
-
result = cls.__new__(cls)
|
|
156
|
-
memo[id(self)] = result
|
|
157
|
-
old = self.__dict__
|
|
158
|
-
new = result.__dict__
|
|
159
|
-
|
|
160
|
-
shallow = {"figure", "gridsspec", "__copy"}
|
|
161
|
-
for key, item in old.items():
|
|
162
|
-
if key in shallow:
|
|
163
|
-
new[key] = item
|
|
164
|
-
memo[id(new[key])] = new[key]
|
|
165
|
-
else:
|
|
166
|
-
new[key] = deepcopy(item, memo)
|
|
167
|
-
|
|
168
|
-
old["__copy"] = result
|
|
169
|
-
|
|
170
|
-
return result
|
|
171
|
-
|
|
172
|
-
def _to_retina(self):
|
|
173
|
-
from plotnine import ggplot
|
|
174
|
-
|
|
175
|
-
for item in self:
|
|
176
|
-
if isinstance(item, ggplot):
|
|
177
|
-
item.theme = item.theme.to_retina()
|
|
178
|
-
else:
|
|
179
|
-
item._to_retina()
|
|
180
|
-
|
|
181
|
-
def _create_gridspec(self, figure, nest_into):
|
|
182
|
-
"""
|
|
183
|
-
Create the gridspec for this composition
|
|
184
|
-
"""
|
|
185
|
-
from plotnine._mpl.gridspec import p9GridSpec
|
|
186
|
-
|
|
187
|
-
self.gridspec = p9GridSpec(
|
|
188
|
-
self.nrow, self.ncol, figure, nest_into=nest_into
|
|
189
|
-
)
|
|
190
|
-
|
|
191
|
-
def _create_figure(self):
|
|
192
|
-
import matplotlib.pyplot as plt
|
|
193
|
-
|
|
194
|
-
from plotnine import ggplot
|
|
195
|
-
from plotnine._mpl.gridspec import p9GridSpec
|
|
196
|
-
|
|
197
|
-
def _make_plotspecs(
|
|
198
|
-
cmp: Compose, parent_gridspec: p9GridSpec | None
|
|
199
|
-
) -> Generator[plotspec]:
|
|
200
|
-
"""
|
|
201
|
-
Return the plot specification for each subplot in the composition
|
|
202
|
-
"""
|
|
203
|
-
# This gridspec contains a composition group e.g.
|
|
204
|
-
# (p2 | p3) of p1 | (p2 | p3)
|
|
205
|
-
ss_or_none = parent_gridspec[0] if parent_gridspec else None
|
|
206
|
-
cmp._create_gridspec(self.figure, ss_or_none)
|
|
207
|
-
|
|
208
|
-
# Each subplot in the composition will contain one of:
|
|
209
|
-
# 1. A plot
|
|
210
|
-
# 2. A plot composition
|
|
211
|
-
# 3. Nothing
|
|
212
|
-
# Iterating over the gridspec yields the SubplotSpecs for each
|
|
213
|
-
# "subplot" in the grid. The SubplotSpec is the handle that
|
|
214
|
-
# allows us to set it up for a plot or to nest another gridspec
|
|
215
|
-
# in it.
|
|
216
|
-
for item, subplot_spec in zip(cmp, cmp.gridspec): # pyright: ignore[reportArgumentType]
|
|
217
|
-
if isinstance(item, ggplot):
|
|
218
|
-
yield plotspec(
|
|
219
|
-
item,
|
|
220
|
-
self.figure,
|
|
221
|
-
cmp.gridspec,
|
|
222
|
-
subplot_spec,
|
|
223
|
-
p9GridSpec(1, 1, self.figure, nest_into=subplot_spec),
|
|
224
|
-
)
|
|
225
|
-
elif item:
|
|
226
|
-
yield from _make_plotspecs(
|
|
227
|
-
item,
|
|
228
|
-
p9GridSpec(1, 1, self.figure, nest_into=subplot_spec),
|
|
229
|
-
)
|
|
230
|
-
|
|
231
|
-
self.figure = plt.figure()
|
|
232
|
-
self.plotspecs = list(_make_plotspecs(self, None))
|
|
233
|
-
|
|
234
|
-
def _display(self):
|
|
235
|
-
"""
|
|
236
|
-
Display plot in the cells output
|
|
237
|
-
|
|
238
|
-
This function is called for its side-effects.
|
|
239
|
-
|
|
240
|
-
It draws the plot to an io buffer then uses ipython display
|
|
241
|
-
methods to show the result.
|
|
242
|
-
"""
|
|
243
|
-
ip = get_ipython()
|
|
244
|
-
format: FigureFormat = get_option(
|
|
245
|
-
"figure_format"
|
|
246
|
-
) or ip.config.InlineBackend.get("figure_format", "retina")
|
|
247
|
-
|
|
248
|
-
if format == "retina":
|
|
249
|
-
self = deepcopy(self)
|
|
250
|
-
self._to_retina()
|
|
251
|
-
|
|
252
|
-
buf = BytesIO()
|
|
253
|
-
self.save(buf, "png" if format == "retina" else format)
|
|
254
|
-
figure_size_px = self.last_plot.theme._figure_size_px
|
|
255
|
-
display_func = get_display_function(format, figure_size_px)
|
|
256
|
-
display_func(buf.getvalue())
|
|
257
|
-
|
|
258
|
-
def draw(self, *, show: bool = False) -> Figure:
|
|
259
|
-
"""
|
|
260
|
-
Render the composed plots
|
|
261
|
-
|
|
262
|
-
Parameters
|
|
263
|
-
----------
|
|
264
|
-
show :
|
|
265
|
-
Whether to show the plot.
|
|
266
|
-
|
|
267
|
-
Returns
|
|
268
|
-
-------
|
|
269
|
-
:
|
|
270
|
-
Matplotlib figure
|
|
271
|
-
"""
|
|
272
|
-
from .._mpl.layout_manager import PlotnineCompositionLayoutEngine
|
|
273
|
-
|
|
274
|
-
with plot_composition_context(self, show):
|
|
275
|
-
self._create_figure()
|
|
276
|
-
figure = self.figure
|
|
277
|
-
|
|
278
|
-
for ps in self.plotspecs:
|
|
279
|
-
ps.plot.draw()
|
|
280
|
-
|
|
281
|
-
self.figure.set_layout_engine(
|
|
282
|
-
PlotnineCompositionLayoutEngine(self)
|
|
283
|
-
)
|
|
284
|
-
return figure
|
|
285
|
-
|
|
286
|
-
def save(self, filename: str | Path | BytesIO, format: str | None = None):
|
|
287
|
-
"""
|
|
288
|
-
Save a Compose object as an image file
|
|
289
|
-
|
|
290
|
-
Parameters
|
|
291
|
-
----------
|
|
292
|
-
filename :
|
|
293
|
-
File name to write the plot to. If not specified, a name
|
|
294
|
-
format :
|
|
295
|
-
Image format to use, automatically extract from
|
|
296
|
-
file name extension.
|
|
297
|
-
"""
|
|
298
|
-
figure = self.draw()
|
|
299
|
-
figure.savefig(filename, format=format)
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
@dataclass
|
|
303
|
-
class plot_composition_context:
|
|
304
|
-
cmp: Compose
|
|
305
|
-
show: bool
|
|
306
|
-
|
|
307
|
-
def __post_init__(self):
|
|
308
|
-
import matplotlib as mpl
|
|
309
|
-
|
|
310
|
-
# The dpi is needed when the figure is created, either as
|
|
311
|
-
# a parameter to plt.figure() or an rcParam.
|
|
312
|
-
# https://github.com/matplotlib/matplotlib/issues/24644
|
|
313
|
-
# When drawing the Composition, the dpi themeable is infective
|
|
314
|
-
# because it sets the rcParam after this figure is created.
|
|
315
|
-
rcParams = {"figure.dpi": self.cmp.last_plot.theme.getp("dpi")}
|
|
316
|
-
self._rc_context = mpl.rc_context(rcParams)
|
|
317
|
-
|
|
318
|
-
def __enter__(self) -> Self:
|
|
319
|
-
"""
|
|
320
|
-
Enclose in matplolib & pandas environments
|
|
321
|
-
"""
|
|
322
|
-
self._rc_context.__enter__()
|
|
323
|
-
return self
|
|
324
|
-
|
|
325
|
-
def __exit__(self, exc_type, exc_value, exc_traceback):
|
|
326
|
-
import matplotlib.pyplot as plt
|
|
327
|
-
|
|
328
|
-
if exc_type is None:
|
|
329
|
-
if self.show:
|
|
330
|
-
plt.show()
|
|
331
|
-
else:
|
|
332
|
-
plt.close(self.cmp.figure)
|
|
333
|
-
else:
|
|
334
|
-
# There is an exception, close any figure
|
|
335
|
-
if hasattr(self.cmp, "figure"):
|
|
336
|
-
plt.close(self.cmp.figure)
|
|
337
|
-
|
|
338
|
-
self._rc_context.__exit__(exc_type, exc_value, exc_traceback)
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
class OR(Compose):
|
|
342
|
-
"""
|
|
343
|
-
Compose by adding a column
|
|
344
|
-
"""
|
|
345
|
-
|
|
346
|
-
@property
|
|
347
|
-
def nrow(self) -> int:
|
|
348
|
-
return 1
|
|
349
|
-
|
|
350
|
-
@property
|
|
351
|
-
def ncol(self) -> int:
|
|
352
|
-
return len(self)
|
|
353
|
-
|
|
354
|
-
def __or__(self, rhs: ggplot | Compose) -> Compose:
|
|
355
|
-
"""
|
|
356
|
-
Add rhs as a column
|
|
357
|
-
"""
|
|
358
|
-
# This is an adjacent or i.e. (OR | rhs) so we collapse the
|
|
359
|
-
# operands into a single operation
|
|
360
|
-
return OR([*self, rhs])
|
|
361
|
-
|
|
362
|
-
def __truediv__(self, rhs: ggplot | Compose) -> Compose:
|
|
363
|
-
"""
|
|
364
|
-
Add rhs as a row
|
|
365
|
-
"""
|
|
366
|
-
return DIV([self, rhs])
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
class DIV(Compose):
|
|
370
|
-
"""
|
|
371
|
-
Compose by adding a row
|
|
372
|
-
"""
|
|
373
|
-
|
|
374
|
-
@property
|
|
375
|
-
def nrow(self) -> int:
|
|
376
|
-
return len(self)
|
|
377
|
-
|
|
378
|
-
@property
|
|
379
|
-
def ncol(self) -> int:
|
|
380
|
-
return 1
|
|
381
|
-
|
|
382
|
-
def __truediv__(self, rhs: ggplot | Compose) -> Compose:
|
|
383
|
-
"""
|
|
384
|
-
Add rhs as a row
|
|
385
|
-
"""
|
|
386
|
-
# This is an adjacent div i.e. (DIV | rhs) so we collapse the
|
|
387
|
-
# operands into a single operation
|
|
388
|
-
return DIV([*self, rhs])
|
|
389
|
-
|
|
390
|
-
def __or__(self, rhs: ggplot | Compose) -> Compose:
|
|
391
|
-
"""
|
|
392
|
-
Add rhs as a column
|
|
393
|
-
"""
|
|
394
|
-
return OR([self, rhs])
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
class ADD(Compose):
|
|
398
|
-
"""
|
|
399
|
-
Compose by adding
|
|
400
|
-
"""
|
|
401
|
-
|
|
402
|
-
@property
|
|
403
|
-
def nrow(self) -> int:
|
|
404
|
-
from plotnine.facets.facet_wrap import wrap_dims
|
|
405
|
-
|
|
406
|
-
return wrap_dims(len(self))[0]
|
|
407
|
-
|
|
408
|
-
@property
|
|
409
|
-
def ncol(self) -> int:
|
|
410
|
-
from plotnine.facets.facet_wrap import wrap_dims
|
|
411
|
-
|
|
412
|
-
return wrap_dims(len(self))[1]
|
|
413
|
-
|
|
414
|
-
def __add__(self, rhs: ggplot | Compose) -> Compose:
|
|
415
|
-
"""
|
|
416
|
-
Add rhs to the Composed group
|
|
417
|
-
"""
|
|
418
|
-
return ADD([*self, rhs])
|
|
419
|
-
|
|
420
|
-
def __or__(self, rhs: ggplot | Compose) -> Compose:
|
|
421
|
-
"""
|
|
422
|
-
Add rhs as a column
|
|
423
|
-
"""
|
|
424
|
-
return OR([self, rhs])
|
|
425
|
-
|
|
426
|
-
def __truediv__(self, rhs: ggplot | Compose) -> Compose:
|
|
427
|
-
"""
|
|
428
|
-
Add rhs as a row
|
|
429
|
-
"""
|
|
430
|
-
return DIV([self, rhs])
|
|
431
|
-
|
|
432
|
-
def __sub__(self, rhs: ggplot | Compose) -> Compose:
|
|
433
|
-
"""
|
|
434
|
-
Add rhs as a column
|
|
435
|
-
"""
|
|
436
|
-
return OR([self, rhs])
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from copy import deepcopy
|
|
4
|
-
|
|
5
|
-
from plotnine import element_rect, ggplot, theme, theme_void
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class spacer(ggplot):
|
|
9
|
-
"""
|
|
10
|
-
An empty plot
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self):
|
|
14
|
-
super().__init__()
|
|
15
|
-
self.theme = theme_void()
|
|
16
|
-
|
|
17
|
-
def __add__(self, rhs) -> spacer: # pyright: ignore[reportIncompatibleMethodOverride]
|
|
18
|
-
"""
|
|
19
|
-
Add to spacer
|
|
20
|
-
|
|
21
|
-
All added objects are no ops except the plot_background,
|
|
22
|
-
i.e.:
|
|
23
|
-
|
|
24
|
-
theme(plot_background=element_rect(fill="red"))
|
|
25
|
-
"""
|
|
26
|
-
self = deepcopy(self)
|
|
27
|
-
if isinstance(rhs, theme):
|
|
28
|
-
fill = rhs.getp(("plot_background", "facecolor"))
|
|
29
|
-
self.theme += theme(
|
|
30
|
-
plot_background=element_rect(fill=fill),
|
|
31
|
-
)
|
|
32
|
-
return self
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
plotnine/__init__.py,sha256=HrJhd65bnny1t-TawUgvApVj4p-gDZ0ftpr2NKZeW_s,10316
|
|
2
|
-
plotnine/animation.py,sha256=izJZ4Gy0cBHEBc8ehofsWSWOzZW8UEroy1Uvw86Igb0,7521
|
|
3
|
-
plotnine/doctools.py,sha256=OoPKtbFNkhQ6vKk8NfivC_xKPSvwBWvNo5-ZHS8tRAk,14540
|
|
4
|
-
plotnine/exceptions.py,sha256=SgTxBHkV65HjGI3aFy2q1_lHP9HAdiuxVLN3U-PJWSQ,1616
|
|
5
|
-
plotnine/ggplot.py,sha256=oMeAwsYDVhpsFV1VhxYes-0bgAPmlAE8py_eI92Xlbo,24822
|
|
6
|
-
plotnine/iapi.py,sha256=GZfXYS6JKyc8J2DB-QuSdtG_WGjBeR2vZP6ERYPUlrg,8420
|
|
7
|
-
plotnine/labels.py,sha256=Ja1F0ZN5YxNjaWiAckc-jniMqXdnZxHCsqK5uudpx1s,2827
|
|
8
|
-
plotnine/layer.py,sha256=r46mX4Sh_M2sHSpLcnf9UL-zc4ANuXvK8HRCQeWcya4,16749
|
|
9
|
-
plotnine/options.py,sha256=j3zXv4wc3J4nOI_TqJ5s_abuifodt_UN8MR8M4i8UVA,3108
|
|
10
|
-
plotnine/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
plotnine/qplot.py,sha256=BSAb4u5I7PaPGofkAgx7brdCNTjMZvC_TDGHVUZ35xM,7384
|
|
12
|
-
plotnine/typing.py,sha256=p99BI4XQPsESqK1lg8V2lYeHgqNSQVbCxsfP1PLWhUw,3801
|
|
13
|
-
plotnine/watermark.py,sha256=_SLjhiQquB0Vd_b5t_7-mUCvrbiN86tUYbBqU76JcSM,1506
|
|
14
|
-
plotnine/_mpl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
plotnine/_mpl/gridspec.py,sha256=OvlXchYXam1c1n8iNPKu4fJr6rqmH7OWebhJX5qqOmY,7903
|
|
16
|
-
plotnine/_mpl/offsetbox.py,sha256=E7810lS9W7Gexwz5mkSMz7PQXXHkYX-WHKlPHqapmTg,3216
|
|
17
|
-
plotnine/_mpl/patches.py,sha256=DLIFn4BFqrv0FXtbtloNWE5kaJRq85Q_8vz21sMJxuU,2568
|
|
18
|
-
plotnine/_mpl/text.py,sha256=0rkIi69Yd3qX9yg4f3wfaDY8tky1HZXkZFA0575Di_c,3822
|
|
19
|
-
plotnine/_mpl/ticker.py,sha256=RY_7AdTggc7QBq9_t0KBJXg36oxKfB-Vtc9FzLnaGnQ,393
|
|
20
|
-
plotnine/_mpl/transforms.py,sha256=DNaOlNq76xlT696sN8ot1bmYyp4mmrjXQHk3kTi4HIg,76
|
|
21
|
-
plotnine/_mpl/utils.py,sha256=c9wkxxUEweDg6O0hdgZonNOFncwxkqFye8_bL7td7I4,4131
|
|
22
|
-
plotnine/_mpl/layout_manager/__init__.py,sha256=IXpPF5Oycc45uFpK4MJ6kcQCe1u5VUfnHLNZGcnrJCg,157
|
|
23
|
-
plotnine/_mpl/layout_manager/_engine.py,sha256=ESUvbLAlZApFbBi6w7gZA7S4guS0Rmrj-us-gzYP2ZM,2809
|
|
24
|
-
plotnine/_mpl/layout_manager/_layout_items.py,sha256=QcO6tiDhDvhU10Y1eBP1qQ5fZhPGEsbwLYmIftxXzkU,27007
|
|
25
|
-
plotnine/_mpl/layout_manager/_layout_tree.py,sha256=4B2WMhIYrbikG1P2K87KqB4PqbU40zxlOAiQwe6-FPU,19539
|
|
26
|
-
plotnine/_mpl/layout_manager/_spaces.py,sha256=k4Pm6rJZUvOEgCAsKiSPszIsvEkARyU5vWBX38s_KkA,32389
|
|
27
|
-
plotnine/_utils/__init__.py,sha256=9RVYfwi9NmDGGzprUlE40yv9tJhW_VDAZkUKTTuvN7g,32473
|
|
28
|
-
plotnine/_utils/context.py,sha256=HPQy_uyNXdS0s9URD7ZePyuc5hFU2XrRBLDTqRDLJzY,1708
|
|
29
|
-
plotnine/_utils/dev.py,sha256=0qgRbMhcd4dfuLuYxx0skocKAtfwHF02ntyILRBogbg,1629
|
|
30
|
-
plotnine/_utils/ipython.py,sha256=5Obr73xJ-4dzJEdBrFA8z9TXuxY7pIjKmzdTzWwnxNk,1884
|
|
31
|
-
plotnine/_utils/quarto.py,sha256=bwbU3ork8wuUIW5VDJ73J_DbWWzpYWpAd76cHMzCRao,890
|
|
32
|
-
plotnine/_utils/registry.py,sha256=HoiB2NnbEHufXjYnVJyrJKflk2RwKtTYk2L3n7tH4XA,3321
|
|
33
|
-
plotnine/coords/__init__.py,sha256=inM-9JwSPvYLlOy6opye0YV2EGWsI4708wGKdHvQvVM,301
|
|
34
|
-
plotnine/coords/coord.py,sha256=czFYR1qTKA-BcIyaL9l3pfzkIYM2pKwYAiTPbJtvSWQ,6880
|
|
35
|
-
plotnine/coords/coord_cartesian.py,sha256=vGeSFe9UyycUkbjdjoPNSQJwnnU7fEmsk0nl_oBvzxY,3038
|
|
36
|
-
plotnine/coords/coord_fixed.py,sha256=C9aIy28GQHE4XJQ3I1LhnHviUmhBia7dk64eBVNftLw,1763
|
|
37
|
-
plotnine/coords/coord_flip.py,sha256=lskU4t72pMmtWL16slw3CV8bLPfTNONCmO_A1d0g5Rs,2891
|
|
38
|
-
plotnine/coords/coord_trans.py,sha256=g6Scq9q_78bHBV6McHMQfFM4KPBVcz9bjpnNx7eMyz0,4750
|
|
39
|
-
plotnine/data/__init__.py,sha256=roWstfVMSE7ThDsySeSQeopO7vOvo5K7o4nYyACRY5w,21316
|
|
40
|
-
plotnine/data/diamonds.csv,sha256=lXRzCwOrokHYmcSpdRHFBhsZNY-riVEHdPtsJBaDRcQ,2772143
|
|
41
|
-
plotnine/data/economics.csv,sha256=cWSbwFV6yqb7jYiKrwSCY-rz43icVHwQ_7fVXGksQeM,21860
|
|
42
|
-
plotnine/data/economics_long.csv,sha256=ukh3n2MqY_rPEeNYy1PgryqJZfeS2AEKjSddnVJ0rdg,123339
|
|
43
|
-
plotnine/data/faithful.csv,sha256=Xfz0Idy0fV62rkE7nRnO6cRn0NhRrWaWy4ovnGEdZ60,2470
|
|
44
|
-
plotnine/data/faithfuld.csv,sha256=U2LleBDYmogQb_kDeil2v__YHUCubh8bgzFjyrOdIg4,298297
|
|
45
|
-
plotnine/data/huron.csv,sha256=Sl2-tTPUj4rNEgm8qfF3UIquLAEjQaWShYgv8_gDYLk,1678
|
|
46
|
-
plotnine/data/luv_colours.csv,sha256=L-c3aEHMJPZNcdDKqqU0b90W5FM4UtbEe-Np29LOKRQ,39004
|
|
47
|
-
plotnine/data/meat.csv,sha256=tYfB51iuQ9h_6G-sDvxz2kCq6vQEbro3D3D87VVFZKU,46284
|
|
48
|
-
plotnine/data/midwest.csv,sha256=FOhp7_w4R-gHqCZJlM5c59-RNbiV07WaIt881IKPt0A,98022
|
|
49
|
-
plotnine/data/mpg.csv,sha256=FpX7FxpCJOxfkCZS9ghMRr1Sisv1Anj4O6gQTON0Mzw,16046
|
|
50
|
-
plotnine/data/msleep.csv,sha256=Cm5ArhLjOFXbU5Ubo3slSyZgv36TCjMECQY9L9dY2GM,6773
|
|
51
|
-
plotnine/data/mtcars.csv,sha256=CnukZ_Qy9KxNmHb_RBhBj4J5WefTIWNMBmr-PQqxkaQ,1787
|
|
52
|
-
plotnine/data/pageviews.csv,sha256=Ydz7c4NO6AqLqJOxR2_9y2QRFtRV0q2xvSUby6siwTk,13559
|
|
53
|
-
plotnine/data/penguins.csv,sha256=GGendqgzed9CGfInux7_uWfaEq2xNzISfIyNEgQ0wps,15203
|
|
54
|
-
plotnine/data/presidential.csv,sha256=jkUSy3wUSYpo1Vdj90U8ivSE1TLL_ztxvtqIVa7C1Wc,511
|
|
55
|
-
plotnine/data/seals.csv,sha256=VEuSEBLz3Fj14eBdM6hp6M6GpH2lqN5ekT_d2Mk1rK0,57035
|
|
56
|
-
plotnine/data/txhousing.csv,sha256=RdHoH5W9bud_DzsefIc8yNOFaxMl6IDDKMiP68aoIoY,523993
|
|
57
|
-
plotnine/facets/__init__.py,sha256=9P2MBA8MF1cRpk7YRQUcYN2UY7kZ9qrZc_0Qm9SRguk,393
|
|
58
|
-
plotnine/facets/facet.py,sha256=myAJ4llRpRFDV2ZZKT7AW4Bn-CRxy4Cvke40HtCK4Mo,18185
|
|
59
|
-
plotnine/facets/facet_grid.py,sha256=sK50Syzt2sy5aE3hObBC4TdQwCwyY-EtDUK2_B6aDnM,11755
|
|
60
|
-
plotnine/facets/facet_null.py,sha256=J--RdOvFP7AE0jK79-LNRksvCJExQTpS-tU5i0pGqs8,749
|
|
61
|
-
plotnine/facets/facet_wrap.py,sha256=NOoNdkaSb1y_ho6UygGkDih7zlQYXcEgJYK0Lqu6e98,8805
|
|
62
|
-
plotnine/facets/labelling.py,sha256=JEuwERTK0IfmxTWHbl2nsGgxZ6xi0n2TTWT4_OSfQcQ,8833
|
|
63
|
-
plotnine/facets/layout.py,sha256=TIkMChA0wJWLKN31PH0czS6CN4pw3o--PF49LakJ2h4,8967
|
|
64
|
-
plotnine/facets/strips.py,sha256=7K_SLVLhlb2-E-JNCZWOamFbC-yKLJ0yuqbwNoElLXk,6154
|
|
65
|
-
plotnine/geoms/__init__.py,sha256=HEfhNmmNH4xm4rpXnFRXY4eLkJha3XPM72IIwVjv5Lc,2697
|
|
66
|
-
plotnine/geoms/annotate.py,sha256=5sCHIMR_GjM2ujNY73i4iBczOkGi-vq1Nr1Yc3cBgZo,4022
|
|
67
|
-
plotnine/geoms/annotation_logticks.py,sha256=2_ILqE2cgX2acFoGZPDnbTJ0V7b3-ALVjno71FQuuxE,8953
|
|
68
|
-
plotnine/geoms/annotation_stripes.py,sha256=6LpfWzyAS6xpzTfIPorhZaVBL9j6jiSIoyVWViJVkbA,6037
|
|
69
|
-
plotnine/geoms/geom.py,sha256=kn3ekM968Xx3nmRRQxI1sGcEl44LBv8E3m4nUC4njMI,16549
|
|
70
|
-
plotnine/geoms/geom_abline.py,sha256=Q9FNVIQMLr5Xq-fsGD8H17D6f8uOdOhGoDoMI-GTqU4,3178
|
|
71
|
-
plotnine/geoms/geom_area.py,sha256=wvQ4nNvhJNN3nfn6Bv1gCARC6IWTjOjOfHPfSmg6Sxc,818
|
|
72
|
-
plotnine/geoms/geom_bar.py,sha256=SnqS4hPTfqXzdPh1U-kNuBg0LNX9_tQC9OKhIlB7cy0,1732
|
|
73
|
-
plotnine/geoms/geom_bin_2d.py,sha256=b2fAQVywug-ey3KtqeOoYQ2RNRSRE_fa4s7M41W-_FE,574
|
|
74
|
-
plotnine/geoms/geom_blank.py,sha256=au-WTJRdOcSfq_qQ6TugrSzjAweZfTElH9l8yYrmZ0I,821
|
|
75
|
-
plotnine/geoms/geom_boxplot.py,sha256=m9vrF4i4Cw_NGxZ9WLVPsDxbqQ3jJFtnJ-UrtE3teCI,9775
|
|
76
|
-
plotnine/geoms/geom_col.py,sha256=sGZZzkXgwlgI2D-M1UE1QAWsWZqtP1z8R0HjrnW9hkY,1187
|
|
77
|
-
plotnine/geoms/geom_count.py,sha256=IRIlQqwt0kIHf9swYZbFqd5RSQCYRyFKm5hp1C9xHB4,511
|
|
78
|
-
plotnine/geoms/geom_crossbar.py,sha256=-TN5UohaMNYPjYavbvW9feyW_fR-CBxFqyvSSrPIYZQ,6237
|
|
79
|
-
plotnine/geoms/geom_density.py,sha256=UwUkJxI79L3z19tmoSI6ZYs418XTbRznd-Abzrec3VY,526
|
|
80
|
-
plotnine/geoms/geom_density_2d.py,sha256=V37QYpdZpZvYxishlN1UBmyyRC3U2eOqR-gaIPxQqS4,400
|
|
81
|
-
plotnine/geoms/geom_dotplot.py,sha256=dcQwuUldoibIHc7DD01Tx_bD6pgqm8lz9TBQ3HbloRM,8671
|
|
82
|
-
plotnine/geoms/geom_errorbar.py,sha256=ZFZf9fzd9FLPAuCHZ-H_l-PMRM4CFFIkVB_xTY_EoiQ,2192
|
|
83
|
-
plotnine/geoms/geom_errorbarh.py,sha256=FMl_PdppiBXUj1ChhtOPWsOQHKg8HxyYUCjuL0HxQyA,2206
|
|
84
|
-
plotnine/geoms/geom_freqpoly.py,sha256=lsr1dwZyR6gUbzl5SNJ5yYklsWGjkqYYAe3Mb8AWynk,339
|
|
85
|
-
plotnine/geoms/geom_histogram.py,sha256=JnqHJb7HISQKnH2XwW6JOB8g462yGH1nMMYxbtwvqtY,329
|
|
86
|
-
plotnine/geoms/geom_hline.py,sha256=0LkUi68q5IUoaQxqnWAxKpFiP3sPr2QsH6uMQpC8k-k,2471
|
|
87
|
-
plotnine/geoms/geom_jitter.py,sha256=mJCLt2SoZN_tx_3XS8oF5JojtL2m5HO1bEqdN-JEPUg,2291
|
|
88
|
-
plotnine/geoms/geom_label.py,sha256=lPxmDlS6VgEHqD3Ac1Q-Zxs75JcnduoXjJ_D1AzzWew,2835
|
|
89
|
-
plotnine/geoms/geom_line.py,sha256=IzKVPwF_Oe3uwRpuh5Xu9LFvz0XcKqCL4pN03iGHBdk,522
|
|
90
|
-
plotnine/geoms/geom_linerange.py,sha256=xfysK1fJcLm-_8odQYmzzEhlccO-d7NHfMtVBr1bbGQ,1275
|
|
91
|
-
plotnine/geoms/geom_map.py,sha256=Py7iNoFapwftCSK7UMwkTOeTd3_8vWStVuB12tInjOo,9600
|
|
92
|
-
plotnine/geoms/geom_path.py,sha256=OejXwgW5s9kZpGQ2sdux8lcLVI_Ncwf3Q1QUCLo8xTw,17127
|
|
93
|
-
plotnine/geoms/geom_point.py,sha256=Y7eDpRoCR3EKDujsVPMG_EK9o1-wTfrgpuRJ0cjCTLs,4611
|
|
94
|
-
plotnine/geoms/geom_pointdensity.py,sha256=TKaxAUPwdrVMw0MVYe14apBsRfW_5_zXFLSlOS60Zlw,372
|
|
95
|
-
plotnine/geoms/geom_pointrange.py,sha256=CvuMVHiYcv6giBb3b2A5KkAykLHMlM_CaQXBmOlCHGw,2624
|
|
96
|
-
plotnine/geoms/geom_polygon.py,sha256=ry_aQzgpog6ibe-13JQltltE7U4NFLElWqc9BtevpGc,4160
|
|
97
|
-
plotnine/geoms/geom_qq.py,sha256=uimpCvBrJhMscglVzI7cUAnAC3ZRs7nqXyGilq1ipkw,294
|
|
98
|
-
plotnine/geoms/geom_qq_line.py,sha256=i0L9if-JxTr2heYUpIqV_cZ4qMiB7Om6EOurR76nFhg,337
|
|
99
|
-
plotnine/geoms/geom_quantile.py,sha256=rcYmyO062IFASBoYZEE31KtHKSVkWNwF-upbBp9AgAU,806
|
|
100
|
-
plotnine/geoms/geom_raster.py,sha256=AyzNbJanvS0tyx1nXZ7utZvmJjRvYEsMT8AuyiCAup8,6269
|
|
101
|
-
plotnine/geoms/geom_rect.py,sha256=-IWtp20iz1lN2zWlT2O8_2rp_ZoFG2AiSAVn619Vnek,3725
|
|
102
|
-
plotnine/geoms/geom_ribbon.py,sha256=2L7-ElZRud7AYroKlSnQQVlEP2fTtzVlOpxnmX_fFjs,5752
|
|
103
|
-
plotnine/geoms/geom_rug.py,sha256=TMOvKmcOq_Z2mpRy4YrlsjjNt5A2Oy58F55xO78IYtE,3511
|
|
104
|
-
plotnine/geoms/geom_segment.py,sha256=KU6jCaU2a8X7OI9WHQevLgQQBqmBjYnI3j4jV9fOqhU,3045
|
|
105
|
-
plotnine/geoms/geom_sina.py,sha256=oyCiBCdsWjrSNaS2jOpu0Ng8nEl_peaCT-EuHE9jG34,912
|
|
106
|
-
plotnine/geoms/geom_smooth.py,sha256=LE8H6kMlQdLiwLgMfIZYWh8TCFyMbYM7nXwlV2kLzT8,3540
|
|
107
|
-
plotnine/geoms/geom_spoke.py,sha256=s-kug0H-YGhyjso9W43XvzJf9-g6inh8zzuSFeXzSaU,977
|
|
108
|
-
plotnine/geoms/geom_step.py,sha256=oKi2lWG7M2lGpF4G0yC7_5qn5tb-gc3o4H-pu3_wS64,2364
|
|
109
|
-
plotnine/geoms/geom_text.py,sha256=CqmjsOJsAsIsTm6SkVJt0gms363AXpLN_JCTpuK6Krw,11908
|
|
110
|
-
plotnine/geoms/geom_tile.py,sha256=3x9BSxaSr-ys6N5R2wY8B9fNiyV9vMdoXbjIDqHy_ng,1431
|
|
111
|
-
plotnine/geoms/geom_violin.py,sha256=VqwD2GiCRUCq5tLQbQVcLiXSaxWO-OMe9_K9GnWqdrs,7147
|
|
112
|
-
plotnine/geoms/geom_vline.py,sha256=qKUd4IosH1VrwHbqNbs29kZyIW5lQRa_LZLRcLbPg38,3377
|
|
113
|
-
plotnine/guides/__init__.py,sha256=ulI-mDhtq3jAQEAqPv8clrn3UHGFOu3xRuO7jXlq-LY,201
|
|
114
|
-
plotnine/guides/guide.py,sha256=L1O26atzSjiQR-YW9w3XEcH0BDFiqthdY6wA6DAOapo,8229
|
|
115
|
-
plotnine/guides/guide_axis.py,sha256=zG_5Ot1kTuHOeuQspL5V1A1-7c7X8cNeMDoF01Ghh2w,296
|
|
116
|
-
plotnine/guides/guide_colorbar.py,sha256=zHM6QRrzACC2l1Vq6p04Cu0QAGuTBfp3AhPyyMbYbgc,16290
|
|
117
|
-
plotnine/guides/guide_legend.py,sha256=0CSyRxlHu0RSJjnMWvnStnq-EtjgdmHv54QgPWC3ufE,14236
|
|
118
|
-
plotnine/guides/guides.py,sha256=UI3AhTOQCsXur_L-Jr3VwAQcX4dBeZMohSbA2wg1YeA,15478
|
|
119
|
-
plotnine/mapping/__init__.py,sha256=DLu9E0kwwuHxzTUenoVjCNTTdkWMwIDtkExLleBq1MI,205
|
|
120
|
-
plotnine/mapping/_env.py,sha256=ZzcSv54PLOD8b8Ny2h6xteGoO8bJdbj9dM6Mlg5h0V8,6094
|
|
121
|
-
plotnine/mapping/_eval_environment.py,sha256=ZPzIh61maJl79VQMj6ZsBGcaVV870SIARqI-Z4eNeXA,2463
|
|
122
|
-
plotnine/mapping/aes.py,sha256=fMwZJ7MhAcUqhUIb3ekmI_RVpKotJxCl66ale4P3B10,15797
|
|
123
|
-
plotnine/mapping/evaluation.py,sha256=kblTxVv3M4xIGnHyReUU0RtmmIN77Or2JBcci0nGGfE,5913
|
|
124
|
-
plotnine/plot_composition/__init__.py,sha256=ZJYpfVF158cQZ1zREXy6wHNJ4FbSmqWxIkHWZwX3QT8,148
|
|
125
|
-
plotnine/plot_composition/_compose.py,sha256=uQfXxDbEayqyjX6yMOCJiePqAK7I2OU5YnBhphkYFY4,11477
|
|
126
|
-
plotnine/plot_composition/_plotspec.py,sha256=0F7q7PjDMDqcallpnBdX3N2iSRjdBTyjSvMFf83uvPU,1015
|
|
127
|
-
plotnine/plot_composition/_spacer.py,sha256=vaC4F5tHhvL7T7Ns9zxUbytqwB6MLNhm5jtiKG0vAiU,798
|
|
128
|
-
plotnine/positions/__init__.py,sha256=DQZE6duMUNRQifpa6SBrOKxZpGDk4NqQSGZLr9Yc9GI,595
|
|
129
|
-
plotnine/positions/position.py,sha256=BRD_dUh9dhdSP4SQfl8_u_VpaY_s3A2zuznwOn5M_80,8325
|
|
130
|
-
plotnine/positions/position_dodge.py,sha256=6PbAhWDfNK7NK6FZZOcfr4mdmVOUV9VLH8xD0dbQFEU,3941
|
|
131
|
-
plotnine/positions/position_dodge2.py,sha256=QI-oTIiYFOARozbBRuGQ1RHnZI_DKbCR2pJbuXlZvpQ,5661
|
|
132
|
-
plotnine/positions/position_fill.py,sha256=DvBm_6Oh2X3tSl67gP-iFoBmbYHy_WfZotHSrY4k0Rg,160
|
|
133
|
-
plotnine/positions/position_identity.py,sha256=9GE4WpuISLcGWTsgGqF9MARKhxdVySk5xeHACtyfJIk,203
|
|
134
|
-
plotnine/positions/position_jitter.py,sha256=p5s21ry-k7dK2G_jtWFghocbA-1XS73ljMiuJRIM4WE,2226
|
|
135
|
-
plotnine/positions/position_jitterdodge.py,sha256=D8J-9LfQgWaU6x5cZxkqze5NbKiHaDysUn-ftsxV7sU,3315
|
|
136
|
-
plotnine/positions/position_nudge.py,sha256=IKzQsnZ5xpUzi_yP2GFBl249jICQv4j3dGpEcwx88UY,949
|
|
137
|
-
plotnine/positions/position_stack.py,sha256=faomJVM-YsrxDVAmKC_9G3t6dNg3pgmaIcEJo39Xrb4,4027
|
|
138
|
-
plotnine/scales/__init__.py,sha256=xjDUpVWBJ-JftSJkLTP_nB2Zs5BptaduOjkhBv3Qs9Q,5470
|
|
139
|
-
plotnine/scales/_expand.py,sha256=ynlg_6s3NDTIe8dcP1C6XpiaIva0sin9fILFLywS04Y,1551
|
|
140
|
-
plotnine/scales/_runtime_typing.py,sha256=Ror99gzX0pe25F3trm2TZOyQhNhIZiS8IfbYpdRh-aU,1311
|
|
141
|
-
plotnine/scales/limits.py,sha256=db4r3Mvb35USO3w-fq12Rs5T3oOTylH5n8Ie8LFl6Wk,5619
|
|
142
|
-
plotnine/scales/range.py,sha256=xBlFdAhthH1zKIJZDdkEyAA2kMZtyDorDFHKBMHKyAQ,1379
|
|
143
|
-
plotnine/scales/scale.py,sha256=MpHUbFuO_6CdnfPS2IZ7eVMmZWY7wLvAWVSaSb6lSsw,8075
|
|
144
|
-
plotnine/scales/scale_alpha.py,sha256=lYVZeaCC2pk-0-BoXnOeP0RdIbHYk6qo3DRClJrxTKo,2350
|
|
145
|
-
plotnine/scales/scale_color.py,sha256=TKDpMBRsDM5--RbMRHGwMAoVFr7hF9Jtz2yKhrG9stQ,13347
|
|
146
|
-
plotnine/scales/scale_continuous.py,sha256=gpTpZdPtQrTx1AiJAmBwW-AzvBiNbv9bUDzZmvdO0tA,16392
|
|
147
|
-
plotnine/scales/scale_datetime.py,sha256=bY8fhXGj7fLOq783nuhoLJCybo_QnOo0L5XZFt5vSHc,3167
|
|
148
|
-
plotnine/scales/scale_discrete.py,sha256=AXxoa3_0_zoPRm46GflBU8pbY9B26bSmxSv5hDv9mos,9392
|
|
149
|
-
plotnine/scales/scale_identity.py,sha256=V_gj80VWTVTk-BZq_tWJqE7j_XOswY64hg_cRSMd3C4,1987
|
|
150
|
-
plotnine/scales/scale_linetype.py,sha256=pwLTmglN6d4bnChbuBi6HWbDP_nsE4viXD8CK6XKBPw,1373
|
|
151
|
-
plotnine/scales/scale_manual.py,sha256=pmrTN_yNqOa_1o63LqKZnAPIhNoVkn00p2nAXdJgOlo,4429
|
|
152
|
-
plotnine/scales/scale_shape.py,sha256=I0JdYDreCbznQilaTi6m27F91N5daCj9D2ZPuP2Szls,2081
|
|
153
|
-
plotnine/scales/scale_size.py,sha256=04nUQzKB_qpuQrcg8C7jYmLDYtdnlg6PkY7SivP5OlY,3273
|
|
154
|
-
plotnine/scales/scale_stroke.py,sha256=7LKAg6-Q3VTuw78N2XEjFFzBa8yY5NVnfBSoJGsBS5o,1711
|
|
155
|
-
plotnine/scales/scale_xy.py,sha256=uWWYxWr0fWIlqJJIRdwG44pMfmKPwKLjclvrE95ZUrk,10060
|
|
156
|
-
plotnine/scales/scales.py,sha256=rmHFm7roKEeZhKs81gjhCNMyNpvXmQOqxqvEH8GCwOs,10113
|
|
157
|
-
plotnine/stats/__init__.py,sha256=IZVXnHYmdpdev9NzxA-Nw9dZnuq1pudZNWLbYbvfWSg,1386
|
|
158
|
-
plotnine/stats/binning.py,sha256=df0Qt4ZSi9rNqivAVZrgKyiQHh_CK9qAFabqjXn5uqs,9453
|
|
159
|
-
plotnine/stats/density.py,sha256=TQihwduejW5I5oZ8GdWI_U_n-5N49SfMShm3OtlDhW8,6372
|
|
160
|
-
plotnine/stats/distributions.py,sha256=pskpWUFcyrLR6AYeZAciRH0Cb267ME3G2mvm79xsgMc,1178
|
|
161
|
-
plotnine/stats/smoothers.py,sha256=yS-DOcNwXapyL7A_eh-yL2dlQEbvF0TtmjIBhpqkLq0,17863
|
|
162
|
-
plotnine/stats/stat.py,sha256=HIVzEsqPG_7cmdlocuq53MArD5kPxrNkXM5Bz6ws3_o,11741
|
|
163
|
-
plotnine/stats/stat_bin.py,sha256=lpSL22f78mCMoVojuao_-EVNa4bTqfS5TRtZncPoRII,4590
|
|
164
|
-
plotnine/stats/stat_bin_2d.py,sha256=cT8YZ8LnY4ns0kz2kgANU_3-lh_1T-uadhFYNa_JIzY,5252
|
|
165
|
-
plotnine/stats/stat_bindot.py,sha256=EZb7IuXN1HaF6Su70VG-rKmQG9-Yc7xst8knFydIAXM,10290
|
|
166
|
-
plotnine/stats/stat_boxplot.py,sha256=bwvrDs4vusYztn1Ibc-PTa_Rqn0P9JdILSBgmPotU_M,6018
|
|
167
|
-
plotnine/stats/stat_count.py,sha256=JBCSHqHy5yA485pKVCqMCHRmJS5FOKinO4i6sKDnq7A,1993
|
|
168
|
-
plotnine/stats/stat_density.py,sha256=XlRYG89iXWGBOn_0YpCbmycGlxumgRTukA5A1DtWwwY,10400
|
|
169
|
-
plotnine/stats/stat_density_2d.py,sha256=KD2sllEeStiMCI2SljI_XW-zVksQGj3kmKYqHTNjgC8,5558
|
|
170
|
-
plotnine/stats/stat_ecdf.py,sha256=Ck5a9QBU3p1KuBS3Ma8JrXZr9a-tB1Z-53vhLirRIZw,1631
|
|
171
|
-
plotnine/stats/stat_ellipse.py,sha256=6fC6__kGLdrHVeM4KXnuDQcSnvSwhFy-n5EpStZS3J0,7502
|
|
172
|
-
plotnine/stats/stat_function.py,sha256=fGpgxRJXtU0GB_uB4UkrbxGYDucVBaOdoxESzGF3-pc,3156
|
|
173
|
-
plotnine/stats/stat_hull.py,sha256=tfoFAnTZG6NME3_22ltMPVcdmobrexTwNqhtZHc7tgk,1475
|
|
174
|
-
plotnine/stats/stat_identity.py,sha256=h9SV8TZ4bkOF0uaNXMidAKdMrqPSDugm1Z2fyKzU3n4,384
|
|
175
|
-
plotnine/stats/stat_pointdensity.py,sha256=Lnf6vsqVEs9FxgnB-zk_LnzLfMBvH8MV4KQWNj3i0Uo,2177
|
|
176
|
-
plotnine/stats/stat_qq.py,sha256=aDjfUHqyBFFErBAJ5E9LJZU8SVBJbCnXSUl2-AJ3DQg,2876
|
|
177
|
-
plotnine/stats/stat_qq_line.py,sha256=_J6XvNXQwChhwl4dDgKl1czLnZhm04jXp9xwylsIwsU,3305
|
|
178
|
-
plotnine/stats/stat_quantile.py,sha256=D-TC-c2Ul0eFggz688X0l6MaqDrVmCBMM3aviiLTpHc,2481
|
|
179
|
-
plotnine/stats/stat_sina.py,sha256=IAUxNoj001jctsSQaRiN81GpGFTeX35dqdWLMvnzIaA,9449
|
|
180
|
-
plotnine/stats/stat_smooth.py,sha256=hiJ5y7ai_qaFv8xxPeLs3BS6IPRvOy6Nor6SGA2H0wU,8016
|
|
181
|
-
plotnine/stats/stat_sum.py,sha256=CgxZlcwJ8t8gVojwSz55UEOKwDC0MfI5ISWrwDbqy4w,1655
|
|
182
|
-
plotnine/stats/stat_summary.py,sha256=RuuliRixo9c6sDnKmsQBXSJvfzkH2Oru7tyl88mpqzI,9289
|
|
183
|
-
plotnine/stats/stat_summary_bin.py,sha256=sf9NPmSzyJML4-EfHNLmDB_wSyi5o4RAXIiIZLgNy9Q,5710
|
|
184
|
-
plotnine/stats/stat_unique.py,sha256=7SXu_gb6h6YgLa1L-LM8hHe0jMZfcus4c_mEAN9zcWo,386
|
|
185
|
-
plotnine/stats/stat_ydensity.py,sha256=cuGZwpBdotGhOLYaK_W_JvJSjCht9W1eJpbzW69ZhOY,5686
|
|
186
|
-
plotnine/themes/__init__.py,sha256=tEKIF4gYmOF2Z1-_UDdK8zh41dLl-61HUGIhOQvki6I,916
|
|
187
|
-
plotnine/themes/seaborn_rcmod.py,sha256=Pi-UX5LyH9teSuteYpqPOEnfLgKUz01LnKDyDA7Aois,15502
|
|
188
|
-
plotnine/themes/targets.py,sha256=MjBRWWRgsLXXM_PJffPsV4DttQJB_m11jdD837BteuU,1686
|
|
189
|
-
plotnine/themes/theme.py,sha256=sMEDXgbqMNRCnkS3AXIqE_KXdXrXVjwf3r1Kr0WnE5E,16244
|
|
190
|
-
plotnine/themes/theme_538.py,sha256=6ZeIzzJ1VTgCMBYw4uprSjkS8GtcFvJmOIGjbm7h3Ok,1141
|
|
191
|
-
plotnine/themes/theme_bw.py,sha256=KDOqt5C6SYaxr05ngZoTmvGvgZVeCDFLWOpChcO-Hek,1077
|
|
192
|
-
plotnine/themes/theme_classic.py,sha256=B6QkU6blGnEY5iaiPtu4VsvFzC0peWSAhlKiC2SJSkM,923
|
|
193
|
-
plotnine/themes/theme_dark.py,sha256=RbdMfK9GW3q5XFIVgSe_OH-ozohSgjMoxMYqw40QZJ4,1335
|
|
194
|
-
plotnine/themes/theme_gray.py,sha256=9NVn5jOh_ypMbtnkICQk_v6GsL2gUzjal1xQKMHmwFk,5300
|
|
195
|
-
plotnine/themes/theme_light.py,sha256=-vFWjP_vBMnuThNxkhVJvT9rKtr0tXWcrHDKdI_G3Ic,1429
|
|
196
|
-
plotnine/themes/theme_linedraw.py,sha256=woMr18xoEJmsD8ZCiUpdyn-CE-P1AGFHRNapwCGWUjg,1350
|
|
197
|
-
plotnine/themes/theme_matplotlib.py,sha256=Dqjr4J68lPxaCxp6Xq9VthOOS5CZLit-pL3zMV24ZaA,4260
|
|
198
|
-
plotnine/themes/theme_minimal.py,sha256=YhkKNA48jP2OLa8-kHMfXFEFRjcsfWBLMID2orITrmo,884
|
|
199
|
-
plotnine/themes/theme_seaborn.py,sha256=l4lz5qD5CqhqBDgfQ61Mye3TX3f5aCHoHHx1Q04j-OI,4211
|
|
200
|
-
plotnine/themes/theme_tufte.py,sha256=qUOrZhQyfJgc0fmy8Es7tT7aYqUSzCjvkP7-dBilwHE,1926
|
|
201
|
-
plotnine/themes/theme_void.py,sha256=bU2REV9dI4x2kDIlPO6Oaq3E5di2cE8VDH-hRrnWEMc,3367
|
|
202
|
-
plotnine/themes/theme_xkcd.py,sha256=q3i1W97kBwpCRbR_Y609JxcfJA2cEX5e5iAS7flbF6I,2257
|
|
203
|
-
plotnine/themes/themeable.py,sha256=kYrk9Bq4274BD5cz1fGRgkdDwrvKhznrbhViXxl0PG0,69181
|
|
204
|
-
plotnine/themes/elements/__init__.py,sha256=Z9xHdhyWPNR2uF_P80aBEXYWp1DU-T2KGOuM7VimpbM,295
|
|
205
|
-
plotnine/themes/elements/element_base.py,sha256=D7cfEglzsSuhW91KpZVAZ2MAHWZp64r9Aajoh8uMGZ4,832
|
|
206
|
-
plotnine/themes/elements/element_blank.py,sha256=4r7-6HeR1494oWNIGQh0ASrFQ4SLvYa6aQHA85eH-Ds,187
|
|
207
|
-
plotnine/themes/elements/element_line.py,sha256=xF6xW-iA66YEP_fN7ooqaYry8_8qZT-eT5wvKwXg3to,1838
|
|
208
|
-
plotnine/themes/elements/element_rect.py,sha256=w5cLH-Sr4cTRXVdkRiu8kBqFt3TXHhIb1MUITfi89gE,1767
|
|
209
|
-
plotnine/themes/elements/element_text.py,sha256=8yhwBa9s9JKCtBcqcBNybbCGK6ieDnZv4SHiC4Sy2qc,6255
|
|
210
|
-
plotnine/themes/elements/margin.py,sha256=EsT46lqky7APHxMUDiNiTieNo_SIbHF-Sjhmf9zo4WY,2880
|
|
211
|
-
plotnine-0.15.0.dev3.dist-info/licenses/LICENSE,sha256=GY4tQiUd17Tq3wWR42Zs9MRTFOTf6ahIXhZTcwAdOeU,1082
|
|
212
|
-
plotnine-0.15.0.dev3.dist-info/METADATA,sha256=0Cwjkbtul-pvjlRpBQzRcLgAbr4G9rI3NLSu6sLhtgA,9289
|
|
213
|
-
plotnine-0.15.0.dev3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
214
|
-
plotnine-0.15.0.dev3.dist-info/top_level.txt,sha256=t340Mbko1ZbmvYPkQ81dIiPHcaQdTUszYz-bWUpr8ys,9
|
|
215
|
-
plotnine-0.15.0.dev3.dist-info/RECORD,,
|