plotnine 0.15.0.dev1__tar.gz → 0.15.0.dev2__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 (651) hide show
  1. {plotnine-0.15.0.dev1/plotnine.egg-info → plotnine-0.15.0.dev2}/PKG-INFO +1 -1
  2. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/changelog.qmd +12 -0
  3. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/layout_manager/_layout_items.py +219 -78
  4. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/layout_manager/_spaces.py +8 -8
  5. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/patches.py +1 -1
  6. plotnine-0.15.0.dev2/plotnine/_mpl/text.py +113 -0
  7. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_utils/__init__.py +1 -1
  8. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/strips.py +5 -2
  9. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/guides/guide.py +2 -2
  10. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/guides/guide_legend.py +7 -8
  11. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/iapi.py +4 -2
  12. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/mapping/aes.py +4 -3
  13. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/plot_composition/_compose.py +13 -4
  14. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/element_text.py +1 -0
  15. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/targets.py +1 -1
  16. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_gray.py +1 -0
  17. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/themeable.py +4 -4
  18. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2/plotnine.egg-info}/PKG-INFO +1 -1
  19. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine.egg-info/SOURCES.txt +2 -0
  20. plotnine-0.15.0.dev2/tests/baseline_images/test_guide_internals/guide_legend_after_scale.png +0 -0
  21. plotnine-0.15.0.dev2/tests/baseline_images/test_layout/axis_text_justification.png +0 -0
  22. plotnine-0.15.0.dev2/tests/baseline_images/test_layout/facet_wrap_scales_free.png +0 -0
  23. plotnine-0.15.0.dev2/tests/baseline_images/test_theme/theme_void.png +0 -0
  24. plotnine-0.15.0.dev2/tests/baseline_images/test_theme/theme_xkcd.png +0 -0
  25. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_facets.py +21 -0
  26. plotnine-0.15.0.dev2/tests/test_guide_internals.py +43 -0
  27. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_layout.py +19 -0
  28. plotnine-0.15.0.dev1/plotnine/_mpl/text.py +0 -78
  29. plotnine-0.15.0.dev1/tests/baseline_images/test_layout/facet_wrap_scales_free.png +0 -0
  30. plotnine-0.15.0.dev1/tests/baseline_images/test_theme/theme_void.png +0 -0
  31. plotnine-0.15.0.dev1/tests/baseline_images/test_theme/theme_xkcd.png +0 -0
  32. plotnine-0.15.0.dev1/tests/test_guide_internals.py +0 -16
  33. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.gitattributes +0 -0
  34. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/DISCUSSION_TEMPLATE/2024-plotnine-contest.yml +0 -0
  35. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/utils/_repo.py +0 -0
  36. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/utils/please.py +0 -0
  37. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/workflows/documentation.yml +0 -0
  38. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/workflows/release.yml +0 -0
  39. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/workflows/testing.yml +0 -0
  40. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.github/workflows/weekly.yml +0 -0
  41. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.gitignore +0 -0
  42. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.pre-commit-config.yaml +0 -0
  43. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/.readthedocs.yaml +0 -0
  44. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/CITATION.bib +0 -0
  45. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/LICENSE +0 -0
  46. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/Makefile +0 -0
  47. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/README.md +0 -0
  48. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/code-of-conduct.md +0 -0
  49. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/codecov.yml +0 -0
  50. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/.gitignore +0 -0
  51. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/Makefile +0 -0
  52. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/_config.py +0 -0
  53. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/_quarto.yml +0 -0
  54. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/_quartodoc.yml +0 -0
  55. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/_renderer.py +0 -0
  56. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/favicon-16x16.png +0 -0
  57. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/favicon-32x32.png +0 -0
  58. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/logo-512.png +0 -0
  59. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/logo.png +0 -0
  60. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme-image-1.png +0 -0
  61. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme-image-2.png +0 -0
  62. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme-image-3.png +0 -0
  63. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme-image-4.png +0 -0
  64. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme-image-5.png +0 -0
  65. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme-image-5alt.png +0 -0
  66. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/images/readme_images.py +0 -0
  67. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/doc/plotnine.scss +0 -0
  68. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/licences/SEABORN_LICENSE +0 -0
  69. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/__init__.py +0 -0
  70. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/__init__.py +0 -0
  71. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/gridspec.py +0 -0
  72. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/layout_manager/__init__.py +0 -0
  73. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/layout_manager/_engine.py +0 -0
  74. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/layout_manager/_layout_tree.py +0 -0
  75. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/offsetbox.py +0 -0
  76. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/ticker.py +0 -0
  77. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/transforms.py +0 -0
  78. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_mpl/utils.py +0 -0
  79. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_utils/context.py +0 -0
  80. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_utils/dev.py +0 -0
  81. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_utils/ipython.py +0 -0
  82. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_utils/quarto.py +0 -0
  83. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/_utils/registry.py +0 -0
  84. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/animation.py +0 -0
  85. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/coords/__init__.py +0 -0
  86. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/coords/coord.py +0 -0
  87. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/coords/coord_cartesian.py +0 -0
  88. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/coords/coord_fixed.py +0 -0
  89. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/coords/coord_flip.py +0 -0
  90. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/coords/coord_trans.py +0 -0
  91. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/__init__.py +0 -0
  92. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/diamonds.csv +0 -0
  93. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/economics.csv +0 -0
  94. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/economics_long.csv +0 -0
  95. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/faithful.csv +0 -0
  96. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/faithfuld.csv +0 -0
  97. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/huron.csv +0 -0
  98. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/luv_colours.csv +0 -0
  99. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/meat.csv +0 -0
  100. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/midwest.csv +0 -0
  101. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/mpg.csv +0 -0
  102. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/msleep.csv +0 -0
  103. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/mtcars.csv +0 -0
  104. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/pageviews.csv +0 -0
  105. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/penguins.csv +0 -0
  106. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/presidential.csv +0 -0
  107. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/seals.csv +0 -0
  108. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/data/txhousing.csv +0 -0
  109. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/doctools.py +0 -0
  110. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/exceptions.py +0 -0
  111. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/__init__.py +0 -0
  112. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/facet.py +0 -0
  113. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/facet_grid.py +0 -0
  114. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/facet_null.py +0 -0
  115. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/facet_wrap.py +0 -0
  116. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/labelling.py +0 -0
  117. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/facets/layout.py +0 -0
  118. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/__init__.py +0 -0
  119. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/annotate.py +0 -0
  120. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/annotation_logticks.py +0 -0
  121. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/annotation_stripes.py +0 -0
  122. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom.py +0 -0
  123. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_abline.py +0 -0
  124. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_area.py +0 -0
  125. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_bar.py +0 -0
  126. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_bin_2d.py +0 -0
  127. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_blank.py +0 -0
  128. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_boxplot.py +0 -0
  129. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_col.py +0 -0
  130. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_count.py +0 -0
  131. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_crossbar.py +0 -0
  132. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_density.py +0 -0
  133. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_density_2d.py +0 -0
  134. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_dotplot.py +0 -0
  135. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_errorbar.py +0 -0
  136. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_errorbarh.py +0 -0
  137. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_freqpoly.py +0 -0
  138. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_histogram.py +0 -0
  139. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_hline.py +0 -0
  140. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_jitter.py +0 -0
  141. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_label.py +0 -0
  142. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_line.py +0 -0
  143. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_linerange.py +0 -0
  144. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_map.py +0 -0
  145. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_path.py +0 -0
  146. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_point.py +0 -0
  147. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_pointdensity.py +0 -0
  148. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_pointrange.py +0 -0
  149. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_polygon.py +0 -0
  150. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_qq.py +0 -0
  151. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_qq_line.py +0 -0
  152. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_quantile.py +0 -0
  153. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_raster.py +0 -0
  154. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_rect.py +0 -0
  155. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_ribbon.py +0 -0
  156. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_rug.py +0 -0
  157. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_segment.py +0 -0
  158. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_sina.py +0 -0
  159. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_smooth.py +0 -0
  160. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_spoke.py +0 -0
  161. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_step.py +0 -0
  162. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_text.py +0 -0
  163. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_tile.py +0 -0
  164. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_violin.py +0 -0
  165. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/geoms/geom_vline.py +0 -0
  166. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/ggplot.py +0 -0
  167. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/guides/__init__.py +0 -0
  168. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/guides/guide_axis.py +0 -0
  169. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/guides/guide_colorbar.py +0 -0
  170. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/guides/guides.py +0 -0
  171. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/labels.py +0 -0
  172. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/layer.py +0 -0
  173. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/mapping/__init__.py +0 -0
  174. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/mapping/_env.py +0 -0
  175. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/mapping/evaluation.py +0 -0
  176. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/options.py +0 -0
  177. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/plot_composition/__init__.py +0 -0
  178. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/plot_composition/_plotspec.py +0 -0
  179. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/plot_composition/_spacer.py +0 -0
  180. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/__init__.py +0 -0
  181. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position.py +0 -0
  182. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_dodge.py +0 -0
  183. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_dodge2.py +0 -0
  184. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_fill.py +0 -0
  185. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_identity.py +0 -0
  186. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_jitter.py +0 -0
  187. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_jitterdodge.py +0 -0
  188. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_nudge.py +0 -0
  189. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/positions/position_stack.py +0 -0
  190. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/py.typed +0 -0
  191. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/qplot.py +0 -0
  192. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/__init__.py +0 -0
  193. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/_expand.py +0 -0
  194. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/_runtime_typing.py +0 -0
  195. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/limits.py +0 -0
  196. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/range.py +0 -0
  197. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale.py +0 -0
  198. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_alpha.py +0 -0
  199. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_color.py +0 -0
  200. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_continuous.py +0 -0
  201. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_datetime.py +0 -0
  202. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_discrete.py +0 -0
  203. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_identity.py +0 -0
  204. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_linetype.py +0 -0
  205. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_manual.py +0 -0
  206. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_shape.py +0 -0
  207. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_size.py +0 -0
  208. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_stroke.py +0 -0
  209. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scale_xy.py +0 -0
  210. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/scales/scales.py +0 -0
  211. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/__init__.py +0 -0
  212. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/binning.py +0 -0
  213. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/density.py +0 -0
  214. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/distributions.py +0 -0
  215. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/smoothers.py +0 -0
  216. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat.py +0 -0
  217. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_bin.py +0 -0
  218. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_bin_2d.py +0 -0
  219. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_bindot.py +0 -0
  220. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_boxplot.py +0 -0
  221. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_count.py +0 -0
  222. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_density.py +0 -0
  223. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_density_2d.py +0 -0
  224. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_ecdf.py +0 -0
  225. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_ellipse.py +0 -0
  226. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_function.py +0 -0
  227. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_hull.py +0 -0
  228. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_identity.py +0 -0
  229. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_pointdensity.py +0 -0
  230. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_qq.py +0 -0
  231. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_qq_line.py +0 -0
  232. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_quantile.py +0 -0
  233. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_sina.py +0 -0
  234. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_smooth.py +0 -0
  235. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_sum.py +0 -0
  236. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_summary.py +0 -0
  237. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_summary_bin.py +0 -0
  238. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_unique.py +0 -0
  239. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/stats/stat_ydensity.py +0 -0
  240. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/__init__.py +0 -0
  241. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/__init__.py +0 -0
  242. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/element_base.py +0 -0
  243. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/element_blank.py +0 -0
  244. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/element_line.py +0 -0
  245. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/element_rect.py +0 -0
  246. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/elements/margin.py +0 -0
  247. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/seaborn_rcmod.py +0 -0
  248. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme.py +0 -0
  249. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_538.py +0 -0
  250. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_bw.py +0 -0
  251. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_classic.py +0 -0
  252. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_dark.py +0 -0
  253. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_light.py +0 -0
  254. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_linedraw.py +0 -0
  255. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_matplotlib.py +0 -0
  256. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_minimal.py +0 -0
  257. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_seaborn.py +0 -0
  258. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_tufte.py +0 -0
  259. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_void.py +0 -0
  260. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/themes/theme_xkcd.py +0 -0
  261. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/typing.py +0 -0
  262. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine/watermark.py +0 -0
  263. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine.egg-info/dependency_links.txt +0 -0
  264. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine.egg-info/requires.txt +0 -0
  265. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/plotnine.egg-info/top_level.txt +0 -0
  266. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/pyproject.toml +0 -0
  267. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/requirements/doc.txt +0 -0
  268. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/setup.cfg +0 -0
  269. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_aes/geom_crossbar.png +0 -0
  270. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_aes/reorder.png +0 -0
  271. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_aes/reorder_index.png +0 -0
  272. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_aes/stat_bin_2d.png +0 -0
  273. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_aes/stat_ecdf.png +0 -0
  274. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_aes/test_stat_function.png +0 -0
  275. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotate/multiple_annotation_geoms.png +0 -0
  276. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks.png +0 -0
  277. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks_base_5.png +0 -0
  278. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks_base_8.png +0 -0
  279. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks_coord_flip.png +0 -0
  280. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks_coord_flip_discrete.png +0 -0
  281. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks_coord_flip_discrete_bottom.png +0 -0
  282. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_logticks/annotation_logticks_faceting.png +0 -0
  283. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes.png +0 -0
  284. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_continuous_scale.png +0 -0
  285. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_coord_flip.png +0 -0
  286. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_faceting.png +0 -0
  287. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_fill_direction_extend.png +0 -0
  288. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_fill_range.png +0 -0
  289. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_fill_range_cycle.png +0 -0
  290. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_annotation_stripes/annotation_stripes_single_stripe.png +0 -0
  291. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_coords/coord_fixed.png +0 -0
  292. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_coords/coord_flip.png +0 -0
  293. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_coords/coord_trans.png +0 -0
  294. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_coords/coord_trans_backtransform.png +0 -0
  295. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_coords/coord_trans_reverse.png +0 -0
  296. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_coords/datetime_scale_limits.png +0 -0
  297. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/aslabeller_dict_0tag.png +0 -0
  298. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/aslabeller_func_hashtagit.png +0 -0
  299. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/label_both.png +0 -0
  300. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/label_context.png +0 -0
  301. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/label_context_wrap2vars.png +0 -0
  302. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/label_value.png +0 -0
  303. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/labeller_cols_both_grid.png +0 -0
  304. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/labeller_cols_both_wrap.png +0 -0
  305. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/labeller_towords.png +0 -0
  306. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facet_labelling/uneven_num_of_lines.png +0 -0
  307. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/array_mapping_and_evaluation.png +0 -0
  308. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/dir_v_ncol.png +0 -0
  309. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_drop_false.png +0 -0
  310. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_expression.png +0 -0
  311. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_formula_only_cols.png +0 -0
  312. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_formula_only_rows.png +0 -0
  313. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_margins.png +0 -0
  314. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_one_by_one_var.png +0 -0
  315. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_scales_free_x.png +0 -0
  316. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_scales_free_y.png +0 -0
  317. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_space_free.png +0 -0
  318. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_grid_space_ratios.png +0 -0
  319. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_direction_v.png +0 -0
  320. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_expression.png +0 -0
  321. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_label_both.png +0 -0
  322. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_not_as_table.png +0 -0
  323. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_not_as_table_direction_v.png +0 -0
  324. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_one_var.png +0 -0
  325. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/facet_wrap_two_vars.png +0 -0
  326. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/manual_mapping_with_lists.png +0 -0
  327. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/non_mapped_facetting.png +0 -0
  328. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_facets/variable_and_annotate.png +0 -0
  329. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_abline/aes_inheritance.png +0 -0
  330. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_abline/aesthetics.png +0 -0
  331. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bar_col_histogram/bar-count.png +0 -0
  332. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bar_col_histogram/col.png +0 -0
  333. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bar_col_histogram/histogram-count.png +0 -0
  334. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bar_col_histogram/stat-count-float.png +0 -0
  335. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bar_col_histogram/stat-count-int.png +0 -0
  336. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bin_2d/drop_false.png +0 -0
  337. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_bin_2d/drop_true.png +0 -0
  338. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_blank/blank.png +0 -0
  339. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_boxplot/aesthetics+coord_flip.png +0 -0
  340. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_boxplot/aesthetics.png +0 -0
  341. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_boxplot/no_outliers.png +0 -0
  342. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_boxplot/params.png +0 -0
  343. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_boxplot/position_nudge.png +0 -0
  344. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_boxplot/weight.png +0 -0
  345. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_count/continuous_x_y.png +0 -0
  346. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_count/discrete_x.png +0 -0
  347. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_count/discrete_y.png +0 -0
  348. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_crossbar/aesthetics.png +0 -0
  349. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density/bounds.png +0 -0
  350. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density/few_datapoints.png +0 -0
  351. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density/gaussian-trimmed.png +0 -0
  352. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density/gaussian.png +0 -0
  353. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density/gaussian_weighted.png +0 -0
  354. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density/triangular.png +0 -0
  355. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density_2d/contours.png +0 -0
  356. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density_2d/points.png +0 -0
  357. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_density_2d/polygon.png +0 -0
  358. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/binaxis_y.png +0 -0
  359. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/dotdensity.png +0 -0
  360. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/group_basic.png +0 -0
  361. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/group_stackgroups.png +0 -0
  362. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/group_stackgroups_binaxis_y.png +0 -0
  363. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/histodot.png +0 -0
  364. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/stackdir_center.png +0 -0
  365. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/stackdir_centerwhole.png +0 -0
  366. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/stackdir_down.png +0 -0
  367. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_dotplot/stackratio.png +0 -0
  368. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_errorbar_errorbarh/errorbar_aesthetics.png +0 -0
  369. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_errorbar_errorbarh/errorbarh_aesthetics.png +0 -0
  370. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_freqpoly/midpoint.png +0 -0
  371. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_hline/aesthetics.png +0 -0
  372. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_linerange_pointrange/linerange_aesthetics.png +0 -0
  373. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_linerange_pointrange/pointrange_aesthetics.png +0 -0
  374. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_map/facet_wrap.png +0 -0
  375. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_map/geometries.png +0 -0
  376. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_map/multipoint.png +0 -0
  377. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_map/multipolygon.png +0 -0
  378. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/aesthetics.png +0 -0
  379. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/arrow.png +0 -0
  380. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/arrow_facets.png +0 -0
  381. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/missing_values.png +0 -0
  382. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/no_missing_values.png +0 -0
  383. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/path_line_step.png +0 -0
  384. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/step.png +0 -0
  385. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_path_line_step/step_mid.png +0 -0
  386. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_point/aesthetics.png +0 -0
  387. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_point/color_only_mapping.png +0 -0
  388. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_point/custom_shapes.png +0 -0
  389. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_point/legend_transparency.png +0 -0
  390. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_point/no_fill.png +0 -0
  391. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_point/no_mapping.png +0 -0
  392. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_pointdensity/contours.png +0 -0
  393. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_pointdensity/points.png +0 -0
  394. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_polygon/aesthetics.png +0 -0
  395. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_polygon/no_fill.png +0 -0
  396. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_qq_qq_line/normal.png +0 -0
  397. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_qq_qq_line/normal_with_line.png +0 -0
  398. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_quantile/lines.png +0 -0
  399. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_raster/gap_no_interpolation.png +0 -0
  400. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_raster/gap_with_interpolation.png +0 -0
  401. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_raster/rectangle.png +0 -0
  402. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_raster/square.png +0 -0
  403. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rect_tile/coord-trans-groups.png +0 -0
  404. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rect_tile/coord-trans.png +0 -0
  405. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rect_tile/infinite-rects.png +0 -0
  406. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rect_tile/rect-aesthetics.png +0 -0
  407. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rect_tile/rect-nofill.png +0 -0
  408. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rect_tile/tile-aesthetics.png +0 -0
  409. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/area_aesthetics.png +0 -0
  410. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/ribbon_aesthetics.png +0 -0
  411. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/ribbon_coord_flip.png +0 -0
  412. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/ribbon_facetting.png +0 -0
  413. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/ribbon_outline_type.png +0 -0
  414. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/ribbon_outline_type_coord_flip.png +0 -0
  415. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_ribbon_area/ribbon_where.png +0 -0
  416. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rug/aesthetics.png +0 -0
  417. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_rug/coord_flip.png +0 -0
  418. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_segment/aesthetics.png +0 -0
  419. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_segment/arrow.png +0 -0
  420. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_sina/method_counts.png +0 -0
  421. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_sina/scale_area+coord_flip.png +0 -0
  422. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_sina/scale_area.png +0 -0
  423. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_sina/scale_count.png +0 -0
  424. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/continuous_x.png +0 -0
  425. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/continuous_x_fullrange.png +0 -0
  426. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/coord_trans_se_false.png +0 -0
  427. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/discrete_x.png +0 -0
  428. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/discrete_x_fullrange.png +0 -0
  429. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/glm_formula.png +0 -0
  430. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/gls_formula.png +0 -0
  431. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/init_and_fit_kwargs.png +0 -0
  432. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/legend_fill_ratio.png +0 -0
  433. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/linear_smooth.png +0 -0
  434. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/linear_smooth_no_ci.png +0 -0
  435. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/lm_formula.png +0 -0
  436. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/lm_formula_weights.png +0 -0
  437. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/non_linear_smooth.png +0 -0
  438. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/non_linear_smooth_no_ci.png +0 -0
  439. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/rlm_formula.png +0 -0
  440. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_smooth/sorts_by_x.png +0 -0
  441. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_spoke/aesthetics.png +0 -0
  442. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_spoke/test_unmapped_angle.png +0 -0
  443. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_text_label/adjust_label.png +0 -0
  444. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_text_label/adjust_text.png +0 -0
  445. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_text_label/adjust_text_default_color.png +0 -0
  446. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_text_label/format_missing_values.png +0 -0
  447. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_text_label/label_aesthetics.png +0 -0
  448. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_text_label/text_aesthetics.png +0 -0
  449. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/aesthetics+coord_flip.png +0 -0
  450. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/aesthetics.png +0 -0
  451. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/no_trim.png +0 -0
  452. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/quantiles_width_dodge.png +0 -0
  453. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/scale.png +0 -0
  454. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/scales_free.png +0 -0
  455. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/style.png +0 -0
  456. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_violin/style_alternating.png +0 -0
  457. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_geom_vline/aesthetics.png +0 -0
  458. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_ggplot_internals/after_scale_mapping.png +0 -0
  459. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_ggplot_internals/to_pandas.png +0 -0
  460. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layers/inserting_layers.png +0 -0
  461. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/axis_title_x_justification.png +0 -0
  462. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/axis_title_y_justification.png +0 -0
  463. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/colorbar_frame.png +0 -0
  464. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/default.png +0 -0
  465. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/default_tag_location.png +0 -0
  466. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/different_colorbar_themes.png +0 -0
  467. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/facet_grid.png +0 -0
  468. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/facet_wrap.png +0 -0
  469. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/inside_legend_90pct_top_right.png +0 -0
  470. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/inside_legend_left.png +0 -0
  471. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/inside_legend_top.png +0 -0
  472. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/inside_legend_top_right.png +0 -0
  473. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/justification_with_blank_title_and_text.png +0 -0
  474. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/legend_at_the_bottom.png +0 -0
  475. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/legend_at_top.png +0 -0
  476. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/legend_on_the_left.png +0 -0
  477. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/legends_in_different_positions.png +0 -0
  478. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/margin_bottom.png +0 -0
  479. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/outside_legend_bottom_left.png +0 -0
  480. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/outside_legend_left_top.png +0 -0
  481. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/outside_legend_right_bottom.png +0 -0
  482. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/outside_legend_top_right.png +0 -0
  483. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/panel_bottomleft.png +0 -0
  484. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/panel_topleft_margin_in_fig.png +0 -0
  485. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/panel_topleft_margin_in_pt.png +0 -0
  486. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/panel_topleft_margin_in_pt_ar1.png +0 -0
  487. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/panel_xycoords.png +0 -0
  488. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_margin_aspect_ratio.png +0 -0
  489. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_margin_protruding_axis_text.png +0 -0
  490. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_title_justification.png +0 -0
  491. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_titles_and_caption_positioning.png +0 -0
  492. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_topright.png +0 -0
  493. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_topright_margin_in_fig.png +0 -0
  494. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_topright_margin_in_pt.png +0 -0
  495. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/plot_xycoords.png +0 -0
  496. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_layout/turn_off_guide.png +0 -0
  497. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge.png +0 -0
  498. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge2.png +0 -0
  499. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge2_preserve_single_interval.png +0 -0
  500. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge2_varwidth.png +0 -0
  501. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge_preserve_single.png +0 -0
  502. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge_preserve_single_text.png +0 -0
  503. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/dodge_segment.png +0 -0
  504. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/fill.png +0 -0
  505. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/jitter.png +0 -0
  506. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/jitterdodge.png +0 -0
  507. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/nudge.png +0 -0
  508. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/stack-negative.png +0 -0
  509. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/stack-non-linear-scale.png +0 -0
  510. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_position/stack.png +0 -0
  511. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/arrays.png +0 -0
  512. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/multiple_geoms.png +0 -0
  513. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/onlyx.png +0 -0
  514. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/onlyy.png +0 -0
  515. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/range.png +0 -0
  516. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/sample.png +0 -0
  517. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/scalars.png +0 -0
  518. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/series_labelling.png +0 -0
  519. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/string-arrays.png +0 -0
  520. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/xlim.png +0 -0
  521. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_qplot/ylim.png +0 -0
  522. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/bool_mapping.png +0 -0
  523. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/breaks_and_labels_outside_of_limits.png +0 -0
  524. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/datetime_scale_expansion.png +0 -0
  525. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/datetime_scale_limits.png +0 -0
  526. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/discrete_xy_scale_drop_limits.png +0 -0
  527. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/expand_limits.png +0 -0
  528. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/legend_ordering_added_scales.png +0 -0
  529. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/legend_ordering_global_aesthetics_1.png +0 -0
  530. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/legend_ordering_global_aesthetics_2.png +0 -0
  531. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/legend_ordering_local_aesthetics_1.png +0 -0
  532. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/legend_ordering_local_aesthetics_2.png +0 -0
  533. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/legend_ordering_mixed_scope_aesthetics.png +0 -0
  534. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/missing_data_discrete_position_scale.png +0 -0
  535. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/missing_data_discrete_scale.png +0 -0
  536. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/missing_manual_dict_aesthetic.png +0 -0
  537. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/multiple_aesthetics.png +0 -0
  538. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/ordinal_scale.png +0 -0
  539. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/test_legend_ordering_with_identity_scale.png +0 -0
  540. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/transform_aes_defaults_and_params.png +0 -0
  541. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_internals/transform_datetime_aes_param.png +0 -0
  542. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_labelling/caption_complex.png +0 -0
  543. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_labelling/caption_simple.png +0 -0
  544. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_labelling/labelling_with_colour.png +0 -0
  545. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_linetype/scale_linetype_manual_strings.png +0 -0
  546. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_linetype/scale_linetype_manual_tuples.png +0 -0
  547. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_scale_symlog/scale_y_symlog.png +0 -0
  548. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_ecdf/computed_y_column.png +0 -0
  549. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_ecdf/ecdf.png +0 -0
  550. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_ecdf/ecdf_no_pad.png +0 -0
  551. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_ellipse/ellipse.png +0 -0
  552. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_function/args.png +0 -0
  553. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_function/limits.png +0 -0
  554. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_hull/hull.png +0 -0
  555. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/fun_args.png +0 -0
  556. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/mean_cl_boot.png +0 -0
  557. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/mean_cl_normal.png +0 -0
  558. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/mean_sdl.png +0 -0
  559. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/mean_se.png +0 -0
  560. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/median_hilow.png +0 -0
  561. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary/summary_functions.png +0 -0
  562. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary_bin/continuous_x.png +0 -0
  563. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary_bin/discrete_x.png +0 -0
  564. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_stat_summary_bin/setting_binwidth.png +0 -0
  565. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/axis_ticks_and_length.png +0 -0
  566. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/element_text_with_sequence_values.png +0 -0
  567. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/no_ticks.png +0 -0
  568. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_538.png +0 -0
  569. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_bw.png +0 -0
  570. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_classic.png +0 -0
  571. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_dark.png +0 -0
  572. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_gray.png +0 -0
  573. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_light.png +0 -0
  574. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_linedraw.png +0 -0
  575. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_matplotlib.png +0 -0
  576. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_minimal.png +0 -0
  577. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_seaborn.png +0 -0
  578. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_theme/theme_tufte.png +0 -0
  579. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/baseline_images/test_watermark/watermark.png +0 -0
  580. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/conftest.py +0 -0
  581. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/images/plotnine-watermark.png +0 -0
  582. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_aes.py +0 -0
  583. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_animation.py +0 -0
  584. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_annotate.py +0 -0
  585. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_annotation_logticks.py +0 -0
  586. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_annotation_stripes.py +0 -0
  587. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_binning.py +0 -0
  588. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_coords.py +0 -0
  589. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_doctools.py +0 -0
  590. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_facet_labelling.py +0 -0
  591. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom.py +0 -0
  592. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_abline.py +0 -0
  593. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_bar_col_histogram.py +0 -0
  594. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_bin_2d.py +0 -0
  595. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_blank.py +0 -0
  596. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_boxplot.py +0 -0
  597. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_count.py +0 -0
  598. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_crossbar.py +0 -0
  599. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_density.py +0 -0
  600. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_density_2d.py +0 -0
  601. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_dotplot.py +0 -0
  602. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_errorbar_errorbarh.py +0 -0
  603. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_freqpoly.py +0 -0
  604. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_hline.py +0 -0
  605. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_linerange_pointrange.py +0 -0
  606. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_map.py +0 -0
  607. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_path_line_step.py +0 -0
  608. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_point.py +0 -0
  609. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_pointdensity.py +0 -0
  610. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_polygon.py +0 -0
  611. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_qq_qq_line.py +0 -0
  612. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_quantile.py +0 -0
  613. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_raster.py +0 -0
  614. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_rect_tile.py +0 -0
  615. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_ribbon_area.py +0 -0
  616. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_rug.py +0 -0
  617. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_segment.py +0 -0
  618. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_sina.py +0 -0
  619. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_smooth.py +0 -0
  620. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_spoke.py +0 -0
  621. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_text_label.py +0 -0
  622. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_violin.py +0 -0
  623. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_geom_vline.py +0 -0
  624. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_ggplot_internals.py +0 -0
  625. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_ggsave.py +0 -0
  626. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_layers.py +0 -0
  627. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_lint_and_format.py +0 -0
  628. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_position.py +0 -0
  629. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_qplot.py +0 -0
  630. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_save_as_pdf_pages.py +0 -0
  631. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_scale_internals.py +0 -0
  632. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_scale_labelling.py +0 -0
  633. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_scale_linetype.py +0 -0
  634. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_scale_symlog.py +0 -0
  635. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat.py +0 -0
  636. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_calculate_methods.py +0 -0
  637. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_ecdf.py +0 -0
  638. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_ellipse.py +0 -0
  639. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_function.py +0 -0
  640. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_hull.py +0 -0
  641. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_summary.py +0 -0
  642. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_stat_summary_bin.py +0 -0
  643. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_theme.py +0 -0
  644. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_utils.py +0 -0
  645. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tests/test_watermark.py +0 -0
  646. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tools/gha_check_semver.py +0 -0
  647. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tools/release-checklist-tpl.md +0 -0
  648. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tools/release-checklist.py +0 -0
  649. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tools/term.py +0 -0
  650. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tools/update_baseline_images.py +0 -0
  651. {plotnine-0.15.0.dev1 → plotnine-0.15.0.dev2}/tools/visualize_tests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plotnine
3
- Version: 0.15.0.dev1
3
+ Version: 0.15.0.dev2
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)
@@ -79,6 +79,18 @@ title: Changelog
79
79
  - Fixed bug in with the `legend_key_height` themeable where it wasn't applied.
80
80
  {{< issue 921 >}}
81
81
 
82
+ - Fixed bug where justifying `axis_text_x` and `axis_text_y` using horizontal and vertical
83
+ alignment did not work as expected. {{< issue 927 >}}
84
+
85
+ - Fixed justifying strip_text within the strip_background. {{< issue 867 >}}
86
+
87
+ - Fixed bug where facetting along a column with unused categories could raise
88
+ an error. {{< issue 930 >}}
89
+
90
+ - Fixed bug where computed aesthetic from `after_scale` are were not applied to the legend.
91
+ {{< issue 926 >}}
92
+
93
+
82
94
  ## v0.14.5
83
95
  (2025-01-02)
84
96
  [![](https://zenodo.org/badge/DOI/10.5281/zenodo.14587381.svg)](https://doi.org/10.5281/zenodo.14587381)
@@ -361,9 +361,9 @@ class LayoutItems:
361
361
  ]
362
362
  return self.calc.max_width(artists)
363
363
 
364
- def axis_ticks_x_max_height(self, location: AxesLocation) -> float:
364
+ def axis_ticks_x_max_height_at(self, location: AxesLocation) -> float:
365
365
  """
366
- Return maximum height[inches] of x ticks
366
+ Return maximum height[figure space] of x ticks
367
367
  """
368
368
  heights = [
369
369
  self.calc.tight_height(tick.tick1line)
@@ -372,22 +372,31 @@ class LayoutItems:
372
372
  ]
373
373
  return max(heights) if len(heights) else 0
374
374
 
375
- def axis_text_x_max_height(self, location: AxesLocation) -> float:
375
+ def axis_text_x_max_height(self, ax: Axes) -> float:
376
376
  """
377
- Return maximum height[inches] of x tick labels
377
+ Return maximum height[figure space] of x tick labels
378
378
  """
379
379
  heights = [
380
380
  self.calc.tight_height(label) + pad
381
- for ax in self._filter_axes(location)
382
381
  for label, pad in zip(
383
382
  self.axis_text_x(ax), self.axis_text_x_margin(ax)
384
383
  )
385
384
  ]
386
385
  return max(heights) if len(heights) else 0
387
386
 
388
- def axis_ticks_y_max_width(self, location: AxesLocation) -> float:
387
+ def axis_text_x_max_height_at(self, location: AxesLocation) -> float:
388
+ """
389
+ Return maximum height[figure space] of x tick labels
390
+ """
391
+ heights = [
392
+ self.axis_text_x_max_height(ax)
393
+ for ax in self._filter_axes(location)
394
+ ]
395
+ return max(heights) if len(heights) else 0
396
+
397
+ def axis_ticks_y_max_width_at(self, location: AxesLocation) -> float:
389
398
  """
390
- Return maximum width[inches] of y ticks
399
+ Return maximum width[figure space] of y ticks
391
400
  """
392
401
  widths = [
393
402
  self.calc.tight_width(tick.tick1line)
@@ -396,22 +405,31 @@ class LayoutItems:
396
405
  ]
397
406
  return max(widths) if len(widths) else 0
398
407
 
399
- def axis_text_y_max_width(self, location: AxesLocation) -> float:
408
+ def axis_text_y_max_width(self, ax: Axes) -> float:
400
409
  """
401
- Return maximum width[inches] of y tick labels
410
+ Return maximum width[figure space] of y tick labels
402
411
  """
403
412
  widths = [
404
413
  self.calc.tight_width(label) + pad
405
- for ax in self._filter_axes(location)
406
414
  for label, pad in zip(
407
415
  self.axis_text_y(ax), self.axis_text_y_margin(ax)
408
416
  )
409
417
  ]
410
418
  return max(widths) if len(widths) else 0
411
419
 
420
+ def axis_text_y_max_width_at(self, location: AxesLocation) -> float:
421
+ """
422
+ Return maximum width[figure space] of y tick labels
423
+ """
424
+ widths = [
425
+ self.axis_text_y_max_width(ax)
426
+ for ax in self._filter_axes(location)
427
+ ]
428
+ return max(widths) if len(widths) else 0
429
+
412
430
  def axis_text_y_top_protrusion(self, location: AxesLocation) -> float:
413
431
  """
414
- Return maximum height[inches] above the axes of y tick labels
432
+ Return maximum height[figure space] above the axes of y tick labels
415
433
  """
416
434
  extras = []
417
435
  for ax in self._filter_axes(location):
@@ -424,7 +442,7 @@ class LayoutItems:
424
442
 
425
443
  def axis_text_y_bottom_protrusion(self, location: AxesLocation) -> float:
426
444
  """
427
- Return maximum height[inches] below the axes of y tick labels
445
+ Return maximum height[figure space] below the axes of y tick labels
428
446
  """
429
447
  extras = []
430
448
  for ax in self._filter_axes(location):
@@ -438,7 +456,7 @@ class LayoutItems:
438
456
 
439
457
  def axis_text_x_left_protrusion(self, location: AxesLocation) -> float:
440
458
  """
441
- Return maximum width[inches] of x tick labels to the left of the axes
459
+ Return maximum width[figure space] left of the axes of x tick labels
442
460
  """
443
461
  extras = []
444
462
  for ax in self._filter_axes(location):
@@ -452,7 +470,7 @@ class LayoutItems:
452
470
 
453
471
  def axis_text_x_right_protrusion(self, location: AxesLocation) -> float:
454
472
  """
455
- Return maximum width[inches] of x tick labels to the right of the axes
473
+ Return maximum width[figure space] right of the axes of y tick labels
456
474
  """
457
475
  extras = []
458
476
  for ax in self._filter_axes(location):
@@ -470,6 +488,7 @@ class LayoutItems:
470
488
  theme = self.plot.theme
471
489
  plot_title_position = theme.getp("plot_title_position", "panel")
472
490
  plot_caption_position = theme.getp("plot_caption_position", "panel")
491
+ justify = TextJustifier(spaces)
473
492
 
474
493
  if self.plot_tag:
475
494
  set_plot_tag_position(self.plot_tag, spaces)
@@ -477,37 +496,124 @@ class LayoutItems:
477
496
  if self.plot_title:
478
497
  ha = theme.getp(("plot_title", "ha"))
479
498
  self.plot_title.set_y(spaces.t.y2("plot_title"))
480
- horizontally_align_text(
481
- self.plot_title, ha, spaces, plot_title_position
499
+ justify.horizontally_about(
500
+ self.plot_title, ha, plot_title_position
482
501
  )
483
502
 
484
503
  if self.plot_subtitle:
485
504
  ha = theme.getp(("plot_subtitle", "ha"))
486
505
  self.plot_subtitle.set_y(spaces.t.y2("plot_subtitle"))
487
- horizontally_align_text(
488
- self.plot_subtitle, ha, spaces, plot_title_position
506
+ justify.horizontally_about(
507
+ self.plot_subtitle, ha, plot_title_position
489
508
  )
490
509
 
491
510
  if self.plot_caption:
492
511
  ha = theme.getp(("plot_caption", "ha"), "right")
493
512
  self.plot_caption.set_y(spaces.b.y1("plot_caption"))
494
- horizontally_align_text(
495
- self.plot_caption, ha, spaces, plot_caption_position
513
+ justify.horizontally_about(
514
+ self.plot_caption, ha, plot_caption_position
496
515
  )
497
516
 
498
517
  if self.axis_title_x:
499
518
  ha = theme.getp(("axis_title_x", "ha"), "center")
500
519
  self.axis_title_x.set_y(spaces.b.y1("axis_title_x"))
501
- horizontally_align_text(self.axis_title_x, ha, spaces)
520
+ justify.horizontally_about(self.axis_title_x, ha, "panel")
502
521
 
503
522
  if self.axis_title_y:
504
523
  va = theme.getp(("axis_title_y", "va"), "center")
505
524
  self.axis_title_y.set_x(spaces.l.x1("axis_title_y"))
506
- vertically_align_text(self.axis_title_y, va, spaces)
525
+ justify.vertically_about(self.axis_title_y, va, "panel")
507
526
 
508
527
  if self.legends:
509
528
  set_legends_position(self.legends, spaces)
510
529
 
530
+ self._adjust_axis_text_x(justify)
531
+ self._adjust_axis_text_y(justify)
532
+
533
+ def _adjust_axis_text_x(self, justify: TextJustifier):
534
+ """
535
+ Adjust x-axis text, justifying vertically as necessary
536
+ """
537
+
538
+ def to_vertical_axis_dimensions(value: float, ax: Axes) -> float:
539
+ """
540
+ Convert value in figure dimensions to axis dimensions
541
+ """
542
+ _, H = self.plot.figure.bbox.size
543
+ h = ax.get_window_extent().height
544
+ return value * H / h
545
+
546
+ if self._is_blank("axis_text_x"):
547
+ return
548
+
549
+ va = self.plot.theme.getp(("axis_text_x", "va"), "top")
550
+
551
+ for ax in self.plot.axs:
552
+ texts = list(self.axis_text_x(ax))
553
+ axis_text_row_height = to_vertical_axis_dimensions(
554
+ self.axis_text_x_max_height(ax), ax
555
+ )
556
+ for text in texts:
557
+ height = to_vertical_axis_dimensions(
558
+ self.calc.tight_height(text), ax
559
+ )
560
+ justify.vertically(
561
+ text, va, -axis_text_row_height, 0, height=height
562
+ )
563
+
564
+ def _adjust_axis_text_y(self, justify: TextJustifier):
565
+ """
566
+ Adjust x-axis text, justifying horizontally as necessary
567
+ """
568
+
569
+ def to_horizontal_axis_dimensions(value: float, ax: Axes) -> float:
570
+ """
571
+ Convert value in figure dimensions to axis dimensions
572
+
573
+ Matplotlib expects x position of y-axis text is in transAxes,
574
+ but all our layout measurements are in transFigure.
575
+
576
+ ---------------------
577
+ | |
578
+ | ----------- |
579
+ | X | | |
580
+ | X | | |
581
+ | X | | |
582
+ | X | | |
583
+ | X | | |
584
+ | X | | |
585
+ | 0-----------1 |
586
+ | axes |
587
+ | |
588
+ 0---------------------1
589
+ figure
590
+
591
+ We do not set the transform to transFigure because, then we need
592
+ to calculate the position in transFigure; accounting for all the
593
+ space wherever the panel may be.
594
+ """
595
+ W, _ = self.plot.figure.bbox.size
596
+ w = ax.get_window_extent().width
597
+ return value * W / w
598
+
599
+ if self._is_blank("axis_text_y"):
600
+ return
601
+
602
+ ha = self.plot.theme.getp(("axis_text_y", "ha"), "right")
603
+
604
+ for ax in self.plot.axs:
605
+ texts = list(self.axis_text_y(ax))
606
+ axis_text_col_width = to_horizontal_axis_dimensions(
607
+ self.axis_text_y_max_width(ax), ax
608
+ )
609
+ for text in texts:
610
+ width = to_horizontal_axis_dimensions(
611
+ self.calc.tight_width(text), ax
612
+ )
613
+ justify.horizontally(
614
+ text, ha, -axis_text_col_width, 0, width=width
615
+ )
616
+
511
617
 
512
618
  def _text_is_visible(text: Text) -> bool:
513
619
  """
@@ -516,54 +622,47 @@ def _text_is_visible(text: Text) -> bool:
516
622
  return text.get_visible() and text._text # type: ignore
517
623
 
518
624
 
519
- def horizontally_align_text(
520
- text: Text,
521
- ha: str | float,
522
- spaces: LayoutSpaces,
523
- how: Literal["panel", "plot"] = "panel",
524
- ):
625
+ @dataclass
626
+ class TextJustifier:
525
627
  """
526
- Horizontal justification
628
+ Justify Text
527
629
 
528
- Reinterpret horizontal alignment to be justification about the panels or
529
- the plot (depending on the how parameter)
630
+ The justification methods reinterpret alignment values to be justification
631
+ about a span.
530
632
  """
531
- if isinstance(ha, str):
532
- lookup = {
533
- "left": 0.0,
534
- "center": 0.5,
535
- "right": 1.0,
536
- }
537
- rel = lookup[ha]
538
- else:
539
- rel = ha
540
-
541
- if how == "panel":
542
- left = spaces.l.left
543
- right = spaces.r.right
544
- else:
545
- left = spaces.l.plot_left
546
- right = spaces.r.plot_right
547
633
 
548
- width = spaces.items.calc.width(text)
549
- x = rel_position(rel, width, left, right)
550
- text.set_x(x)
551
- text.set_horizontalalignment("left")
634
+ spaces: LayoutSpaces
552
635
 
553
-
554
- def vertically_align_text(
555
- text: Text,
556
- va: str | float,
557
- spaces: LayoutSpaces,
558
- how: Literal["panel", "plot"] = "panel",
559
- ):
560
- """
561
- Vertical justification
562
-
563
- Reinterpret vertical alignment to be justification about the panels or
564
- the plot (depending on the how parameter).
565
- """
566
- if isinstance(va, str):
636
+ def horizontally(
637
+ self,
638
+ text: Text,
639
+ ha: str | float,
640
+ left: float,
641
+ right: float,
642
+ width: float | None = None,
643
+ ):
644
+ """
645
+ Horizontally Justify text between left and right
646
+ """
647
+ lookup = {"left": 0.0, "center": 0.5, "right": 1.0}
648
+ rel = lookup.get(ha, ha) # pyright: ignore[reportCallIssue, reportArgumentType]
649
+ if width is None:
650
+ width = self.spaces.items.calc.width(text)
651
+ x = rel_position(rel, width, left, right)
652
+ text.set_x(x)
653
+ text.set_horizontalalignment("left")
654
+
655
+ def vertically(
656
+ self,
657
+ text: Text,
658
+ va: str | float,
659
+ bottom: float,
660
+ top: float,
661
+ height: float | None = None,
662
+ ):
663
+ """
664
+ Vertically Justify text between bottom and top
665
+ """
567
666
  lookup = {
568
667
  "top": 1.0,
569
668
  "center": 0.5,
@@ -571,21 +670,63 @@ def vertically_align_text(
571
670
  "center_baseline": 0.5,
572
671
  "bottom": 0.0,
573
672
  }
574
- rel = lookup[va]
575
- else:
576
- rel = va
673
+ rel = lookup.get(va, va) # pyright: ignore[reportCallIssue, reportArgumentType]
577
674
 
578
- if how == "panel":
579
- top = spaces.t.top
580
- bottom = spaces.b.bottom
581
- else:
582
- top = spaces.t.plot_top
583
- bottom = spaces.b.plot_bottom
675
+ if height is None:
676
+ height = self.spaces.items.calc.height(text)
677
+ y = rel_position(rel, height, bottom, top)
678
+ text.set_y(y)
679
+ text.set_verticalalignment("bottom")
584
680
 
585
- height = spaces.items.calc.height(text)
586
- y = rel_position(rel, height, bottom, top)
587
- text.set_y(y)
588
- text.set_verticalalignment("bottom")
681
+ def horizontally_across_panel(self, text: Text, ha: str | float):
682
+ """
683
+ Horizontally Justify text accross the panel(s) width
684
+ """
685
+ self.horizontally(text, ha, self.spaces.l.left, self.spaces.r.right)
686
+
687
+ def horizontally_across_plot(self, text: Text, ha: str | float):
688
+ """
689
+ Horizontally Justify text across the plot's width
690
+ """
691
+ self.horizontally(
692
+ text, ha, self.spaces.l.plot_left, self.spaces.r.plot_right
693
+ )
694
+
695
+ def vertically_along_panel(self, text: Text, va: str | float):
696
+ """
697
+ Horizontally Justify text along the panel(s) height
698
+ """
699
+ self.vertically(text, va, self.spaces.b.bottom, self.spaces.t.top)
700
+
701
+ def vertically_along_plot(self, text: Text, va: str | float):
702
+ """
703
+ Vertically Justify text along the plot's height
704
+ """
705
+ self.vertically(
706
+ text, va, self.spaces.b.plot_bottom, self.spaces.t.plot_top
707
+ )
708
+
709
+ def horizontally_about(
710
+ self, text: Text, ratio: float, how: Literal["panel", "plot"]
711
+ ):
712
+ """
713
+ Horizontally Justify text across the panel or plot
714
+ """
715
+ if how == "panel":
716
+ self.horizontally_across_panel(text, ratio)
717
+ else:
718
+ self.horizontally_across_plot(text, ratio)
719
+
720
+ def vertically_about(
721
+ self, text: Text, ratio: float, how: Literal["panel", "plot"]
722
+ ):
723
+ """
724
+ Vertically Justify text along the panel or plot
725
+ """
726
+ if how == "panel":
727
+ self.vertically_along_panel(text, ratio)
728
+ else:
729
+ self.vertically_along_plot(text, ratio)
589
730
 
590
731
 
591
732
  def set_legends_position(legends: legend_artists, spaces: LayoutSpaces):
@@ -255,8 +255,8 @@ class left_spaces(_side_spaces):
255
255
  self.axis_title_y_margin_right = m.r
256
256
 
257
257
  # Account for the space consumed by the axis
258
- self.axis_text_y = items.axis_text_y_max_width("first_col")
259
- self.axis_ticks_y = items.axis_ticks_y_max_width("first_col")
258
+ self.axis_text_y = items.axis_text_y_max_width_at("first_col")
259
+ self.axis_ticks_y = items.axis_ticks_y_max_width_at("first_col")
260
260
 
261
261
  # Adjust plot_margin to make room for ylabels that protude well
262
262
  # beyond the axes
@@ -616,8 +616,8 @@ class bottom_spaces(_side_spaces):
616
616
  self.axis_title_x_margin_top = m.t * F
617
617
 
618
618
  # Account for the space consumed by the axis
619
- self.axis_ticks_x = items.axis_ticks_x_max_height("last_row")
620
- self.axis_text_x = items.axis_text_x_max_height("last_row")
619
+ self.axis_ticks_x = items.axis_ticks_x_max_height_at("last_row")
620
+ self.axis_text_x = items.axis_text_x_max_height_at("last_row")
621
621
 
622
622
  # Adjust plot_margin to make room for ylabels that protude well
623
623
  # beyond the axes
@@ -917,13 +917,13 @@ class LayoutSpaces:
917
917
  self.sh += self.t.strip_text_x_height_top * (1 + strip_align_x)
918
918
 
919
919
  if facet.free["x"]:
920
- self.sh += self.items.axis_text_x_max_height(
920
+ self.sh += self.items.axis_text_x_max_height_at(
921
921
  "all"
922
- ) + self.items.axis_ticks_x_max_height("all")
922
+ ) + self.items.axis_ticks_x_max_height_at("all")
923
923
  if facet.free["y"]:
924
- self.sw += self.items.axis_text_y_max_width(
924
+ self.sw += self.items.axis_text_y_max_width_at(
925
925
  "all"
926
- ) + self.items.axis_ticks_y_max_width("all")
926
+ ) + self.items.axis_ticks_y_max_width_at("all")
927
927
 
928
928
  # width and height of axes as fraction of figure width & height
929
929
  self.w = ((self.r.right - self.l.left) - self.sw * (ncol - 1)) / ncol
@@ -49,7 +49,7 @@ class StripTextPatch(FancyBboxPatch):
49
49
  return
50
50
 
51
51
  text = self.text
52
- posx, posy = text.get_transform().transform((text._x, text._y))
52
+ posx, posy = text.get_transform().transform(text.get_position())
53
53
  x, y, w, h = _get_textbox(text, renderer)
54
54
 
55
55
  self.set_bounds(0.0, 0.0, w, h)
@@ -0,0 +1,113 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from matplotlib.text import Text
6
+
7
+ from .patches import StripTextPatch
8
+ from .utils import bbox_in_axes_space, rel_position
9
+
10
+ if TYPE_CHECKING:
11
+ from matplotlib.backend_bases import RendererBase
12
+
13
+ from plotnine.iapi import strip_draw_info
14
+ from plotnine.typing import HorizontalJustification, VerticalJustification
15
+
16
+
17
+ class StripText(Text):
18
+ """
19
+ Strip Text
20
+ """
21
+
22
+ draw_info: strip_draw_info
23
+ patch: StripTextPatch
24
+
25
+ def __init__(self, info: strip_draw_info):
26
+ kwargs = {
27
+ "rotation": info.rotation,
28
+ "transform": info.ax.transAxes,
29
+ "clip_on": False,
30
+ "zorder": 3.3,
31
+ }
32
+
33
+ super().__init__(
34
+ info.x,
35
+ info.y,
36
+ info.label,
37
+ **kwargs,
38
+ )
39
+ self.draw_info = info
40
+ self.patch = StripTextPatch(self)
41
+
42
+ # TODO: Move these _justify methods to the layout manager
43
+ # We need to first make sure that the patch has the final size during
44
+ # layout computation. Right now, the final size is calculated during
45
+ # draw (in these justify methods)
46
+ def _justify_horizontally(self, renderer):
47
+ """
48
+ Justify the text along the strip_background
49
+ """
50
+ info = self.draw_info
51
+ lookup: dict[HorizontalJustification, float] = {
52
+ "left": 0.0,
53
+ "center": 0.5,
54
+ "right": 1.0,
55
+ }
56
+ rel = lookup.get(info.ha, 0.5) if isinstance(info.ha, str) else info.ha
57
+ patch_bbox = bbox_in_axes_space(self.patch, info.ax, renderer)
58
+ text_bbox = bbox_in_axes_space(self, info.ax, renderer)
59
+ l, b, w, h = info.x, info.y, info.box_width, patch_bbox.height
60
+ b = b + patch_bbox.height * info.strip_align
61
+ x = rel_position(rel, text_bbox.width, patch_bbox.x0, patch_bbox.x1)
62
+ y = b + h / 2
63
+ self.set_horizontalalignment("left")
64
+ self.patch.set_bounds(l, b, w, h)
65
+ self.set_position((x, y))
66
+
67
+ def _justify_vertically(self, renderer):
68
+ """
69
+ Justify the text along the strip_background
70
+ """
71
+ # Note that the strip text & background and horizontal but
72
+ # rotated to appear vertical. So we really are still justifying
73
+ # horizontally.
74
+ info = self.draw_info
75
+ lookup: dict[VerticalJustification, float] = {
76
+ "bottom": 0.0,
77
+ "center": 0.5,
78
+ "top": 1.0,
79
+ }
80
+ rel = lookup.get(info.va, 0.5) if isinstance(info.va, str) else info.va
81
+ patch_bbox = bbox_in_axes_space(self.patch, info.ax, renderer)
82
+ text_bbox = bbox_in_axes_space(self, info.ax, renderer)
83
+ l, b, w, h = info.x, info.y, patch_bbox.width, info.box_height
84
+ l = l + patch_bbox.width * info.strip_align
85
+ x = l + w / 2
86
+ y = rel_position(rel, text_bbox.height, patch_bbox.y0, patch_bbox.y1)
87
+ self.set_horizontalalignment("right") # 90CW right means bottom
88
+ self.patch.set_bounds(l, b, w, h)
89
+ self.set_position((x, y))
90
+
91
+ def draw(self, renderer: RendererBase):
92
+ if not self.get_visible():
93
+ return
94
+
95
+ # expand strip_text patch to contain the text
96
+ self.patch.update_position_size(renderer)
97
+
98
+ # Align patch across the edge of the panel
99
+ if self.draw_info.position == "top":
100
+ self._justify_horizontally(renderer)
101
+ else: # "right"
102
+ self._justify_vertically(renderer)
103
+
104
+ self.patch.set_transform(self.draw_info.ax.transAxes)
105
+ self.patch.set_mutation_scale(0)
106
+
107
+ # Put text in center of patch
108
+ self.set_rotation_mode("anchor")
109
+ self.set_verticalalignment("center_baseline")
110
+
111
+ # Draw spatch
112
+ self.patch.draw(renderer)
113
+ return super().draw(renderer)
@@ -299,7 +299,7 @@ def ninteraction(df: pd.DataFrame, drop: bool = False) -> list[int]:
299
299
  return _id_var(df[df.columns[0]], drop)
300
300
 
301
301
  # Calculate individual ids
302
- ids = df.apply(_id_var, axis=0)
302
+ ids = df.apply(_id_var, axis=0, drop=drop)
303
303
  ids = ids.reindex(columns=list(reversed(ids.columns)))
304
304
 
305
305
  # Calculate dimensions
@@ -63,11 +63,13 @@ class strip:
63
63
  """
64
64
  theme = self.theme
65
65
  position = self.position
66
+
66
67
  if position == "top":
67
68
  # The x & y values are just starting locations
68
69
  # The final location is determined by the layout manager.
69
70
  y = 1
70
- ha, va = "center", "bottom"
71
+ ha = theme.getp(("strip_text_x", "ha"), "center")
72
+ va = theme.getp(("strip_text_x", "va"), "bottom")
71
73
  rotation = theme.getp(("strip_text_x", "rotation"))
72
74
  box_width = 1
73
75
  box_height = 0 # Determined by the text size
@@ -88,7 +90,8 @@ class strip:
88
90
  # The x & y values are just starting locations
89
91
  # The final location is determined by the layout manager.
90
92
  x = 1
91
- ha, va = "left", "center"
93
+ ha = theme.getp(("strip_text_y", "ha"), "left")
94
+ va = theme.getp(("strip_text_y", "va"), "center")
92
95
  rotation = theme.getp(("strip_text_y", "rotation"))
93
96
  box_width = 0 # Determine by the text height
94
97
  # TODO: Allow two unique paddings for either side.
@@ -18,7 +18,7 @@ if TYPE_CHECKING:
18
18
  from typing_extensions import Self
19
19
 
20
20
  from plotnine import aes, guides
21
- from plotnine.layer import Layers
21
+ from plotnine.layer import Layers, layer
22
22
  from plotnine.scales.scale import scale
23
23
  from plotnine.typing import (
24
24
  LegendPosition,
@@ -79,7 +79,7 @@ class guide(ABC, metaclass=Register):
79
79
  self.elements = cast("GuideElements", None)
80
80
  self.guides_elements: GuidesElements
81
81
 
82
- def legend_aesthetics(self, layer):
82
+ def legend_aesthetics(self, layer: layer):
83
83
  """
84
84
  Return the aesthetics that contribute to the legend
85
85