ggplot2-python 4.0.2.9000.post5__tar.gz → 4.0.2.9000.post6__tar.gz

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 (63) hide show
  1. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/PKG-INFO +1 -1
  2. ggplot2_python-4.0.2.9000.post6/Rplots.pdf +0 -0
  3. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/__init__.py +7 -4
  4. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_guide_axis.py +12 -1
  5. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/coord.py +1091 -116
  6. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/geom.py +592 -82
  7. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/guide.py +356 -86
  8. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/plot_render.py +67 -10
  9. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/scale.py +82 -15
  10. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/theme_defaults.py +18 -2
  11. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/theme_elements.py +55 -5
  12. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/pyproject.toml +1 -1
  13. ggplot2_python-4.0.2.9000.post6/tools/r_parity.py +97 -0
  14. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/.gitattributes +0 -0
  15. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/.gitignore +0 -0
  16. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/LICENSE +0 -0
  17. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/README.md +0 -0
  18. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_compat.py +0 -0
  19. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_defaults.py +0 -0
  20. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_env.py +0 -0
  21. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_guide_colourbar.py +0 -0
  22. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_guide_legend.py +0 -0
  23. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_make_constructor.py +0 -0
  24. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_plugins.py +0 -0
  25. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/_utils.py +0 -0
  26. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/aes.py +0 -0
  27. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/annotation.py +0 -0
  28. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/autoplot.py +0 -0
  29. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/coords/__init__.py +0 -0
  30. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/datasets.py +0 -0
  31. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/draw_key.py +0 -0
  32. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/extension/__init__.py +0 -0
  33. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/facet.py +0 -0
  34. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/fortify.py +0 -0
  35. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/geoms/__init__.py +0 -0
  36. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/ggproto.py +0 -0
  37. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/guides/__init__.py +0 -0
  38. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/labeller.py +0 -0
  39. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/labels.py +0 -0
  40. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/layer.py +0 -0
  41. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/layout.py +0 -0
  42. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/limits.py +0 -0
  43. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/plot.py +0 -0
  44. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/position.py +0 -0
  45. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/protocols.py +0 -0
  46. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/py.typed +0 -0
  47. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/qplot.py +0 -0
  48. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/diamonds.csv +0 -0
  49. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/economics.csv +0 -0
  50. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/economics_long.csv +0 -0
  51. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/faithfuld.csv +0 -0
  52. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/luv_colours.csv +0 -0
  53. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/midwest.csv +0 -0
  54. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/mpg.csv +0 -0
  55. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/msleep.csv +0 -0
  56. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/presidential.csv +0 -0
  57. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/seals.csv +0 -0
  58. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/resources/txhousing.csv +0 -0
  59. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/save.py +0 -0
  60. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/scales/__init__.py +0 -0
  61. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/stat.py +0 -0
  62. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/stats/__init__.py +0 -0
  63. {ggplot2_python-4.0.2.9000.post5 → ggplot2_python-4.0.2.9000.post6}/ggplot2_py/theme.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ggplot2-python
3
- Version: 4.0.2.9000.post5
3
+ Version: 4.0.2.9000.post6
4
4
  Summary: Python port of the R ggplot2 package (tracks R ggplot2 4.0.2.9000)
5
5
  Project-URL: Homepage, https://github.com/Bio-Babel/ggplot2-python
6
6
  Project-URL: Repository, https://github.com/Bio-Babel/ggplot2-python
@@ -7,7 +7,7 @@ approach to creating statistical visualizations.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- __version__ = "4.0.2.9000.post5"
10
+ __version__ = "4.0.2.9000.post6"
11
11
  __r_commit__ = "c02c05a"
12
12
 
13
13
  # ---------------------------------------------------------------------------
@@ -123,6 +123,7 @@ from ggplot2_py.geom import (
123
123
  GeomRaster,
124
124
  GeomText,
125
125
  GeomLabel,
126
+ GeomAbsText,
126
127
  GeomBoxplot,
127
128
  GeomViolin,
128
129
  GeomDotplot,
@@ -173,6 +174,7 @@ from ggplot2_py.geom import (
173
174
  geom_raster,
174
175
  geom_text,
175
176
  geom_label,
177
+ geom_abs_text,
176
178
  geom_boxplot,
177
179
  geom_violin,
178
180
  geom_dotplot,
@@ -566,6 +568,7 @@ from ggplot2_py.guide import (
566
568
  is_guide,
567
569
  is_guides,
568
570
  new_guide,
571
+ register_guide,
569
572
  old_guide,
570
573
  guide_geom,
571
574
  guide_train,
@@ -764,7 +767,7 @@ __all__ = [
764
767
  # Geom classes
765
768
  "Geom", "GeomPoint", "GeomPath", "GeomLine", "GeomStep",
766
769
  "GeomBar", "GeomCol", "GeomRect", "GeomTile", "GeomRaster",
767
- "GeomText", "GeomLabel", "GeomBoxplot", "GeomViolin", "GeomDotplot",
770
+ "GeomText", "GeomLabel", "GeomAbsText", "GeomBoxplot", "GeomViolin", "GeomDotplot",
768
771
  "GeomRibbon", "GeomArea", "GeomSmooth", "GeomPolygon",
769
772
  "GeomErrorbar", "GeomErrorbarh", "GeomCrossbar", "GeomLinerange", "GeomPointrange",
770
773
  "GeomSegment", "GeomCurve", "GeomSpoke",
@@ -775,7 +778,7 @@ __all__ = [
775
778
  # Geom constructors
776
779
  "geom_point", "geom_path", "geom_line", "geom_step",
777
780
  "geom_bar", "geom_col", "geom_rect", "geom_tile", "geom_raster",
778
- "geom_text", "geom_label", "geom_boxplot", "geom_violin", "geom_dotplot",
781
+ "geom_text", "geom_label", "geom_abs_text", "geom_boxplot", "geom_violin", "geom_dotplot",
779
782
  "geom_ribbon", "geom_area", "geom_smooth", "geom_polygon",
780
783
  "geom_errorbar", "geom_errorbarh", "geom_crossbar", "geom_linerange", "geom_pointrange",
781
784
  "geom_segment", "geom_curve", "geom_spoke",
@@ -905,7 +908,7 @@ __all__ = [
905
908
  # Guides
906
909
  "Guide", "GuideAxis", "GuideAxisLogticks", "GuideAxisStack",
907
910
  "GuideAxisTheta", "GuideBins", "GuideColourbar", "GuideColoursteps",
908
- "GuideCustom", "GuideLegend", "GuideNone",
911
+ "GuideCustom", "GuideLegend", "GuideNone", "register_guide",
909
912
  "guide_axis", "guide_legend", "guide_colourbar", "guide_colorbar",
910
913
  "guide_old_colourbar", "guide_old_colorbar",
911
914
  "guide_coloursteps", "guide_colorsteps", "guide_bins",
@@ -254,6 +254,15 @@ def draw_axis(
254
254
  minor_tick_length = tick_length * 0.5 # R: axis.minor.ticks.length = rel(0.75)
255
255
 
256
256
  # --- Build axis line (R: GuideAxis$build_decor, lines 313-322) -----
257
+ # R: the line is ``element_grob(elements$line, ...)``; when ``axis.line``
258
+ # is ``element_blank()`` (the default in theme_grey/theme_bw) this yields a
259
+ # zeroGrob — i.e. *no* line. The previous fallback dict drew a spurious
260
+ # grey20 line regardless, which is invisible at a panel edge but crosses
261
+ # the interior for a rotated radial axis. Honour the blank element.
262
+ from ggplot2_py.theme_elements import calc_element as _calc_el
263
+ _raw_line_el = _calc_el(f"axis.line.{aes}", theme)
264
+ _line_blank = _raw_line_el is None or _is_blank(_raw_line_el)
265
+
257
266
  if cap == "none" or len(breaks) == 0:
258
267
  line_start, line_end = 0.0, 1.0
259
268
  else:
@@ -261,7 +270,9 @@ def draw_axis(
261
270
  line_end = max(breaks) if cap in ("both", "upper") else 1.0
262
271
 
263
272
  line_lwd = float(line_el.get("linewidth", 0.5)) * _PT
264
- if is_horizontal:
273
+ if _line_blank:
274
+ axis_line = null_grob(name="axis.line")
275
+ elif is_horizontal:
265
276
  axis_line = segments_grob(
266
277
  x0=[line_start], y0=[orth_side],
267
278
  x1=[line_end], y1=[orth_side],