hvplot 0.11.0rc1__tar.gz → 0.11.1__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.
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.github/workflows/docs.yaml +5 -6
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/PKG-INFO +6 -12
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/README.md +4 -10
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/conf.py +3 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/releases.md +23 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Customization.ipynb +1 -1
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Geographic_Data.ipynb +2 -2
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Introduction.ipynb +16 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/NetworkX.ipynb +10 -2
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Viewing.ipynb +4 -4
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/envs/py3.11-docs.yaml +2 -1
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/_version.py +2 -2
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/converter.py +4 -1
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/networkx.py +2 -1
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testgeowithoutgv.py +17 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testnetworkx.py +7 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testui.py +1 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/util.py +15 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot.egg-info/PKG-INFO +6 -12
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot.egg-info/requires.txt +1 -1
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/pyproject.toml +9 -2
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.git-blame-ignore-revs +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.git_archival.txt +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.gitattributes +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.github/CONTRIBUTING.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.github/FUNDING.yml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.github/workflows/build.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.github/workflows/test.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.gitignore +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/.pre-commit-config.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/CHANGELOG.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/CODE_OF_CONDUCT.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/LICENSE +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/binder/environment.yml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/binder/postBuild +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/conda.recipe/meta.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/custom.css +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/favicon.ico +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/bokeh.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/dask.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/explorer.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/geo.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/geopandas.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/intake.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/interactive_hvplot.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/interactive_pandas.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/interactive_xarray.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/large_data.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/layout.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/matplotlib.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/networkx.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/overlay.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/pandas.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/plotly.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/widgets.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/home/xarray.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/images/heat_and_trees.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/images/portfolio.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/logo.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/logo_horizontal.svg +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/_static/logo_stacked.svg +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/about.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/assets/console.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/assets/console_server.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/assets/diagram.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/assets/diagram.svg +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/assets/hvplot-wm.png +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/assets/streamz_demo.gif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/conftest.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/developer_guide/index.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/getting_started/explorer.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/getting_started/hvplot.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/getting_started/index.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/getting_started/installation.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/getting_started/interactive.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/governance/project-docs/CONTRIBUTING.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/governance/project-docs/GOVERNANCE.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/governance/project-docs/LICENSE.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/governance/project-docs/MEMBERS.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/index.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/geopandas/points.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/geopandas/polygons.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/andrewscurves.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/area.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/bar.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/barh.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/bivariate.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/box.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/errorbars.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/heatmap.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/hexbin.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/hist.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/kde.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/labels.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/lagplot.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/line.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/ohlc.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/parallelcoordinates.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/paths.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/scatter.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/scattermatrix.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/step.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/table.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/tabular/violin.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/bar.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/contour.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/contourf.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/hist.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/image.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/kde.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/line.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/quadmesh.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/rgb.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/vectorfield.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/reference/xarray/violin.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/roadmap.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/topics.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Explorer.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Gridded_Data.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Integrations.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Interactive.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Large_Timeseries.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Pandas_API.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Plotting.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Plotting_Extensions.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Plotting_with_Matplotlib.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Plotting_with_Plotly.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Statistical_Plots.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Streaming.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Subplots.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Timeseries_Data.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/Widgets.ipynb +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/images/simple.svg +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/doc/user_guide/index.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/envs/py3.10-tests.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/envs/py3.11-tests.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/envs/py3.12-tests.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/envs/py3.9-tests.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/__init__.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/backend_transforms.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/cudf.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/dask.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/data/crime.csv +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/datasets.yaml +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/duckdb.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/fugue.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/ibis.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/intake.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/interactive.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/pandas.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/plotting/__init__.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/plotting/andrews_curves.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/plotting/core.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/plotting/lag_plot.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/plotting/parallel_coordinates.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/plotting/scatter_matrix.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/polars.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/sample_data.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/streamz.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/__init__.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/conftest.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/data/README.md +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/data/RGB-red.byte.tif +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/plotting/__init__.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/plotting/testcore.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/plotting/testohlc.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/plotting/testscattermatrix.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/test_links.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testbackend_transforms.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testcharts.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testfugue.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testgeo.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testgridplots.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testhelp.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testibis.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testinteractive.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testoperations.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testoptions.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testoverrides.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testpanel.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testpatch.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testplotting.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/teststatplots.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/teststreaming.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testtransforms.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/testutil.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/tests/util.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/ui.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/utilities.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot/xarray.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot.egg-info/SOURCES.txt +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot.egg-info/dependency_links.txt +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot.egg-info/entry_points.txt +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/hvplot.egg-info/top_level.txt +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/scripts/update_conda_envs.py +0 -0
- {hvplot-0.11.0rc1 → hvplot-0.11.1}/setup.cfg +0 -0
|
@@ -50,8 +50,9 @@ jobs:
|
|
|
50
50
|
run: |
|
|
51
51
|
echo "Deploying from ref ${GITHUB_REF#refs/*/}"
|
|
52
52
|
echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
|
|
53
|
-
- name: install dev
|
|
54
|
-
|
|
53
|
+
- name: install dev
|
|
54
|
+
# To make sure the latest is installed.
|
|
55
|
+
run: pip install -e . --no-deps
|
|
55
56
|
- name: conda info
|
|
56
57
|
run: conda info
|
|
57
58
|
- name: conda list
|
|
@@ -62,7 +63,7 @@ jobs:
|
|
|
62
63
|
if: failure()
|
|
63
64
|
run: cat /tmp/sphinx-*.log | tail -n 100
|
|
64
65
|
- name: Deploy dev
|
|
65
|
-
uses: peaceiris/actions-gh-pages@
|
|
66
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
66
67
|
if: |
|
|
67
68
|
(github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'dev') ||
|
|
68
69
|
(github.event_name == 'push' && (contains(steps.vars.outputs.tag, 'a') || contains(steps.vars.outputs.tag, 'b') || contains(steps.vars.outputs.tag, 'rc')))
|
|
@@ -76,7 +77,7 @@ jobs:
|
|
|
76
77
|
if: |
|
|
77
78
|
(github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'main') ||
|
|
78
79
|
(github.event_name == 'push' && !(contains(steps.vars.outputs.tag, 'a') || contains(steps.vars.outputs.tag, 'b') || contains(steps.vars.outputs.tag, 'rc')))
|
|
79
|
-
uses: peaceiris/actions-gh-pages@
|
|
80
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
80
81
|
with:
|
|
81
82
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
82
83
|
publish_dir: ./builtdocs
|
|
@@ -104,8 +105,6 @@ jobs:
|
|
|
104
105
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
105
106
|
- name: install
|
|
106
107
|
run: pip install -v --prefer-binary -e ."[doc, examples, geo]"
|
|
107
|
-
- name: install dev nbsite
|
|
108
|
-
run: pip install --pre -U nbsite
|
|
109
108
|
- name: pip list
|
|
110
109
|
run: pip list
|
|
111
110
|
- name: Set and echo git ref
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hvplot
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
|
|
5
5
|
Author-email: Philipp Rudiger <developers@holoviz.org>
|
|
6
6
|
Maintainer-email: HoloViz developers <developers@holoviz.org>
|
|
@@ -107,7 +107,7 @@ Requires-Dist: hvplot[examples]; extra == "examples-tests"
|
|
|
107
107
|
Requires-Dist: hvplot[tests-nb]; extra == "examples-tests"
|
|
108
108
|
Provides-Extra: doc
|
|
109
109
|
Requires-Dist: hvplot[examples]; extra == "doc"
|
|
110
|
-
Requires-Dist: nbsite>=0.8.
|
|
110
|
+
Requires-Dist: nbsite>=0.8.6; extra == "doc"
|
|
111
111
|
Requires-Dist: sphinxext-rediraffe; extra == "doc"
|
|
112
112
|
Provides-Extra: hvdev
|
|
113
113
|
Requires-Dist: colorcet>=0.0.1a1; extra == "hvdev"
|
|
@@ -141,7 +141,7 @@ Requires-Dist: setuptools_scm>=6; extra == "dev-extras"
|
|
|
141
141
|
|
|
142
142
|
The API is based on the familiar Pandas `.plot` API and the innovative `.interactive` API.
|
|
143
143
|
|
|
144
|
-
<img src="https://
|
|
144
|
+
<img src="https://assets.holoviz.org/hvplot/hvplot-total-intro.gif" style="max-height:600px;border-radius:2%;">
|
|
145
145
|
|
|
146
146
|
## hvPlot works with the tools you know and love
|
|
147
147
|
|
|
@@ -159,7 +159,7 @@ hvPlot is **the simplest way to benefit from the [HoloViz](https://holoviz.org/)
|
|
|
159
159
|
|
|
160
160
|
Check out [this blog post](https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1) to see how easy it is to create an interactive dashboard with hvPlot and Panel.
|
|
161
161
|
|
|
162
|
-
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://
|
|
162
|
+
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://assets.holoviz.org/hvplot/interactive_dashboard.gif" style="max-height:600px;border-radius:2%;"></a>
|
|
163
163
|
|
|
164
164
|
## Mini getting-started
|
|
165
165
|
|
|
@@ -179,12 +179,6 @@ or with ``pip``:
|
|
|
179
179
|
pip install hvplot
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
-
Please note that for versions of `jupyterlab<3.0`, you must install the JupyterLab extension manually with:
|
|
183
|
-
|
|
184
|
-
```bash
|
|
185
|
-
jupyter labextension install @pyviz/jupyterlab_pyviz
|
|
186
|
-
```
|
|
187
|
-
|
|
188
182
|
### Plotting data
|
|
189
183
|
|
|
190
184
|
Work with your data source:
|
|
@@ -210,7 +204,7 @@ Use the `.hvplot` API as you would use the Pandas or Xarray `.plot` API:
|
|
|
210
204
|
df.hvplot()
|
|
211
205
|
```
|
|
212
206
|
|
|
213
|
-
[<img src="https://
|
|
207
|
+
[<img src="https://assets.holoviz.org/hvplot/hvplot-intro-plot.gif" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/index.html)
|
|
214
208
|
|
|
215
209
|
|
|
216
210
|
### Interactive data apps
|
|
@@ -224,7 +218,7 @@ pn.extension()
|
|
|
224
218
|
df.interactive(width=600).head(n=pn.widgets.IntSlider(start=1, end=5, value=3))
|
|
225
219
|
```
|
|
226
220
|
|
|
227
|
-
[<img src="https://
|
|
221
|
+
[<img src="https://assets.holoviz.org/hvplot/hvplot-intro-interactive.gif" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/Interactive.html)
|
|
228
222
|
|
|
229
223
|
### How to find documentation from your notebook or editor
|
|
230
224
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
The API is based on the familiar Pandas `.plot` API and the innovative `.interactive` API.
|
|
20
20
|
|
|
21
|
-
<img src="https://
|
|
21
|
+
<img src="https://assets.holoviz.org/hvplot/hvplot-total-intro.gif" style="max-height:600px;border-radius:2%;">
|
|
22
22
|
|
|
23
23
|
## hvPlot works with the tools you know and love
|
|
24
24
|
|
|
@@ -36,7 +36,7 @@ hvPlot is **the simplest way to benefit from the [HoloViz](https://holoviz.org/)
|
|
|
36
36
|
|
|
37
37
|
Check out [this blog post](https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1) to see how easy it is to create an interactive dashboard with hvPlot and Panel.
|
|
38
38
|
|
|
39
|
-
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://
|
|
39
|
+
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://assets.holoviz.org/hvplot/interactive_dashboard.gif" style="max-height:600px;border-radius:2%;"></a>
|
|
40
40
|
|
|
41
41
|
## Mini getting-started
|
|
42
42
|
|
|
@@ -56,12 +56,6 @@ or with ``pip``:
|
|
|
56
56
|
pip install hvplot
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
Please note that for versions of `jupyterlab<3.0`, you must install the JupyterLab extension manually with:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
jupyter labextension install @pyviz/jupyterlab_pyviz
|
|
63
|
-
```
|
|
64
|
-
|
|
65
59
|
### Plotting data
|
|
66
60
|
|
|
67
61
|
Work with your data source:
|
|
@@ -87,7 +81,7 @@ Use the `.hvplot` API as you would use the Pandas or Xarray `.plot` API:
|
|
|
87
81
|
df.hvplot()
|
|
88
82
|
```
|
|
89
83
|
|
|
90
|
-
[<img src="https://
|
|
84
|
+
[<img src="https://assets.holoviz.org/hvplot/hvplot-intro-plot.gif" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/index.html)
|
|
91
85
|
|
|
92
86
|
|
|
93
87
|
### Interactive data apps
|
|
@@ -101,7 +95,7 @@ pn.extension()
|
|
|
101
95
|
df.interactive(width=600).head(n=pn.widgets.IntSlider(start=1, end=5, value=3))
|
|
102
96
|
```
|
|
103
97
|
|
|
104
|
-
[<img src="https://
|
|
98
|
+
[<img src="https://assets.holoviz.org/hvplot/hvplot-intro-interactive.gif" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/Interactive.html)
|
|
105
99
|
|
|
106
100
|
### How to find documentation from your notebook or editor
|
|
107
101
|
|
|
@@ -58,6 +58,7 @@ html_favicon = '_static/favicon.ico'
|
|
|
58
58
|
extensions += [ # noqa
|
|
59
59
|
'nbsite.gallery',
|
|
60
60
|
'nbsite.analytics',
|
|
61
|
+
'nbsite.nb_interactivity_warning',
|
|
61
62
|
'sphinx_copybutton',
|
|
62
63
|
'sphinxext.rediraffe',
|
|
63
64
|
]
|
|
@@ -113,6 +114,8 @@ html_context.update( # noqa
|
|
|
113
114
|
nb_execution_excludepatterns = [
|
|
114
115
|
'user_guide/Streaming.ipynb',
|
|
115
116
|
]
|
|
117
|
+
# cell execution timeout in seconds (-1 to ignore, 30 by default)
|
|
118
|
+
nb_execution_timeout = 240
|
|
116
119
|
|
|
117
120
|
if os.getenv('HVPLOT_REFERENCE_GALLERY') not in ('False', 'false', '0'):
|
|
118
121
|
rediraffe_redirects.update(
|
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
See [the HoloViz blog](https://blog.holoviz.org/#category=hvplot) for a visual summary of the major features added in a selection of releases.
|
|
4
4
|
|
|
5
|
+
## Version 0.11.1 (2024-10-16)
|
|
6
|
+
|
|
7
|
+
The 0.11.1 release is a patch release that brings a few bugfixes and documentation improvements. In particular it fixes a regression introduced in version 0.11.0 leading to an error when a plot is created from a Dask object with `tiles=True`. Many thanks to @Palmr (first contribution!), @ahuang11, @Hoxbro, @maximlt, and @philippjfr for their contributions!
|
|
8
|
+
|
|
9
|
+
Bug Fixes:
|
|
10
|
+
|
|
11
|
+
- Fix regression when `tiles=True` with Dask ([#1432](https://github.com/holoviz/hvplot/pull/1432))
|
|
12
|
+
- Fix hover tooltips for NetworkX plots ([#1439](https://github.com/holoviz/hvplot/pull/1439))
|
|
13
|
+
|
|
14
|
+
Documentation:
|
|
15
|
+
|
|
16
|
+
- Add `nb_interactivity_warning` extension ([#1444](https://github.com/holoviz/hvplot/pull/1444))
|
|
17
|
+
- Document Ruff's `allowed-unused-imports` ([#1436](https://github.com/holoviz/hvplot/pull/1436))
|
|
18
|
+
- Update image links in README ([#1433](https://github.com/holoviz/hvplot/pull/1433))
|
|
19
|
+
- Minor fixes ([#1434](https://github.com/holoviz/hvplot/pull/1434))
|
|
20
|
+
|
|
21
|
+
Tests:
|
|
22
|
+
|
|
23
|
+
- Mark `test_explorer_geo_revise_kind` with geo marker ([#1426](https://github.com/holoviz/hvplot/pull/1426))
|
|
24
|
+
|
|
25
|
+
[Full Changelog](https://github.com/holoviz/hvplot/compare/v0.11.0...v0.11.1)
|
|
26
|
+
|
|
27
|
+
|
|
5
28
|
## Version 0.11.0 (2024-09-27)
|
|
6
29
|
|
|
7
30
|
This minor release brings a number of enhancements and bugfixes, checkout the [release blog post](https://blog.holoviz.org/posts/hvplot_release_0.11/) for a visual summary of the most important changes.
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
" projection (default=None):\n",
|
|
250
250
|
" Coordinate reference system of the plot (output projection) specified as a string or integer EPSG code, a CRS or Proj pyproj object, a Cartopy CRS object or class name, a WKT string, or a proj.4 string. Defaults to PlateCarree.\n",
|
|
251
251
|
" tiles (default=False):\n",
|
|
252
|
-
" Whether to overlay the plot on a tile source. If coordinate values fall within lat/lon bounds, auto-projects to EPSG:3857 unless `projection=False
|
|
252
|
+
" Whether to overlay the plot on a tile source. If coordinate values fall within lat/lon bounds, auto-projects to EPSG:3857 unless `projection=False` or if the data is lazily loaded (dask / ibis). Tiles sources\n",
|
|
253
253
|
" can be selected by name or a tiles object or class can be passed,\n",
|
|
254
254
|
" the default is 'Wikipedia'.\n",
|
|
255
255
|
" tiles_opts (default=None): dict\n",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"source": [
|
|
81
81
|
"We'll first start by displaying the airports **without GeoViews** with tiles by setting `tiles=True`. \n",
|
|
82
82
|
"\n",
|
|
83
|
-
"Under the hood, hvPlot projects lat/lon to easting/northing ([EPSG:4326](https://epsg.io/4326) to [EPSG:3857](https://epsg.io/3857)) coordinates without additional package dependencies if it detects that the values falls within expected lat/lon ranges
|
|
83
|
+
"Under the hood, hvPlot projects lat/lon to easting/northing ([EPSG:4326](https://epsg.io/4326) to [EPSG:3857](https://epsg.io/3857)) coordinates without additional package dependencies if it detects that the values falls within expected lat/lon ranges, **unless the data is lazily loaded (dask / ibis).**\n",
|
|
84
84
|
"\n",
|
|
85
85
|
"Note, **this feature is only available after `hvplot>=0.11.0`**; older versions, `hvplot<0.11.0`, require manual projection (see below)."
|
|
86
86
|
]
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
"- `global_extent` (default=False): Whether to expand the plot extent to span the whole globe\n",
|
|
418
418
|
"- `project` (default=False): Whether to project the data before plotting (adds initial overhead but avoids projecting data when plot is dynamically updated)\n",
|
|
419
419
|
"- `projection` (default=None): Coordinate reference system of the plot (output projection) specified as a string or integer EPSG code, a CRS or Proj pyproj object, a Cartopy CRS object or class name, a WKT string, or a proj.4 string. Defaults to PlateCarree.\n",
|
|
420
|
-
"- `tiles` (default=False): Whether to overlay the plot on a tile source. If coordinate values fall within lat/lon bounds, auto-projects to EPSG:3857 unless `projection=False
|
|
420
|
+
"- `tiles` (default=False): Whether to overlay the plot on a tile source. If coordinate values fall within lat/lon bounds, auto-projects to EPSG:3857 unless `projection=False` or if the data is lazily loaded (dask / ibis). Accepts the following values:\n",
|
|
421
421
|
" - `True`: OpenStreetMap layer\n",
|
|
422
422
|
" - `xyzservices.TileProvider` instance (requires [`xyzservices`](https://xyzservices.readthedocs.io/) to be installed)\n",
|
|
423
423
|
" - a map string name based on one of the default layers made available by [HoloViews](https://holoviews.org/reference/elements/bokeh/Tiles.html) ('CartoDark', 'CartoLight', 'EsriImagery', 'EsriNatGeo', 'EsriUSATopo', 'EsriTerrain', 'EsriStreet', 'EsriReference', 'OSM', 'OpenTopoMap') or [GeoViews](https://geoviews.org/user_guide/Working_with_Bokeh.html) ('CartoDark', 'CartoEco', 'CartoLight', 'CartoMidnight', 'EsriImagery', 'EsriNatGeo', 'EsriUSATopo', 'EsriTerrain', 'EsriReference', 'EsriOceanBase', 'EsriOceanReference', 'EsriWorldPhysical', 'EsriWorldShadedRelief', 'EsriWorldTopo', 'EsriWorldDarkGrayBase', 'EsriWorldDarkGrayReference', 'EsriWorldLightGrayBase', 'EsriWorldLightGrayReference', 'EsriWorldHillshadeDark', 'EsriWorldHillshade', 'EsriAntarcticImagery', 'EsriArcticImagery', 'EsriArcticOceanBase', 'EsriArcticOceanReference', 'EsriWorldBoundariesAndPlaces', 'EsriWorldBoundariesAndPlacesAlternate', 'EsriWorldTransportation', 'EsriDelormeWorldBaseMap', 'EsriWorldNavigationCharts', 'EsriWorldStreetMap', 'OSM', 'OpenTopoMap'). Note that Stamen tile sources require a Stadia account when not running locally; see [stadiamaps.com](https://stadiamaps.com/).\n",
|
|
@@ -192,6 +192,22 @@
|
|
|
192
192
|
"For more detail on the available options see the [Customization](Customization.ipynb) user guide."
|
|
193
193
|
]
|
|
194
194
|
},
|
|
195
|
+
{
|
|
196
|
+
"cell_type": "markdown",
|
|
197
|
+
"metadata": {},
|
|
198
|
+
"source": [
|
|
199
|
+
"### Working with Ruff\n",
|
|
200
|
+
"\n",
|
|
201
|
+
"In most cases, `import hvplot.pandas` is imported and never used directly. This will make linters like Ruff flag it as an [`unused-import`](https://docs.astral.sh/ruff/rules/unused-import/). This can either be ignored with a `# noqa: F401` or global being set in the `pyproject.toml` with [`allowed-unused-imports`](https://docs.astral.sh/ruff/settings/#lint_pyflakes_allowed-unused-imports).\n",
|
|
202
|
+
"\n",
|
|
203
|
+
"```toml\n",
|
|
204
|
+
"[tool.ruff.lint.pyflakes]\n",
|
|
205
|
+
"allowed-unused-imports = [\"hvplot.pandas\"]\n",
|
|
206
|
+
"```\n",
|
|
207
|
+
"\n",
|
|
208
|
+
"This configuration requires Ruff version 0.6.9 or greater to be installed."
|
|
209
|
+
]
|
|
210
|
+
},
|
|
195
211
|
{
|
|
196
212
|
"cell_type": "markdown",
|
|
197
213
|
"metadata": {},
|
|
@@ -102,8 +102,16 @@
|
|
|
102
102
|
"graphviz = hvnx.draw(G, pos=pos)\n",
|
|
103
103
|
"\n",
|
|
104
104
|
"layout = shell + graphviz\n",
|
|
105
|
-
"
|
|
106
|
-
|
|
105
|
+
"layout"
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"cell_type": "markdown",
|
|
110
|
+
"metadata": {},
|
|
111
|
+
"source": [
|
|
112
|
+
"```python\n",
|
|
113
|
+
"hvnx.save(layout, 'graph_layout.png')\n",
|
|
114
|
+
"```"
|
|
107
115
|
]
|
|
108
116
|
},
|
|
109
117
|
{
|
|
@@ -172,12 +172,12 @@
|
|
|
172
172
|
]
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
|
-
"cell_type": "
|
|
176
|
-
"execution_count": null,
|
|
175
|
+
"cell_type": "markdown",
|
|
177
176
|
"metadata": {},
|
|
178
|
-
"outputs": [],
|
|
179
177
|
"source": [
|
|
180
|
-
"
|
|
178
|
+
"```python\n",
|
|
179
|
+
"hvplot.save(plot, 'test.png')\n",
|
|
180
|
+
"```"
|
|
181
181
|
]
|
|
182
182
|
},
|
|
183
183
|
{
|
|
@@ -11,6 +11,7 @@ name: hvplotdocs
|
|
|
11
11
|
channels:
|
|
12
12
|
- nodefaults
|
|
13
13
|
- pyviz/label/dev
|
|
14
|
+
- pyviz/label/tooling_dev
|
|
14
15
|
- conda-forge
|
|
15
16
|
dependencies:
|
|
16
17
|
- python=3.11
|
|
@@ -35,7 +36,7 @@ dependencies:
|
|
|
35
36
|
- ipywidgets
|
|
36
37
|
- jinja2
|
|
37
38
|
- matplotlib
|
|
38
|
-
- nbsite>=0.8.
|
|
39
|
+
- nbsite>=0.8.6
|
|
39
40
|
- networkx>=2.6.3
|
|
40
41
|
- notebook>=5.4
|
|
41
42
|
- numba>=0.51.0
|
|
@@ -60,6 +60,7 @@ from .util import (
|
|
|
60
60
|
is_cudf,
|
|
61
61
|
is_streamz,
|
|
62
62
|
is_ibis,
|
|
63
|
+
is_lazy_data,
|
|
63
64
|
is_xarray,
|
|
64
65
|
is_xarray_dataarray,
|
|
65
66
|
process_crs,
|
|
@@ -2173,11 +2174,13 @@ class HoloViewsConverter:
|
|
|
2173
2174
|
if data.crs is not None:
|
|
2174
2175
|
data = data.to_crs(epsg=3857)
|
|
2175
2176
|
return data, x, y
|
|
2176
|
-
|
|
2177
|
+
elif not is_lazy_data(data):
|
|
2178
|
+
# To prevent eager evaluation: https://github.com/holoviz/hvplot/pull/1432
|
|
2177
2179
|
min_x = np.min(data[x])
|
|
2178
2180
|
max_x = np.max(data[x])
|
|
2179
2181
|
min_y = np.min(data[y])
|
|
2180
2182
|
max_y = np.max(data[y])
|
|
2183
|
+
|
|
2181
2184
|
x_within_bounds = -180 <= min_x <= 360 and -180 <= max_x <= 360
|
|
2182
2185
|
y_within_bounds = -90 <= min_y <= 90 and -90 <= max_y <= 90
|
|
2183
2186
|
if x_within_bounds and y_within_bounds:
|
|
@@ -6,6 +6,7 @@ import holoviews as _hv
|
|
|
6
6
|
|
|
7
7
|
from bokeh.models import HoverTool
|
|
8
8
|
from holoviews import Graph, Labels, dim
|
|
9
|
+
from holoviews.core.util import dimension_sanitizer
|
|
9
10
|
from holoviews.core.options import Store
|
|
10
11
|
from holoviews.plotting.bokeh import GraphPlot, LabelsPlot
|
|
11
12
|
from holoviews.plotting.bokeh.styles import markers
|
|
@@ -331,7 +332,7 @@ def draw(G, pos=None, **kwargs):
|
|
|
331
332
|
(d.label, d.name + '_values' if d in g.kdims else d.name) for d in g.kdims + g.vdims
|
|
332
333
|
]
|
|
333
334
|
tooltips = [
|
|
334
|
-
(label, '@{{dimension_sanitizer(name)}}')
|
|
335
|
+
(label, f'@{{{dimension_sanitizer(name)}}}')
|
|
335
336
|
for label, name in tooltip_dims
|
|
336
337
|
if name not in node_styles + edge_styles
|
|
337
338
|
]
|
|
@@ -8,6 +8,12 @@ import numpy as np
|
|
|
8
8
|
import pandas as pd
|
|
9
9
|
import pytest
|
|
10
10
|
|
|
11
|
+
try:
|
|
12
|
+
import dask.dataframe as dd
|
|
13
|
+
import hvplot.dask # noqa
|
|
14
|
+
except ImportError:
|
|
15
|
+
dd = None
|
|
16
|
+
|
|
11
17
|
|
|
12
18
|
bk_renderer = hv.Store.renderers['bokeh']
|
|
13
19
|
|
|
@@ -66,3 +72,14 @@ class TestAnnotationNotGeo:
|
|
|
66
72
|
assert isinstance(plot.get(0).data, xyzservices.TileProvider)
|
|
67
73
|
bk_plot = bk_renderer.get_plot(plot)
|
|
68
74
|
assert bk_plot.projection == 'mercator'
|
|
75
|
+
|
|
76
|
+
@pytest.mark.skipif(dd is None, reason='dask not installed')
|
|
77
|
+
def test_plot_with_dask(self, simple_df):
|
|
78
|
+
ddf = dd.from_pandas(simple_df, npartitions=2)
|
|
79
|
+
plot = ddf.hvplot.points('x', 'y', tiles=True)
|
|
80
|
+
assert 'x_' not in plot.get(1).data
|
|
81
|
+
assert 'y_' not in plot.get(1).data
|
|
82
|
+
assert len(plot) == 2
|
|
83
|
+
assert isinstance(plot.get(0), hv.Tiles)
|
|
84
|
+
bk_plot = bk_renderer.get_plot(plot)
|
|
85
|
+
assert bk_plot.projection == 'mercator'
|
|
@@ -24,3 +24,10 @@ class TestOptions(TestCase):
|
|
|
24
24
|
def test_nodes_are_not_sorted(self):
|
|
25
25
|
plot = hvnx.draw(self.g)
|
|
26
26
|
assert all(self.nodes == plot.nodes.dimension_values(2))
|
|
27
|
+
|
|
28
|
+
def test_default_hover_tooltip(self):
|
|
29
|
+
from bokeh.models import HoverTool
|
|
30
|
+
|
|
31
|
+
plot = hvnx.draw(self.g)
|
|
32
|
+
hover = next(t for t in plot.opts['tools'] if isinstance(t, HoverTool))
|
|
33
|
+
assert [('index', '@{index_hover}')] == hover.tooltips
|
|
@@ -391,6 +391,7 @@ def test_explorer_xarray_multi_var_extra_dims_no_coord():
|
|
|
391
391
|
|
|
392
392
|
|
|
393
393
|
@pytest.mark.parametrize('kind_tuple', [('scatter', 'points'), ('line', 'paths')])
|
|
394
|
+
@pytest.mark.geo
|
|
394
395
|
def test_explorer_geo_revise_kind(kind_tuple):
|
|
395
396
|
da = ds_air_temperature['air'].isel(time=0)
|
|
396
397
|
explorer = hvplot.explorer(da, x='lon', y='lat', kind=kind_tuple[0], geo=True)
|
|
@@ -446,6 +446,21 @@ def is_xarray(data):
|
|
|
446
446
|
return isinstance(data, (DataArray, Dataset))
|
|
447
447
|
|
|
448
448
|
|
|
449
|
+
def is_lazy_data(data):
|
|
450
|
+
"""Check if data is lazy
|
|
451
|
+
|
|
452
|
+
This checks if the datatype is Dask, Ibis, or Polars' LazyFrame.
|
|
453
|
+
It is useful to avoid eager evaluation of the data.
|
|
454
|
+
"""
|
|
455
|
+
if is_dask(data) or is_ibis(data):
|
|
456
|
+
return True
|
|
457
|
+
elif is_polars(data):
|
|
458
|
+
import polars as pl
|
|
459
|
+
|
|
460
|
+
return isinstance(data, pl.LazyFrame)
|
|
461
|
+
return False
|
|
462
|
+
|
|
463
|
+
|
|
449
464
|
def is_xarray_dataarray(data):
|
|
450
465
|
if not check_library(data, 'xarray'):
|
|
451
466
|
return False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hvplot
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
|
|
5
5
|
Author-email: Philipp Rudiger <developers@holoviz.org>
|
|
6
6
|
Maintainer-email: HoloViz developers <developers@holoviz.org>
|
|
@@ -107,7 +107,7 @@ Requires-Dist: hvplot[examples]; extra == "examples-tests"
|
|
|
107
107
|
Requires-Dist: hvplot[tests-nb]; extra == "examples-tests"
|
|
108
108
|
Provides-Extra: doc
|
|
109
109
|
Requires-Dist: hvplot[examples]; extra == "doc"
|
|
110
|
-
Requires-Dist: nbsite>=0.8.
|
|
110
|
+
Requires-Dist: nbsite>=0.8.6; extra == "doc"
|
|
111
111
|
Requires-Dist: sphinxext-rediraffe; extra == "doc"
|
|
112
112
|
Provides-Extra: hvdev
|
|
113
113
|
Requires-Dist: colorcet>=0.0.1a1; extra == "hvdev"
|
|
@@ -141,7 +141,7 @@ Requires-Dist: setuptools_scm>=6; extra == "dev-extras"
|
|
|
141
141
|
|
|
142
142
|
The API is based on the familiar Pandas `.plot` API and the innovative `.interactive` API.
|
|
143
143
|
|
|
144
|
-
<img src="https://
|
|
144
|
+
<img src="https://assets.holoviz.org/hvplot/hvplot-total-intro.gif" style="max-height:600px;border-radius:2%;">
|
|
145
145
|
|
|
146
146
|
## hvPlot works with the tools you know and love
|
|
147
147
|
|
|
@@ -159,7 +159,7 @@ hvPlot is **the simplest way to benefit from the [HoloViz](https://holoviz.org/)
|
|
|
159
159
|
|
|
160
160
|
Check out [this blog post](https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1) to see how easy it is to create an interactive dashboard with hvPlot and Panel.
|
|
161
161
|
|
|
162
|
-
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://
|
|
162
|
+
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://assets.holoviz.org/hvplot/interactive_dashboard.gif" style="max-height:600px;border-radius:2%;"></a>
|
|
163
163
|
|
|
164
164
|
## Mini getting-started
|
|
165
165
|
|
|
@@ -179,12 +179,6 @@ or with ``pip``:
|
|
|
179
179
|
pip install hvplot
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
-
Please note that for versions of `jupyterlab<3.0`, you must install the JupyterLab extension manually with:
|
|
183
|
-
|
|
184
|
-
```bash
|
|
185
|
-
jupyter labextension install @pyviz/jupyterlab_pyviz
|
|
186
|
-
```
|
|
187
|
-
|
|
188
182
|
### Plotting data
|
|
189
183
|
|
|
190
184
|
Work with your data source:
|
|
@@ -210,7 +204,7 @@ Use the `.hvplot` API as you would use the Pandas or Xarray `.plot` API:
|
|
|
210
204
|
df.hvplot()
|
|
211
205
|
```
|
|
212
206
|
|
|
213
|
-
[<img src="https://
|
|
207
|
+
[<img src="https://assets.holoviz.org/hvplot/hvplot-intro-plot.gif" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/index.html)
|
|
214
208
|
|
|
215
209
|
|
|
216
210
|
### Interactive data apps
|
|
@@ -224,7 +218,7 @@ pn.extension()
|
|
|
224
218
|
df.interactive(width=600).head(n=pn.widgets.IntSlider(start=1, end=5, value=3))
|
|
225
219
|
```
|
|
226
220
|
|
|
227
|
-
[<img src="https://
|
|
221
|
+
[<img src="https://assets.holoviz.org/hvplot/hvplot-intro-interactive.gif" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/Interactive.html)
|
|
228
222
|
|
|
229
223
|
### How to find documentation from your notebook or editor
|
|
230
224
|
|
|
@@ -146,7 +146,7 @@ examples-tests = [
|
|
|
146
146
|
# Additional packages required to build the docs
|
|
147
147
|
doc = [
|
|
148
148
|
"hvplot[examples]",
|
|
149
|
-
"nbsite >=0.8.
|
|
149
|
+
"nbsite >=0.8.6",
|
|
150
150
|
"sphinxext-rediraffe",
|
|
151
151
|
]
|
|
152
152
|
# Trick to let pip know we want to install dev dependencies
|
|
@@ -230,7 +230,14 @@ name = "hvplottests"
|
|
|
230
230
|
# reqs = ["-e .."] # Doesn't work
|
|
231
231
|
|
|
232
232
|
[tool.pyproject2conda.envs."docs"]
|
|
233
|
-
channels = [
|
|
233
|
+
channels = [
|
|
234
|
+
"nodefaults",
|
|
235
|
+
# To get dev HoloViews, not always needed.
|
|
236
|
+
"pyviz/label/dev",
|
|
237
|
+
# To get dev nbsite, not always needed.
|
|
238
|
+
"pyviz/label/tooling_dev",
|
|
239
|
+
"conda-forge"
|
|
240
|
+
]
|
|
234
241
|
python = ["3.11"]
|
|
235
242
|
extras = ["doc", "examples", "geo", "graphviz", "dev-extras"]
|
|
236
243
|
name = "hvplotdocs"
|
|
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
|