Metadata-Version: 2.2
Name: datashader
Version: 0.16.3
Summary: Data visualization toolchain based on aggregating into a grid
Home-page: https://datashader.org
Maintainer: Datashader developers
Maintainer-email: dev@datashader.org
License: New BSD
Project-URL: Source, https://github.com/holoviz/datashader
Classifier: License :: OSI Approved :: BSD License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: colorcet
Requires-Dist: dask
Requires-Dist: multipledispatch
Requires-Dist: numba
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: param
Requires-Dist: pillow
Requires-Dist: pyct
Requires-Dist: requests
Requires-Dist: scipy
Requires-Dist: toolz
Requires-Dist: packaging
Requires-Dist: xarray
Provides-Extra: tests
Requires-Dist: dask-geopandas; extra == "tests"
Requires-Dist: geopandas; extra == "tests"
Requires-Dist: shapely>=2.0.0; extra == "tests"
Requires-Dist: geodatasets; extra == "tests"
Requires-Dist: nbval; extra == "tests"
Requires-Dist: netcdf4; extra == "tests"
Requires-Dist: pyarrow; extra == "tests"
Requires-Dist: pytest; extra == "tests"
Requires-Dist: pytest-benchmark; extra == "tests"
Requires-Dist: pytest-cov; extra == "tests"
Requires-Dist: psutil; extra == "tests"
Requires-Dist: pytest-xdist; extra == "tests"
Requires-Dist: rasterio; extra == "tests"
Requires-Dist: rioxarray; extra == "tests"
Requires-Dist: scikit-image; extra == "tests"
Requires-Dist: spatialpandas; extra == "tests"
Requires-Dist: dask-expr; extra == "tests"
Provides-Extra: examples
Requires-Dist: dask-geopandas; extra == "examples"
Requires-Dist: geopandas; extra == "examples"
Requires-Dist: shapely>=2.0.0; extra == "examples"
Requires-Dist: bokeh>3.1; extra == "examples"
Requires-Dist: geodatasets; extra == "examples"
Requires-Dist: holoviews; extra == "examples"
Requires-Dist: matplotlib>=3.3; extra == "examples"
Requires-Dist: panel>1.1; extra == "examples"
Requires-Dist: scikit-image; extra == "examples"
Requires-Dist: spatialpandas; extra == "examples"
Provides-Extra: examples-extra
Requires-Dist: dask-geopandas; extra == "examples-extra"
Requires-Dist: geopandas; extra == "examples-extra"
Requires-Dist: shapely>=2.0.0; extra == "examples-extra"
Requires-Dist: bokeh>3.1; extra == "examples-extra"
Requires-Dist: geodatasets; extra == "examples-extra"
Requires-Dist: holoviews; extra == "examples-extra"
Requires-Dist: matplotlib>=3.3; extra == "examples-extra"
Requires-Dist: panel>1.1; extra == "examples-extra"
Requires-Dist: scikit-image; extra == "examples-extra"
Requires-Dist: spatialpandas; extra == "examples-extra"
Requires-Dist: networkx; extra == "examples-extra"
Requires-Dist: streamz; extra == "examples-extra"
Requires-Dist: fastparquet; extra == "examples-extra"
Requires-Dist: graphviz; extra == "examples-extra"
Requires-Dist: python-graphviz; extra == "examples-extra"
Requires-Dist: python-snappy; extra == "examples-extra"
Requires-Dist: rasterio; extra == "examples-extra"
Provides-Extra: geopandas
Requires-Dist: dask-geopandas; extra == "geopandas"
Requires-Dist: geopandas; extra == "geopandas"
Requires-Dist: shapely>=2.0.0; extra == "geopandas"
Provides-Extra: doc
Requires-Dist: dask-geopandas; extra == "doc"
Requires-Dist: geopandas; extra == "doc"
Requires-Dist: shapely>=2.0.0; extra == "doc"
Requires-Dist: bokeh>3.1; extra == "doc"
Requires-Dist: geodatasets; extra == "doc"
Requires-Dist: holoviews; extra == "doc"
Requires-Dist: matplotlib>=3.3; extra == "doc"
Requires-Dist: panel>1.1; extra == "doc"
Requires-Dist: scikit-image; extra == "doc"
Requires-Dist: spatialpandas; extra == "doc"
Requires-Dist: networkx; extra == "doc"
Requires-Dist: streamz; extra == "doc"
Requires-Dist: fastparquet; extra == "doc"
Requires-Dist: graphviz; extra == "doc"
Requires-Dist: python-graphviz; extra == "doc"
Requires-Dist: python-snappy; extra == "doc"
Requires-Dist: rasterio; extra == "doc"
Requires-Dist: nbsite<0.9.0,>=0.8.4; extra == "doc"
Requires-Dist: numpydoc; extra == "doc"
Requires-Dist: sphinxcontrib-mermaid; extra == "doc"
Provides-Extra: all
Requires-Dist: bokeh>3.1; extra == "all"
Requires-Dist: dask-expr; extra == "all"
Requires-Dist: dask-geopandas; extra == "all"
Requires-Dist: fastparquet; extra == "all"
Requires-Dist: geodatasets; extra == "all"
Requires-Dist: geopandas; extra == "all"
Requires-Dist: graphviz; extra == "all"
Requires-Dist: holoviews; extra == "all"
Requires-Dist: matplotlib>=3.3; extra == "all"
Requires-Dist: nbsite<0.9.0,>=0.8.4; extra == "all"
Requires-Dist: nbval; extra == "all"
Requires-Dist: netcdf4; extra == "all"
Requires-Dist: networkx; extra == "all"
Requires-Dist: numpydoc; extra == "all"
Requires-Dist: panel>1.1; extra == "all"
Requires-Dist: psutil; extra == "all"
Requires-Dist: pyarrow; extra == "all"
Requires-Dist: pytest; extra == "all"
Requires-Dist: pytest-benchmark; extra == "all"
Requires-Dist: pytest-cov; extra == "all"
Requires-Dist: pytest-xdist; extra == "all"
Requires-Dist: python-graphviz; extra == "all"
Requires-Dist: python-snappy; extra == "all"
Requires-Dist: rasterio; extra == "all"
Requires-Dist: rioxarray; extra == "all"
Requires-Dist: scikit-image; extra == "all"
Requires-Dist: shapely>=2.0.0; extra == "all"
Requires-Dist: spatialpandas; extra == "all"
Requires-Dist: sphinxcontrib-mermaid; extra == "all"
Requires-Dist: streamz; extra == "all"
Provides-Extra: gpu-tests
Requires-Dist: cupy; extra == "gpu-tests"
Requires-Dist: cudf; extra == "gpu-tests"
Requires-Dist: dask-cudf; extra == "gpu-tests"
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: maintainer
Dynamic: maintainer-email
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

<img src="https://github.com/holoviz/datashader/raw/main/doc/_static/logo_horizontal.svg" data-canonical-src="https://github.com/holoviz/datashader/raw/main/doc/_static/logo_horizontal.svg" width="400"/><br>

-----------------

# Turn even the largest data into images, accurately

|    |    |
| --- | --- |
| Downloads | ![https://pypistats.org/packages/datashader](https://img.shields.io/pypi/dm/datashader?label=pypi) ![https://anaconda.org/pyviz/datashader](https://pyviz.org/_static/cache/datashader_conda_downloads_badge.svg)
| Build Status | [![Build Status](https://github.com/holoviz/datashader/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/holoviz/datashader/actions/workflows/test.yaml?query=branch%3Amain) |
| Coverage | [![codecov](https://codecov.io/gh/holoviz/datashader/branch/main/graph/badge.svg)](https://codecov.io/gh/holoviz/datashader) |
| Latest dev release | [![Github tag](https://img.shields.io/github/tag/holoviz/datashader.svg?label=tag&colorB=11ccbb)](https://github.com/holoviz/datashader/tags) [![dev-site](https://img.shields.io/website-up-down-green-red/https/holoviz-dev.github.io/datashader.svg?label=dev%20website)](https://holoviz-dev.github.io/datashader/) |
| Latest release | [![Github release](https://img.shields.io/github/release/holoviz/datashader.svg?label=tag&colorB=11ccbb)](https://github.com/holoviz/datashader/releases) [![PyPI version](https://img.shields.io/pypi/v/datashader.svg?colorB=cc77dd)](https://pypi.python.org/pypi/datashader) [![datashader version](https://img.shields.io/conda/v/pyviz/datashader.svg?colorB=4488ff&style=flat)](https://anaconda.org/pyviz/datashader) [![conda-forge version](https://img.shields.io/conda/v/conda-forge/datashader.svg?label=conda%7Cconda-forge&colorB=4488ff)](https://anaconda.org/conda-forge/datashader) [![defaults version](https://img.shields.io/conda/v/anaconda/datashader.svg?label=conda%7Cdefaults&style=flat&colorB=4488ff)](https://anaconda.org/anaconda/datashader) |
| Python | [![Python support](https://img.shields.io/pypi/pyversions/datashader.svg)](https://pypi.org/project/datashader/)
| Docs | [![DocBuildStatus](https://github.com/holoviz/datashader/workflows/docs/badge.svg?query=branch%3Amain)](https://github.com/holoviz/datashader/actions?query=workflow%3Adocs+branch%3Amain) [![site](https://img.shields.io/website-up-down-green-red/https/datashader.org.svg)](https://datashader.org) |
| Support | [![Discourse](https://img.shields.io/discourse/status?server=https%3A%2F%2Fdiscourse.holoviz.org)](https://discourse.holoviz.org/) |

-------

[![History of OS GIS Timeline](examples/assets/images/featured-badge-gh.svg)](https://makepath.com/history-of-open-source-gis/)

-------

## What is it?

Datashader is a data rasterization pipeline for automating the process of
creating meaningful representations of large amounts of data. Datashader
breaks the creation of images of data into 3 main steps:

1. Projection

   Each record is projected into zero or more bins of a nominal plotting grid
   shape, based on a specified glyph.

2. Aggregation

   Reductions are computed for each bin, compressing the potentially large
   dataset into a much smaller *aggregate* array.

3. Transformation

   These aggregates are then further processed, eventually creating an image.

Using this very general pipeline, many interesting data visualizations can be
created in a performant and scalable way. Datashader contains tools for easily
creating these pipelines in a composable manner, using only a few lines of code.
Datashader can be used on its own, but it is also designed to work as
a pre-processing stage in a plotting library, allowing that library
to work with much larger datasets than it would otherwise.

## Installation

Datashader supports Python 3.9, 3.10, 3.11, and 3.12 on Linux, Windows, or
Mac and can be installed with conda:

    conda install datashader

or with pip:

    pip install datashader

For the best performance, we recommend using conda so that you are sure
to get numerical libraries optimized for your platform. The latest
releases are avalailable on the pyviz channel `conda install -c pyviz
datashader` and the latest pre-release versions are avalailable on the
dev-labelled channel `conda install -c pyviz/label/dev datashader`.

## Fetching Examples

Once you've installed datashader as above you can fetch the examples:

    datashader examples
    cd datashader-examples

This will create a new directory called
<span class="title-ref">datashader-examples</span> with all the data
needed to run the examples.

To run all the examples you will need some extra dependencies. If you
installed datashader **within a conda environment**, with that
environment active run:

    conda env update --file environment.yml

Otherwise create a new environment:

    conda env create --name datashader --file environment.yml
    conda activate datashader

## Developer Instructions

1.  Install Python 3
    [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
    [anaconda](https://www.anaconda.com/download/success), if you don't
    already have it on your system.

2.  Clone the datashader git repository if you do not already have it:

        git clone git://github.com/holoviz/datashader.git

3.  Set up a new conda environment with all of the dependencies needed
    to run the examples:

        cd datashader
        conda env create --name datashader --file ./examples/environment.yml
        conda activate datashader

4.  Put the datashader directory into the Python path in this
    environment:

        pip install --no-deps -e .

## Learning more

After working through the examples, you can find additional resources linked
from the [datashader documentation](https://datashader.org),
including API documentation and papers and talks about the approach.

## Some Examples

![USA census](examples/assets/images/usa_census.jpg)

![NYC races](examples/assets/images/nyc_races.jpg)

![NYC taxi](examples/assets/images/nyc_pickups_vs_dropoffs.jpg)
