kaxe 1.8.0.dev0__tar.gz → 1.8.1.dev0__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 (146) hide show
  1. {kaxe-1.8.0.dev0/src/kaxe.egg-info → kaxe-1.8.1.dev0}/PKG-INFO +1 -1
  2. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/pyproject.toml +1 -1
  3. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/chart/box.py +47 -14
  4. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0/src/kaxe.egg-info}/PKG-INFO +1 -1
  5. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/LICENSE +0 -0
  6. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/MANIFEST.in +0 -0
  7. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/README.md +0 -0
  8. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/setup.cfg +0 -0
  9. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/__init__.py +0 -0
  10. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/_require_3d.py +0 -0
  11. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/chart/__init__.py +0 -0
  12. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/chart/bar.py +0 -0
  13. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/chart/pie.py +0 -0
  14. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/chart/qqplot.py +0 -0
  15. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/__init__.py +0 -0
  16. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/axis.py +0 -0
  17. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/bounds.py +0 -0
  18. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/color.py +0 -0
  19. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/backend.py +0 -0
  20. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/camera.py +0 -0
  21. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/helper.py +0 -0
  22. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/hud.py +0 -0
  23. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/objects/__init__.py +0 -0
  24. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/objects/color.py +0 -0
  25. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/objects/line.py +0 -0
  26. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/objects/point.py +0 -0
  27. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/objects/pointer.py +0 -0
  28. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/objects/triangle.py +0 -0
  29. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/openglrender.py +0 -0
  30. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/d3/translator.py +0 -0
  31. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/draw.py +0 -0
  32. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/fileloader.py +0 -0
  33. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/helper.py +0 -0
  34. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/ipython_display.py +0 -0
  35. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/legend.py +0 -0
  36. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/line.py +0 -0
  37. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/marker.py +0 -0
  38. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/palette.py +0 -0
  39. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/profiler.py +0 -0
  40. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/progress.py +0 -0
  41. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/round.py +0 -0
  42. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/shapes.py +0 -0
  43. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/styles.py +0 -0
  44. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/svg.py +0 -0
  45. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/svg_pdf.py +0 -0
  46. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/symbol.py +0 -0
  47. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/text.py +0 -0
  48. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/thin.py +0 -0
  49. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/core/window.py +0 -0
  50. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/data/__init__.py +0 -0
  51. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/data/excel.py +0 -0
  52. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/__init__.py +0 -0
  53. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/_lazy.py +0 -0
  54. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/__init__.py +0 -0
  55. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/arrow.py +0 -0
  56. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/bubble.py +0 -0
  57. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/contour.py +0 -0
  58. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/equation.py +0 -0
  59. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/fill.py +0 -0
  60. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/function.py +0 -0
  61. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/guide_grid.py +0 -0
  62. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/inequality.py +0 -0
  63. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/map.py +0 -0
  64. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/parameter.py +0 -0
  65. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/pillar.py +0 -0
  66. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d2/point.py +0 -0
  67. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d3/__init__.py +0 -0
  68. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d3/base.py +0 -0
  69. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d3/function.py +0 -0
  70. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d3/mesh.py +0 -0
  71. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d3/point.py +0 -0
  72. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/d3/potato.py +0 -0
  73. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/function.py +0 -0
  74. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/legend.py +0 -0
  75. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/mapdata.py +0 -0
  76. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/point.py +0 -0
  77. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/objects/text.py +0 -0
  78. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/__init__.py +0 -0
  79. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/_lazy.py +0 -0
  80. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/box.py +0 -0
  81. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/constants.py +0 -0
  82. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/d3/__init__.py +0 -0
  83. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/d3/axes.py +0 -0
  84. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/d3/geometry.py +0 -0
  85. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/d3/plot3d.py +0 -0
  86. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/d3/variants.py +0 -0
  87. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/double.py +0 -0
  88. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/empty.py +0 -0
  89. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/grid.py +0 -0
  90. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/log.py +0 -0
  91. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/polar.py +0 -0
  92. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/standard.py +0 -0
  93. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/themes.py +0 -0
  94. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/zoom.py +0 -0
  95. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/plot/zoom_connector.py +0 -0
  96. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/__init__.py +0 -0
  97. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/codec.py +0 -0
  98. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/context.py +0 -0
  99. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/document.py +0 -0
  100. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/registry.py +0 -0
  101. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/sample.py +0 -0
  102. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/sampled_curve.py +0 -0
  103. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/serializers.py +0 -0
  104. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/project/window.py +0 -0
  105. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/__init__.py +0 -0
  106. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/__init__.py +0 -0
  107. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-oblique.ttf +0 -0
  108. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-roman.ttf +0 -0
  109. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-semibold.ttf +0 -0
  110. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-semiboldoblique.ttf +0 -0
  111. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.classical-serif-italic.ttf +0 -0
  112. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-bold.ttf +0 -0
  113. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-bolditalic.ttf +0 -0
  114. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-italic.ttf +0 -0
  115. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-roman.ttf +0 -0
  116. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-bold.ttf +0 -0
  117. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-boldoblique.ttf +0 -0
  118. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-demi-condensed-demicondensed.ttf +0 -0
  119. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-medium.ttf +0 -0
  120. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-oblique.ttf +0 -0
  121. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-bold.ttf +0 -0
  122. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-bolditalic.ttf +0 -0
  123. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-boldslanted.ttf +0 -0
  124. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-romanslanted.ttf +0 -0
  125. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-italic.ttf +0 -0
  126. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-roman.ttf +0 -0
  127. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-upright-italic-uprightitalic.ttf +0 -0
  128. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bold.ttf +0 -0
  129. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bolditalic.ttf +0 -0
  130. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-italic.ttf +0 -0
  131. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-light.ttf +0 -0
  132. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-lightoblique.ttf +0 -0
  133. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-regular.ttf +0 -0
  134. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-italic.ttf +0 -0
  135. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-medium.ttf +0 -0
  136. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/computer-modern-family/readme.txt +0 -0
  137. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe/resources/logo-small.png +0 -0
  138. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe.egg-info/SOURCES.txt +0 -0
  139. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe.egg-info/dependency_links.txt +0 -0
  140. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe.egg-info/requires.txt +0 -0
  141. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/src/kaxe.egg-info/top_level.txt +0 -0
  142. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/tests/test.py +0 -0
  143. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/tests/test2.py +0 -0
  144. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/tests/test3.py +0 -0
  145. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/tests/test_4.py +0 -0
  146. {kaxe-1.8.0.dev0 → kaxe-1.8.1.dev0}/tests/test_5.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kaxe
3
- Version: 1.8.0.dev0
3
+ Version: 1.8.1.dev0
4
4
  Summary: A small graphing tool for functions, points, equations and more
5
5
  Author-email: Valter Yde Daugberg <valteryde@hotmail.com>
6
6
  Project-URL: Homepage, https://github.com/valteryde/kaxe
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kaxe"
3
- version = "1.8.0.dev0"
3
+ version = "1.8.1.dev0"
4
4
  authors = [
5
5
  { name="Valter Yde Daugberg", email="valteryde@hotmail.com" },
6
6
  ]
@@ -10,11 +10,25 @@ from ..core.symbol import makeSymbolShapes
10
10
  from ..core.window import Window
11
11
 
12
12
 
13
- def _overlay_y_offset(index, count, box_height, jitter_frac):
14
- if count <= 1:
15
- return 0.0
16
- t = index / (count - 1)
17
- return (t - 0.5) * jitter_frac * box_height
13
+ def _overlay_cluster_offsets(points, box_height, jitter_frac):
14
+ """Assign vertical offsets so points at the same value do not overlap."""
15
+ clusters = {}
16
+ for p in points:
17
+ clusters.setdefault(p["value"], []).append(p)
18
+
19
+ span = jitter_frac * box_height
20
+ for value in sorted(clusters.keys(), key=lambda v: (type(v).__name__, v)):
21
+ group = clusters[value]
22
+ group.sort(key=lambda p: (p["overlay_idx"], p["point_idx"]))
23
+ n = len(group)
24
+ for slot, p in enumerate(group):
25
+ if n == 1:
26
+ p["offset"] = 0.0
27
+ else:
28
+ t = slot / (n - 1)
29
+ p["offset"] = (t - 0.5) * span
30
+
31
+ return points
18
32
 
19
33
 
20
34
  class BoxPlot(Window):
@@ -202,21 +216,39 @@ class BoxPlot(Window):
202
216
  symbol.y = centerLine - height/2
203
217
 
204
218
  symbolHeight = self.getAttr('symbolHeight')
205
- for overlay in self.overlays:
206
- geom = box_geometry[overlay["box"]]
219
+ overlays_by_box = {}
220
+ for overlay_idx, overlay in enumerate(self.overlays):
221
+ box_idx = overlay["box"]
222
+ overlays_by_box.setdefault(box_idx, []).append((overlay_idx, overlay))
223
+
224
+ for box_idx, box_overlays in overlays_by_box.items():
225
+ geom = box_geometry[box_idx]
207
226
  centerLine = geom["centerLine"]
208
- data = overlay["data"]
209
- count = len(data)
210
- for j, value in enumerate(data):
211
- offset = _overlay_y_offset(j, count, boxHeight, overlayJitter)
227
+
228
+ points = []
229
+ for overlay_idx, overlay in box_overlays:
230
+ for point_idx, value in enumerate(overlay["data"]):
231
+ points.append(
232
+ {
233
+ "overlay_idx": overlay_idx,
234
+ "point_idx": point_idx,
235
+ "value": value,
236
+ "overlay": overlay,
237
+ }
238
+ )
239
+
240
+ _overlay_cluster_offsets(points, boxHeight, overlayJitter)
241
+
242
+ for p in points:
243
+ overlay = p["overlay"]
212
244
  symbol = makeSymbolShapes(
213
245
  overlay["symbol"],
214
246
  symbolHeight,
215
247
  color=overlay["color"],
216
248
  batch=self.boxbatch,
217
249
  )
218
- symbol.x = self.axis.get(value)[0]
219
- symbol.y = centerLine + offset - symbolHeight / 2
250
+ symbol.x = self.axis.get(p["value"])[0]
251
+ symbol.y = centerLine + p["offset"] - symbolHeight / 2
220
252
 
221
253
 
222
254
 
@@ -270,7 +302,8 @@ class BoxPlot(Window):
270
302
  Overlay custom points on a box plot row.
271
303
 
272
304
  Use this to highlight subgroups within a box, each with its own color
273
- and symbol. Points are jittered vertically within the target box row.
305
+ and symbol. Points at the same x value are separated vertically
306
+ (beeswarm) so overlay series do not stack on top of each other.
274
307
 
275
308
  Parameters
276
309
  ----------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kaxe
3
- Version: 1.8.0.dev0
3
+ Version: 1.8.1.dev0
4
4
  Summary: A small graphing tool for functions, points, equations and more
5
5
  Author-email: Valter Yde Daugberg <valteryde@hotmail.com>
6
6
  Project-URL: Homepage, https://github.com/valteryde/kaxe
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes