plotnine 0.15.0.dev2__py3-none-any.whl → 0.15.1__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 +128 -83
- plotnine/_mpl/layout_manager/_layout_tree.py +761 -310
- plotnine/_mpl/layout_manager/_spaces.py +320 -103
- 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 +21 -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 +11 -2
- 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 +8 -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 +28 -8
- 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 +85 -0
- plotnine/mapping/aes.py +91 -72
- plotnine/mapping/evaluation.py +7 -65
- 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 +45 -14
- 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 +110 -32
- plotnine/typing.py +17 -6
- plotnine/watermark.py +3 -3
- {plotnine-0.15.0.dev2.dist-info → plotnine-0.15.1.dist-info}/METADATA +13 -6
- plotnine-0.15.1.dist-info/RECORD +221 -0
- {plotnine-0.15.0.dev2.dist-info → plotnine-0.15.1.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.dev2.dist-info/RECORD +0 -214
- /plotnine/{plot_composition → composition}/_plotspec.py +0 -0
- {plotnine-0.15.0.dev2.dist-info → plotnine-0.15.1.dist-info}/licenses/LICENSE +0 -0
- {plotnine-0.15.0.dev2.dist-info → plotnine-0.15.1.dist-info}/top_level.txt +0 -0
plotnine/themes/themeable.py
CHANGED
|
@@ -17,7 +17,7 @@ from warnings import warn
|
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
|
-
from .._utils import to_rgba
|
|
20
|
+
from .._utils import has_alpha_channel, to_rgba
|
|
21
21
|
from .._utils.registry import RegistryHierarchyMeta
|
|
22
22
|
from ..exceptions import PlotnineError, deprecated_themeable_name
|
|
23
23
|
from .elements import element_blank
|
|
@@ -377,6 +377,36 @@ class Themeables(dict[str, themeable]):
|
|
|
377
377
|
|
|
378
378
|
return default
|
|
379
379
|
|
|
380
|
+
def get_ha(self, name: str) -> float:
|
|
381
|
+
"""
|
|
382
|
+
Get the horizontal alignement of themeable as a float
|
|
383
|
+
|
|
384
|
+
The themeable should be and element_text
|
|
385
|
+
"""
|
|
386
|
+
lookup = {"left": 0.0, "center": 0.5, "right": 1.0}
|
|
387
|
+
ha: str | float = self.getp((name, "ha"), "center")
|
|
388
|
+
if isinstance(ha, str):
|
|
389
|
+
ha = lookup[ha]
|
|
390
|
+
return ha
|
|
391
|
+
|
|
392
|
+
def get_va(self, name) -> float:
|
|
393
|
+
"""
|
|
394
|
+
Get the vertical alignement of themeable as a float
|
|
395
|
+
|
|
396
|
+
The themeable should be and element_text
|
|
397
|
+
"""
|
|
398
|
+
lookup = {
|
|
399
|
+
"bottom": 0.0,
|
|
400
|
+
"center": 0.5,
|
|
401
|
+
"baseline": 0.5,
|
|
402
|
+
"center_baseline": 0.5,
|
|
403
|
+
"top": 1.0,
|
|
404
|
+
}
|
|
405
|
+
va: str | float = self.getp((name, "va"), "center")
|
|
406
|
+
if isinstance(va, str):
|
|
407
|
+
va = lookup[va]
|
|
408
|
+
return va
|
|
409
|
+
|
|
380
410
|
def property(self, name: str, key: str = "value") -> Any:
|
|
381
411
|
"""
|
|
382
412
|
Get the value a specific themeable(s) property
|
|
@@ -474,6 +504,25 @@ class MixinSequenceOfValues(themeable):
|
|
|
474
504
|
a.set(**{name: value})
|
|
475
505
|
|
|
476
506
|
|
|
507
|
+
def blend_alpha(
|
|
508
|
+
properties: dict[str, Any], key: str = "color"
|
|
509
|
+
) -> dict[str, Any]:
|
|
510
|
+
"""
|
|
511
|
+
Blend color with alpha
|
|
512
|
+
|
|
513
|
+
When setting color property values of matplotlib objects,
|
|
514
|
+
for a color with an alpha channel, we don't want the alpha
|
|
515
|
+
property if any to have any effect on that color.
|
|
516
|
+
"""
|
|
517
|
+
if (color := properties.get(key)) is not None:
|
|
518
|
+
if "alpha" in properties:
|
|
519
|
+
properties[key] = to_rgba(color, properties["alpha"])
|
|
520
|
+
properties["alpha"] = None
|
|
521
|
+
elif has_alpha_channel(color):
|
|
522
|
+
properties["alpha"] = None
|
|
523
|
+
return properties
|
|
524
|
+
|
|
525
|
+
|
|
477
526
|
# element_text themeables
|
|
478
527
|
|
|
479
528
|
|
|
@@ -729,18 +778,29 @@ class plot_tag(themeable):
|
|
|
729
778
|
|
|
730
779
|
Notes
|
|
731
780
|
-----
|
|
732
|
-
The `ha` & `va` of element_text
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
781
|
+
The `ha` & `va` of element_text have no effect in some cases. e.g.
|
|
782
|
+
if [](:class:`~plotnine.themes.themeable.plot_tag_position`) is "margin"
|
|
783
|
+
and the tag is at the top it cannot be vertically aligned.
|
|
784
|
+
|
|
785
|
+
Also `ha` & `va` can be floats if it makes sense to justify the tag
|
|
786
|
+
over a span. e.g. along the panel or plot, or when aligning with
|
|
787
|
+
other tags in a composition.
|
|
736
788
|
"""
|
|
737
789
|
|
|
738
790
|
_omit = ["margin"]
|
|
739
791
|
|
|
740
792
|
def apply_figure(self, figure: Figure, targets: ThemeTargets):
|
|
741
793
|
super().apply_figure(figure, targets)
|
|
794
|
+
props = self.properties
|
|
795
|
+
|
|
796
|
+
if "va" in props and not isinstance(props["va"], str):
|
|
797
|
+
del props["va"]
|
|
798
|
+
|
|
799
|
+
if "ha" in props and not isinstance(props["ha"], str):
|
|
800
|
+
del props["ha"]
|
|
801
|
+
|
|
742
802
|
if text := targets.plot_tag:
|
|
743
|
-
text.set(**
|
|
803
|
+
text.set(**props)
|
|
744
804
|
|
|
745
805
|
def blank_figure(self, figure: Figure, targets: ThemeTargets):
|
|
746
806
|
super().blank_figure(figure, targets)
|
|
@@ -811,7 +871,7 @@ class strip_text_x(MixinSequenceOfValues):
|
|
|
811
871
|
theme_element : element_text
|
|
812
872
|
"""
|
|
813
873
|
|
|
814
|
-
_omit = ["margin", "ha"]
|
|
874
|
+
_omit = ["margin", "ha", "va"]
|
|
815
875
|
|
|
816
876
|
def apply_figure(self, figure: Figure, targets: ThemeTargets):
|
|
817
877
|
super().apply_figure(figure, targets)
|
|
@@ -834,7 +894,7 @@ class strip_text_y(MixinSequenceOfValues):
|
|
|
834
894
|
theme_element : element_text
|
|
835
895
|
"""
|
|
836
896
|
|
|
837
|
-
_omit = ["margin", "va"]
|
|
897
|
+
_omit = ["margin", "ha", "va"]
|
|
838
898
|
|
|
839
899
|
def apply_figure(self, figure: Figure, targets: ThemeTargets):
|
|
840
900
|
super().apply_figure(figure, targets)
|
|
@@ -894,13 +954,28 @@ class axis_text_x(MixinSequenceOfValues):
|
|
|
894
954
|
|
|
895
955
|
def apply_ax(self, ax: Axes):
|
|
896
956
|
super().apply_ax(ax)
|
|
897
|
-
|
|
957
|
+
|
|
958
|
+
# TODO: Remove this code when the minimum matplotlib >= 3.10.0,
|
|
959
|
+
# and use the commented one below it
|
|
960
|
+
import matplotlib as mpl
|
|
961
|
+
from packaging import version
|
|
962
|
+
|
|
963
|
+
vinstalled = version.parse(mpl.__version__)
|
|
964
|
+
v310 = version.parse("3.10.0")
|
|
965
|
+
name = "labelbottom" if vinstalled >= v310 else "labelleft"
|
|
966
|
+
if not ax.xaxis.get_tick_params()[name]:
|
|
967
|
+
return
|
|
968
|
+
|
|
969
|
+
# if not ax.xaxis.get_tick_params()["labelbottom"]:
|
|
970
|
+
# return
|
|
971
|
+
|
|
972
|
+
labels = [t.label1 for t in ax.xaxis.get_major_ticks()]
|
|
973
|
+
self.set(labels)
|
|
898
974
|
|
|
899
975
|
def blank_ax(self, ax: Axes):
|
|
900
976
|
super().blank_ax(ax)
|
|
901
|
-
ax.xaxis.
|
|
902
|
-
|
|
903
|
-
)
|
|
977
|
+
for t in ax.xaxis.get_major_ticks():
|
|
978
|
+
t.label1.set_visible(False)
|
|
904
979
|
|
|
905
980
|
|
|
906
981
|
class axis_text_y(MixinSequenceOfValues):
|
|
@@ -927,13 +1002,17 @@ class axis_text_y(MixinSequenceOfValues):
|
|
|
927
1002
|
|
|
928
1003
|
def apply_ax(self, ax: Axes):
|
|
929
1004
|
super().apply_ax(ax)
|
|
930
|
-
|
|
1005
|
+
|
|
1006
|
+
if not ax.yaxis.get_tick_params()["labelleft"]:
|
|
1007
|
+
return
|
|
1008
|
+
|
|
1009
|
+
labels = [t.label1 for t in ax.yaxis.get_major_ticks()]
|
|
1010
|
+
self.set(labels)
|
|
931
1011
|
|
|
932
1012
|
def blank_ax(self, ax: Axes):
|
|
933
1013
|
super().blank_ax(ax)
|
|
934
|
-
ax.yaxis.
|
|
935
|
-
|
|
936
|
-
)
|
|
1014
|
+
for t in ax.yaxis.get_major_ticks():
|
|
1015
|
+
t.label1.set_visible(False)
|
|
937
1016
|
|
|
938
1017
|
|
|
939
1018
|
class axis_text(axis_text_x, axis_text_y):
|
|
@@ -1080,7 +1159,7 @@ class axis_ticks_minor_x(MixinSequenceOfValues):
|
|
|
1080
1159
|
# to invisible. Theming should not change those artists to visible,
|
|
1081
1160
|
# so we return early.
|
|
1082
1161
|
params = ax.xaxis.get_tick_params(which="minor")
|
|
1083
|
-
if not params.get("
|
|
1162
|
+
if not params.get("bottom", False):
|
|
1084
1163
|
return
|
|
1085
1164
|
|
|
1086
1165
|
# We have to use both
|
|
@@ -1306,7 +1385,7 @@ class panel_grid_major_x(themeable):
|
|
|
1306
1385
|
|
|
1307
1386
|
def apply_ax(self, ax: Axes):
|
|
1308
1387
|
super().apply_ax(ax)
|
|
1309
|
-
ax.xaxis.grid(which="major", **self.properties)
|
|
1388
|
+
ax.xaxis.grid(which="major", **blend_alpha(self.properties))
|
|
1310
1389
|
|
|
1311
1390
|
def blank_ax(self, ax: Axes):
|
|
1312
1391
|
super().blank_ax(ax)
|
|
@@ -1324,7 +1403,7 @@ class panel_grid_major_y(themeable):
|
|
|
1324
1403
|
|
|
1325
1404
|
def apply_ax(self, ax: Axes):
|
|
1326
1405
|
super().apply_ax(ax)
|
|
1327
|
-
ax.yaxis.grid(which="major", **self.properties)
|
|
1406
|
+
ax.yaxis.grid(which="major", **blend_alpha(self.properties))
|
|
1328
1407
|
|
|
1329
1408
|
def blank_ax(self, ax: Axes):
|
|
1330
1409
|
super().blank_ax(ax)
|
|
@@ -1448,8 +1527,13 @@ class legend_key(MixinSequenceOfValues):
|
|
|
1448
1527
|
def apply_figure(self, figure: Figure, targets: ThemeTargets):
|
|
1449
1528
|
super().apply_figure(figure, targets)
|
|
1450
1529
|
properties = self.properties
|
|
1530
|
+
edgecolor = properties.get("edgecolor", None)
|
|
1531
|
+
|
|
1532
|
+
if isinstance(self, rect) and edgecolor:
|
|
1533
|
+
del properties["edgecolor"]
|
|
1534
|
+
|
|
1451
1535
|
# Prevent invisible strokes from having any effect
|
|
1452
|
-
if
|
|
1536
|
+
if edgecolor in ("none", "None"):
|
|
1453
1537
|
properties["linewidth"] = 0
|
|
1454
1538
|
|
|
1455
1539
|
rects = [da.patch for da in targets.legend_key]
|
|
@@ -1533,7 +1617,7 @@ class legend_box_background(themeable):
|
|
|
1533
1617
|
"""
|
|
1534
1618
|
|
|
1535
1619
|
|
|
1536
|
-
class panel_background(
|
|
1620
|
+
class panel_background(legend_key):
|
|
1537
1621
|
"""
|
|
1538
1622
|
Panel background
|
|
1539
1623
|
|
|
@@ -1542,13 +1626,12 @@ class panel_background(themeable):
|
|
|
1542
1626
|
theme_element : element_rect
|
|
1543
1627
|
"""
|
|
1544
1628
|
|
|
1629
|
+
def apply_figure(self, figure: Figure, targets: ThemeTargets):
|
|
1630
|
+
super().apply_figure(figure, targets)
|
|
1631
|
+
|
|
1545
1632
|
def apply_ax(self, ax: Axes):
|
|
1546
1633
|
super().apply_ax(ax)
|
|
1547
|
-
d = self.properties
|
|
1548
|
-
if "facecolor" in d and "alpha" in d:
|
|
1549
|
-
d["facecolor"] = to_rgba(d["facecolor"], d["alpha"])
|
|
1550
|
-
del d["alpha"]
|
|
1551
|
-
|
|
1634
|
+
d = blend_alpha(self.properties, "facecolor")
|
|
1552
1635
|
d["edgecolor"] = "none"
|
|
1553
1636
|
d["linewidth"] = 0
|
|
1554
1637
|
ax.patch.set(**d)
|
|
@@ -1574,16 +1657,12 @@ class panel_border(MixinSequenceOfValues):
|
|
|
1574
1657
|
if not (rects := targets.panel_border):
|
|
1575
1658
|
return
|
|
1576
1659
|
|
|
1577
|
-
d = self.properties
|
|
1660
|
+
d = blend_alpha(self.properties, "edgecolor")
|
|
1578
1661
|
|
|
1579
1662
|
with suppress(KeyError):
|
|
1580
1663
|
if d["edgecolor"] == "none" or d["size"] == 0:
|
|
1581
1664
|
return
|
|
1582
1665
|
|
|
1583
|
-
if "edgecolor" in d and "alpha" in d:
|
|
1584
|
-
d["edgecolor"] = to_rgba(d["edgecolor"], d["alpha"])
|
|
1585
|
-
del d["alpha"]
|
|
1586
|
-
|
|
1587
1666
|
self.set(rects, d)
|
|
1588
1667
|
|
|
1589
1668
|
def blank_figure(self, figure: Figure, targets: ThemeTargets):
|
|
@@ -1663,7 +1742,6 @@ class strip_background(strip_background_x, strip_background_y):
|
|
|
1663
1742
|
|
|
1664
1743
|
|
|
1665
1744
|
class rect(
|
|
1666
|
-
legend_key,
|
|
1667
1745
|
legend_frame,
|
|
1668
1746
|
legend_background,
|
|
1669
1747
|
panel_background,
|
plotnine/typing.py
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import sys
|
|
4
|
-
from datetime import datetime, timedelta
|
|
5
3
|
from typing import (
|
|
6
|
-
TYPE_CHECKING,
|
|
7
4
|
Any,
|
|
8
5
|
Callable,
|
|
9
6
|
Literal,
|
|
7
|
+
NotRequired,
|
|
10
8
|
Protocol,
|
|
11
9
|
Sequence,
|
|
10
|
+
TypedDict,
|
|
12
11
|
TypeVar,
|
|
13
12
|
)
|
|
14
13
|
|
|
@@ -80,7 +79,7 @@ FacetSpaceRatios: TypeAlias = dict[Literal["x", "y"], Sequence[float]]
|
|
|
80
79
|
|
|
81
80
|
StripPosition: TypeAlias = Literal["top", "right"]
|
|
82
81
|
|
|
83
|
-
|
|
82
|
+
# Scales
|
|
84
83
|
|
|
85
84
|
# Name names of scaled aesthetics
|
|
86
85
|
ScaledAestheticsName: TypeAlias = Literal[
|
|
@@ -110,11 +109,11 @@ ScaledAestheticsName: TypeAlias = Literal[
|
|
|
110
109
|
"upper",
|
|
111
110
|
]
|
|
112
111
|
|
|
113
|
-
|
|
112
|
+
# Coords
|
|
114
113
|
CoordRange: TypeAlias = tuple[float, float]
|
|
115
114
|
|
|
116
115
|
# Guide
|
|
117
|
-
|
|
116
|
+
Side: TypeAlias = Literal["left", "right", "top", "bottom"]
|
|
118
117
|
LegendPosition: TypeAlias = (
|
|
119
118
|
Literal["left", "right", "top", "bottom", "inside"] | tuple[float, float]
|
|
120
119
|
)
|
|
@@ -142,3 +141,15 @@ class PTransform(Protocol):
|
|
|
142
141
|
"""
|
|
143
142
|
|
|
144
143
|
def __call__(self, x: TFloatArrayLike) -> TFloatArrayLike: ...
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class DisplayMetadata(TypedDict):
|
|
147
|
+
"""
|
|
148
|
+
Metadata for the IPython output
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
width: NotRequired[int]
|
|
152
|
+
height: NotRequired[int]
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
MimeBundle: TypeAlias = tuple[dict[str, bytes], dict[str, DisplayMetadata]]
|
plotnine/watermark.py
CHANGED
|
@@ -50,12 +50,12 @@ class watermark:
|
|
|
50
50
|
kwargs["zorder"] = 99.9
|
|
51
51
|
self.kwargs = kwargs
|
|
52
52
|
|
|
53
|
-
def __radd__(self,
|
|
53
|
+
def __radd__(self, other: p9.ggplot) -> p9.ggplot:
|
|
54
54
|
"""
|
|
55
55
|
Add watermark to ggplot object
|
|
56
56
|
"""
|
|
57
|
-
|
|
58
|
-
return
|
|
57
|
+
other.watermarks.append(self)
|
|
58
|
+
return other
|
|
59
59
|
|
|
60
60
|
def draw(self, figure: matplotlib.figure.Figure):
|
|
61
61
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plotnine
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.1
|
|
4
4
|
Summary: A Grammar of Graphics for Python
|
|
5
5
|
Author-email: Hassan Kibirige <has2k1@gmail.com>
|
|
6
6
|
License: The MIT License (MIT)
|
|
@@ -46,10 +46,10 @@ Description-Content-Type: text/markdown
|
|
|
46
46
|
License-File: LICENSE
|
|
47
47
|
Requires-Dist: matplotlib>=3.8.0
|
|
48
48
|
Requires-Dist: pandas>=2.2.0
|
|
49
|
-
Requires-Dist: mizani~=0.
|
|
49
|
+
Requires-Dist: mizani~=0.14.0
|
|
50
50
|
Requires-Dist: numpy>=1.23.5
|
|
51
51
|
Requires-Dist: scipy>=1.8.0
|
|
52
|
-
Requires-Dist: statsmodels>=0.14.
|
|
52
|
+
Requires-Dist: statsmodels>=0.14.5
|
|
53
53
|
Provides-Extra: all
|
|
54
54
|
Requires-Dist: plotnine[extra]; extra == "all"
|
|
55
55
|
Requires-Dist: plotnine[doc]; extra == "all"
|
|
@@ -60,11 +60,13 @@ Requires-Dist: plotnine[dev]; extra == "all"
|
|
|
60
60
|
Provides-Extra: extra
|
|
61
61
|
Requires-Dist: adjustText>=1.2.0; extra == "extra"
|
|
62
62
|
Requires-Dist: geopandas>=1.0.0; extra == "extra"
|
|
63
|
-
Requires-Dist:
|
|
63
|
+
Requires-Dist: geodatasets>=2024.8.0; extra == "extra"
|
|
64
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "extra"
|
|
64
65
|
Requires-Dist: scikit-misc>=0.5.1; extra == "extra"
|
|
66
|
+
Requires-Dist: polars>=1.24.0; extra == "extra"
|
|
67
|
+
Requires-Dist: pyarrow>=19.0.1; extra == "extra"
|
|
65
68
|
Provides-Extra: doc
|
|
66
69
|
Requires-Dist: jupyter; extra == "doc"
|
|
67
|
-
Requires-Dist: nbsphinx; extra == "doc"
|
|
68
70
|
Requires-Dist: click; extra == "doc"
|
|
69
71
|
Requires-Dist: numpydoc>=0.9.1; extra == "doc"
|
|
70
72
|
Requires-Dist: quartodoc>=0.7.2; extra == "doc"
|
|
@@ -80,7 +82,7 @@ Requires-Dist: twine; extra == "dev"
|
|
|
80
82
|
Requires-Dist: plotnine[typing]; extra == "dev"
|
|
81
83
|
Requires-Dist: pre-commit; extra == "dev"
|
|
82
84
|
Provides-Extra: typing
|
|
83
|
-
Requires-Dist: pyright==1.1.
|
|
85
|
+
Requires-Dist: pyright==1.1.404; extra == "typing"
|
|
84
86
|
Requires-Dist: ipython; extra == "typing"
|
|
85
87
|
Requires-Dist: pandas-stubs; extra == "typing"
|
|
86
88
|
Dynamic: license-file
|
|
@@ -214,6 +216,11 @@ $ pip install 'plotnine[all]' # 6. everything
|
|
|
214
216
|
|
|
215
217
|
# Or using conda
|
|
216
218
|
$ conda install -c conda-forge plotnine
|
|
219
|
+
|
|
220
|
+
# Or using pixi
|
|
221
|
+
$ pixi init name-of-my-project
|
|
222
|
+
$ cd name-of-my-project
|
|
223
|
+
$ pixi add python plotnine
|
|
217
224
|
```
|
|
218
225
|
|
|
219
226
|
Development version
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
plotnine/__init__.py,sha256=_Q18ZKrippC4L27KdYUhuJon95AE8JPZXEYeXZyutms,10372
|
|
2
|
+
plotnine/animation.py,sha256=izJZ4Gy0cBHEBc8ehofsWSWOzZW8UEroy1Uvw86Igb0,7521
|
|
3
|
+
plotnine/doctools.py,sha256=JBF55q1MX2fXYQcGDpVrGPdlKf5OiQ5gyTdWhnM_IzU,14558
|
|
4
|
+
plotnine/exceptions.py,sha256=SgTxBHkV65HjGI3aFy2q1_lHP9HAdiuxVLN3U-PJWSQ,1616
|
|
5
|
+
plotnine/ggplot.py,sha256=Ns8VURuRXNCWMF2OZcaN3rezw-i-Ceq5YTb-AUB3rJs,24286
|
|
6
|
+
plotnine/helpers.py,sha256=4R3KZmtGH46-kRNSGOA0JxZaLKBo0ge8Vnx1cDQ8_gI,966
|
|
7
|
+
plotnine/iapi.py,sha256=jNLmUSoh5g9kNdhOoXSqNcqOdd2-6xdWAmst-YGU41U,9095
|
|
8
|
+
plotnine/labels.py,sha256=3pOXth2Xma_qCqB_xXAGIkPQ9gcaUaaFEAsa5if1iR0,2830
|
|
9
|
+
plotnine/layer.py,sha256=l9ehqvWoDpaZdVFLGoiA5USL79NYWWaiZM_ZuDeGzpo,17294
|
|
10
|
+
plotnine/options.py,sha256=j3zXv4wc3J4nOI_TqJ5s_abuifodt_UN8MR8M4i8UVA,3108
|
|
11
|
+
plotnine/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
plotnine/qplot.py,sha256=BSAb4u5I7PaPGofkAgx7brdCNTjMZvC_TDGHVUZ35xM,7384
|
|
13
|
+
plotnine/typing.py,sha256=rcU2mkm-kdUMPaI4g7f1K9Ru6lXed8rrCPZxQD2_YI0,3976
|
|
14
|
+
plotnine/watermark.py,sha256=JJnqNynytg7dzu88jX4OymnyhY-kmSj62gFTOoqXrhM,1509
|
|
15
|
+
plotnine/_mpl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
plotnine/_mpl/gridspec.py,sha256=OvlXchYXam1c1n8iNPKu4fJr6rqmH7OWebhJX5qqOmY,7903
|
|
17
|
+
plotnine/_mpl/offsetbox.py,sha256=E7810lS9W7Gexwz5mkSMz7PQXXHkYX-WHKlPHqapmTg,3216
|
|
18
|
+
plotnine/_mpl/patches.py,sha256=rYWAZHhTGi1B_dFfVI9JsrYgioum7aQjGwpNh1Q0tKg,3838
|
|
19
|
+
plotnine/_mpl/text.py,sha256=HpTcdSCXOFGdW8Yz5Go-6KRP6FoNNmWMB85vmbBqKnQ,6571
|
|
20
|
+
plotnine/_mpl/ticker.py,sha256=RY_7AdTggc7QBq9_t0KBJXg36oxKfB-Vtc9FzLnaGnQ,393
|
|
21
|
+
plotnine/_mpl/transforms.py,sha256=DNaOlNq76xlT696sN8ot1bmYyp4mmrjXQHk3kTi4HIg,76
|
|
22
|
+
plotnine/_mpl/utils.py,sha256=0GY3CWWXZiNHe333v9GAquRe5naO54JeiPt67-UvVYw,4147
|
|
23
|
+
plotnine/_mpl/layout_manager/__init__.py,sha256=IXpPF5Oycc45uFpK4MJ6kcQCe1u5VUfnHLNZGcnrJCg,157
|
|
24
|
+
plotnine/_mpl/layout_manager/_engine.py,sha256=yOAEyv2n5KGt_oD8LYTS1GKJKczsNuWloGrscIblIjc,2804
|
|
25
|
+
plotnine/_mpl/layout_manager/_layout_items.py,sha256=QikIoiYKDDfy2mrX9rZUIqD7Cy0ihfOyZHEs1ajF4CA,29710
|
|
26
|
+
plotnine/_mpl/layout_manager/_layout_tree.py,sha256=xJTPkhKcOY21qOBfFrxuDr1Xu5_kmgiIqReVLCf5Lyo,32065
|
|
27
|
+
plotnine/_mpl/layout_manager/_spaces.py,sha256=5gSfYSoymH5prauGq1h9MZG4IlBbzd0-cSaS5RedMyU,38290
|
|
28
|
+
plotnine/_utils/__init__.py,sha256=3tcSTng6Mtk1o6NPEikALHKD3ZGuAYofjQJREHX84a4,30992
|
|
29
|
+
plotnine/_utils/context.py,sha256=FLKPhltYqkZRvzufG2WxXV0sMnZxNXqqZyb3nrnsFyY,3906
|
|
30
|
+
plotnine/_utils/dev.py,sha256=0qgRbMhcd4dfuLuYxx0skocKAtfwHF02ntyILRBogbg,1629
|
|
31
|
+
plotnine/_utils/ipython.py,sha256=r5JfBCO9BEqXHoP5JGxxYdGTj5zuLNs44kdLhTz5o2o,1684
|
|
32
|
+
plotnine/_utils/quarto.py,sha256=oHYZ2p5G5i-72fx7WCBBtxa_1uXVx9_NvTBoB4TS46A,1541
|
|
33
|
+
plotnine/_utils/registry.py,sha256=HoiB2NnbEHufXjYnVJyrJKflk2RwKtTYk2L3n7tH4XA,3321
|
|
34
|
+
plotnine/_utils/yippie.py,sha256=DbmxvVrd34P24CCmOZrAulyGQ35rXNaSr8BuutS2Uio,2392
|
|
35
|
+
plotnine/composition/__init__.py,sha256=yJSYKBDmHw9viTijLRaczD3LNpjOtx9nRGPg3PNIvpA,198
|
|
36
|
+
plotnine/composition/_beside.py,sha256=Y7RVwYZAZClH1E206kS0BLcxaSvBtZG1ds6bR5Dj-PY,1275
|
|
37
|
+
plotnine/composition/_compose.py,sha256=t5fFl81d3fpIiz2yioJJ64xCZihmP9M5ICUeKNCNoIE,13322
|
|
38
|
+
plotnine/composition/_plot_spacer.py,sha256=Fm3kxOtV1R8EMqBDbBKs6WArWVg144-fixWvDoOFFOg,1806
|
|
39
|
+
plotnine/composition/_plotspec.py,sha256=0F7q7PjDMDqcallpnBdX3N2iSRjdBTyjSvMFf83uvPU,1015
|
|
40
|
+
plotnine/composition/_stack.py,sha256=K7IY2Xz3PkRM2bTnfj_-t0BpMbzxitypoNdAchQbgMw,1292
|
|
41
|
+
plotnine/coords/__init__.py,sha256=inM-9JwSPvYLlOy6opye0YV2EGWsI4708wGKdHvQvVM,301
|
|
42
|
+
plotnine/coords/coord.py,sha256=Yu2xj4BqFBWlS0XHNDa6h8Dek0_PA6Lssv3M9EneSB8,6883
|
|
43
|
+
plotnine/coords/coord_cartesian.py,sha256=vGeSFe9UyycUkbjdjoPNSQJwnnU7fEmsk0nl_oBvzxY,3038
|
|
44
|
+
plotnine/coords/coord_fixed.py,sha256=C9aIy28GQHE4XJQ3I1LhnHviUmhBia7dk64eBVNftLw,1763
|
|
45
|
+
plotnine/coords/coord_flip.py,sha256=lskU4t72pMmtWL16slw3CV8bLPfTNONCmO_A1d0g5Rs,2891
|
|
46
|
+
plotnine/coords/coord_trans.py,sha256=g6Scq9q_78bHBV6McHMQfFM4KPBVcz9bjpnNx7eMyz0,4750
|
|
47
|
+
plotnine/data/__init__.py,sha256=RBpXrBruEvTmtkDVPAZOhs6AK_BQpUXuC0Gu33c9lbc,22303
|
|
48
|
+
plotnine/data/anscombe-quartet.csv,sha256=7Lu2MgXHbr5-iGSlBEcRWKBK6F_49pUzeiOqfzPk5Ws,468
|
|
49
|
+
plotnine/data/diamonds.csv,sha256=lXRzCwOrokHYmcSpdRHFBhsZNY-riVEHdPtsJBaDRcQ,2772143
|
|
50
|
+
plotnine/data/economics.csv,sha256=cWSbwFV6yqb7jYiKrwSCY-rz43icVHwQ_7fVXGksQeM,21860
|
|
51
|
+
plotnine/data/economics_long.csv,sha256=ukh3n2MqY_rPEeNYy1PgryqJZfeS2AEKjSddnVJ0rdg,123339
|
|
52
|
+
plotnine/data/faithful.csv,sha256=Xfz0Idy0fV62rkE7nRnO6cRn0NhRrWaWy4ovnGEdZ60,2470
|
|
53
|
+
plotnine/data/faithfuld.csv,sha256=U2LleBDYmogQb_kDeil2v__YHUCubh8bgzFjyrOdIg4,298297
|
|
54
|
+
plotnine/data/huron.csv,sha256=Sl2-tTPUj4rNEgm8qfF3UIquLAEjQaWShYgv8_gDYLk,1678
|
|
55
|
+
plotnine/data/luv_colours.csv,sha256=L-c3aEHMJPZNcdDKqqU0b90W5FM4UtbEe-Np29LOKRQ,39004
|
|
56
|
+
plotnine/data/meat.csv,sha256=tYfB51iuQ9h_6G-sDvxz2kCq6vQEbro3D3D87VVFZKU,46284
|
|
57
|
+
plotnine/data/midwest.csv,sha256=FOhp7_w4R-gHqCZJlM5c59-RNbiV07WaIt881IKPt0A,98022
|
|
58
|
+
plotnine/data/mpg.csv,sha256=FpX7FxpCJOxfkCZS9ghMRr1Sisv1Anj4O6gQTON0Mzw,16046
|
|
59
|
+
plotnine/data/msleep.csv,sha256=Cm5ArhLjOFXbU5Ubo3slSyZgv36TCjMECQY9L9dY2GM,6773
|
|
60
|
+
plotnine/data/mtcars.csv,sha256=CnukZ_Qy9KxNmHb_RBhBj4J5WefTIWNMBmr-PQqxkaQ,1787
|
|
61
|
+
plotnine/data/pageviews.csv,sha256=Ydz7c4NO6AqLqJOxR2_9y2QRFtRV0q2xvSUby6siwTk,13559
|
|
62
|
+
plotnine/data/penguins.csv,sha256=GGendqgzed9CGfInux7_uWfaEq2xNzISfIyNEgQ0wps,15203
|
|
63
|
+
plotnine/data/presidential.csv,sha256=jkUSy3wUSYpo1Vdj90U8ivSE1TLL_ztxvtqIVa7C1Wc,511
|
|
64
|
+
plotnine/data/seals.csv,sha256=VEuSEBLz3Fj14eBdM6hp6M6GpH2lqN5ekT_d2Mk1rK0,57035
|
|
65
|
+
plotnine/data/txhousing.csv,sha256=RdHoH5W9bud_DzsefIc8yNOFaxMl6IDDKMiP68aoIoY,523993
|
|
66
|
+
plotnine/facets/__init__.py,sha256=9P2MBA8MF1cRpk7YRQUcYN2UY7kZ9qrZc_0Qm9SRguk,393
|
|
67
|
+
plotnine/facets/facet.py,sha256=zPzRMC6gupDW06vuD_WsNdtCE5QgUnXuNMuXXyuwfx0,18190
|
|
68
|
+
plotnine/facets/facet_grid.py,sha256=sK50Syzt2sy5aE3hObBC4TdQwCwyY-EtDUK2_B6aDnM,11755
|
|
69
|
+
plotnine/facets/facet_null.py,sha256=J--RdOvFP7AE0jK79-LNRksvCJExQTpS-tU5i0pGqs8,749
|
|
70
|
+
plotnine/facets/facet_wrap.py,sha256=NOoNdkaSb1y_ho6UygGkDih7zlQYXcEgJYK0Lqu6e98,8805
|
|
71
|
+
plotnine/facets/labelling.py,sha256=JEuwERTK0IfmxTWHbl2nsGgxZ6xi0n2TTWT4_OSfQcQ,8833
|
|
72
|
+
plotnine/facets/layout.py,sha256=TIkMChA0wJWLKN31PH0czS6CN4pw3o--PF49LakJ2h4,8967
|
|
73
|
+
plotnine/facets/strips.py,sha256=-SWFaxqdzn-dnjx_Hxkuwd3kO-u_yreMLcMurm_IHqU,5688
|
|
74
|
+
plotnine/geoms/__init__.py,sha256=HEfhNmmNH4xm4rpXnFRXY4eLkJha3XPM72IIwVjv5Lc,2697
|
|
75
|
+
plotnine/geoms/annotate.py,sha256=T5RxepV55HVNzPfkq43BWxduNIZPslRfPD1yx4bJtoo,4165
|
|
76
|
+
plotnine/geoms/annotation_logticks.py,sha256=6iGdo5szck0_nXdHnvMaRMZuRbH8Tg87tJ_aan_frqg,8969
|
|
77
|
+
plotnine/geoms/annotation_stripes.py,sha256=4Cw7TJ4SZChm_ioqfiiku0cPNnLruGuAP-4vyRao-9Y,6080
|
|
78
|
+
plotnine/geoms/geom.py,sha256=ayhBEoPc-9MLpu18HkwLoby4NIKC68ED4Pq0ioa4I9c,17687
|
|
79
|
+
plotnine/geoms/geom_abline.py,sha256=6oxAJl_yFKKmf7OTHvACw6fg6kgJEN54hGKkyWOLr6o,3188
|
|
80
|
+
plotnine/geoms/geom_area.py,sha256=QtS9NO17v-i5gvfakN8L96xwjt3dFuyZdYN8oXaXWOY,818
|
|
81
|
+
plotnine/geoms/geom_bar.py,sha256=-fMfgoO4NmHqoWZy8P-kGJxHY6wMPOlT1DT011x2mdU,1794
|
|
82
|
+
plotnine/geoms/geom_bin_2d.py,sha256=A4mBOEiyqJZN0EOhFkOK3diUbsgNlTw3jixVfPWmN-A,662
|
|
83
|
+
plotnine/geoms/geom_blank.py,sha256=38BpE9iSh3ktbOe9ayNer6IDD1q7E4EiKS_KnFSko0c,770
|
|
84
|
+
plotnine/geoms/geom_boxplot.py,sha256=mKp9iH2Zet9cXlTCwxfdv73Y057lvWBCs3P_7q7Adrg,9869
|
|
85
|
+
plotnine/geoms/geom_col.py,sha256=KCpme3vsc_tTbjGvL7ZhJZ4KFrQDQw3K8JyO6EBFn4E,1187
|
|
86
|
+
plotnine/geoms/geom_count.py,sha256=BkzQJFGf7z6lJ0fCrKDUqdGVo0GBwMUjOi3QVdvwEyQ,598
|
|
87
|
+
plotnine/geoms/geom_crossbar.py,sha256=0NGUY4fhL8VxpGaBgjKQNJy85XJeLc6GiPCs5LZQuCc,6242
|
|
88
|
+
plotnine/geoms/geom_density.py,sha256=UwUkJxI79L3z19tmoSI6ZYs418XTbRznd-Abzrec3VY,526
|
|
89
|
+
plotnine/geoms/geom_density_2d.py,sha256=9_FnLLRj0Z6DtttUYTOi7mx5bkZSxOTb6PbfuxfnILE,494
|
|
90
|
+
plotnine/geoms/geom_dotplot.py,sha256=NPeZ2jiDbUFgnpDTLOqtOxYBrtgzDQhq_oohhlXD2nc,8718
|
|
91
|
+
plotnine/geoms/geom_errorbar.py,sha256=jpCuQ8CE2RKfRR8Aw_3s473HXrOk-WPOl46n4oC-8UI,2199
|
|
92
|
+
plotnine/geoms/geom_errorbarh.py,sha256=mgRo8KngGyKVSPPF8vUYlzdslBJEIe9QJC--DlWL5t4,2213
|
|
93
|
+
plotnine/geoms/geom_freqpoly.py,sha256=lsr1dwZyR6gUbzl5SNJ5yYklsWGjkqYYAe3Mb8AWynk,339
|
|
94
|
+
plotnine/geoms/geom_histogram.py,sha256=rHtwpW2HNnxSwAXmZNoAVuB7qJsbETkrnCxFR7nJqqQ,367
|
|
95
|
+
plotnine/geoms/geom_hline.py,sha256=uMYBDkfshx2tskuZpjvo9N9Ztqt7AUxuaYFhMxeHi5c,2481
|
|
96
|
+
plotnine/geoms/geom_jitter.py,sha256=mJCLt2SoZN_tx_3XS8oF5JojtL2m5HO1bEqdN-JEPUg,2291
|
|
97
|
+
plotnine/geoms/geom_label.py,sha256=lPxmDlS6VgEHqD3Ac1Q-Zxs75JcnduoXjJ_D1AzzWew,2835
|
|
98
|
+
plotnine/geoms/geom_line.py,sha256=IzKVPwF_Oe3uwRpuh5Xu9LFvz0XcKqCL4pN03iGHBdk,522
|
|
99
|
+
plotnine/geoms/geom_linerange.py,sha256=dkgQ28YZfjyMb_y8s0wfcAz5mHF7f7y_h1Den5wHyJk,1282
|
|
100
|
+
plotnine/geoms/geom_map.py,sha256=tvzFVNOtSOfof1NQFduB8SV143o2irNsQrM8BgYiEKU,9602
|
|
101
|
+
plotnine/geoms/geom_path.py,sha256=nDrlmqPn869vyUF4RYbLKkbQka14SWJu9pqCN-cdKbQ,17106
|
|
102
|
+
plotnine/geoms/geom_point.py,sha256=KWM511zxIpKQzxI_NJpFqEszNWg5E7iHZJylKvvaK2c,4607
|
|
103
|
+
plotnine/geoms/geom_pointdensity.py,sha256=mVVy4IvWrQJroBv9Dw4dNfmI_NTxJNxReJwtXyb1ONU,468
|
|
104
|
+
plotnine/geoms/geom_pointrange.py,sha256=C746lDJfRe4M5k8sobEjaer_1IE60ZqIgs2cvq6Q3bY,2607
|
|
105
|
+
plotnine/geoms/geom_polygon.py,sha256=c6Ba9mvCMvY11FZfZATF78byuL7JMCqx3DEMMJBNfTE,4149
|
|
106
|
+
plotnine/geoms/geom_qq.py,sha256=CbNHewv2YM6VX3J9ysCP26E89lzH2MxUcYYsaaneKk4,380
|
|
107
|
+
plotnine/geoms/geom_qq_line.py,sha256=tn4M8whkIjMLLbz18jrtAFyR5OkGrNkOY2ZQty-d3tY,428
|
|
108
|
+
plotnine/geoms/geom_quantile.py,sha256=tS6zTO10DBdVz-lGU_E3JO-JI3VYIymWjZYlEkZK3sE,898
|
|
109
|
+
plotnine/geoms/geom_raster.py,sha256=eBhTkb_ybxuCKSExEm0Np5UAyBmj9qdDey8Ui9Xb1gs,6266
|
|
110
|
+
plotnine/geoms/geom_rect.py,sha256=dGOAkVXf5NSJgIbaVezg1ac78GqimElB9Ua0L_SH_YM,3717
|
|
111
|
+
plotnine/geoms/geom_ribbon.py,sha256=af9uElWaJQSc4taTLZ7ZDzng2Zw4IrIfNPrus4OuTmM,5771
|
|
112
|
+
plotnine/geoms/geom_rug.py,sha256=2Sdarf5z3w4JbklVUk7JykWdbBNKaT0Wl5NMBl4LqT4,3520
|
|
113
|
+
plotnine/geoms/geom_segment.py,sha256=v63MoKlK4aNengCXYdPeQrcBIgBCis8QobpF3CJOf5U,3052
|
|
114
|
+
plotnine/geoms/geom_sina.py,sha256=G1K8TCC_de5VFHHFCOICVDZ71Dy-raRZiZt6y1Z0ktw,950
|
|
115
|
+
plotnine/geoms/geom_smooth.py,sha256=7L7HdJCU2a63KGRs1RQnZ-c96Z63e-C7Znm43aWR3kE,3635
|
|
116
|
+
plotnine/geoms/geom_spoke.py,sha256=s-kug0H-YGhyjso9W43XvzJf9-g6inh8zzuSFeXzSaU,977
|
|
117
|
+
plotnine/geoms/geom_step.py,sha256=tTohADfGyC3M4zCzxLUhzkA2XsHBeH0eaWq-m2DQEQQ,2371
|
|
118
|
+
plotnine/geoms/geom_text.py,sha256=fOGjIZL5ajB78su5lUGBo_uPa-NvTCaPo640oEbJE_4,11884
|
|
119
|
+
plotnine/geoms/geom_tile.py,sha256=3x9BSxaSr-ys6N5R2wY8B9fNiyV9vMdoXbjIDqHy_ng,1431
|
|
120
|
+
plotnine/geoms/geom_violin.py,sha256=ftrbmzvSEANPCdj7lgi7_HAoVHrGt3rI7z0rHL0iZ3Y,7214
|
|
121
|
+
plotnine/geoms/geom_vline.py,sha256=NTrKu5wpcoiWRtcVVY5Q3xQEBmp1q4DgBgHzwTbfmOA,3387
|
|
122
|
+
plotnine/guides/__init__.py,sha256=ulI-mDhtq3jAQEAqPv8clrn3UHGFOu3xRuO7jXlq-LY,201
|
|
123
|
+
plotnine/guides/guide.py,sha256=CHz0SnfrSqKCl4aHmkM2r5YFITsa1XVDcaglW3nuIt4,8149
|
|
124
|
+
plotnine/guides/guide_axis.py,sha256=zG_5Ot1kTuHOeuQspL5V1A1-7c7X8cNeMDoF01Ghh2w,296
|
|
125
|
+
plotnine/guides/guide_colorbar.py,sha256=gL0218k3iJPNEpj6hWKxau3R8qRpT2bPkS1q9Ptcrxw,16266
|
|
126
|
+
plotnine/guides/guide_legend.py,sha256=CrcV3iCAcEfUnSbkGtsS31c3OFQMWKiHqZZXejxOdno,14212
|
|
127
|
+
plotnine/guides/guides.py,sha256=cV7CwoYNrjkeaDHZ2AGcS2Dij5RpPovSiB-v47E7vhQ,15471
|
|
128
|
+
plotnine/mapping/__init__.py,sha256=DLu9E0kwwuHxzTUenoVjCNTTdkWMwIDtkExLleBq1MI,205
|
|
129
|
+
plotnine/mapping/_atomic.py,sha256=TbobHVJlHRoSHibi6OOWMVM2J1r_kKQJMS6G5zvEhrg,4029
|
|
130
|
+
plotnine/mapping/_env.py,sha256=PrPOW1hypspyd_kFdnepfn5NIC2n_E7CZfPLqp0E_1U,6374
|
|
131
|
+
plotnine/mapping/_eval_environment.py,sha256=PTrnnqrxMXqjt23t2NGRcU9i8Jie3ZaMe6W5aKtI7bI,2502
|
|
132
|
+
plotnine/mapping/aes.py,sha256=zQgWagmoEsykSOf1eMK2QNaofAmoyshZasqs7EOiMhg,16815
|
|
133
|
+
plotnine/mapping/evaluation.py,sha256=kblTxVv3M4xIGnHyReUU0RtmmIN77Or2JBcci0nGGfE,5913
|
|
134
|
+
plotnine/positions/__init__.py,sha256=DQZE6duMUNRQifpa6SBrOKxZpGDk4NqQSGZLr9Yc9GI,595
|
|
135
|
+
plotnine/positions/position.py,sha256=BRD_dUh9dhdSP4SQfl8_u_VpaY_s3A2zuznwOn5M_80,8325
|
|
136
|
+
plotnine/positions/position_dodge.py,sha256=6PbAhWDfNK7NK6FZZOcfr4mdmVOUV9VLH8xD0dbQFEU,3941
|
|
137
|
+
plotnine/positions/position_dodge2.py,sha256=QI-oTIiYFOARozbBRuGQ1RHnZI_DKbCR2pJbuXlZvpQ,5661
|
|
138
|
+
plotnine/positions/position_fill.py,sha256=DvBm_6Oh2X3tSl67gP-iFoBmbYHy_WfZotHSrY4k0Rg,160
|
|
139
|
+
plotnine/positions/position_identity.py,sha256=9GE4WpuISLcGWTsgGqF9MARKhxdVySk5xeHACtyfJIk,203
|
|
140
|
+
plotnine/positions/position_jitter.py,sha256=p5s21ry-k7dK2G_jtWFghocbA-1XS73ljMiuJRIM4WE,2226
|
|
141
|
+
plotnine/positions/position_jitterdodge.py,sha256=D8J-9LfQgWaU6x5cZxkqze5NbKiHaDysUn-ftsxV7sU,3315
|
|
142
|
+
plotnine/positions/position_nudge.py,sha256=IKzQsnZ5xpUzi_yP2GFBl249jICQv4j3dGpEcwx88UY,949
|
|
143
|
+
plotnine/positions/position_stack.py,sha256=faomJVM-YsrxDVAmKC_9G3t6dNg3pgmaIcEJo39Xrb4,4027
|
|
144
|
+
plotnine/scales/__init__.py,sha256=TvbyMRL9dASGnH0rob7g_AgI2MY58wSCv-0csblWsu4,5526
|
|
145
|
+
plotnine/scales/_expand.py,sha256=ynlg_6s3NDTIe8dcP1C6XpiaIva0sin9fILFLywS04Y,1551
|
|
146
|
+
plotnine/scales/_runtime_typing.py,sha256=Ror99gzX0pe25F3trm2TZOyQhNhIZiS8IfbYpdRh-aU,1311
|
|
147
|
+
plotnine/scales/limits.py,sha256=fymDbVwAXTzYryLfMM7AWKfOkP2uOj5_dhTPC5PVYk0,5626
|
|
148
|
+
plotnine/scales/range.py,sha256=xBlFdAhthH1zKIJZDdkEyAA2kMZtyDorDFHKBMHKyAQ,1379
|
|
149
|
+
plotnine/scales/scale.py,sha256=T7oMfiXA2xOL_LQQIEKY_06VvXVfF-norNpc2gdTNNw,8078
|
|
150
|
+
plotnine/scales/scale_alpha.py,sha256=lYVZeaCC2pk-0-BoXnOeP0RdIbHYk6qo3DRClJrxTKo,2350
|
|
151
|
+
plotnine/scales/scale_color.py,sha256=h5UHaUjpltze9-wHG1DG0kkjIyEYxYK86wqykZe39jg,15558
|
|
152
|
+
plotnine/scales/scale_continuous.py,sha256=YMRjGh7QS644ajx5dVPJ9QTrWbTjmKt62MvVSFl3Y7U,16500
|
|
153
|
+
plotnine/scales/scale_datetime.py,sha256=OM9gfHKGkQIBrgqCEE00zUV0cMXXxTIS7wc9dYQZ6sE,3983
|
|
154
|
+
plotnine/scales/scale_discrete.py,sha256=UwAB0icMljH-eW6mK3g0YWAVzuE4P_91ZMYJhoMoMV4,9431
|
|
155
|
+
plotnine/scales/scale_identity.py,sha256=yNo4IUv9yTC3qA-Fhz4OqvDmiBfg8UFwQSKCY4bTIpE,2410
|
|
156
|
+
plotnine/scales/scale_linetype.py,sha256=pwLTmglN6d4bnChbuBi6HWbDP_nsE4viXD8CK6XKBPw,1373
|
|
157
|
+
plotnine/scales/scale_manual.py,sha256=FmzF4gRxdiDVgryodN2Mx6Gr1FHW0grKO3WiL1ffkTc,4609
|
|
158
|
+
plotnine/scales/scale_shape.py,sha256=I0JdYDreCbznQilaTi6m27F91N5daCj9D2ZPuP2Szls,2081
|
|
159
|
+
plotnine/scales/scale_size.py,sha256=04nUQzKB_qpuQrcg8C7jYmLDYtdnlg6PkY7SivP5OlY,3273
|
|
160
|
+
plotnine/scales/scale_stroke.py,sha256=7LKAg6-Q3VTuw78N2XEjFFzBa8yY5NVnfBSoJGsBS5o,1711
|
|
161
|
+
plotnine/scales/scale_xy.py,sha256=5NfFOJb2PeqLS3DuUylFGzzX7EJAaZWOO8LfLcU5zgU,10088
|
|
162
|
+
plotnine/scales/scales.py,sha256=rmHFm7roKEeZhKs81gjhCNMyNpvXmQOqxqvEH8GCwOs,10113
|
|
163
|
+
plotnine/stats/__init__.py,sha256=IZVXnHYmdpdev9NzxA-Nw9dZnuq1pudZNWLbYbvfWSg,1386
|
|
164
|
+
plotnine/stats/binning.py,sha256=0B1pNKPBWuSo_w3LDXkoBQjup71klYQ1FxaparKomFs,9611
|
|
165
|
+
plotnine/stats/density.py,sha256=TQihwduejW5I5oZ8GdWI_U_n-5N49SfMShm3OtlDhW8,6372
|
|
166
|
+
plotnine/stats/distributions.py,sha256=pskpWUFcyrLR6AYeZAciRH0Cb267ME3G2mvm79xsgMc,1178
|
|
167
|
+
plotnine/stats/smoothers.py,sha256=lwZFCKqt5JIzgUh_HmKUVRHAv5hWVBg2XgXvLWG-xxQ,17477
|
|
168
|
+
plotnine/stats/stat.py,sha256=GcGuaTXYYOFbS7Ux1tYNGS-Xq47SIdBq8vCjHODbZSU,11469
|
|
169
|
+
plotnine/stats/stat_bin.py,sha256=BwYn4wktVQQ3_4blRIE7kOO38e5rv_yWPVf3p2Gi9WU,4623
|
|
170
|
+
plotnine/stats/stat_bin_2d.py,sha256=tbdgGDcoPuSXn9cJ9ZJ5MWu6o3Gpp31pcBgBPR9l9qo,5305
|
|
171
|
+
plotnine/stats/stat_bindot.py,sha256=YClKlsV3jHvc60uQGFQ7yRQG5cdGD831js0nU3dRHEE,10259
|
|
172
|
+
plotnine/stats/stat_boxplot.py,sha256=6dpiUz83edy4eKc1DXgqA4OgoHkjzW14jhEjawAee74,6034
|
|
173
|
+
plotnine/stats/stat_count.py,sha256=AcH2jHbQy1O1BWSwy2k6Lw9RsJJ0uOHRkva7YBMcaik,1994
|
|
174
|
+
plotnine/stats/stat_density.py,sha256=d1AKQbhB_MOKI7Kljbih2mmlr7jpjjN5Drgs2iOjn5s,10384
|
|
175
|
+
plotnine/stats/stat_density_2d.py,sha256=SBYzK7ISTa4-HiQnsMaPdU7gq8ZXzqaUjzm6rb2VnwE,5714
|
|
176
|
+
plotnine/stats/stat_ecdf.py,sha256=lXPzaXe2O-b7oPbB1C1zJXewwICblX2HqoYIsDUcIF8,1668
|
|
177
|
+
plotnine/stats/stat_ellipse.py,sha256=u4Qio39Mbc4iFJzo-4d6DqbdyLK6_gNtwEvxRhgNNDk,7658
|
|
178
|
+
plotnine/stats/stat_function.py,sha256=41ePVGdonZnQOlrsZ3E_Yy0ecOzzS2j-kVCmbUZfBQs,3211
|
|
179
|
+
plotnine/stats/stat_hull.py,sha256=0OqDv-4behPqg8SpFo1btdIICGzHuzVeRMzaO8dQ94c,1542
|
|
180
|
+
plotnine/stats/stat_identity.py,sha256=xptxspcq2XYeDGqH8jNUI9so35NG9glRrxaDS6OzEh8,447
|
|
181
|
+
plotnine/stats/stat_pointdensity.py,sha256=JMXvO1wBBFntAdMgnDPxVPnt8jDLrgdhInh05tr2I0k,2198
|
|
182
|
+
plotnine/stats/stat_qq.py,sha256=cEyIYK1oX99tPh4m31B4z5rq3eZPEbZ8pnAuz9gY7xA,3457
|
|
183
|
+
plotnine/stats/stat_qq_line.py,sha256=i5HVjl2tFu1k7TvpAfm3b7AWE-UDyWvReP0WpzWT1q0,3524
|
|
184
|
+
plotnine/stats/stat_quantile.py,sha256=agbChKgJC3EUqqTKdKbH1Pwz_TDU_V9sU7XpAmJ40to,2635
|
|
185
|
+
plotnine/stats/stat_sina.py,sha256=fiIbfozux0TPLfo5skBXAJHEgrX37KC1Ju02d99oMQI,9431
|
|
186
|
+
plotnine/stats/stat_smooth.py,sha256=f5g7TtIcV847uGFdM2-udNZu2nH9HFA5LOryOwbfGyM,8039
|
|
187
|
+
plotnine/stats/stat_sum.py,sha256=RRqcCLrc8cU2txShukChog0AVPsunA8m0oA7CweAj4U,1718
|
|
188
|
+
plotnine/stats/stat_summary.py,sha256=5o9U-ZeJfD1b1DBrrHD6rQ4QuDO3QERgRcQGZVvrmhM,9298
|
|
189
|
+
plotnine/stats/stat_summary_bin.py,sha256=whYcoXzrgZowdt_R9lq2FY0lNQrywFXg540ohu3TzBA,5739
|
|
190
|
+
plotnine/stats/stat_unique.py,sha256=1SdLNm2CjhjONAwo714uB3tc5KX7vSDHAi1geJdWtDY,449
|
|
191
|
+
plotnine/stats/stat_ydensity.py,sha256=_OVYc-QELPKMc24BvQaA9cPkfEoC_hW2teeo8yL8iao,5661
|
|
192
|
+
plotnine/themes/__init__.py,sha256=tEKIF4gYmOF2Z1-_UDdK8zh41dLl-61HUGIhOQvki6I,916
|
|
193
|
+
plotnine/themes/seaborn_rcmod.py,sha256=Pi-UX5LyH9teSuteYpqPOEnfLgKUz01LnKDyDA7Aois,15502
|
|
194
|
+
plotnine/themes/targets.py,sha256=MjBRWWRgsLXXM_PJffPsV4DttQJB_m11jdD837BteuU,1686
|
|
195
|
+
plotnine/themes/theme.py,sha256=Eu14IREf82NImvAdMLn9UAC4CpdLRrxAJJUTodLua2A,16407
|
|
196
|
+
plotnine/themes/theme_538.py,sha256=hr0FaGAffZYU3m8o90WuUWntaPgI2O_eGiaBz259MiM,1088
|
|
197
|
+
plotnine/themes/theme_bw.py,sha256=XXUt9KXEIkROiU0ZVIZicypneb-zL5K1cQFPqYd5WAI,1010
|
|
198
|
+
plotnine/themes/theme_classic.py,sha256=B6QkU6blGnEY5iaiPtu4VsvFzC0peWSAhlKiC2SJSkM,923
|
|
199
|
+
plotnine/themes/theme_dark.py,sha256=tF6BJ2A4jE6C-Mhl95DQiAbu-mK0Hr1MaymhbJzaD2Q,1255
|
|
200
|
+
plotnine/themes/theme_gray.py,sha256=VRPCWvorGLnqNRVgtvACYDPEvHMQigtp-qMrgOcyar8,5265
|
|
201
|
+
plotnine/themes/theme_light.py,sha256=1vDa6QlLz2vJaa1gYfyttVuXxde2MwDnMnJAqToJMGs,1415
|
|
202
|
+
plotnine/themes/theme_linedraw.py,sha256=woMr18xoEJmsD8ZCiUpdyn-CE-P1AGFHRNapwCGWUjg,1350
|
|
203
|
+
plotnine/themes/theme_matplotlib.py,sha256=3JPOGhFz6Nul2s03Djd254RPtHtcQ0fsi3Hc9OIi0kc,4248
|
|
204
|
+
plotnine/themes/theme_minimal.py,sha256=YhkKNA48jP2OLa8-kHMfXFEFRjcsfWBLMID2orITrmo,884
|
|
205
|
+
plotnine/themes/theme_seaborn.py,sha256=8giJh8QvkMJ8pr_XXHPDMfkysoI2_yr0vJhz48_sQGI,4319
|
|
206
|
+
plotnine/themes/theme_tufte.py,sha256=qUOrZhQyfJgc0fmy8Es7tT7aYqUSzCjvkP7-dBilwHE,1926
|
|
207
|
+
plotnine/themes/theme_void.py,sha256=itsmb9pWCZAwgccw_zHDjQRfhRRbAiMNo4zZ1zeBgIU,3223
|
|
208
|
+
plotnine/themes/theme_xkcd.py,sha256=5MOdj_H23Kr_jbDnepmq1DQDbn8-TfUmtzYBZTb4RB4,2207
|
|
209
|
+
plotnine/themes/themeable.py,sha256=Px91yh5pft24mC-4uUFLYpU-45iX6cE64j3t-a20wug,71744
|
|
210
|
+
plotnine/themes/elements/__init__.py,sha256=xV1la_mTv1BQ3zQp7ZGVGPdV6KohvEVhKAi1uPTeAs0,327
|
|
211
|
+
plotnine/themes/elements/element_base.py,sha256=D7cfEglzsSuhW91KpZVAZ2MAHWZp64r9Aajoh8uMGZ4,832
|
|
212
|
+
plotnine/themes/elements/element_blank.py,sha256=4r7-6HeR1494oWNIGQh0ASrFQ4SLvYa6aQHA85eH-Ds,187
|
|
213
|
+
plotnine/themes/elements/element_line.py,sha256=yZvj9B3M2a7a8o2J0n-q0uviNv34PtJVUr_UefZ-v5I,2005
|
|
214
|
+
plotnine/themes/elements/element_rect.py,sha256=w5cLH-Sr4cTRXVdkRiu8kBqFt3TXHhIb1MUITfi89gE,1767
|
|
215
|
+
plotnine/themes/elements/element_text.py,sha256=8yhwBa9s9JKCtBcqcBNybbCGK6ieDnZv4SHiC4Sy2qc,6255
|
|
216
|
+
plotnine/themes/elements/margin.py,sha256=jMHe-UKHHer_VYwAVDC-Tz2-AP_4YDuXPTWAuacoqgU,4080
|
|
217
|
+
plotnine-0.15.1.dist-info/licenses/LICENSE,sha256=GY4tQiUd17Tq3wWR42Zs9MRTFOTf6ahIXhZTcwAdOeU,1082
|
|
218
|
+
plotnine-0.15.1.dist-info/METADATA,sha256=rDMZR95-O9S5B-0Qpcbds6L6FmF6-ojjx3PpvVDgFaA,9496
|
|
219
|
+
plotnine-0.15.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
220
|
+
plotnine-0.15.1.dist-info/top_level.txt,sha256=t340Mbko1ZbmvYPkQ81dIiPHcaQdTUszYz-bWUpr8ys,9
|
|
221
|
+
plotnine-0.15.1.dist-info/RECORD,,
|