Tutorial 1. Overview

Welcome to HoloViz!#

HoloViz is a set of compatible tools to make it easier to see and understand your data at every stage needed by users, research groups, and projects:

  • importing and cleaning

  • initial exploration

  • testing hypotheses

  • generating accurate and convincing figures

  • sharing and deploying live apps

  • improving and adapting each stage over time

Why “Holo”? “holo-”, from the Greek root “hólos”, means “whole, entire, complete”.

Doesn’t Python already cover all these stages?#

Sure! That’s how it ended up with:

Why so many tools?#

Because each tool is typically limited to one or two of the stages in the data life cycle, supporting some well but not the others:

  • Simple, quick plots, but limited in capabilities, customization, and compositionality.

  • Deep capabilities for print-based plots, but weak or no support for custom interactivity in web apps.

  • Good interactivity in Jupyter, but weak or no support for batch processing or deployed servers.

  • Good support for deployed servers, but weak or no support for Jupyter or interactive exploration in general.

  • Good support for small datasets, but can’t handle large datasets until after they have been explored enough to determine how to aggregate or model them

How does HoloViz help?#

To avoid having to abandon all your work on one stage to reach the next, HoloViz tools reduce friction and gaps between the stages:

  • Focuses from the start on tools that support web browsers fully, because all tools offer static output, but not vice versa.

  • Focuses on writing Python, not web tech – web tech like JS/CSS would be fine for deployments, but very impractical for exploratory analysis.

  • Eliminates browser-based data-size restrictions, to avoid having to switch tools for each dataset.

  • Makes sure that all interactivity works the same in Jupyter and in a standalone deployment

  • Provides high-level (quick and convenient) interfaces that are shortcuts, not dead ends:

Shortcuts, not dead ends#

HoloViz principles#

Throughout the tutorial, you’ll see these principles at work:

  • We’ll usually start out with an easy one-line command to build a dashboard, app, or plot.

  • Then we’ll show what you can do with it at this level: customize it, compose it with other things, etc.

  • Then we’ll show you how to drop down a level when you need to make it do what you want

  • Repeat as necessary, all the way down to the HTML, CSS, and JS!

HoloViz currently covers this subset of viz tools

These tools are the most fully supported and are often entirely sufficient on their own.

HoloViz libraries#

To address the above issues, we have developed a set of open-source Python packages to streamline the process of working with small and large datasets (from a few datapoints to billions or more) in a web browser, whether doing exploratory analysis, making simple widget-based tools, or building full-featured dashboards. The main libraries in this ecosystem include:

  • Panel: Assembling objects from many different libraries into a layout or app, whether in a Jupyter notebook or in a standalone servable dashboard

  • hvPlot: Quickly return interactive Bokeh-based HoloViews or GeoViews objects from Pandas, Xarray, orother data structures

  • HoloViews: Declarative objects for instantly visualizable data, building Bokeh plots from convenient high-level specifications

  • GeoViews: Visualizable geographic data that that can be mixed and matched with HoloViews objects

  • Datashader: Rasterizing huge datasets quickly as fixed-size images

  • Param: Declaring user-relevant parameters, making it simple to work with widgets inside and outside of a notebook context

  • Colorcet: Perceptually accurate continuous and categorical colormaps for any viz tool

Built on the Python scientific ecosystem#

Beyond the specific HoloViz tools, all these approaches work with and often rely upon a wide range of other open-source libraries for their implementation, including:

  • Bokeh: HTML/JS plots in a web browser for Python data structures (used by Panel, hvPlot, HoloViews, GeoViews)

  • Matplotlib: Flexible, publication-quality plots (used by HoloViews, Geoviews; used with Panel)

  • Pandas: Convenient computation on columnar datasets (used by HoloViews and Datashader)

  • Xarray: Convenient computations on multidimensional array datasets (used by hvPlot HoloViews and Datashader)

  • Dask: Efficient out-of-core/distributed computation on massive datasets (used by hvPlot, Datashader)

  • Numba: Accelerated machine code for inner loops (used by Datashader)

  • Fastparquet: Efficient storage for columnar data (used with Datashader)

  • Cartopy: Support for geographical data (used by GeoViews; uses a wide range of other lower-level libraries)

The HoloViz tutorial#

In this tutorial, we’ll focus on an example set of data using it to illustrate how to:

  • create simple but powerful apps and dashboards out of anything in a Jupyter notebook

  • make simple but powerful plots out of Pandas dataframes and Xarray multidimensional arrays

  • handle columnar data, big data, geo data, array data

  • provide custom interactive links between views of datasets

  • handle the whole process from getting the data in, cleaning it, exploring it visually, creating plots for communication, building dashboards for sharing your analyses, and deploying dashboards.

The tutorial is organized around the most general to the most specific, in terms of tool support. We first look at Panel package, which works with nearly any plotting library, then hvPlot, which works with nearly any data library and shares an API with many other plotting libraries, and then dive deeper into HoloViz-specific approaches that let you work with large data, provide deep interactivity, and other advanced features.

To summarize#

  • HoloViz provides a set of very high-level tools for interacting with data

  • These tools make it simple to work with multidimensional data, flexibly selecting, visualizing, combining, and comparing it.

  • The tools focus on information visualization in 2D in web browsers, not 3D scientific visualization.

  • Together the tools support a flexible workflow with very little friction between initial exploratory analysis, making interactive apps, building fully deployable dashboards, and revisiting the initial analyses as needed, with changes immediately propagating to the deployed dashboard.

  • The tools are designed around “shortcuts”, not “dead ends”, and so there is always another level deeper that you can go if you need more power or more customization.

Getting started#

Before going further, it’s worth exploring some examples of what you can get with HoloViz, to make sure that it covers your needs:

  • https://panel.pyviz.org/gallery

  • https://examples.pyviz.org

And then you can browse through the already-run versions of the HoloViz tutorials to see what they cover and how it all fits together. But everything on this website is a Jupyter Notebook that you can run yourself, once you follow the installation instructions, so the next step is then to try it all out and have fun exploring it!