Metadata-Version: 2.1
Name: holoviews
Version: 1.14.4
Summary: Stop plotting your data - annotate your data and let it visualize itself.
Home-page: https://www.holoviews.org
Author: Jean-Luc Stevens and Philipp Rudiger
Author-email: holoviews@gmail.com
Maintainer: PyViz Developers
Maintainer-email: developers@pyviz.org
License: BSD
Platform: Windows
Platform: Mac OS X
Platform: Linux
Classifier: License :: OSI Approved :: BSD License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Framework :: Matplotlib
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=2.7
Description-Content-Type: text/markdown
Requires-Dist: param (<2.0,>=1.9.3)
Requires-Dist: numpy (>=1.0)
Requires-Dist: pyviz-comms (>=0.7.4)
Requires-Dist: panel (>=0.8.0)
Requires-Dist: colorcet
Requires-Dist: pandas (>=0.20.0)
Provides-Extra: all
Requires-Dist: ibis-framework (>=1.3) ; extra == 'all'
Requires-Dist: awscli ; extra == 'all'
Requires-Dist: ipython (>=5.4.0) ; extra == 'all'
Requires-Dist: rfc3986 ; extra == 'all'
Requires-Dist: pyarrow ; extra == 'all'
Requires-Dist: streamz (>=0.5.0) ; extra == 'all'
Requires-Dist: xarray (>=0.10.4) ; extra == 'all'
Requires-Dist: plotly (>=4.0) ; extra == 'all'
Requires-Dist: scikit-image ; extra == 'all'
Requires-Dist: path.py ; extra == 'all'
Requires-Dist: nbconvert (==5.3.1) ; extra == 'all'
Requires-Dist: dask ; extra == 'all'
Requires-Dist: networkx ; extra == 'all'
Requires-Dist: netcdf4 ; extra == 'all'
Requires-Dist: flake8 ; extra == 'all'
Requires-Dist: shapely ; extra == 'all'
Requires-Dist: scipy ; extra == 'all'
Requires-Dist: dash (>=1.16) ; extra == 'all'
Requires-Dist: ffmpeg ; extra == 'all'
Requires-Dist: deepdiff ; extra == 'all'
Requires-Dist: pillow ; extra == 'all'
Requires-Dist: jsonschema (==2.6.0) ; extra == 'all'
Requires-Dist: spatialpandas ; extra == 'all'
Requires-Dist: ipython (==5.4.1) ; extra == 'all'
Requires-Dist: keyring ; extra == 'all'
Requires-Dist: cftime ; extra == 'all'
Requires-Dist: coveralls ; extra == 'all'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'all'
Requires-Dist: nbsmoke (>=0.2.0) ; extra == 'all'
Requires-Dist: notebook ; extra == 'all'
Requires-Dist: mock ; extra == 'all'
Requires-Dist: datashader (>=0.11.1) ; extra == 'all'
Requires-Dist: twine ; extra == 'all'
Requires-Dist: matplotlib (>=3) ; extra == 'all'
Requires-Dist: nose ; extra == 'all'
Requires-Dist: nbconvert (<6) ; extra == 'all'
Provides-Extra: basic_tests
Requires-Dist: nose ; extra == 'basic_tests'
Requires-Dist: mock ; extra == 'basic_tests'
Requires-Dist: flake8 ; extra == 'basic_tests'
Requires-Dist: coveralls ; extra == 'basic_tests'
Requires-Dist: path.py ; extra == 'basic_tests'
Requires-Dist: matplotlib (>=3) ; extra == 'basic_tests'
Requires-Dist: nbsmoke (>=0.2.0) ; extra == 'basic_tests'
Requires-Dist: nbconvert (<6) ; extra == 'basic_tests'
Requires-Dist: twine ; extra == 'basic_tests'
Requires-Dist: rfc3986 ; extra == 'basic_tests'
Requires-Dist: keyring ; extra == 'basic_tests'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'basic_tests'
Requires-Dist: pandas ; extra == 'basic_tests'
Requires-Dist: ipython (>=5.4.0) ; extra == 'basic_tests'
Requires-Dist: notebook ; extra == 'basic_tests'
Provides-Extra: build
Requires-Dist: param (>=1.7.0) ; extra == 'build'
Requires-Dist: setuptools (>=30.3.0) ; extra == 'build'
Requires-Dist: pyct (>=0.4.4) ; extra == 'build'
Requires-Dist: python (<3.9) ; extra == 'build'
Requires-Dist: pip ; extra == 'build'
Provides-Extra: doc
Requires-Dist: ipython (>=5.4.0) ; extra == 'doc'
Requires-Dist: notebook ; extra == 'doc'
Requires-Dist: matplotlib (>=3) ; extra == 'doc'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'doc'
Requires-Dist: networkx ; extra == 'doc'
Requires-Dist: pillow ; extra == 'doc'
Requires-Dist: xarray (>=0.10.4) ; extra == 'doc'
Requires-Dist: plotly (>=4.0) ; extra == 'doc'
Requires-Dist: dash (>=1.16) ; extra == 'doc'
Requires-Dist: streamz (>=0.5.0) ; extra == 'doc'
Requires-Dist: datashader (>=0.11.1) ; extra == 'doc'
Requires-Dist: ffmpeg ; extra == 'doc'
Requires-Dist: cftime ; extra == 'doc'
Requires-Dist: netcdf4 ; extra == 'doc'
Requires-Dist: dask ; extra == 'doc'
Requires-Dist: scipy ; extra == 'doc'
Requires-Dist: shapely ; extra == 'doc'
Requires-Dist: scikit-image ; extra == 'doc'
Requires-Dist: spatialpandas ; extra == 'doc'
Requires-Dist: pyarrow ; extra == 'doc'
Requires-Dist: ibis-framework (>=1.3) ; extra == 'doc'
Requires-Dist: nbsite (>=0.6.8a36) ; extra == 'doc'
Requires-Dist: sphinx ; extra == 'doc'
Requires-Dist: sphinx-holoviz-theme ; extra == 'doc'
Requires-Dist: mpl-sample-data (>=3.1.3) ; extra == 'doc'
Requires-Dist: awscli ; extra == 'doc'
Requires-Dist: pscript ; extra == 'doc'
Requires-Dist: graphviz ; extra == 'doc'
Requires-Dist: bokeh (>2.2) ; extra == 'doc'
Requires-Dist: nbconvert (<6.0) ; extra == 'doc'
Provides-Extra: examples
Requires-Dist: ipython (>=5.4.0) ; extra == 'examples'
Requires-Dist: notebook ; extra == 'examples'
Requires-Dist: matplotlib (>=3) ; extra == 'examples'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'examples'
Requires-Dist: networkx ; extra == 'examples'
Requires-Dist: pillow ; extra == 'examples'
Requires-Dist: xarray (>=0.10.4) ; extra == 'examples'
Requires-Dist: plotly (>=4.0) ; extra == 'examples'
Requires-Dist: dash (>=1.16) ; extra == 'examples'
Requires-Dist: streamz (>=0.5.0) ; extra == 'examples'
Requires-Dist: datashader (>=0.11.1) ; extra == 'examples'
Requires-Dist: ffmpeg ; extra == 'examples'
Requires-Dist: cftime ; extra == 'examples'
Requires-Dist: netcdf4 ; extra == 'examples'
Requires-Dist: dask ; extra == 'examples'
Requires-Dist: scipy ; extra == 'examples'
Requires-Dist: shapely ; extra == 'examples'
Requires-Dist: scikit-image ; extra == 'examples'
Requires-Dist: spatialpandas ; extra == 'examples'
Requires-Dist: pyarrow ; extra == 'examples'
Requires-Dist: ibis-framework (>=1.3) ; extra == 'examples'
Provides-Extra: extras
Requires-Dist: ipython (>=5.4.0) ; extra == 'extras'
Requires-Dist: notebook ; extra == 'extras'
Requires-Dist: matplotlib (>=3) ; extra == 'extras'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'extras'
Requires-Dist: networkx ; extra == 'extras'
Requires-Dist: pillow ; extra == 'extras'
Requires-Dist: xarray (>=0.10.4) ; extra == 'extras'
Requires-Dist: plotly (>=4.0) ; extra == 'extras'
Requires-Dist: dash (>=1.16) ; extra == 'extras'
Requires-Dist: streamz (>=0.5.0) ; extra == 'extras'
Requires-Dist: datashader (>=0.11.1) ; extra == 'extras'
Requires-Dist: ffmpeg ; extra == 'extras'
Requires-Dist: cftime ; extra == 'extras'
Requires-Dist: netcdf4 ; extra == 'extras'
Requires-Dist: dask ; extra == 'extras'
Requires-Dist: scipy ; extra == 'extras'
Requires-Dist: shapely ; extra == 'extras'
Requires-Dist: scikit-image ; extra == 'extras'
Requires-Dist: spatialpandas ; extra == 'extras'
Requires-Dist: pyarrow ; extra == 'extras'
Requires-Dist: ibis-framework (>=1.3) ; extra == 'extras'
Requires-Dist: pscript (==0.7.1) ; extra == 'extras'
Provides-Extra: nbtests
Requires-Dist: ipython (>=5.4.0) ; extra == 'nbtests'
Requires-Dist: notebook ; extra == 'nbtests'
Requires-Dist: matplotlib (>=3) ; extra == 'nbtests'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'nbtests'
Requires-Dist: nose ; extra == 'nbtests'
Requires-Dist: awscli ; extra == 'nbtests'
Requires-Dist: deepdiff ; extra == 'nbtests'
Requires-Dist: nbconvert (==5.3.1) ; extra == 'nbtests'
Requires-Dist: jsonschema (==2.6.0) ; extra == 'nbtests'
Requires-Dist: ipython (==5.4.1) ; extra == 'nbtests'
Provides-Extra: notebook
Requires-Dist: ipython (>=5.4.0) ; extra == 'notebook'
Requires-Dist: notebook ; extra == 'notebook'
Provides-Extra: recommended
Requires-Dist: ipython (>=5.4.0) ; extra == 'recommended'
Requires-Dist: notebook ; extra == 'recommended'
Requires-Dist: matplotlib (>=3) ; extra == 'recommended'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'recommended'
Provides-Extra: tests
Requires-Dist: nose ; extra == 'tests'
Requires-Dist: mock ; extra == 'tests'
Requires-Dist: flake8 ; extra == 'tests'
Requires-Dist: coveralls ; extra == 'tests'
Requires-Dist: path.py ; extra == 'tests'
Requires-Dist: matplotlib (>=3) ; extra == 'tests'
Requires-Dist: nbsmoke (>=0.2.0) ; extra == 'tests'
Requires-Dist: nbconvert (<6) ; extra == 'tests'
Requires-Dist: twine ; extra == 'tests'
Requires-Dist: rfc3986 ; extra == 'tests'
Requires-Dist: keyring ; extra == 'tests'
Provides-Extra: unit_tests
Requires-Dist: ipython (>=5.4.0) ; extra == 'unit_tests'
Requires-Dist: notebook ; extra == 'unit_tests'
Requires-Dist: matplotlib (>=3) ; extra == 'unit_tests'
Requires-Dist: bokeh (>=1.1.0) ; extra == 'unit_tests'
Requires-Dist: networkx ; extra == 'unit_tests'
Requires-Dist: pillow ; extra == 'unit_tests'
Requires-Dist: xarray (>=0.10.4) ; extra == 'unit_tests'
Requires-Dist: plotly (>=4.0) ; extra == 'unit_tests'
Requires-Dist: dash (>=1.16) ; extra == 'unit_tests'
Requires-Dist: streamz (>=0.5.0) ; extra == 'unit_tests'
Requires-Dist: datashader (>=0.11.1) ; extra == 'unit_tests'
Requires-Dist: ffmpeg ; extra == 'unit_tests'
Requires-Dist: cftime ; extra == 'unit_tests'
Requires-Dist: netcdf4 ; extra == 'unit_tests'
Requires-Dist: dask ; extra == 'unit_tests'
Requires-Dist: scipy ; extra == 'unit_tests'
Requires-Dist: shapely ; extra == 'unit_tests'
Requires-Dist: scikit-image ; extra == 'unit_tests'
Requires-Dist: spatialpandas ; extra == 'unit_tests'
Requires-Dist: pyarrow ; extra == 'unit_tests'
Requires-Dist: ibis-framework (>=1.3) ; extra == 'unit_tests'
Requires-Dist: nose ; extra == 'unit_tests'
Requires-Dist: mock ; extra == 'unit_tests'
Requires-Dist: flake8 ; extra == 'unit_tests'
Requires-Dist: coveralls ; extra == 'unit_tests'
Requires-Dist: path.py ; extra == 'unit_tests'
Requires-Dist: nbsmoke (>=0.2.0) ; extra == 'unit_tests'
Requires-Dist: nbconvert (<6) ; extra == 'unit_tests'
Requires-Dist: twine ; extra == 'unit_tests'
Requires-Dist: rfc3986 ; extra == 'unit_tests'
Requires-Dist: keyring ; extra == 'unit_tests'

[![PyPI](https://img.shields.io/pypi/v/holoviews.svg)](https://pypi.python.org/pypi/holoviews)
[![Conda](https://anaconda.org/pyviz/holoviews/badges/installer/conda.svg)](https://anaconda.org/pyviz/holoviews)
[![Downloads](https://s3.amazonaws.com/pubbadges/holoviews_current.svg)](https://anaconda.org/pyviz/holoviews)
[![BuildStatus](https://github.com/holoviz/holoviews/workflows/pytest/badge.svg)](https://github.com/holoviz/holoviews/actions?query=workflow%3Apytest)
[![DocBuildStatus](https://github.com/holoviz/holoviews/workflows/docs/badge.svg)](https://github.com/holoviz/holoviews/actions?query=workflow%3Adocs)
[![Coveralls](https://coveralls.io/repos/github/holoviz/holoviews/badge.svg?branch=master)](https://coveralls.io/github/holoviz/holoviews?branch=master)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/pyviz/pyviz?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Binder](https://img.shields.io/badge/Launch%20JupyterLab-v1.13.2-579ACA.svg?logo=data:image/png;base64,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)](https://mybinder.org/v2/gh/holoviz/holoviews/v1.13.2?urlpath=lab/tree/examples)

# <img src="https://assets.holoviews.org/logo/holoviews_color_icon_500x500.png" alt="HoloViews logo" height="40px" align="left" /> HoloViews

**Stop plotting your data - annotate your data and let it visualize
itself.**

HoloViews is an
[open-source](https://github.com/pyviz/holoviews/blob/master/LICENSE.txt)
Python library designed to make data analysis and visualization seamless
and simple. With HoloViews, you can usually express what you want to do
in very few lines of code, letting you focus on what you are trying to
explore and convey, not on the process of plotting. 

Check out the [HoloViews web site](http://holoviews.org) for extensive examples and documentation.

<div>
<div >
  <a href="http://holoviews.org/gallery/demos/bokeh/iris_splom_example.html">
    <img src="http://holoviews.org/_images/iris_splom_example_large.png" width='20%'> </img> </a>
  <a href="http://holoviews.org/getting_started/Gridded_Datasets.html">
    <img src="https://assets.holoviews.org/collage/cells.png" width='22%'> </img>  </a>
  <a href="http://holoviews.org/gallery/demos/bokeh/scatter_economic.html">
    <img src="http://holoviews.org/_images/scatter_economic_large.png" width='43%'> </img> </a>
</div>

<div >
  <a href="http://holoviews.org/gallery/demos/bokeh/square_limit.html">
    <img src="http://holoviews.org/_images/square_limit_large.png" width='20%'> </a>
  <a href="http://holoviews.org/gallery/demos/bokeh/bars_economic.html">
    <img src="http://holoviews.org/_images/bars_economic.png" width='20%'> </a>
  <a href="http://holoviews.org/gallery/demos/bokeh/texas_choropleth_example.html">
    <img src="http://holoviews.org/_images/texas_choropleth_example_large.png" width='20%'> </a>
  <a href="http://holoviews.org/gallery/demos/bokeh/verhulst_mandelbrot.html">
    <img src="http://holoviews.org/_images/verhulst_mandelbrot.png" width='20%'> </a>
</div>
<div >
    <a href="http://holoviews.org/gallery/demos/bokeh/dropdown_economic.html">
      <img src="https://assets.holoviews.org/collage/dropdown.gif" width='31%'> </a>
    <a href="http://holoviews.org/gallery/demos/bokeh/dragon_curve.html">
      <img src="https://assets.holoviews.org/collage/dragon_fractal.gif" width='26%'> </a>
    <a href="http://holoviews.org/gallery/apps/bokeh/nytaxi_hover.html">
      <img src="https://assets.holoviews.org/collage/ny_datashader.gif" width='31%'> </a>
</div>
</div>


Installation
============

HoloViews works with 
[Python 2.7 and Python 3](https://github.com/holoviz/holoviews/actions?query=workflow%3Apytest)
on Linux, Windows, or Mac, and works seamlessly with 
[Jupyter Notebook and JupyterLab](https://jupyter.org).

The recommended way to install HoloViews is using the
[conda](https://docs.conda.io/projects/conda/en/latest/index.html) command provided by
[Anaconda](https://docs.anaconda.com/anaconda/install/) or
[Miniconda](https://docs.conda.io/en/latest/miniconda.html):

    conda install -c pyviz holoviews bokeh

This command will install the typical packages most useful with
HoloViews, though HoloViews itself depends only on
[Numpy](https://numpy.org) [Pandas](https://pandas.pydata.org) and [Param](https://param.holoviz.org).
Additional installation and configuration options are described in the
[user guide](https://holoviews.org/user_guide/Installing_and_Configuring.html).

You can also clone holoviews directly from GitHub and install it with:

    git clone git://github.com/holoviz/holoviews.git
    cd holoviews
    pip install -e .

Usage
-----

Once you've installed HoloViews, you can get a copy of all the examples shown on this website:

    holoviews --install-examples
    cd holoviews-examples

Now you can launch Jupyter Notebook or JupyterLab to explore them:

    jupyter notebook

    jupyter lab

If you are working with a JupyterLab version <2.0 you will also need the PyViz JupyterLab
extension:

    jupyter labextension install @pyviz/jupyterlab_pyviz

For more details on setup and configuration see [our website](https://holoviews.org/user_guide/Installing_and_Configuring.html).

For general discussion, we have a [gitter channel](https://gitter.im/pyviz/pyviz).
If you find any bugs or have any feature suggestions please file a GitHub 
[issue](https://github.com/holoviz/holoviews/issues)
or submit a [pull request](https://help.github.com/articles/about-pull-requests).


