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.
- {plot3-0.6.3 → plot3-0.6.4}/PKG-INFO +1 -1
- plot3-0.6.4/plot3/__version__.py +1 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/viewer.py +16 -7
- {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/PKG-INFO +1 -1
- plot3-0.6.3/plot3/__version__.py +0 -1
- {plot3-0.6.3 → plot3-0.6.4}/LICENSE +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/README.md +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/__init__.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/aesexpr.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/build.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/calculus.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/compose.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/contour.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/craft.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/encode.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/expr.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/flip.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/function.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/geoms.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/ggplot.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/io.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/jupyter.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/latexin.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/masking.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/mathtext.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/payload.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/remote.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/scales.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/scaling.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/special.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/stat2d.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/static.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/stats3d.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/table.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3/themes.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/SOURCES.txt +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/dependency_links.txt +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/requires.txt +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/plot3.egg-info/top_level.txt +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/pyproject.toml +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/setup.cfg +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_2d_density.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_3d.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_animation.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_annotate.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_api_public.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_array_backend.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_arrow.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_build_contract.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_contour.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_everyday_ggplot2.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_expr.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_facets_compose.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_geom_function.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_geoms_ds.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_ggplot2_extras2.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_ggplot2_parity.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_ggplot_extras.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_grammar.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_latex_input.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_lidar_scene.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_masking.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_math_layers.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_mathtext.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_payload.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_payload_display.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_point_cloud.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_r_oracle_parity.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_readme.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_remote_bridge.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_review_fixes.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_save_menu.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_scales_api.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_scales_themes.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_special.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_stat2d.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_static_save.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_stats_semantic.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_step3_geoms.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_table_backends.py +0 -0
- {plot3-0.6.3 → plot3-0.6.4}/tests/test_titles_theme.py +0 -0
|
@@ -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
|
-
|
|
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
|
|
353
|
-
|
|
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 = '
|
|
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;
|
plot3-0.6.3/plot3/__version__.py
DELETED
|
@@ -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
|
|
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
|