plotnine 0.15.0a5__py3-none-any.whl → 0.15.0a7__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.
Files changed (64) hide show
  1. plotnine/_mpl/layout_manager/_engine.py +2 -2
  2. plotnine/_mpl/layout_manager/_layout_items.py +6 -2
  3. plotnine/_mpl/layout_manager/_layout_tree.py +221 -60
  4. plotnine/_mpl/layout_manager/_spaces.py +98 -28
  5. plotnine/_mpl/text.py +1 -7
  6. plotnine/_utils/__init__.py +13 -0
  7. plotnine/composition/__init__.py +11 -0
  8. plotnine/{plot_composition/_compose.py → composition/_arrange.py} +64 -119
  9. plotnine/composition/_beside.py +54 -0
  10. plotnine/composition/_plot_spacer.py +55 -0
  11. plotnine/composition/_stack.py +54 -0
  12. plotnine/geoms/geom_area.py +2 -2
  13. plotnine/geoms/geom_bar.py +1 -0
  14. plotnine/geoms/geom_bin_2d.py +6 -2
  15. plotnine/geoms/geom_boxplot.py +4 -0
  16. plotnine/geoms/geom_col.py +2 -2
  17. plotnine/geoms/geom_count.py +6 -2
  18. plotnine/geoms/geom_density_2d.py +6 -2
  19. plotnine/geoms/geom_dotplot.py +1 -1
  20. plotnine/geoms/geom_histogram.py +1 -1
  21. plotnine/geoms/geom_map.py +2 -2
  22. plotnine/geoms/geom_pointdensity.py +4 -0
  23. plotnine/geoms/geom_qq.py +4 -0
  24. plotnine/geoms/geom_qq_line.py +4 -0
  25. plotnine/geoms/geom_quantile.py +4 -0
  26. plotnine/geoms/geom_sina.py +3 -3
  27. plotnine/geoms/geom_smooth.py +4 -0
  28. plotnine/geoms/geom_violin.py +4 -0
  29. plotnine/ggplot.py +12 -26
  30. plotnine/scales/scale_manual.py +2 -0
  31. plotnine/stats/stat_bin.py +4 -0
  32. plotnine/stats/stat_bin_2d.py +4 -0
  33. plotnine/stats/stat_bindot.py +1 -0
  34. plotnine/stats/stat_boxplot.py +1 -1
  35. plotnine/stats/stat_count.py +1 -0
  36. plotnine/stats/stat_density.py +1 -1
  37. plotnine/stats/stat_density_2d.py +1 -0
  38. plotnine/stats/stat_ecdf.py +1 -1
  39. plotnine/stats/stat_ellipse.py +4 -0
  40. plotnine/stats/stat_function.py +4 -0
  41. plotnine/stats/stat_hull.py +4 -0
  42. plotnine/stats/stat_identity.py +4 -0
  43. plotnine/stats/stat_pointdensity.py +1 -0
  44. plotnine/stats/stat_qq.py +1 -0
  45. plotnine/stats/stat_qq_line.py +1 -0
  46. plotnine/stats/stat_quantile.py +1 -1
  47. plotnine/stats/stat_sina.py +1 -1
  48. plotnine/stats/stat_smooth.py +1 -0
  49. plotnine/stats/stat_sum.py +4 -0
  50. plotnine/stats/stat_summary.py +1 -1
  51. plotnine/stats/stat_summary_bin.py +1 -1
  52. plotnine/stats/stat_unique.py +4 -0
  53. plotnine/stats/stat_ydensity.py +1 -1
  54. plotnine/themes/elements/element_line.py +17 -9
  55. plotnine/themes/theme_void.py +1 -7
  56. plotnine/themes/themeable.py +24 -13
  57. {plotnine-0.15.0a5.dist-info → plotnine-0.15.0a7.dist-info}/METADATA +1 -1
  58. {plotnine-0.15.0a5.dist-info → plotnine-0.15.0a7.dist-info}/RECORD +62 -60
  59. plotnine/plot_composition/__init__.py +0 -10
  60. plotnine/plot_composition/_spacer.py +0 -32
  61. /plotnine/{plot_composition → composition}/_plotspec.py +0 -0
  62. {plotnine-0.15.0a5.dist-info → plotnine-0.15.0a7.dist-info}/WHEEL +0 -0
  63. {plotnine-0.15.0a5.dist-info → plotnine-0.15.0a7.dist-info}/licenses/LICENSE +0 -0
  64. {plotnine-0.15.0a5.dist-info → plotnine-0.15.0a7.dist-info}/top_level.txt +0 -0
@@ -247,7 +247,7 @@ class stat_summary(stat):
247
247
 
248
248
  See Also
249
249
  --------
250
- plotnine.geom_pointrange
250
+ plotnine.geom_pointrange : The default `geom` for this `stat`.
251
251
  """
252
252
 
253
253
  _aesthetics_doc = """
@@ -63,7 +63,7 @@ class stat_summary_bin(stat):
63
63
 
64
64
  See Also
65
65
  --------
66
- plotnine.geom_pointrange
66
+ plotnine.geom_pointrange : The default `geom` for this `stat`.
67
67
  """
68
68
 
69
69
  _aesthetics_doc = """
@@ -12,6 +12,10 @@ class stat_unique(stat):
12
12
  Parameters
13
13
  ----------
14
14
  {common_parameters}
15
+
16
+ See Also
17
+ --------
18
+ plotnine.geom_point : The default `geom` for this `stat`.
15
19
  """
16
20
 
17
21
  DEFAULT_PARAMS = {"geom": "point", "position": "identity", "na_rm": False}
@@ -69,7 +69,7 @@ class stat_ydensity(stat):
69
69
 
70
70
  See Also
71
71
  --------
72
- plotnine.geom_violin
72
+ plotnine.geom_violin : The default `geom` for this `stat`.
73
73
  statsmodels.nonparametric.kde.KDEUnivariate
74
74
  statsmodels.nonparametric.kde.KDEUnivariate.fit
75
75
  """
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING
5
5
  from .element_base import element_base
6
6
 
7
7
  if TYPE_CHECKING:
8
- from typing import Any, Literal, Optional, Sequence
8
+ from typing import Any, Literal, Sequence
9
9
 
10
10
 
11
11
  class element_line(element_base):
@@ -26,6 +26,8 @@ class element_line(element_base):
26
26
  using tuples, see [](`~matplotlib.lines.line2D.set_linestyle`).
27
27
  size : float
28
28
  line thickness
29
+ alpha : float
30
+ Opacity value
29
31
  kwargs : dict
30
32
  Parameters recognised by [](`~matplotlib.lines.line2d`).
31
33
  """
@@ -33,31 +35,37 @@ class element_line(element_base):
33
35
  def __init__(
34
36
  self,
35
37
  *,
36
- color: Optional[
38
+ color: (
37
39
  str
38
40
  | tuple[float, float, float]
39
41
  | tuple[float, float, float, float]
40
- ] = None,
41
- size: Optional[float] = None,
42
- linetype: Optional[str | Sequence[int]] = None,
43
- lineend: Optional[Literal["butt", "projecting", "round"]] = None,
44
- colour: Optional[
42
+ | None
43
+ ) = None,
44
+ size: float | None = None,
45
+ linetype: str | Sequence[int] | None = None,
46
+ lineend: Literal["butt", "projecting", "round"] | None = None,
47
+ colour: (
45
48
  str
46
49
  | tuple[float, float, float]
47
50
  | tuple[float, float, float, float]
48
- ] = None,
51
+ | None
52
+ ) = None,
53
+ alpha: float | None = None,
49
54
  **kwargs: Any,
50
55
  ):
51
56
  super().__init__()
52
57
  self.properties.update(**kwargs)
53
58
 
54
- color = color if color else colour
59
+ color = color if color is not None else colour
60
+
55
61
  if color:
56
62
  self.properties["color"] = color
57
63
  if size:
58
64
  self.properties["linewidth"] = size
59
65
  if linetype:
60
66
  self.properties["linestyle"] = linetype
67
+ if alpha is not None:
68
+ self.properties["alpha"] = alpha
61
69
 
62
70
  if linetype in ("solid", "-") and lineend:
63
71
  self.properties["solid_capstyle"] = lineend
@@ -25,7 +25,6 @@ class theme_void(theme):
25
25
 
26
26
  def __init__(self, base_size=11, base_family=None):
27
27
  base_family = base_family or get_option("base_family")
28
- half_line = base_size / 2
29
28
  m = get_option("base_margin")
30
29
  # Use only inherited elements and make everything blank
31
30
  theme.__init__(
@@ -98,11 +97,6 @@ class theme_void(theme):
98
97
  plot_tag_location="margin",
99
98
  plot_tag_position="topleft",
100
99
  strip_align=0,
101
- strip_text=element_text(
102
- color="#1A1A1A",
103
- size=base_size * 0.8,
104
- linespacing=1.5,
105
- margin=margin_auto(half_line * 0.8),
106
- ),
100
+ strip_text=element_text(size=base_size * 0.8),
107
101
  complete=True,
108
102
  )
@@ -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
@@ -504,6 +504,25 @@ class MixinSequenceOfValues(themeable):
504
504
  a.set(**{name: value})
505
505
 
506
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
+
507
526
  # element_text themeables
508
527
 
509
528
 
@@ -1366,7 +1385,7 @@ class panel_grid_major_x(themeable):
1366
1385
 
1367
1386
  def apply_ax(self, ax: Axes):
1368
1387
  super().apply_ax(ax)
1369
- ax.xaxis.grid(which="major", **self.properties)
1388
+ ax.xaxis.grid(which="major", **blend_alpha(self.properties))
1370
1389
 
1371
1390
  def blank_ax(self, ax: Axes):
1372
1391
  super().blank_ax(ax)
@@ -1384,7 +1403,7 @@ class panel_grid_major_y(themeable):
1384
1403
 
1385
1404
  def apply_ax(self, ax: Axes):
1386
1405
  super().apply_ax(ax)
1387
- ax.yaxis.grid(which="major", **self.properties)
1406
+ ax.yaxis.grid(which="major", **blend_alpha(self.properties))
1388
1407
 
1389
1408
  def blank_ax(self, ax: Axes):
1390
1409
  super().blank_ax(ax)
@@ -1612,11 +1631,7 @@ class panel_background(legend_key):
1612
1631
 
1613
1632
  def apply_ax(self, ax: Axes):
1614
1633
  super().apply_ax(ax)
1615
- d = self.properties
1616
- if "facecolor" in d and "alpha" in d:
1617
- d["facecolor"] = to_rgba(d["facecolor"], d["alpha"])
1618
- del d["alpha"]
1619
-
1634
+ d = blend_alpha(self.properties, "facecolor")
1620
1635
  d["edgecolor"] = "none"
1621
1636
  d["linewidth"] = 0
1622
1637
  ax.patch.set(**d)
@@ -1642,16 +1657,12 @@ class panel_border(MixinSequenceOfValues):
1642
1657
  if not (rects := targets.panel_border):
1643
1658
  return
1644
1659
 
1645
- d = self.properties
1660
+ d = blend_alpha(self.properties, "edgecolor")
1646
1661
 
1647
1662
  with suppress(KeyError):
1648
1663
  if d["edgecolor"] == "none" or d["size"] == 0:
1649
1664
  return
1650
1665
 
1651
- if "edgecolor" in d and "alpha" in d:
1652
- d["edgecolor"] = to_rgba(d["edgecolor"], d["alpha"])
1653
- del d["alpha"]
1654
-
1655
1666
  self.set(rects, d)
1656
1667
 
1657
1668
  def blank_figure(self, figure: Figure, targets: ThemeTargets):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plotnine
3
- Version: 0.15.0a5
3
+ Version: 0.15.0a7
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)
@@ -2,7 +2,7 @@ plotnine/__init__.py,sha256=HrJhd65bnny1t-TawUgvApVj4p-gDZ0ftpr2NKZeW_s,10316
2
2
  plotnine/animation.py,sha256=izJZ4Gy0cBHEBc8ehofsWSWOzZW8UEroy1Uvw86Igb0,7521
3
3
  plotnine/doctools.py,sha256=JBF55q1MX2fXYQcGDpVrGPdlKf5OiQ5gyTdWhnM_IzU,14558
4
4
  plotnine/exceptions.py,sha256=SgTxBHkV65HjGI3aFy2q1_lHP9HAdiuxVLN3U-PJWSQ,1616
5
- plotnine/ggplot.py,sha256=xFj9iWAyBvnhitCrpgdNonQIqqjBQ2aDgkqpvHbH364,24823
5
+ plotnine/ggplot.py,sha256=Nl41v1zRUulyIBMzrzIE4IgIrHU0bicL2YH4x01wHt8,24457
6
6
  plotnine/helpers.py,sha256=4R3KZmtGH46-kRNSGOA0JxZaLKBo0ge8Vnx1cDQ8_gI,966
7
7
  plotnine/iapi.py,sha256=jNLmUSoh5g9kNdhOoXSqNcqOdd2-6xdWAmst-YGU41U,9095
8
8
  plotnine/labels.py,sha256=3pOXth2Xma_qCqB_xXAGIkPQ9gcaUaaFEAsa5if1iR0,2830
@@ -16,22 +16,28 @@ plotnine/_mpl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  plotnine/_mpl/gridspec.py,sha256=OvlXchYXam1c1n8iNPKu4fJr6rqmH7OWebhJX5qqOmY,7903
17
17
  plotnine/_mpl/offsetbox.py,sha256=E7810lS9W7Gexwz5mkSMz7PQXXHkYX-WHKlPHqapmTg,3216
18
18
  plotnine/_mpl/patches.py,sha256=rYWAZHhTGi1B_dFfVI9JsrYgioum7aQjGwpNh1Q0tKg,3838
19
- plotnine/_mpl/text.py,sha256=3PL9Uq24QOUyyxS8f-i174dLmNYZmnwkGcWSoNkHh_g,6778
19
+ plotnine/_mpl/text.py,sha256=HpTcdSCXOFGdW8Yz5Go-6KRP6FoNNmWMB85vmbBqKnQ,6571
20
20
  plotnine/_mpl/ticker.py,sha256=RY_7AdTggc7QBq9_t0KBJXg36oxKfB-Vtc9FzLnaGnQ,393
21
21
  plotnine/_mpl/transforms.py,sha256=DNaOlNq76xlT696sN8ot1bmYyp4mmrjXQHk3kTi4HIg,76
22
22
  plotnine/_mpl/utils.py,sha256=0GY3CWWXZiNHe333v9GAquRe5naO54JeiPt67-UvVYw,4147
23
23
  plotnine/_mpl/layout_manager/__init__.py,sha256=IXpPF5Oycc45uFpK4MJ6kcQCe1u5VUfnHLNZGcnrJCg,157
24
- plotnine/_mpl/layout_manager/_engine.py,sha256=ESUvbLAlZApFbBi6w7gZA7S4guS0Rmrj-us-gzYP2ZM,2809
25
- plotnine/_mpl/layout_manager/_layout_items.py,sha256=3XRBl7xEdBKdhrexRmnVe7k919po6nkyE0q5Hx7j5cQ,29642
26
- plotnine/_mpl/layout_manager/_layout_tree.py,sha256=O6U78CYOjSwS4lt56YF3YiOCXdxmV_oy3lYS4gMmzSc,26447
27
- plotnine/_mpl/layout_manager/_spaces.py,sha256=ahBpKt-q1kVOTGiGliwl_DNB6pTEekAzA_7-GXwFlBk,35789
28
- plotnine/_utils/__init__.py,sha256=czHi-uv4eIBCDf6td11bGA41PMXaJ5j7t-avx_JbYgY,30636
24
+ plotnine/_mpl/layout_manager/_engine.py,sha256=m6FDFc1XELfzNSIXaFiN3ruoTgub2PaV3wPQWP0IBYE,2804
25
+ plotnine/_mpl/layout_manager/_layout_items.py,sha256=QikIoiYKDDfy2mrX9rZUIqD7Cy0ihfOyZHEs1ajF4CA,29710
26
+ plotnine/_mpl/layout_manager/_layout_tree.py,sha256=sIIlwpdM7u-fFkOzZ6cnUwaz_7nLNxI6_BnPMZmtwMc,32065
27
+ plotnine/_mpl/layout_manager/_spaces.py,sha256=5gSfYSoymH5prauGq1h9MZG4IlBbzd0-cSaS5RedMyU,38290
28
+ plotnine/_utils/__init__.py,sha256=3tcSTng6Mtk1o6NPEikALHKD3ZGuAYofjQJREHX84a4,30992
29
29
  plotnine/_utils/context.py,sha256=HPQy_uyNXdS0s9URD7ZePyuc5hFU2XrRBLDTqRDLJzY,1708
30
30
  plotnine/_utils/dev.py,sha256=0qgRbMhcd4dfuLuYxx0skocKAtfwHF02ntyILRBogbg,1629
31
31
  plotnine/_utils/ipython.py,sha256=5Obr73xJ-4dzJEdBrFA8z9TXuxY7pIjKmzdTzWwnxNk,1884
32
32
  plotnine/_utils/quarto.py,sha256=bwbU3ork8wuUIW5VDJ73J_DbWWzpYWpAd76cHMzCRao,890
33
33
  plotnine/_utils/registry.py,sha256=HoiB2NnbEHufXjYnVJyrJKflk2RwKtTYk2L3n7tH4XA,3321
34
34
  plotnine/_utils/yippie.py,sha256=DbmxvVrd34P24CCmOZrAulyGQ35rXNaSr8BuutS2Uio,2392
35
+ plotnine/composition/__init__.py,sha256=WXkLaqbgpOquCbq_hakUUQlcIka9fN0IMKNm-DOns6E,198
36
+ plotnine/composition/_arrange.py,sha256=p0Z3f63EwVvjtE9mKsRuVhQ3jY8ZEm3yBLJyZITCB1k,11591
37
+ plotnine/composition/_beside.py,sha256=SBhxNRia5iqFwlUtMu9-4lcTOGZVlcjWM78geXKogaQ,1200
38
+ plotnine/composition/_plot_spacer.py,sha256=YZr1b02RnNWTuRRHkbGaSjUKFyWM_5FFRWf-2mI6PTk,1513
39
+ plotnine/composition/_plotspec.py,sha256=0F7q7PjDMDqcallpnBdX3N2iSRjdBTyjSvMFf83uvPU,1015
40
+ plotnine/composition/_stack.py,sha256=YoI052fFlaA3KO-_FkSf2N2SNK-WRqxdg_vzGAJ7m3I,1217
35
41
  plotnine/coords/__init__.py,sha256=inM-9JwSPvYLlOy6opye0YV2EGWsI4708wGKdHvQvVM,301
36
42
  plotnine/coords/coord.py,sha256=Yu2xj4BqFBWlS0XHNDa6h8Dek0_PA6Lssv3M9EneSB8,6883
37
43
  plotnine/coords/coord_cartesian.py,sha256=vGeSFe9UyycUkbjdjoPNSQJwnnU7fEmsk0nl_oBvzxY,3038
@@ -71,47 +77,47 @@ plotnine/geoms/annotation_logticks.py,sha256=6iGdo5szck0_nXdHnvMaRMZuRbH8Tg87tJ_
71
77
  plotnine/geoms/annotation_stripes.py,sha256=4Cw7TJ4SZChm_ioqfiiku0cPNnLruGuAP-4vyRao-9Y,6080
72
78
  plotnine/geoms/geom.py,sha256=ayhBEoPc-9MLpu18HkwLoby4NIKC68ED4Pq0ioa4I9c,17687
73
79
  plotnine/geoms/geom_abline.py,sha256=6oxAJl_yFKKmf7OTHvACw6fg6kgJEN54hGKkyWOLr6o,3188
74
- plotnine/geoms/geom_area.py,sha256=wvQ4nNvhJNN3nfn6Bv1gCARC6IWTjOjOfHPfSmg6Sxc,818
75
- plotnine/geoms/geom_bar.py,sha256=SnqS4hPTfqXzdPh1U-kNuBg0LNX9_tQC9OKhIlB7cy0,1732
76
- plotnine/geoms/geom_bin_2d.py,sha256=b2fAQVywug-ey3KtqeOoYQ2RNRSRE_fa4s7M41W-_FE,574
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
77
83
  plotnine/geoms/geom_blank.py,sha256=38BpE9iSh3ktbOe9ayNer6IDD1q7E4EiKS_KnFSko0c,770
78
- plotnine/geoms/geom_boxplot.py,sha256=OISXd3CCuH06sKqOB8xlfUPrwUX_FUKQauSqE7L-PhQ,9778
79
- plotnine/geoms/geom_col.py,sha256=sGZZzkXgwlgI2D-M1UE1QAWsWZqtP1z8R0HjrnW9hkY,1187
80
- plotnine/geoms/geom_count.py,sha256=IRIlQqwt0kIHf9swYZbFqd5RSQCYRyFKm5hp1C9xHB4,511
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
81
87
  plotnine/geoms/geom_crossbar.py,sha256=0NGUY4fhL8VxpGaBgjKQNJy85XJeLc6GiPCs5LZQuCc,6242
82
88
  plotnine/geoms/geom_density.py,sha256=UwUkJxI79L3z19tmoSI6ZYs418XTbRznd-Abzrec3VY,526
83
- plotnine/geoms/geom_density_2d.py,sha256=V37QYpdZpZvYxishlN1UBmyyRC3U2eOqR-gaIPxQqS4,400
84
- plotnine/geoms/geom_dotplot.py,sha256=ZHmRCEGS3Nv2tiNwALBC7ewBg1prcb_FOxAImTGKP3c,8680
89
+ plotnine/geoms/geom_density_2d.py,sha256=9_FnLLRj0Z6DtttUYTOi7mx5bkZSxOTb6PbfuxfnILE,494
90
+ plotnine/geoms/geom_dotplot.py,sha256=NPeZ2jiDbUFgnpDTLOqtOxYBrtgzDQhq_oohhlXD2nc,8718
85
91
  plotnine/geoms/geom_errorbar.py,sha256=jpCuQ8CE2RKfRR8Aw_3s473HXrOk-WPOl46n4oC-8UI,2199
86
92
  plotnine/geoms/geom_errorbarh.py,sha256=mgRo8KngGyKVSPPF8vUYlzdslBJEIe9QJC--DlWL5t4,2213
87
93
  plotnine/geoms/geom_freqpoly.py,sha256=lsr1dwZyR6gUbzl5SNJ5yYklsWGjkqYYAe3Mb8AWynk,339
88
- plotnine/geoms/geom_histogram.py,sha256=JnqHJb7HISQKnH2XwW6JOB8g462yGH1nMMYxbtwvqtY,329
94
+ plotnine/geoms/geom_histogram.py,sha256=rHtwpW2HNnxSwAXmZNoAVuB7qJsbETkrnCxFR7nJqqQ,367
89
95
  plotnine/geoms/geom_hline.py,sha256=uMYBDkfshx2tskuZpjvo9N9Ztqt7AUxuaYFhMxeHi5c,2481
90
96
  plotnine/geoms/geom_jitter.py,sha256=mJCLt2SoZN_tx_3XS8oF5JojtL2m5HO1bEqdN-JEPUg,2291
91
97
  plotnine/geoms/geom_label.py,sha256=lPxmDlS6VgEHqD3Ac1Q-Zxs75JcnduoXjJ_D1AzzWew,2835
92
98
  plotnine/geoms/geom_line.py,sha256=IzKVPwF_Oe3uwRpuh5Xu9LFvz0XcKqCL4pN03iGHBdk,522
93
99
  plotnine/geoms/geom_linerange.py,sha256=dkgQ28YZfjyMb_y8s0wfcAz5mHF7f7y_h1Den5wHyJk,1282
94
- plotnine/geoms/geom_map.py,sha256=E2DVSMx9-8-4duCUOd-4n-Lqu_VDL5qzQrt2PCLkMzY,9602
100
+ plotnine/geoms/geom_map.py,sha256=tvzFVNOtSOfof1NQFduB8SV143o2irNsQrM8BgYiEKU,9602
95
101
  plotnine/geoms/geom_path.py,sha256=nDrlmqPn869vyUF4RYbLKkbQka14SWJu9pqCN-cdKbQ,17106
96
102
  plotnine/geoms/geom_point.py,sha256=KWM511zxIpKQzxI_NJpFqEszNWg5E7iHZJylKvvaK2c,4607
97
- plotnine/geoms/geom_pointdensity.py,sha256=TKaxAUPwdrVMw0MVYe14apBsRfW_5_zXFLSlOS60Zlw,372
103
+ plotnine/geoms/geom_pointdensity.py,sha256=mVVy4IvWrQJroBv9Dw4dNfmI_NTxJNxReJwtXyb1ONU,468
98
104
  plotnine/geoms/geom_pointrange.py,sha256=C746lDJfRe4M5k8sobEjaer_1IE60ZqIgs2cvq6Q3bY,2607
99
105
  plotnine/geoms/geom_polygon.py,sha256=c6Ba9mvCMvY11FZfZATF78byuL7JMCqx3DEMMJBNfTE,4149
100
- plotnine/geoms/geom_qq.py,sha256=uimpCvBrJhMscglVzI7cUAnAC3ZRs7nqXyGilq1ipkw,294
101
- plotnine/geoms/geom_qq_line.py,sha256=i0L9if-JxTr2heYUpIqV_cZ4qMiB7Om6EOurR76nFhg,337
102
- plotnine/geoms/geom_quantile.py,sha256=rcYmyO062IFASBoYZEE31KtHKSVkWNwF-upbBp9AgAU,806
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
103
109
  plotnine/geoms/geom_raster.py,sha256=eBhTkb_ybxuCKSExEm0Np5UAyBmj9qdDey8Ui9Xb1gs,6266
104
110
  plotnine/geoms/geom_rect.py,sha256=dGOAkVXf5NSJgIbaVezg1ac78GqimElB9Ua0L_SH_YM,3717
105
111
  plotnine/geoms/geom_ribbon.py,sha256=af9uElWaJQSc4taTLZ7ZDzng2Zw4IrIfNPrus4OuTmM,5771
106
112
  plotnine/geoms/geom_rug.py,sha256=2Sdarf5z3w4JbklVUk7JykWdbBNKaT0Wl5NMBl4LqT4,3520
107
113
  plotnine/geoms/geom_segment.py,sha256=v63MoKlK4aNengCXYdPeQrcBIgBCis8QobpF3CJOf5U,3052
108
- plotnine/geoms/geom_sina.py,sha256=oyCiBCdsWjrSNaS2jOpu0Ng8nEl_peaCT-EuHE9jG34,912
109
- plotnine/geoms/geom_smooth.py,sha256=8jSxQFTdoo7RmeTrGl2j-iE6lfydUPitz-dKvxKk0Kw,3545
114
+ plotnine/geoms/geom_sina.py,sha256=G1K8TCC_de5VFHHFCOICVDZ71Dy-raRZiZt6y1Z0ktw,950
115
+ plotnine/geoms/geom_smooth.py,sha256=7L7HdJCU2a63KGRs1RQnZ-c96Z63e-C7Znm43aWR3kE,3635
110
116
  plotnine/geoms/geom_spoke.py,sha256=s-kug0H-YGhyjso9W43XvzJf9-g6inh8zzuSFeXzSaU,977
111
117
  plotnine/geoms/geom_step.py,sha256=tTohADfGyC3M4zCzxLUhzkA2XsHBeH0eaWq-m2DQEQQ,2371
112
118
  plotnine/geoms/geom_text.py,sha256=fOGjIZL5ajB78su5lUGBo_uPa-NvTCaPo640oEbJE_4,11884
113
119
  plotnine/geoms/geom_tile.py,sha256=3x9BSxaSr-ys6N5R2wY8B9fNiyV9vMdoXbjIDqHy_ng,1431
114
- plotnine/geoms/geom_violin.py,sha256=sHEcLGIqQ1FgTHUZDKOU3J9mlMMBJinjTrc3BmRLjGU,7122
120
+ plotnine/geoms/geom_violin.py,sha256=ftrbmzvSEANPCdj7lgi7_HAoVHrGt3rI7z0rHL0iZ3Y,7214
115
121
  plotnine/geoms/geom_vline.py,sha256=NTrKu5wpcoiWRtcVVY5Q3xQEBmp1q4DgBgHzwTbfmOA,3387
116
122
  plotnine/guides/__init__.py,sha256=ulI-mDhtq3jAQEAqPv8clrn3UHGFOu3xRuO7jXlq-LY,201
117
123
  plotnine/guides/guide.py,sha256=CHz0SnfrSqKCl4aHmkM2r5YFITsa1XVDcaglW3nuIt4,8149
@@ -125,10 +131,6 @@ plotnine/mapping/_env.py,sha256=ZXlTt2THRIcWb2WGk9fCpCMdVynlUX_BpG0Uwj7axi0,6072
125
131
  plotnine/mapping/_eval_environment.py,sha256=PTrnnqrxMXqjt23t2NGRcU9i8Jie3ZaMe6W5aKtI7bI,2502
126
132
  plotnine/mapping/aes.py,sha256=eqNTBHqFnSBPoVNdrUB7pYM-ShlUTYvmwdQRXh9beV4,16717
127
133
  plotnine/mapping/evaluation.py,sha256=kblTxVv3M4xIGnHyReUU0RtmmIN77Or2JBcci0nGGfE,5913
128
- plotnine/plot_composition/__init__.py,sha256=ZJYpfVF158cQZ1zREXy6wHNJ4FbSmqWxIkHWZwX3QT8,148
129
- plotnine/plot_composition/_compose.py,sha256=6UgXs6VBH0LIXW2uQlBQy-URh_mM948F5GOwN6IV734,12167
130
- plotnine/plot_composition/_plotspec.py,sha256=0F7q7PjDMDqcallpnBdX3N2iSRjdBTyjSvMFf83uvPU,1015
131
- plotnine/plot_composition/_spacer.py,sha256=vaC4F5tHhvL7T7Ns9zxUbytqwB6MLNhm5jtiKG0vAiU,798
132
134
  plotnine/positions/__init__.py,sha256=DQZE6duMUNRQifpa6SBrOKxZpGDk4NqQSGZLr9Yc9GI,595
133
135
  plotnine/positions/position.py,sha256=BRD_dUh9dhdSP4SQfl8_u_VpaY_s3A2zuznwOn5M_80,8325
134
136
  plotnine/positions/position_dodge.py,sha256=6PbAhWDfNK7NK6FZZOcfr4mdmVOUV9VLH8xD0dbQFEU,3941
@@ -152,7 +154,7 @@ plotnine/scales/scale_datetime.py,sha256=OM9gfHKGkQIBrgqCEE00zUV0cMXXxTIS7wc9dYQ
152
154
  plotnine/scales/scale_discrete.py,sha256=UwAB0icMljH-eW6mK3g0YWAVzuE4P_91ZMYJhoMoMV4,9431
153
155
  plotnine/scales/scale_identity.py,sha256=-PL9vJn0C_wOgrOQpqYSQbTWFSALoRPFzGXzebABTv8,2211
154
156
  plotnine/scales/scale_linetype.py,sha256=pwLTmglN6d4bnChbuBi6HWbDP_nsE4viXD8CK6XKBPw,1373
155
- plotnine/scales/scale_manual.py,sha256=oMnIfQNfxO4qw-gkBG3ikyuXdeoMgstRSdiibLc_DAA,4525
157
+ plotnine/scales/scale_manual.py,sha256=FmzF4gRxdiDVgryodN2Mx6Gr1FHW0grKO3WiL1ffkTc,4609
156
158
  plotnine/scales/scale_shape.py,sha256=I0JdYDreCbznQilaTi6m27F91N5daCj9D2ZPuP2Szls,2081
157
159
  plotnine/scales/scale_size.py,sha256=04nUQzKB_qpuQrcg8C7jYmLDYtdnlg6PkY7SivP5OlY,3273
158
160
  plotnine/scales/scale_stroke.py,sha256=7LKAg6-Q3VTuw78N2XEjFFzBa8yY5NVnfBSoJGsBS5o,1711
@@ -164,29 +166,29 @@ plotnine/stats/density.py,sha256=TQihwduejW5I5oZ8GdWI_U_n-5N49SfMShm3OtlDhW8,637
164
166
  plotnine/stats/distributions.py,sha256=pskpWUFcyrLR6AYeZAciRH0Cb267ME3G2mvm79xsgMc,1178
165
167
  plotnine/stats/smoothers.py,sha256=6zRX55yXuUjZ-VDDSJWR1uH_4U_rQWGWMefPFHVCEGQ,17825
166
168
  plotnine/stats/stat.py,sha256=Q7vjY_QV5pPR1guLVFZbQx9x1vtf7xrCadcUdq4UxPc,11532
167
- plotnine/stats/stat_bin.py,sha256=3wzROpzDGQIe3N15aI7tzYJXBfxPxTjY-pGmP5yb620,4535
168
- plotnine/stats/stat_bin_2d.py,sha256=ANM3IcGRN4IKMtmNuJZLnCUWdC7tQYAAg75gVe59B58,5217
169
- plotnine/stats/stat_bindot.py,sha256=FS-Axqhb-nMR9HK77BD-ElDHpsS8NaJKLMIff4-lDSU,10199
170
- plotnine/stats/stat_boxplot.py,sha256=5PvTTig5kAZQjenYL-158tjnzRnRUcnJpJL5qOdv9WI,5997
171
- plotnine/stats/stat_count.py,sha256=P560-9Lm6FWUvL5bGASIBxY3vQnbcZrU4CYlBdZpE3Y,1928
172
- plotnine/stats/stat_density.py,sha256=1TyOIiAaOaZesPcqIsnaVk14by0cKu6b7d7r-a5ZZSI,10346
173
- plotnine/stats/stat_density_2d.py,sha256=XSyE78IJwLLH4G5H7UD7ZrmknmaGCEMUHwvwNYmYVLQ,5647
174
- plotnine/stats/stat_ecdf.py,sha256=BdeisCWzDnuPMc3vBgZqpDsXCKy8ZfoSRwFPOQlgksM,1630
175
- plotnine/stats/stat_ellipse.py,sha256=NMr22TQMfVDZejIKvw1UWcB1NJptTlg6-qRf8d8EzJE,7570
176
- plotnine/stats/stat_function.py,sha256=AcP_wUu063fA8RAjc7AoFuVQmLdlsuEvP6m8AuTm9HY,3123
177
- plotnine/stats/stat_hull.py,sha256=WhbAkukGd2wEsmwoTXOPZTcBKggAL3hKml6AhvFVkQg,1454
178
- plotnine/stats/stat_identity.py,sha256=Bb9kMMK0u5xLOZytJgL-4xdnvDRRWxRoqSwDN2gJCSI,358
179
- plotnine/stats/stat_pointdensity.py,sha256=1vYecHae0m3USERh3s9OKY0ZY-qpgaD9q9I8MOShna0,2131
180
- plotnine/stats/stat_qq.py,sha256=KkrkkBhcov9y87VSSbrZQMvyMvJf5Ojj992caVCE2BI,3398
181
- plotnine/stats/stat_qq_line.py,sha256=3stKRIGFf_8P-0ugfl6rWELqUgAKIl6NsFhkPurOeMg,3460
182
- plotnine/stats/stat_quantile.py,sha256=ATCr3hq7k-QyrALQgjhpP8cEtv_Rk0UTsZA4rTlKsf8,2453
183
- plotnine/stats/stat_sina.py,sha256=_sT7FveukEv8KwH59nLiszvFLAEz-TkpBC_Ak1cIC_I,9393
184
- plotnine/stats/stat_smooth.py,sha256=o_tqdiB5d3AanLfpUxUluwGZboPRwM8RWXqNMbj18NY,7976
185
- plotnine/stats/stat_sum.py,sha256=xSgPvfPNCpCgXO7eUy7YSe1NUfjnqQ3dvCetJlRXAMY,1629
186
- plotnine/stats/stat_summary.py,sha256=UG7TmpdYnrMLdcfwECD8aIQ4xloNSHGIqgGihiwzNS0,9260
187
- plotnine/stats/stat_summary_bin.py,sha256=FYtkw8NG2Mlo-U_gO3Z944Qddpq619kEm9tAzK4sNj8,5701
188
- plotnine/stats/stat_unique.py,sha256=qnpcbmux0SRxzRxCTtQvh8dBtSxFkHCTSZKiLaFRjkg,360
189
- plotnine/stats/stat_ydensity.py,sha256=eX6sucANNLDDc_DnFGTzEvUqKWoyX04ILkv4PeVT01Q,5623
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=AWmMsI9Pt2IQ467Y2mqYAVw2klHu4xQFC8O7ae6Cfpc,10263
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=6_S6JAHtnoI7-XCkzmqy80fNnI4V1mM9cfEPPWp6nHI,2491
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
190
192
  plotnine/themes/__init__.py,sha256=tEKIF4gYmOF2Z1-_UDdK8zh41dLl-61HUGIhOQvki6I,916
191
193
  plotnine/themes/seaborn_rcmod.py,sha256=Pi-UX5LyH9teSuteYpqPOEnfLgKUz01LnKDyDA7Aois,15502
192
194
  plotnine/themes/targets.py,sha256=MjBRWWRgsLXXM_PJffPsV4DttQJB_m11jdD837BteuU,1686
@@ -202,18 +204,18 @@ plotnine/themes/theme_matplotlib.py,sha256=3JPOGhFz6Nul2s03Djd254RPtHtcQ0fsi3Hc9
202
204
  plotnine/themes/theme_minimal.py,sha256=YhkKNA48jP2OLa8-kHMfXFEFRjcsfWBLMID2orITrmo,884
203
205
  plotnine/themes/theme_seaborn.py,sha256=8giJh8QvkMJ8pr_XXHPDMfkysoI2_yr0vJhz48_sQGI,4319
204
206
  plotnine/themes/theme_tufte.py,sha256=qUOrZhQyfJgc0fmy8Es7tT7aYqUSzCjvkP7-dBilwHE,1926
205
- plotnine/themes/theme_void.py,sha256=gYXr367zYNhvt_NXlDUx0rBPUYJa1F6adnANn5HEx5A,3407
207
+ plotnine/themes/theme_void.py,sha256=itsmb9pWCZAwgccw_zHDjQRfhRRbAiMNo4zZ1zeBgIU,3223
206
208
  plotnine/themes/theme_xkcd.py,sha256=5MOdj_H23Kr_jbDnepmq1DQDbn8-TfUmtzYBZTb4RB4,2207
207
- plotnine/themes/themeable.py,sha256=aMm5MxbsmEV1XX87AFPPBfAgkJP3Vm0_z9_tKZwsxxY,71321
209
+ plotnine/themes/themeable.py,sha256=Px91yh5pft24mC-4uUFLYpU-45iX6cE64j3t-a20wug,71744
208
210
  plotnine/themes/elements/__init__.py,sha256=xV1la_mTv1BQ3zQp7ZGVGPdV6KohvEVhKAi1uPTeAs0,327
209
211
  plotnine/themes/elements/element_base.py,sha256=D7cfEglzsSuhW91KpZVAZ2MAHWZp64r9Aajoh8uMGZ4,832
210
212
  plotnine/themes/elements/element_blank.py,sha256=4r7-6HeR1494oWNIGQh0ASrFQ4SLvYa6aQHA85eH-Ds,187
211
- plotnine/themes/elements/element_line.py,sha256=xF6xW-iA66YEP_fN7ooqaYry8_8qZT-eT5wvKwXg3to,1838
213
+ plotnine/themes/elements/element_line.py,sha256=yZvj9B3M2a7a8o2J0n-q0uviNv34PtJVUr_UefZ-v5I,2005
212
214
  plotnine/themes/elements/element_rect.py,sha256=w5cLH-Sr4cTRXVdkRiu8kBqFt3TXHhIb1MUITfi89gE,1767
213
215
  plotnine/themes/elements/element_text.py,sha256=8yhwBa9s9JKCtBcqcBNybbCGK6ieDnZv4SHiC4Sy2qc,6255
214
216
  plotnine/themes/elements/margin.py,sha256=jMHe-UKHHer_VYwAVDC-Tz2-AP_4YDuXPTWAuacoqgU,4080
215
- plotnine-0.15.0a5.dist-info/licenses/LICENSE,sha256=GY4tQiUd17Tq3wWR42Zs9MRTFOTf6ahIXhZTcwAdOeU,1082
216
- plotnine-0.15.0a5.dist-info/METADATA,sha256=HJHt2oWR1vudsK80OUWXBGCkU_d_Q6TWUlvo2d9w-nQ,9407
217
- plotnine-0.15.0a5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
218
- plotnine-0.15.0a5.dist-info/top_level.txt,sha256=t340Mbko1ZbmvYPkQ81dIiPHcaQdTUszYz-bWUpr8ys,9
219
- plotnine-0.15.0a5.dist-info/RECORD,,
217
+ plotnine-0.15.0a7.dist-info/licenses/LICENSE,sha256=GY4tQiUd17Tq3wWR42Zs9MRTFOTf6ahIXhZTcwAdOeU,1082
218
+ plotnine-0.15.0a7.dist-info/METADATA,sha256=Dh5LX9Yv64P7G6-lf_4MCRXKqfZNohHHtWJ3NWSvu10,9407
219
+ plotnine-0.15.0a7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
220
+ plotnine-0.15.0a7.dist-info/top_level.txt,sha256=t340Mbko1ZbmvYPkQ81dIiPHcaQdTUszYz-bWUpr8ys,9
221
+ plotnine-0.15.0a7.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- from ._compose import ADD, DIV, OR, Compose
2
- from ._spacer import spacer
3
-
4
- __all__ = (
5
- "Compose",
6
- "ADD",
7
- "DIV",
8
- "OR",
9
- "spacer",
10
- )
@@ -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
File without changes