seraplot 2.3.76__tar.gz → 2.3.77__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.
- {seraplot-2.3.76 → seraplot-2.3.77}/Cargo.lock +1 -1
- {seraplot-2.3.76 → seraplot-2.3.77}/Cargo.toml +1 -1
- {seraplot-2.3.76 → seraplot-2.3.77}/PKG-INFO +1 -1
- seraplot-2.3.77/publish_log.txt +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/pyproject.toml +1 -1
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/commands/charts.rs +41 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/commands/native.rs +25 -56
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/registry_macro.rs +1 -0
- seraplot-2.3.77/test_universal_ml.js +0 -0
- seraplot-2.3.76/test_universal_ml.js +0 -58
- {seraplot-2.3.76 → seraplot-2.3.77}/.gitignore +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/05--Diabetes_SeraPlot.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/07--OpenFoodFacts_SeraPlot_Benchmark.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/README.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/TEST_1M_Battle.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_all.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_bigdata.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_full.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_issues.json +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_knn_sgd.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_perf.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_quick.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_quick2.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_scale.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_seraplot.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_sklearn.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_svc.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_svc2.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/bench_test.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_gridsearch.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_gridsearch2.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_kmeans_heavy.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_kmeans_openfoodfacts.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_ml.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_ml_openfoodfacts.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/benchmark_ml_out.ipynb +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/build.log +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/gen_bench_slides.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/1.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/2.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/3.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/4.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/5.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/6.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/7.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/2d/8.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/1.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/2.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/3.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/4.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/5.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/6.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/7.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/3d/8.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/README.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/benchmark/1.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/benchmark/2.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/benchmark/3.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/images/logo.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/kmeans_test.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/python/seraplot/__init__.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/python/seraplot/matplotlib.py +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/python/seraplot/seraplot.cp311-win_amd64.pyd.old +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/results_seraplot.json +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/results_sklearn.json +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/.github/workflows/mdbook.yml +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/README.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/asset/SVG World Map with labels.svg +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/asset/logo.png +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/asset/world.svg +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/builder_template.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/chart_types.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/commands/docs.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/commands/ml.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/commands/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/commands/registry.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/export_builder.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/fast_export_c.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/fast_render.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/memory_pool.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/unified_builder.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/unified_config.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/arena_alloc.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/bitset.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/compact_state.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/data_processor.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/image_processor.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/lazy_builders.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/memory_pool.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/simd_ops.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/bindings/utils/state_export.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/book.toml +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/core/builders.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/core/math.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/core/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/data/conversion.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/data/index.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/data/loader.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/data/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/data/processor.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/SUMMARY.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/api/index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/area.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/bar.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/boxplot.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/bubble.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/bullet.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/candlestick.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/donut.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/dumbbell.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/funnel.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/gauge.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/grid.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/grouped-bar.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/hbar.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/heatmap.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/histogram-overlay.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/histogram.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/kde.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/line.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/lollipop.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/multiline.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/parallel.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/pie.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/radar.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/ridgeline.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/scatter.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/slideshow.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/slope.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/stacked-bar.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/sunburst.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/treemap.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/violin.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/waterfall.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/2d/wordcloud.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/bar3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/bubble3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/candlestick3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/dumbbell3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/funnel3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/globe3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/heatmap3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/kde3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/line3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/lollipop3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/pie3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/radar3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/ridgeline3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/scatter3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/stacked-bar3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/sunburst3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/3d/violin3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/map/bubble-map.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/map/choropleth.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/charts/map/index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/config/auto-display.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/config/background.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/config/hover.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/config/palette.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/getting-started/chart-methods.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/getting-started/chart-object.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/getting-started/installation.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/getting-started/quickstart.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/introduction.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/adaboost.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/bayes-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/clustering-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/dbscan-class.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/dbscan.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/dbscan3d.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/decision-tree.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/decomposition-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/decomposition.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/elastic-net.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/evaluation-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/gradient-boosting.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/grid-search.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/kmeans-class.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/kmeans.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/knn.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/lasso.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/linear-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/linear-regression.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/logistic-regression.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/metrics.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/naive-bayes.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/neighbors-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/preprocessing-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/preprocessing.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/random-forest.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/ridge.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/selection-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/sgd.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/svm-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/svm.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/train-test-split.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/ml/tree-index.md +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/area.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bar.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bar3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bench-matplotlib.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bench-plotly.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bench-seraplot.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/boxplot.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bubble-map.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bubble.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bubble3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/bullet.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/candlestick.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/candlestick3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/choropleth.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/dbscan-class.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/dbscan.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/dbscan3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/donut.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/dumbbell.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/dumbbell3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/funnel.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/funnel3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/gauge.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/globe3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/grid.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/grouped-bar.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/hbar.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/heatmap.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/heatmap3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/histogram-overlay.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/histogram.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/kde.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/kde3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/line.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/line3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/lollipop.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/lollipop3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/multiline.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/parallel.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/pie.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/pie3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/radar.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/radar3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/ridgeline.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/ridgeline3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/scatter.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/scatter3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/slideshow.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/slope.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/stacked-bar.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/stacked-bar3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/sunburst.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/sunburst3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/treemap.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/violin.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/violin3d.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/waterfall.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/previews/wordcloud.html +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/theme/custom.css +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/docs/theme/lang-switcher.js +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/assets.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/fast_builders.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/fast_exporter.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/hover.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/html_export.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/html_template.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/js_3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/html/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/lib.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/cache.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/decomposition/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/decomposition/pca.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linalg.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/elastic_net.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/lasso.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/logistic.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/ols.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/ridge.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/linear/sgd.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/metrics/classification.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/metrics/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/metrics/regression.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/model_selection/cross_val.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/model_selection/grid_search.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/model_selection/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/model_selection/split.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/naive_bayes/bernoulli.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/naive_bayes/gaussian.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/naive_bayes/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/naive_bayes/multinomial.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/neighbors/knn.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/neighbors/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/preprocessing/encoders.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/preprocessing/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/preprocessing/scalers.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/svm/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/svm/svm.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/tree/adaboost.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/tree/decision_tree.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/tree/decision_tree_backup.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/tree/gradient_boosting.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/tree/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/ml/tree/random_forest.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/camera.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/canvas.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/containers_3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/controller/chart_controller.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/controller/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/controller/plot_3d_controller.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/_3d/bar_3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/_3d/line_3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/_3d/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/_3d/plot_3d_types.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/_3d/scatter_3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/bar.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/chart.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/kmeans.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/line.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/scatter.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/default/svg.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/generic.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/_3d/globe.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/_3d/globe_html.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/_3d/globe_types.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/_3d/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/bubble_map.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/chart.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/choropleth.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/svg_parser.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/map/world_data.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/projection.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/renderers.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/scale_renderer.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/seaborn/_3d/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/seaborn/_3d/plot_3d_types.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/seaborn/chart.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/seaborn/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/candlestick3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/dumbbell3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/funnel3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/heatmap3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/kde3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/lollipop3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/pie3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/plot_3d_types.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/radar3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/ridgeline3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/stacked_bar3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/sunburst3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/_3d/violin3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/area.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/boxplot.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/bubble.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/bullet.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/candlestick.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/common.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/dumbbell.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/funnel.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/gauge.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/grouped_bar.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/heatmap.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/histogram.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/kde.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/lollipop.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/multiline.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/parallel.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/pie.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/radar.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/ridgeline.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/slope.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/sunburst.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/treemap.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/violin.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/waterfall.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/plot/statistical/wordcloud.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/cache.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/chart.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/gui.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/hybrid.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/manager/button_manager.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/manager/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/render/advanced_render.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/render/fast_render_gui.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/render/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/render/pipeline.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/render/viewer_3d.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/render/wiki_viewer.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/utils/image_loader.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/viewer/utils/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/wiki/api.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/wiki/extractor.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/wiki/language.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/wiki/macros.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/wiki/metadata.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/src/wiki/mod.rs +0 -0
- {seraplot-2.3.76 → seraplot-2.3.77}/test_accuracy.py +0 -0
|
Binary file
|
|
@@ -1258,6 +1258,47 @@ pub fn build_parallel(input: &str) -> String {
|
|
|
1258
1258
|
apply(html, &o)
|
|
1259
1259
|
}
|
|
1260
1260
|
|
|
1261
|
+
pub fn plot_chart(input: &str) -> String {
|
|
1262
|
+
#[derive(Deserialize, Default)]
|
|
1263
|
+
struct I {
|
|
1264
|
+
x: Option<Vec<f64>>,
|
|
1265
|
+
y: Option<Vec<f64>>,
|
|
1266
|
+
kind: Option<String>,
|
|
1267
|
+
title: Option<String>,
|
|
1268
|
+
color_hex: Option<u32>,
|
|
1269
|
+
width: Option<i32>,
|
|
1270
|
+
height: Option<i32>,
|
|
1271
|
+
x_label: Option<String>,
|
|
1272
|
+
y_label: Option<String>,
|
|
1273
|
+
gridlines: Option<bool>,
|
|
1274
|
+
palette: Option<Vec<u32>>,
|
|
1275
|
+
background: Option<String>,
|
|
1276
|
+
show_points: Option<bool>,
|
|
1277
|
+
}
|
|
1278
|
+
let p: I = serde_json::from_str(input).unwrap_or_default();
|
|
1279
|
+
let xv = p.x.unwrap_or_default();
|
|
1280
|
+
let title = p.title.unwrap_or_default();
|
|
1281
|
+
let color_hex = p.color_hex.unwrap_or(0x6366F1);
|
|
1282
|
+
let width = p.width.unwrap_or(900);
|
|
1283
|
+
let height = p.height.unwrap_or(480);
|
|
1284
|
+
let x_label = p.x_label.unwrap_or_default();
|
|
1285
|
+
let y_label = p.y_label.unwrap_or_default();
|
|
1286
|
+
let gridlines = p.gridlines.unwrap_or(false);
|
|
1287
|
+
let show_points = p.show_points.unwrap_or(true);
|
|
1288
|
+
let kind = p.kind.as_deref().unwrap_or("line");
|
|
1289
|
+
if let Some(yv) = p.y {
|
|
1290
|
+
if kind == "scatter" {
|
|
1291
|
+
build_scatter_chart(&serde_json::json!({"title":title,"x":xv,"y":yv,"color_hex":color_hex,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":gridlines,"palette":p.palette,"background":p.background}).to_string())
|
|
1292
|
+
} else {
|
|
1293
|
+
let labels: Vec<String> = xv.iter().map(|v| v.to_string()).collect();
|
|
1294
|
+
build_line_chart(&serde_json::json!({"title":title,"labels":labels,"values":yv,"color_hex":color_hex,"show_points":show_points,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":gridlines,"palette":p.palette,"background":p.background}).to_string())
|
|
1295
|
+
}
|
|
1296
|
+
} else {
|
|
1297
|
+
let labels: Vec<String> = (0..xv.len()).map(|idx| idx.to_string()).collect();
|
|
1298
|
+
build_line_chart(&serde_json::json!({"title":title,"labels":labels,"values":xv,"color_hex":color_hex,"show_points":show_points,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":gridlines,"palette":p.palette,"background":p.background}).to_string())
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1261
1302
|
pub fn build_grid(input: &str) -> String {
|
|
1262
1303
|
let (title_s, a, o) = parse_all(input);
|
|
1263
1304
|
let title = title_s.as_str();
|
|
@@ -309,35 +309,18 @@ pub fn build_slideshow(
|
|
|
309
309
|
|
|
310
310
|
#[cfg(feature = "python")]
|
|
311
311
|
#[pyfunction]
|
|
312
|
+
#[pyo3(signature = (labels, images=None, descriptions=None))]
|
|
312
313
|
pub fn build_hover_json(
|
|
313
314
|
labels: Vec<String>,
|
|
314
315
|
images: Option<Vec<Option<String>>>,
|
|
315
|
-
descriptions: Option
|
|
316
|
-
) ->
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
if i < imgs.len() {
|
|
324
|
-
if let Some(ref img_url) = imgs[i] {
|
|
325
|
-
slot = slot.image(img_url.clone());
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
if let Some(descs_py) = descriptions {
|
|
330
|
-
if let Ok(descs_list) = descs_py.extract::<Vec<Vec<(String, String)>>>() {
|
|
331
|
-
if i < descs_list.len() {
|
|
332
|
-
for (k, v) in &descs_list[i] {
|
|
333
|
-
slot = slot.kv(k.clone(), v.clone());
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
slots.push(slot);
|
|
339
|
-
}
|
|
340
|
-
Ok(slots_to_json(&slots))
|
|
316
|
+
descriptions: Option<Vec<Vec<(String, String)>>>,
|
|
317
|
+
) -> String {
|
|
318
|
+
let desc_json: Option<Vec<Vec<Vec<String>>>> = descriptions.map(|outer|
|
|
319
|
+
outer.into_iter().map(|row| row.into_iter().map(|(k, v)| vec![k, v]).collect()).collect()
|
|
320
|
+
);
|
|
321
|
+
crate::bindings::commands::charts::build_hover_json(
|
|
322
|
+
&serde_json::json!({"labels": labels, "images": images, "descriptions": desc_json}).to_string()
|
|
323
|
+
)
|
|
341
324
|
}
|
|
342
325
|
|
|
343
326
|
#[cfg(feature = "python")]
|
|
@@ -361,42 +344,28 @@ pub fn plot_chart(
|
|
|
361
344
|
) -> PyResult<Chart> {
|
|
362
345
|
let (bg, pal, grid) = crate::merge_global_opts(background, palette, gridlines);
|
|
363
346
|
let pal_opt: Option<Vec<u32>> = if pal.is_empty() { None } else { Some(pal) };
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
let cols: Vec<String> = df.extract()?;
|
|
347
|
+
if let Ok(cols_obj) = x.getattr("columns") {
|
|
348
|
+
let cols: Vec<String> = cols_obj.extract()?;
|
|
367
349
|
if cols.len() >= 2 {
|
|
368
350
|
let xv = crate::py_to_f64_vec(py, x.get_item(&cols[0])?)?;
|
|
369
351
|
let yv = crate::py_to_f64_vec(py, x.get_item(&cols[1])?)?;
|
|
370
|
-
let auto_title = if title.is_empty() { format!("{} vs {}", cols[0], cols[1]) } else {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
352
|
+
let auto_title = if title.is_empty() { format!("{} vs {}", cols[0], cols[1]) } else { title.to_string() };
|
|
353
|
+
return Ok(Chart::new_doc(
|
|
354
|
+
crate::bindings::commands::charts::plot_chart(
|
|
355
|
+
&serde_json::json!({"x":xv,"y":yv,"kind":"scatter","title":auto_title,"color_hex":color_hex,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":grid,"palette":pal_opt,"background":bg}).to_string()
|
|
356
|
+
),
|
|
357
|
+
"",
|
|
358
|
+
));
|
|
376
359
|
}
|
|
377
360
|
}
|
|
378
|
-
|
|
379
361
|
let xv = crate::py_to_f64_vec(py, x)?;
|
|
380
|
-
if let Some(yobj) = y {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
let labels: Vec<String> = xv.iter().map(|v| v.to_string()).collect();
|
|
388
|
-
crate::bindings::commands::charts::build_line_chart(
|
|
389
|
-
&serde_json::json!({"title":title,"labels":labels,"values":yv,"color_hex":color_hex,"show_points":show_points,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":grid,"palette":pal_opt,"background":bg}).to_string()
|
|
390
|
-
)
|
|
391
|
-
};
|
|
392
|
-
Ok(Chart::new_doc(html, ""))
|
|
393
|
-
} else {
|
|
394
|
-
let labels: Vec<String> = (0..xv.len()).map(|i| i.to_string()).collect();
|
|
395
|
-
let html = crate::bindings::commands::charts::build_line_chart(
|
|
396
|
-
&serde_json::json!({"title":title,"labels":labels,"values":xv,"color_hex":color_hex,"show_points":show_points,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":grid,"palette":pal_opt,"background":bg}).to_string()
|
|
397
|
-
);
|
|
398
|
-
Ok(Chart::new_doc(html, ""))
|
|
399
|
-
}
|
|
362
|
+
let yv: Option<Vec<f64>> = if let Some(yobj) = y { Some(crate::py_to_f64_vec(py, yobj)?) } else { None };
|
|
363
|
+
Ok(Chart::new_doc(
|
|
364
|
+
crate::bindings::commands::charts::plot_chart(
|
|
365
|
+
&serde_json::json!({"x":xv,"y":yv,"kind":kind,"title":title,"color_hex":color_hex,"show_points":show_points,"width":width,"height":height,"x_label":x_label,"y_label":y_label,"gridlines":grid,"palette":pal_opt,"background":bg}).to_string()
|
|
366
|
+
),
|
|
367
|
+
"",
|
|
368
|
+
))
|
|
400
369
|
}
|
|
401
370
|
|
|
402
371
|
#[cfg(feature = "python")]
|
|
@@ -172,6 +172,7 @@ macro_rules! for_each_ml_oneshot_fn {
|
|
|
172
172
|
macro_rules! for_each_fn {
|
|
173
173
|
($mac:ident) => {
|
|
174
174
|
$crate::for_each_chart_fn!($mac);
|
|
175
|
+
$mac!(plot_chart, "plotChart");
|
|
175
176
|
$mac!(build_hover_json, "buildHoverJson");
|
|
176
177
|
$crate::for_each_ml_oneshot_fn!($mac);
|
|
177
178
|
$mac!(set_theme, "setTheme");
|
|
File without changes
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
const { execFileSync } = require("child_process");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
|
|
5
|
-
const PY = process.env.SERAPLOT_PY || "C:\\Users\\Quentin\\Desktop\\SeraPlot\\.venv\\Scripts\\python.exe";
|
|
6
|
-
|
|
7
|
-
function call(fnName, payload) {
|
|
8
|
-
const code =
|
|
9
|
-
"import json,sys,seraplot._seraplot as s\n" +
|
|
10
|
-
"fn=getattr(s,'" + fnName + "')\n" +
|
|
11
|
-
"print(fn(sys.stdin.read()))\n";
|
|
12
|
-
const json = JSON.stringify(payload);
|
|
13
|
-
const out = execFileSync(PY, ["-c", code], { input: json, encoding: "utf8" });
|
|
14
|
-
return JSON.parse(out.trim());
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const X_train = [
|
|
18
|
-
[1, 2], [2, 3], [3, 4], [4, 5], [5, 6],
|
|
19
|
-
[1, 1], [2, 2], [3, 3], [4, 4], [5, 5],
|
|
20
|
-
];
|
|
21
|
-
const y_reg = [3, 5, 7, 9, 11, 2, 4, 6, 8, 10];
|
|
22
|
-
const y_cls = [0, 0, 1, 1, 1, 0, 0, 1, 1, 1];
|
|
23
|
-
const X_test = [[6, 7], [3, 3]];
|
|
24
|
-
|
|
25
|
-
const cases = [
|
|
26
|
-
["mlLinearRegression", { x_train: X_train, y_train: y_reg, x_test: X_test, fit_intercept: true }],
|
|
27
|
-
["mlRidge", { x_train: X_train, y_train: y_reg, x_test: X_test, alpha: 0.5 }],
|
|
28
|
-
["mlLasso", { x_train: X_train, y_train: y_reg, x_test: X_test, alpha: 0.1 }],
|
|
29
|
-
["mlElasticNet", { x_train: X_train, y_train: y_reg, x_test: X_test, alpha: 0.1, l1_ratio: 0.5 }],
|
|
30
|
-
["mlLogisticRegression", { x_train: X_train, y_train: y_cls, x_test: X_test, c: 1.0, max_iter: 200 }],
|
|
31
|
-
["mlDecisionTreeClassifier", { x_train: X_train, y_train: y_cls, x_test: X_test, max_depth: 5 }],
|
|
32
|
-
["mlDecisionTreeRegressor", { x_train: X_train, y_train: y_reg, x_test: X_test, max_depth: 5 }],
|
|
33
|
-
["mlRandomForestClassifier", { x_train: X_train, y_train: y_cls, x_test: X_test, n_estimators: 10, max_depth: 5, max_features: "sqrt" }],
|
|
34
|
-
["mlRandomForestRegressor", { x_train: X_train, y_train: y_reg, x_test: X_test, n_estimators: 10, max_depth: 5, max_features: "sqrt" }],
|
|
35
|
-
["mlGradientBoostingClassifier", { x_train: X_train, y_train: y_cls, x_test: X_test, n_estimators: 20, learning_rate: 0.1, max_depth: 3 }],
|
|
36
|
-
["mlGradientBoostingRegressor", { x_train: X_train, y_train: y_reg, x_test: X_test, n_estimators: 20, learning_rate: 0.1, max_depth: 3 }],
|
|
37
|
-
["mlKnnClassifier", { x_train: X_train, y_train: y_cls, x_test: X_test, k: 3, weights: "uniform" }],
|
|
38
|
-
["mlKnnRegressor", { x_train: X_train, y_train: y_reg, x_test: X_test, k: 3, weights: "distance" }],
|
|
39
|
-
["mlKmeansFitPredict", { x: X_train, k: 2, max_iter: 100 }],
|
|
40
|
-
["mlDbscanFitPredict", { x: X_train, eps: 1.5, min_samples: 2 }],
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
let ok = 0, ko = 0;
|
|
44
|
-
for (const [name, payload] of cases) {
|
|
45
|
-
try {
|
|
46
|
-
const r = call(name, payload);
|
|
47
|
-
const pv = r.predictions || r.labels || r;
|
|
48
|
-
const head = Array.isArray(pv) ? pv.slice(0, 5) : pv;
|
|
49
|
-
console.log("[OK] " + name.padEnd(32) + " -> " + JSON.stringify(head));
|
|
50
|
-
ok++;
|
|
51
|
-
} catch (e) {
|
|
52
|
-
console.log("[FAIL] " + name + " -> " + (e.message || e).split("\n")[0]);
|
|
53
|
-
ko++;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
console.log("\n=== " + ok + " ok / " + ko + " ko ===");
|
|
58
|
-
process.exit(ko === 0 ? 0 : 1);
|
|
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
|
|
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
|