plot3 0.6.3__tar.gz → 0.6.4__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 (81) hide show
  1. {plot3-0.6.3 → plot3-0.6.4}/PKG-INFO +1 -1
  2. plot3-0.6.4/plot3/__version__.py +1 -0
  3. {plot3-0.6.3 → plot3-0.6.4}/plot3/viewer.py +16 -7
  4. {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/PKG-INFO +1 -1
  5. plot3-0.6.3/plot3/__version__.py +0 -1
  6. {plot3-0.6.3 → plot3-0.6.4}/LICENSE +0 -0
  7. {plot3-0.6.3 → plot3-0.6.4}/README.md +0 -0
  8. {plot3-0.6.3 → plot3-0.6.4}/plot3/__init__.py +0 -0
  9. {plot3-0.6.3 → plot3-0.6.4}/plot3/aesexpr.py +0 -0
  10. {plot3-0.6.3 → plot3-0.6.4}/plot3/build.py +0 -0
  11. {plot3-0.6.3 → plot3-0.6.4}/plot3/calculus.py +0 -0
  12. {plot3-0.6.3 → plot3-0.6.4}/plot3/compose.py +0 -0
  13. {plot3-0.6.3 → plot3-0.6.4}/plot3/contour.py +0 -0
  14. {plot3-0.6.3 → plot3-0.6.4}/plot3/craft.py +0 -0
  15. {plot3-0.6.3 → plot3-0.6.4}/plot3/encode.py +0 -0
  16. {plot3-0.6.3 → plot3-0.6.4}/plot3/expr.py +0 -0
  17. {plot3-0.6.3 → plot3-0.6.4}/plot3/flip.py +0 -0
  18. {plot3-0.6.3 → plot3-0.6.4}/plot3/function.py +0 -0
  19. {plot3-0.6.3 → plot3-0.6.4}/plot3/geoms.py +0 -0
  20. {plot3-0.6.3 → plot3-0.6.4}/plot3/ggplot.py +0 -0
  21. {plot3-0.6.3 → plot3-0.6.4}/plot3/io.py +0 -0
  22. {plot3-0.6.3 → plot3-0.6.4}/plot3/jupyter.py +0 -0
  23. {plot3-0.6.3 → plot3-0.6.4}/plot3/latexin.py +0 -0
  24. {plot3-0.6.3 → plot3-0.6.4}/plot3/masking.py +0 -0
  25. {plot3-0.6.3 → plot3-0.6.4}/plot3/mathtext.py +0 -0
  26. {plot3-0.6.3 → plot3-0.6.4}/plot3/payload.py +0 -0
  27. {plot3-0.6.3 → plot3-0.6.4}/plot3/remote.py +0 -0
  28. {plot3-0.6.3 → plot3-0.6.4}/plot3/scales.py +0 -0
  29. {plot3-0.6.3 → plot3-0.6.4}/plot3/scaling.py +0 -0
  30. {plot3-0.6.3 → plot3-0.6.4}/plot3/special.py +0 -0
  31. {plot3-0.6.3 → plot3-0.6.4}/plot3/stat2d.py +0 -0
  32. {plot3-0.6.3 → plot3-0.6.4}/plot3/static.py +0 -0
  33. {plot3-0.6.3 → plot3-0.6.4}/plot3/stats3d.py +0 -0
  34. {plot3-0.6.3 → plot3-0.6.4}/plot3/table.py +0 -0
  35. {plot3-0.6.3 → plot3-0.6.4}/plot3/themes.py +0 -0
  36. {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/SOURCES.txt +0 -0
  37. {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/dependency_links.txt +0 -0
  38. {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/requires.txt +0 -0
  39. {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/top_level.txt +0 -0
  40. {plot3-0.6.3 → plot3-0.6.4}/pyproject.toml +0 -0
  41. {plot3-0.6.3 → plot3-0.6.4}/setup.cfg +0 -0
  42. {plot3-0.6.3 → plot3-0.6.4}/tests/test_2d_density.py +0 -0
  43. {plot3-0.6.3 → plot3-0.6.4}/tests/test_3d.py +0 -0
  44. {plot3-0.6.3 → plot3-0.6.4}/tests/test_animation.py +0 -0
  45. {plot3-0.6.3 → plot3-0.6.4}/tests/test_annotate.py +0 -0
  46. {plot3-0.6.3 → plot3-0.6.4}/tests/test_api_public.py +0 -0
  47. {plot3-0.6.3 → plot3-0.6.4}/tests/test_array_backend.py +0 -0
  48. {plot3-0.6.3 → plot3-0.6.4}/tests/test_arrow.py +0 -0
  49. {plot3-0.6.3 → plot3-0.6.4}/tests/test_build_contract.py +0 -0
  50. {plot3-0.6.3 → plot3-0.6.4}/tests/test_contour.py +0 -0
  51. {plot3-0.6.3 → plot3-0.6.4}/tests/test_everyday_ggplot2.py +0 -0
  52. {plot3-0.6.3 → plot3-0.6.4}/tests/test_expr.py +0 -0
  53. {plot3-0.6.3 → plot3-0.6.4}/tests/test_facets_compose.py +0 -0
  54. {plot3-0.6.3 → plot3-0.6.4}/tests/test_geom_function.py +0 -0
  55. {plot3-0.6.3 → plot3-0.6.4}/tests/test_geoms_ds.py +0 -0
  56. {plot3-0.6.3 → plot3-0.6.4}/tests/test_ggplot2_extras2.py +0 -0
  57. {plot3-0.6.3 → plot3-0.6.4}/tests/test_ggplot2_parity.py +0 -0
  58. {plot3-0.6.3 → plot3-0.6.4}/tests/test_ggplot_extras.py +0 -0
  59. {plot3-0.6.3 → plot3-0.6.4}/tests/test_grammar.py +0 -0
  60. {plot3-0.6.3 → plot3-0.6.4}/tests/test_latex_input.py +0 -0
  61. {plot3-0.6.3 → plot3-0.6.4}/tests/test_lidar_scene.py +0 -0
  62. {plot3-0.6.3 → plot3-0.6.4}/tests/test_masking.py +0 -0
  63. {plot3-0.6.3 → plot3-0.6.4}/tests/test_math_layers.py +0 -0
  64. {plot3-0.6.3 → plot3-0.6.4}/tests/test_mathtext.py +0 -0
  65. {plot3-0.6.3 → plot3-0.6.4}/tests/test_payload.py +0 -0
  66. {plot3-0.6.3 → plot3-0.6.4}/tests/test_payload_display.py +0 -0
  67. {plot3-0.6.3 → plot3-0.6.4}/tests/test_point_cloud.py +0 -0
  68. {plot3-0.6.3 → plot3-0.6.4}/tests/test_r_oracle_parity.py +0 -0
  69. {plot3-0.6.3 → plot3-0.6.4}/tests/test_readme.py +0 -0
  70. {plot3-0.6.3 → plot3-0.6.4}/tests/test_remote_bridge.py +0 -0
  71. {plot3-0.6.3 → plot3-0.6.4}/tests/test_review_fixes.py +0 -0
  72. {plot3-0.6.3 → plot3-0.6.4}/tests/test_save_menu.py +0 -0
  73. {plot3-0.6.3 → plot3-0.6.4}/tests/test_scales_api.py +0 -0
  74. {plot3-0.6.3 → plot3-0.6.4}/tests/test_scales_themes.py +0 -0
  75. {plot3-0.6.3 → plot3-0.6.4}/tests/test_special.py +0 -0
  76. {plot3-0.6.3 → plot3-0.6.4}/tests/test_stat2d.py +0 -0
  77. {plot3-0.6.3 → plot3-0.6.4}/tests/test_static_save.py +0 -0
  78. {plot3-0.6.3 → plot3-0.6.4}/tests/test_stats_semantic.py +0 -0
  79. {plot3-0.6.3 → plot3-0.6.4}/tests/test_step3_geoms.py +0 -0
  80. {plot3-0.6.3 → plot3-0.6.4}/tests/test_table_backends.py +0 -0
  81. {plot3-0.6.3 → plot3-0.6.4}/tests/test_titles_theme.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plot3
3
- Version: 0.6.3
3
+ Version: 0.6.4
4
4
  Summary: ggplot2 grammar of graphics for Python: interactive WebGL figures and journal-ready PNG, SVG, and PDF
5
5
  Author: Rigoberto Leyva Salmeron
6
6
  License-Expression: MIT
@@ -0,0 +1 @@
1
+ __version__ = "0.6.4"
@@ -55,6 +55,9 @@ body{display:flex;flex-direction:column}
55
55
  #legend .sz-block{clear:both;padding-top:6px}
56
56
  #legend .bub{display:inline-block;border-radius:50%;box-sizing:border-box;flex:none;
57
57
  border:1px solid rgba(0,0,0,.35)}
58
+ #legend.docked{display:flex!important;flex-wrap:wrap;align-items:center;column-gap:14px;row-gap:0;line-height:1.5}
59
+ #legend.docked .sz-block{display:flex;flex-wrap:wrap;align-items:center;column-gap:10px;padding-top:0;clear:none}
60
+ #legend.docked .sz{margin:0}
58
61
  #player{display:none;flex:none;align-items:center;flex-wrap:wrap;gap:8px;padding:4px 10px 8px;max-width:100%;box-sizing:border-box}
59
62
  #player button{font:inherit;padding:3px 10px;border-radius:5px;cursor:pointer}
60
63
  #player #play-range{flex:1;min-width:80px}
@@ -345,19 +348,25 @@ function showLegendBox() {
345
348
  legEl.style.border = '1px solid ' + T.grid;
346
349
  legEl.style.color = T.ink2;
347
350
  }
351
+ // Height the docked legend takes at the bottom; the plot shrinks by it.
352
+ let legendReserve = 0;
348
353
  function placeLegend() {
349
- if (!legEl || legEl.style.display === 'none' || legEl.dataset.docked === '1') return;
354
+ legendReserve = 0;
355
+ if (!legEl || legEl.style.display === 'none') return;
350
356
  const figH = figEl.clientHeight || 0;
351
357
  if (figH < 40) return;
352
- // A key taller than the panel covers the curve. Sit it under the axes.
353
- if (legEl.offsetHeight > figH * 0.40) {
358
+ // A key taller than the panel covers the data (a short notebook output).
359
+ // Lay it out in rows under the axes, and keep that room free.
360
+ if (legEl.dataset.docked !== '1' && legEl.offsetHeight > figH * 0.40) {
354
361
  legEl.dataset.docked = '1';
362
+ legEl.classList.add('docked');
355
363
  legEl.style.top = 'auto';
356
- legEl.style.bottom = '8px';
364
+ legEl.style.bottom = '6px';
357
365
  legEl.style.left = '8px';
358
366
  legEl.style.right = '8px';
359
367
  legEl.style.maxWidth = 'none';
360
368
  }
369
+ if (legEl.dataset.docked === '1') legendReserve = legEl.offsetHeight + 8;
361
370
  }
362
371
  const LEGEND_GLYPH = { circle: '●', triangle: '▲', square: '■', diamond: '◆', plus: '+', cross: '×' };
363
372
  // Legend keys: a square, the point's symbol, or a short (dashed) line.
@@ -2036,7 +2045,7 @@ if (!S.is3d) {
2036
2045
  function layout() {
2037
2046
  placeLegend();
2038
2047
  W = Math.max(50, figEl.clientWidth - M.l - M.r);
2039
- H = Math.max(50, figEl.clientHeight - M.t - M.b);
2048
+ H = Math.max(50, figEl.clientHeight - M.t - M.b - legendReserve);
2040
2049
  if (equalAspect) applyEqual();
2041
2050
  host.style.left = M.l + 'px'; host.style.top = M.t + 'px';
2042
2051
  renderer.setSize(W, H);
@@ -2741,7 +2750,7 @@ if (!S.is3d) {
2741
2750
 
2742
2751
  function layout() {
2743
2752
  placeLegend();
2744
- const w = Math.max(figEl.clientWidth, 1), h = Math.max(figEl.clientHeight, 1);
2753
+ const w = Math.max(figEl.clientWidth, 1), h = Math.max(figEl.clientHeight - legendReserve, 1);
2745
2754
  renderer.setSize(w, h);
2746
2755
  cam.aspect = w / h;
2747
2756
  cam.updateProjectionMatrix();
@@ -2763,7 +2772,7 @@ if (!S.is3d) {
2763
2772
  const touches = (a, b, air) => a[0] - air < b[0] + b[2] && b[0] - air < a[0] + a[2] &&
2764
2773
  a[1] - air < b[1] + b[3] && b[1] - air < a[1] + a[3];
2765
2774
  function declutterTicks() {
2766
- const w = Math.max(figEl.clientWidth, 1), h = Math.max(figEl.clientHeight, 1);
2775
+ const w = Math.max(figEl.clientWidth, 1), h = Math.max(figEl.clientHeight - legendReserve, 1);
2767
2776
  const placed = [];
2768
2777
  for (const marks of tickSprites) {
2769
2778
  if (!marks.length) continue;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plot3
3
- Version: 0.6.3
3
+ Version: 0.6.4
4
4
  Summary: ggplot2 grammar of graphics for Python: interactive WebGL figures and journal-ready PNG, SVG, and PDF
5
5
  Author: Rigoberto Leyva Salmeron
6
6
  License-Expression: MIT
@@ -1 +0,0 @@
1
- __version__ = "0.6.3"
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
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
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
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
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
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
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
File without changes
File without changes