hvplot 0.9.3a1__py3-none-any.whl
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/__init__.py +322 -0
- hvplot/_version.py +16 -0
- hvplot/backend_transforms.py +329 -0
- hvplot/converter.py +2855 -0
- hvplot/cudf.py +26 -0
- hvplot/dask.py +42 -0
- hvplot/data/crime.csv +56 -0
- hvplot/datasets.yaml +48 -0
- hvplot/fugue.py +64 -0
- hvplot/ibis.py +21 -0
- hvplot/intake.py +32 -0
- hvplot/interactive.py +968 -0
- hvplot/networkx.py +625 -0
- hvplot/pandas.py +30 -0
- hvplot/plotting/__init__.py +63 -0
- hvplot/plotting/andrews_curves.py +99 -0
- hvplot/plotting/core.py +2288 -0
- hvplot/plotting/lag_plot.py +34 -0
- hvplot/plotting/parallel_coordinates.py +85 -0
- hvplot/plotting/scatter_matrix.py +220 -0
- hvplot/polars.py +21 -0
- hvplot/sample_data.py +30 -0
- hvplot/streamz.py +21 -0
- hvplot/tests/__init__.py +0 -0
- hvplot/tests/conftest.py +44 -0
- hvplot/tests/data/README.md +5 -0
- hvplot/tests/data/RGB-red.byte.tif +0 -0
- hvplot/tests/plotting/__init__.py +0 -0
- hvplot/tests/plotting/testcore.py +108 -0
- hvplot/tests/plotting/testohlc.py +34 -0
- hvplot/tests/plotting/testscattermatrix.py +138 -0
- hvplot/tests/test_links.py +99 -0
- hvplot/tests/testbackend_transforms.py +89 -0
- hvplot/tests/testcharts.py +452 -0
- hvplot/tests/testfugue.py +46 -0
- hvplot/tests/testgeo.py +468 -0
- hvplot/tests/testgeowithoutgv.py +60 -0
- hvplot/tests/testgridplots.py +259 -0
- hvplot/tests/testhelp.py +75 -0
- hvplot/tests/testibis.py +17 -0
- hvplot/tests/testinteractive.py +1442 -0
- hvplot/tests/testnetworkx.py +26 -0
- hvplot/tests/testoperations.py +385 -0
- hvplot/tests/testoptions.py +596 -0
- hvplot/tests/testoverrides.py +74 -0
- hvplot/tests/testpanel.py +70 -0
- hvplot/tests/testpatch.py +135 -0
- hvplot/tests/testplotting.py +69 -0
- hvplot/tests/teststreaming.py +28 -0
- hvplot/tests/testtransforms.py +39 -0
- hvplot/tests/testui.py +383 -0
- hvplot/tests/testutil.py +378 -0
- hvplot/tests/util.py +82 -0
- hvplot/ui.py +1032 -0
- hvplot/util.py +677 -0
- hvplot/utilities.py +129 -0
- hvplot/xarray.py +62 -0
- hvplot-0.9.3a1.dist-info/LICENSE +29 -0
- hvplot-0.9.3a1.dist-info/METADATA +243 -0
- hvplot-0.9.3a1.dist-info/RECORD +63 -0
- hvplot-0.9.3a1.dist-info/WHEEL +5 -0
- hvplot-0.9.3a1.dist-info/entry_points.txt +2 -0
- hvplot-0.9.3a1.dist-info/top_level.txt +1 -0
hvplot/utilities.py
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import panel as _pn
|
|
2
|
+
import param
|
|
3
|
+
import holoviews as _hv
|
|
4
|
+
|
|
5
|
+
renderer = _hv.renderer('bokeh')
|
|
6
|
+
|
|
7
|
+
output = _hv.output
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def save(
|
|
11
|
+
obj, filename, fmt='auto', backend=None, resources='cdn', toolbar=None, title=None, **kwargs
|
|
12
|
+
):
|
|
13
|
+
"""
|
|
14
|
+
Saves the supplied object to file.
|
|
15
|
+
|
|
16
|
+
This function delegates saving to `holoviews.util.save` when the
|
|
17
|
+
object is a HoloViews element, which is the type of object mostly
|
|
18
|
+
created by hvPlot. This function inherits the same signature and
|
|
19
|
+
docstring below. However, in some cases hvPlot creates Panel objects,
|
|
20
|
+
in which case saving is delegated to the method `panel.io.Viewable.save`.
|
|
21
|
+
It shares a few common parameters with `holoviews.util.save`, and extra
|
|
22
|
+
parameters can be passed as kwargs.
|
|
23
|
+
|
|
24
|
+
The available output formats depend on the backend being used. By
|
|
25
|
+
default and if the filename is a string the output format will be
|
|
26
|
+
inferred from the file extension. Otherwise an explicit format
|
|
27
|
+
will need to be specified. For ambiguous file extensions such as
|
|
28
|
+
html it may be necessary to specify an explicit fmt to override
|
|
29
|
+
the default, e.g. in the case of 'html' output the widgets will
|
|
30
|
+
default to fmt='widgets', which may be changed to scrubber widgets
|
|
31
|
+
using fmt='scrubber'.
|
|
32
|
+
|
|
33
|
+
Arguments
|
|
34
|
+
---------
|
|
35
|
+
obj: HoloViews object
|
|
36
|
+
The HoloViews object to save to file
|
|
37
|
+
filename: string or IO object
|
|
38
|
+
The filename or BytesIO/StringIO object to save to
|
|
39
|
+
fmt: string
|
|
40
|
+
The format to save the object as, e.g. png, svg, html, or gif
|
|
41
|
+
and if widgets are desired either 'widgets' or 'scrubber'
|
|
42
|
+
backend: string
|
|
43
|
+
A valid HoloViews rendering backend, e.g. bokeh or matplotlib
|
|
44
|
+
resources: string or bokeh.resource.Resources
|
|
45
|
+
Bokeh resources used to load bokehJS components. Defaults to
|
|
46
|
+
CDN, to embed resources inline for offline usage use 'inline'
|
|
47
|
+
or bokeh.resources.INLINE.
|
|
48
|
+
toolbar: bool or None
|
|
49
|
+
Whether to include toolbars in the exported plot. If None,
|
|
50
|
+
display the toolbar unless fmt is `png` and backend is `bokeh`.
|
|
51
|
+
If `True`, always include the toolbar. If `False`, do not include the
|
|
52
|
+
toolbar.
|
|
53
|
+
title: string
|
|
54
|
+
Custom title for exported HTML file
|
|
55
|
+
**kwargs: dict
|
|
56
|
+
Additional keyword arguments passed to the renderer,
|
|
57
|
+
e.g. fps for animations
|
|
58
|
+
"""
|
|
59
|
+
if isinstance(obj, _hv.core.Dimensioned):
|
|
60
|
+
_hv.save(
|
|
61
|
+
obj,
|
|
62
|
+
filename,
|
|
63
|
+
fmt=fmt,
|
|
64
|
+
backend=backend,
|
|
65
|
+
resources=resources,
|
|
66
|
+
toolbar=toolbar,
|
|
67
|
+
title=title,
|
|
68
|
+
**kwargs,
|
|
69
|
+
)
|
|
70
|
+
elif isinstance(obj, _pn.layout.Panel):
|
|
71
|
+
obj.save(filename, resources=resources, title=title, **kwargs)
|
|
72
|
+
else:
|
|
73
|
+
raise TypeError(f'Saving not supported for objects of type {type(obj)!r}')
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def show(obj, title=None, port=0, **kwargs):
|
|
77
|
+
"""
|
|
78
|
+
Displays hvplot plots in and outside the notebook
|
|
79
|
+
|
|
80
|
+
Parameters
|
|
81
|
+
----------
|
|
82
|
+
obj : HoloViews/Panel object
|
|
83
|
+
HoloViews/Panel object to show
|
|
84
|
+
title : str
|
|
85
|
+
A string title to give the Document (if served as an app)
|
|
86
|
+
port: int (optional, default=0)
|
|
87
|
+
Allows specifying a specific port
|
|
88
|
+
**kwargs: dict
|
|
89
|
+
Additional keyword arguments passed to Panel show method.
|
|
90
|
+
Returns
|
|
91
|
+
-------
|
|
92
|
+
a panel.io.server.Server | panel.io.server.StoppableThread (if threaded=true)
|
|
93
|
+
"""
|
|
94
|
+
if isinstance(obj, _hv.core.Dimensioned):
|
|
95
|
+
return _pn.pane.HoloViews(obj).show(title, port, **kwargs)
|
|
96
|
+
elif isinstance(obj, _pn.viewable.Viewable):
|
|
97
|
+
return obj.show(title, port, **kwargs)
|
|
98
|
+
else:
|
|
99
|
+
raise ValueError('%s type object not recognized and cannot be shown.' % type(obj).__name__)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class hvplot_extension(_hv.extension):
|
|
103
|
+
compatibility = param.ObjectSelector(
|
|
104
|
+
allow_None=True,
|
|
105
|
+
objects=['bokeh', 'matplotlib', 'plotly'],
|
|
106
|
+
doc="""
|
|
107
|
+
Plotting library used to process extra keyword arguments.""",
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
logo = param.Boolean(default=False)
|
|
111
|
+
|
|
112
|
+
def __call__(self, *args, **params):
|
|
113
|
+
# importing e.g. hvplot.pandas always loads the bokeh extension.
|
|
114
|
+
# so hvplot.extension('matplotlib', compatibility='bokeh') doesn't
|
|
115
|
+
# require the user or the code to explicitly load bokeh.
|
|
116
|
+
compatibility = params.pop('compatibility', None)
|
|
117
|
+
super().__call__(*args, **params)
|
|
118
|
+
backend = _hv.Store.current_backend
|
|
119
|
+
if compatibility in ['matplotlib', 'plotly'] and backend != compatibility:
|
|
120
|
+
param.main.param.warning(
|
|
121
|
+
f'Compatibility from {compatibility} to {backend} '
|
|
122
|
+
'not yet implemented. Defaults to bokeh.'
|
|
123
|
+
)
|
|
124
|
+
hvplot_extension.compatibility = compatibility
|
|
125
|
+
# Patch or re-patch the docstrings/signatures to display
|
|
126
|
+
# the right styling options.
|
|
127
|
+
from . import _patch_hvplot_docstrings
|
|
128
|
+
|
|
129
|
+
_patch_hvplot_docstrings()
|
hvplot/xarray.py
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import xarray as xr
|
|
2
|
+
|
|
3
|
+
from panel.widgets import Widget
|
|
4
|
+
|
|
5
|
+
from .interactive import Interactive
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class XArrayInteractive(Interactive):
|
|
9
|
+
@classmethod
|
|
10
|
+
def applies(cls, obj):
|
|
11
|
+
return isinstance(obj, (xr.DataArray, xr.Dataset))
|
|
12
|
+
|
|
13
|
+
def sel(self, **kwargs):
|
|
14
|
+
processed = {}
|
|
15
|
+
for k, v in kwargs.items():
|
|
16
|
+
if isinstance(v, type) and issubclass(v, Widget):
|
|
17
|
+
if hasattr(v, 'end'):
|
|
18
|
+
values = self._current[k].values
|
|
19
|
+
v = v(name=k, start=values.min(), end=values.max())
|
|
20
|
+
if hasattr(v, 'options'):
|
|
21
|
+
v = v(name=k, options={str(v): v for v in self._current[k].values})
|
|
22
|
+
processed[k] = v
|
|
23
|
+
self._method = 'sel'
|
|
24
|
+
return self.__call__(**processed)
|
|
25
|
+
|
|
26
|
+
sel.__doc__ = xr.DataArray.sel.__doc__
|
|
27
|
+
|
|
28
|
+
def isel(self, **kwargs):
|
|
29
|
+
processed = {}
|
|
30
|
+
for k, v in kwargs.items():
|
|
31
|
+
if isinstance(v, type) and issubclass(v, Widget):
|
|
32
|
+
if hasattr(v, 'end'):
|
|
33
|
+
v = v(name=k, end=len(self._current[k]))
|
|
34
|
+
processed[k] = v
|
|
35
|
+
self._method = 'isel'
|
|
36
|
+
return self.__call__(**processed)
|
|
37
|
+
|
|
38
|
+
isel.__doc__ = xr.DataArray.isel.__doc__
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def patch(name='hvplot', interactive='interactive', extension='bokeh', logo=False):
|
|
42
|
+
from . import hvPlot, post_patch
|
|
43
|
+
|
|
44
|
+
try:
|
|
45
|
+
import xarray as xr
|
|
46
|
+
except ImportError:
|
|
47
|
+
raise ImportError(
|
|
48
|
+
'Could not patch plotting API onto xarray. xarray could not be imported.'
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
# Remove the class docstring as it very developer focused
|
|
52
|
+
XArrayInteractive.__doc__ = ''
|
|
53
|
+
|
|
54
|
+
xr.register_dataset_accessor(name)(hvPlot)
|
|
55
|
+
xr.register_dataarray_accessor(name)(hvPlot)
|
|
56
|
+
xr.register_dataset_accessor(interactive)(XArrayInteractive)
|
|
57
|
+
xr.register_dataarray_accessor(interactive)(XArrayInteractive)
|
|
58
|
+
|
|
59
|
+
post_patch(extension, logo)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
patch()
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018, HoloViz
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
* Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: hvplot
|
|
3
|
+
Version: 0.9.3a1
|
|
4
|
+
Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
|
|
5
|
+
Author-email: Philipp Rudiger <developers@holoviz.org>
|
|
6
|
+
Maintainer-email: HoloViz developers <developers@holoviz.org>
|
|
7
|
+
License: BSD
|
|
8
|
+
Project-URL: Homepage, https://hvplot.holoviz.org
|
|
9
|
+
Project-URL: Source, http://github.com/holoviz/hvplot
|
|
10
|
+
Project-URL: HoloViz, https://holoviz.org/
|
|
11
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Intended Audience :: Science/Research
|
|
20
|
+
Classifier: Intended Audience :: Developers
|
|
21
|
+
Classifier: Natural Language :: English
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
24
|
+
Requires-Python: >=3.8
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: bokeh >=1.0.0
|
|
28
|
+
Requires-Dist: colorcet >=2
|
|
29
|
+
Requires-Dist: holoviews >=1.11.0
|
|
30
|
+
Requires-Dist: numpy >=1.15
|
|
31
|
+
Requires-Dist: packaging
|
|
32
|
+
Requires-Dist: pandas
|
|
33
|
+
Requires-Dist: panel >=0.11.0
|
|
34
|
+
Requires-Dist: param <3.0,>=1.12.0
|
|
35
|
+
Provides-Extra: doc
|
|
36
|
+
Requires-Dist: hvplot[examples] ; extra == 'doc'
|
|
37
|
+
Requires-Dist: nbsite >=0.8.4 ; extra == 'doc'
|
|
38
|
+
Requires-Dist: sphinxext-rediraffe ; extra == 'doc'
|
|
39
|
+
Provides-Extra: examples
|
|
40
|
+
Requires-Dist: dask[dataframe] >=2021.3.0 ; extra == 'examples'
|
|
41
|
+
Requires-Dist: datashader >=0.6.5 ; extra == 'examples'
|
|
42
|
+
Requires-Dist: fugue ; extra == 'examples'
|
|
43
|
+
Requires-Dist: ibis-framework[duckdb] ; extra == 'examples'
|
|
44
|
+
Requires-Dist: intake-parquet >=0.2.3 ; extra == 'examples'
|
|
45
|
+
Requires-Dist: intake-xarray >=0.5.0 ; extra == 'examples'
|
|
46
|
+
Requires-Dist: intake <2.0.0,>=0.6.5 ; extra == 'examples'
|
|
47
|
+
Requires-Dist: ipywidgets ; extra == 'examples'
|
|
48
|
+
Requires-Dist: networkx >=2.6.3 ; extra == 'examples'
|
|
49
|
+
Requires-Dist: matplotlib ; extra == 'examples'
|
|
50
|
+
Requires-Dist: notebook >=5.4 ; extra == 'examples'
|
|
51
|
+
Requires-Dist: numba >=0.51.0 ; extra == 'examples'
|
|
52
|
+
Requires-Dist: pillow >=8.2.0 ; extra == 'examples'
|
|
53
|
+
Requires-Dist: plotly ; extra == 'examples'
|
|
54
|
+
Requires-Dist: polars ; extra == 'examples'
|
|
55
|
+
Requires-Dist: pooch >=1.6.0 ; extra == 'examples'
|
|
56
|
+
Requires-Dist: s3fs >=2022.1.0 ; extra == 'examples'
|
|
57
|
+
Requires-Dist: scikit-image >=0.17.2 ; extra == 'examples'
|
|
58
|
+
Requires-Dist: scipy >=1.5.3 ; extra == 'examples'
|
|
59
|
+
Requires-Dist: selenium >=3.141.0 ; extra == 'examples'
|
|
60
|
+
Requires-Dist: streamz >=0.3.0 ; extra == 'examples'
|
|
61
|
+
Requires-Dist: xarray >=0.18.2 ; extra == 'examples'
|
|
62
|
+
Requires-Dist: xyzservices >=2022.9.0 ; extra == 'examples'
|
|
63
|
+
Requires-Dist: geodatasets >=2023.12.0 ; extra == 'examples'
|
|
64
|
+
Provides-Extra: examples-tests
|
|
65
|
+
Requires-Dist: hvplot[examples] ; extra == 'examples-tests'
|
|
66
|
+
Requires-Dist: hvplot[tests-nb] ; extra == 'examples-tests'
|
|
67
|
+
Provides-Extra: geo
|
|
68
|
+
Requires-Dist: cartopy ; extra == 'geo'
|
|
69
|
+
Requires-Dist: fiona ; extra == 'geo'
|
|
70
|
+
Requires-Dist: geopandas ; extra == 'geo'
|
|
71
|
+
Requires-Dist: geoviews >=1.9.0 ; extra == 'geo'
|
|
72
|
+
Requires-Dist: pyproj ; extra == 'geo'
|
|
73
|
+
Requires-Dist: rasterio ; extra == 'geo'
|
|
74
|
+
Requires-Dist: rioxarray ; extra == 'geo'
|
|
75
|
+
Requires-Dist: spatialpandas >=0.4.3 ; extra == 'geo'
|
|
76
|
+
Provides-Extra: graphviz
|
|
77
|
+
Requires-Dist: pygraphviz ; extra == 'graphviz'
|
|
78
|
+
Provides-Extra: hvdev
|
|
79
|
+
Requires-Dist: colorcet >=0.0.1a1 ; extra == 'hvdev'
|
|
80
|
+
Requires-Dist: datashader >=0.0.1a1 ; extra == 'hvdev'
|
|
81
|
+
Requires-Dist: holoviews >=0.0.1a1 ; extra == 'hvdev'
|
|
82
|
+
Requires-Dist: panel >=0.0.1a1 ; extra == 'hvdev'
|
|
83
|
+
Requires-Dist: param >=0.0.1a1 ; extra == 'hvdev'
|
|
84
|
+
Requires-Dist: pyviz-comms >=0.0.1a1 ; extra == 'hvdev'
|
|
85
|
+
Provides-Extra: hvdev-geo
|
|
86
|
+
Requires-Dist: geoviews >=0.0.1a1 ; extra == 'hvdev-geo'
|
|
87
|
+
Provides-Extra: tests
|
|
88
|
+
Requires-Dist: hvplot[tests-core] ; extra == 'tests'
|
|
89
|
+
Requires-Dist: fugue ; extra == 'tests'
|
|
90
|
+
Requires-Dist: ibis-framework[duckdb] ; extra == 'tests'
|
|
91
|
+
Requires-Dist: polars ; extra == 'tests'
|
|
92
|
+
Provides-Extra: tests-core
|
|
93
|
+
Requires-Dist: dask[dataframe] ; extra == 'tests-core'
|
|
94
|
+
Requires-Dist: ipywidgets ; extra == 'tests-core'
|
|
95
|
+
Requires-Dist: matplotlib ; extra == 'tests-core'
|
|
96
|
+
Requires-Dist: parameterized ; extra == 'tests-core'
|
|
97
|
+
Requires-Dist: plotly ; extra == 'tests-core'
|
|
98
|
+
Requires-Dist: pooch ; extra == 'tests-core'
|
|
99
|
+
Requires-Dist: pre-commit ; extra == 'tests-core'
|
|
100
|
+
Requires-Dist: pytest-cov ; extra == 'tests-core'
|
|
101
|
+
Requires-Dist: pytest ; extra == 'tests-core'
|
|
102
|
+
Requires-Dist: ruff ; extra == 'tests-core'
|
|
103
|
+
Requires-Dist: scipy ; extra == 'tests-core'
|
|
104
|
+
Requires-Dist: xarray ; extra == 'tests-core'
|
|
105
|
+
Provides-Extra: tests-nb
|
|
106
|
+
Requires-Dist: pytest-xdist ; extra == 'tests-nb'
|
|
107
|
+
Requires-Dist: nbval ; extra == 'tests-nb'
|
|
108
|
+
|
|
109
|
+
# hvPlot makes data analysis and visualization simple <img src="https://github.com/holoviz/hvplot/blob/main/doc/_static/logo.png?raw=true" style="width:2em;margin-bottom:-15px">
|
|
110
|
+
|
|
111
|
+
| | |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| Downloads |  
|
|
114
|
+
| Build Status | [](https://github.com/holoviz/hvplot/actions?query=workflow%3Atests+branch%3Amain) |
|
|
115
|
+
| Coverage | [](https://codecov.io/gh/holoviz/hvplot) |
|
|
116
|
+
| Latest dev release | [](https://github.com/holoviz/hvplot/tags) [](https://holoviz-dev.github.io/hvplot/) |
|
|
117
|
+
| Latest release | [](https://github.com/holoviz/hvplot/releases) [](https://pypi.python.org/pypi/hvplot) [](https://anaconda.org/pyviz/hvplot) [](https://anaconda.org/conda-forge/hvplot) [](https://anaconda.org/anaconda/hvplot) |
|
|
118
|
+
| Python | [](https://pypi.org/project/hvplot/) |
|
|
119
|
+
| Docs | [](https://github.com/holoviz/hvplot/tree/gh-pages) [](https://hvplot.holoviz.org) |
|
|
120
|
+
| Binder | [](https://mybinder.org/v2/gh/holoviz/hvplot/v0.8.1?urlpath=lab/tree) |
|
|
121
|
+
| Support | [](https://discourse.holoviz.org/c/hvplot/8) |
|
|
122
|
+
|
|
123
|
+
[Home](https://hvplot.holoviz.org/) | [Installation instructions](#installation-instructions) | [Getting Started Guide](https://hvplot.holoviz.org/getting_started/index.html) | [Reference Guides](https://hvplot.holoviz.org/reference/index.html) | [Examples](#examples) | [License](#license) | [Support](#support--feedback)
|
|
124
|
+
|
|
125
|
+
## hvPlot provides a familiar, high-level API for visualization
|
|
126
|
+
|
|
127
|
+
The API is based on the familiar Pandas `.plot` API and the innovative `.interactive` API.
|
|
128
|
+
|
|
129
|
+
<img src="https://github.com/MarcSkovMadsen/awesome-panel-assets/blob/master/images/hvPlot/hvplot-total-intro.gif?raw=true" style="max-height:600px;border-radius:2%;">
|
|
130
|
+
|
|
131
|
+
## hvPlot works with the tools you know and love
|
|
132
|
+
|
|
133
|
+
hvPlot
|
|
134
|
+
|
|
135
|
+
- supports a wide range of data sources including [Pandas](http://pandas.pydata.org), [Polars](https://docs.pola.rs/), [XArray](http://xarray.pydata.org), [Dask](http://dask.pydata.org), [Streamz](http://streamz.readthedocs.io), [Intake](http://github.com/ContinuumIO/intake), [GeoPandas](http://geopandas.org) and [NetworkX](https://networkx.github.io/documentation/stable/).
|
|
136
|
+
- supports the plotting backends [Bokeh](https://docs.bokeh.org/en/latest/), [Matplotlib](https://matplotlib.org/) and [Plotly](https://plotly.com/python/).
|
|
137
|
+
- exposes the powerful tools from the [HoloViz](https://holoviz.org/) ecosystem in a familiar and convenient API.
|
|
138
|
+
|
|
139
|
+
[<img src="https://hvplot.holoviz.org/assets/diagram.svg" style="max-height:400px;border-radius:2%;"/>](https://holoviz.org/)
|
|
140
|
+
|
|
141
|
+
hvPlot is **the simplest way to benefit from the [HoloViz](https://holoviz.org/) ecosystem for data exploration**.
|
|
142
|
+
|
|
143
|
+
## hvPlot can be used for exploration, reporting and data apps
|
|
144
|
+
|
|
145
|
+
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.
|
|
146
|
+
|
|
147
|
+
<a href="https://towardsdatascience.com/the-easiest-way-to-create-an-interactive-dashboard-in-python-77440f2511d1"><img src="https://miro.medium.com/max/700/1*bZjPtucT8O1esjQaGQenHw.gif" style="max-height:600px;border-radius:2%;"></a>
|
|
148
|
+
|
|
149
|
+
## Mini getting-started
|
|
150
|
+
|
|
151
|
+
Head over to the [getting started guide](https://hvplot.holoviz.org/getting_started/index.html) for more!
|
|
152
|
+
|
|
153
|
+
### Install
|
|
154
|
+
|
|
155
|
+
hvPlot can be installed on Linux, Windows, or Mac with ``conda``:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
conda install hvplot
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
or with ``pip``:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
pip install hvplot
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Please note that for versions of `jupyterlab<3.0`, you must install the JupyterLab extension manually with:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
jupyter labextension install @pyviz/jupyterlab_pyviz
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Plotting data
|
|
174
|
+
|
|
175
|
+
Work with your data source:
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
import numpy as np
|
|
179
|
+
import pandas as pd
|
|
180
|
+
|
|
181
|
+
idx = pd.date_range('1/1/2000', periods=1000)
|
|
182
|
+
df = pd.DataFrame(np.random.randn(1000, 4), index=idx, columns=list('ABCD')).cumsum()
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Import the hvPlot extension for your data source and optionally set the plotting backend:
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
import hvplot.pandas
|
|
189
|
+
# Optional: hvplot.extension('matplotlib') or hvplot.extension('plotly')
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Use the `.hvplot` API as you would use the Pandas or Xarray `.plot` API:
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
df.hvplot()
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
[<img src="https://github.com/MarcSkovMadsen/awesome-panel-assets/blob/master/images/hvPlot/hvplot-intro-plot.gif?raw=true" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/index.html)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### Interactive data apps
|
|
202
|
+
|
|
203
|
+
Just add `.interactive` and replace your normal arguments with [Panel widgets](https://panel.holoviz.org/reference/index.html#widgets) or [Ipywidgets](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20List.html).
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
import panel as pn
|
|
207
|
+
pn.extension()
|
|
208
|
+
|
|
209
|
+
df.interactive(width=600).head(n=pn.widgets.IntSlider(start=1, end=5, value=3))
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
[<img src="https://github.com/MarcSkovMadsen/awesome-panel-assets/blob/master/images/hvPlot/hvplot-intro-interactive.gif?raw=true" style="max-height:300px;border-radius:2%;">](https://hvplot.holoviz.org/user_guide/Interactive.html)
|
|
213
|
+
|
|
214
|
+
### How to find documentation from your notebook or editor
|
|
215
|
+
|
|
216
|
+
To see the available arguments for a specific `kind` of plot run
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
hvplot.help(kind='scatter')
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
In a notebook or ipython environment the usual
|
|
223
|
+
|
|
224
|
+
- `help` and `?` will provide you with documentation.
|
|
225
|
+
- `TAB` and `SHIFT+TAB` completion will help you navigate.
|
|
226
|
+
|
|
227
|
+
## License
|
|
228
|
+
|
|
229
|
+
hvPlot is completely free and open-source. It is licensed under the [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause).
|
|
230
|
+
|
|
231
|
+
## Support & Feedback
|
|
232
|
+
|
|
233
|
+
- Usage questions and showcases -> [HoloViz Community](https://holoviz.org/community.html)
|
|
234
|
+
- Bug reports and feature requests -> [Github](https://github.com/holoviz/hvplot)
|
|
235
|
+
- Developer discussions -> [Discord](https://discord.gg/rb6gPXbdAr)
|
|
236
|
+
|
|
237
|
+
For more detail check out the [HoloViz Community Guide](https://holoviz.org/community.html).
|
|
238
|
+
|
|
239
|
+
## Contributions
|
|
240
|
+
|
|
241
|
+
We would love to work with you no matter whether you want to contribute to issue management, PRs, documentation, blog posts, community support or social media communication.
|
|
242
|
+
|
|
243
|
+
To get started with the code or docs check out the [Developer Guide](https://hvplot.holoviz.org/developer_guide/index.html).
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
hvplot/__init__.py,sha256=l6r24tZQZJsKbqpXzfV5HiTMEnGdp7N3N8C3k2lc7DA,10893
|
|
2
|
+
hvplot/_version.py,sha256=mna1Alkqx4bNCQ0EHtPZqWCVM3SgevtIDPV81vj5NEA,413
|
|
3
|
+
hvplot/backend_transforms.py,sha256=BAOvIa2kLngutGIfHCAre7K2DnJqVlrzGCbDs1ev2G0,10874
|
|
4
|
+
hvplot/converter.py,sha256=r80UsZ2ypBUcfBu3ZQAfnZF4jcGImxavKFHsxCIdR-k,109238
|
|
5
|
+
hvplot/cudf.py,sha256=EJBmePEPdEX1pcMAM6TTNqU-W4pfcihKR-TdIt1_P1I,908
|
|
6
|
+
hvplot/dask.py,sha256=4XkhF1Jrd9ZkvRHEKvDjE5E2plExwnFWHvPTj2YwyBg,1274
|
|
7
|
+
hvplot/datasets.yaml,sha256=eo03dYLejYdIaLDEwKjbJrDhz_19tWavKo_LIbHuv8Y,1367
|
|
8
|
+
hvplot/fugue.py,sha256=A21kWrtLQ_oyZVm0v-ii5o3EcVQytb4f1FRCfGj28Yk,1903
|
|
9
|
+
hvplot/ibis.py,sha256=Iosa591I0uBAbAM5F4ysGyXeuJ9HI0xU4I8QNjKraA0,546
|
|
10
|
+
hvplot/intake.py,sha256=mb2diSdNukJ7ITY-6BkH1DsfWihBT_Jauo49sI8Av1s,809
|
|
11
|
+
hvplot/interactive.py,sha256=SVQK23S8kFsZZ4V5XPAGBonNXahdtiyCChjAJiPHyjM,37370
|
|
12
|
+
hvplot/networkx.py,sha256=HkwrGCeK-EBg7RzBaakLPuSp4WPE5AgkVPGs_FArK1U,21430
|
|
13
|
+
hvplot/pandas.py,sha256=NXufDc40TYH4p5UsiHeGwZX_y5AqDtEFoP_BZEM-6BQ,997
|
|
14
|
+
hvplot/polars.py,sha256=KyzbiyeJQps15qUnzGe8v809tDvN5CuSv0iANwy3H0Q,644
|
|
15
|
+
hvplot/sample_data.py,sha256=Ulcrqbd-21pf-qyOBVhavZqHSvenLJG7sl558qRb8Ps,722
|
|
16
|
+
hvplot/streamz.py,sha256=BJZYHmoPwpRkRySOCWsgzgC-c6-MxGFsJrY65a3zVnI,700
|
|
17
|
+
hvplot/ui.py,sha256=p4eF0YLAp-n_r8FL6Bbz9wcKJwV2oIKmDcZMWcotRnY,32967
|
|
18
|
+
hvplot/util.py,sha256=BNYCUd330UtsrWlrpkOQdCpd9mWWlAU63Erk5DHOWGA,19694
|
|
19
|
+
hvplot/utilities.py,sha256=haAdX9o7d9wjvBhEnv4vsdNMxQ05RKp9pvkNMa3UWoI,4926
|
|
20
|
+
hvplot/xarray.py,sha256=sxc9md_4CosjLumCdcz7dqrlsKvHWXSZiR9RHQ9NOHk,1899
|
|
21
|
+
hvplot/data/crime.csv,sha256=NrklsXzG9S6-O9kfO9YukfMiJPgJ44VC5RiDL1m04EA,7871
|
|
22
|
+
hvplot/plotting/__init__.py,sha256=tozGKUokoXhNHXSbDE1Hx1s3fEJ0VcPYzYm2At3rS-8,1796
|
|
23
|
+
hvplot/plotting/andrews_curves.py,sha256=4e2NF1NPr6-My2YqsWg0zRGUTJvA6XeFFfd1vb4Oqvs,2846
|
|
24
|
+
hvplot/plotting/core.py,sha256=dlxzxiBMgmBOTbFKP8k3jfz2RTLofG0pizQqoRcbN9Q,80862
|
|
25
|
+
hvplot/plotting/lag_plot.py,sha256=oxTMub-gobouTA2v59fSEjeBMtsf74BeUFveUKDG7UY,936
|
|
26
|
+
hvplot/plotting/parallel_coordinates.py,sha256=NG1gxv0pCis0DY1X3RZMGbzfKtt8Dltrwg2QF3sV0To,2523
|
|
27
|
+
hvplot/plotting/scatter_matrix.py,sha256=iw33OfCtn4mAO_inaYgmCwtO0MGeBdf7y1aHtSOAkK0,8478
|
|
28
|
+
hvplot/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
+
hvplot/tests/conftest.py,sha256=s_c9TB4AdvWNoua4JYYpsQgBtzM0tMuqD3CXu9sCjzs,1340
|
|
30
|
+
hvplot/tests/test_links.py,sha256=cttoz9eB-23HUXqn5JX7T70Q5LgWp1PnUSx51Z0qmIk,3038
|
|
31
|
+
hvplot/tests/testbackend_transforms.py,sha256=IVgrhkheP3pVmowdEyUh9n5tLa6k-L3mP6y74ilnwDE,3196
|
|
32
|
+
hvplot/tests/testcharts.py,sha256=ZESJxLaad31rpK09QsleJKrbo67P0xrtio3GKTJIMVk,19435
|
|
33
|
+
hvplot/tests/testfugue.py,sha256=wvOkmU6TJXaLNt0RirW1WLuNjnCyRMXvMwg4EZPRx0c,1008
|
|
34
|
+
hvplot/tests/testgeo.py,sha256=7XPyBJlZZMpWJcLWpQKGWAaCm4lYZOOUo4DPU0W0v9M,18380
|
|
35
|
+
hvplot/tests/testgeowithoutgv.py,sha256=wp8JaRPxgNOkFOr6HpCXVnu54eMa6E9peFqlA0EZrBQ,2207
|
|
36
|
+
hvplot/tests/testgridplots.py,sha256=6cfTHa1Vwzq_vhSfAo0BFcphuHJ6_b8m5CzFqqggWk8,11934
|
|
37
|
+
hvplot/tests/testhelp.py,sha256=6IrClFA5Lk121-ODoaryh8GbsI5992NhgRp9I0sE-eQ,2215
|
|
38
|
+
hvplot/tests/testibis.py,sha256=ofdHbuYdfLIxWu_hvoQnzzcxeUfDttwaOz_u18_q_Rs,317
|
|
39
|
+
hvplot/tests/testinteractive.py,sha256=WPNROZvBP0vo9LbIyLaIX6gL58oB156fFXpxTp-RH1E,42090
|
|
40
|
+
hvplot/tests/testnetworkx.py,sha256=kXzWp7RLwbSJV1_PGjENCIQj6AUMchBhmX8tSfysRfo,677
|
|
41
|
+
hvplot/tests/testoperations.py,sha256=pZJ4QfX9PFCIeaHNzhMANoWGBgYquxMPrR_jjINTd8s,16898
|
|
42
|
+
hvplot/tests/testoptions.py,sha256=l9pL297qjlTqYBdxwNgY3Id65ZDmupArF_P5JGSyuwc,23430
|
|
43
|
+
hvplot/tests/testoverrides.py,sha256=-DX-dyE8E13zCmn3qzara53AfDG8BsLWFf2kiKc50IQ,3081
|
|
44
|
+
hvplot/tests/testpanel.py,sha256=yabXqJpuxtHPfK_04xGZoA5gvjJkYKBUVNEEckkLGNU,2309
|
|
45
|
+
hvplot/tests/testpatch.py,sha256=BkECM9qbu_mNUow79R5X-hgpLpxAiK3xyOeV3G58xAc,3964
|
|
46
|
+
hvplot/tests/testplotting.py,sha256=BLnqm1OVZ8g7qAg_ic9M0U-WklxX8g2IOPVRgZcCoUc,2415
|
|
47
|
+
hvplot/tests/teststreaming.py,sha256=hMPNSkH4hZXD9bg9j3q1TiC5TqhF3nD8hu_sB_j2H80,1004
|
|
48
|
+
hvplot/tests/testtransforms.py,sha256=qzlRWasJC9FLNdQVaWIwILyTPhv9yRFsIfbqzqdNA8A,1301
|
|
49
|
+
hvplot/tests/testui.py,sha256=74gKsYBEufon0nY3aAdkuy1DBrASzaZVaAm-Jrd26Sk,10324
|
|
50
|
+
hvplot/tests/testutil.py,sha256=eB9FFAzWSut9TYgFv_oKa5gjQxbChcGfZbGL0kdpHpk,14185
|
|
51
|
+
hvplot/tests/util.py,sha256=IVMsDjDcNANRwbfIM8sqEQFqsbILO3CdLeuNGp2hfQ8,1944
|
|
52
|
+
hvplot/tests/data/README.md,sha256=IdlndhYTKXlJ6JzvinpPKAIthsnVFQFk3PlWN2Q1VoM,391
|
|
53
|
+
hvplot/tests/data/RGB-red.byte.tif,sha256=b21fGiXCVjWJW-Ga1oBtxYq_Y_HtPF0Uk2wws-0vhII,17612
|
|
54
|
+
hvplot/tests/plotting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
+
hvplot/tests/plotting/testcore.py,sha256=LgmKgruheQXRo4a6Mp35XEvvwJARupunQIn1SIK6x9s,2868
|
|
56
|
+
hvplot/tests/plotting/testohlc.py,sha256=qng7FUoRF6eQ4sYMFjuCm-O4LWTAYHgWeASAdmut0Yg,1072
|
|
57
|
+
hvplot/tests/plotting/testscattermatrix.py,sha256=NPT22qwY9Cg5oh1Xj6Xi7QcXtg27xy9vqURU5Wyj2AM,5137
|
|
58
|
+
hvplot-0.9.3a1.dist-info/LICENSE,sha256=Pe8ZKnV3pVo3M5XCJWvGGhnfwDpaAD4JH9uSNM6HUos,1507
|
|
59
|
+
hvplot-0.9.3a1.dist-info/METADATA,sha256=cNaIpqBdP8raiTcuIFqHQBdm-voZejNC7TdnibqDlFM,14774
|
|
60
|
+
hvplot-0.9.3a1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
61
|
+
hvplot-0.9.3a1.dist-info/entry_points.txt,sha256=TVVqvGMCToNPLci8ALL_pXbMTDAvAWW_g-SvIhdGpTA,55
|
|
62
|
+
hvplot-0.9.3a1.dist-info/top_level.txt,sha256=yeYAGDRH2qq2KpSRrcS0xS51c1TLngurXMfiqLUOILo,7
|
|
63
|
+
hvplot-0.9.3a1.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
hvplot
|