SciPy 2024

hvPlot and Panel: Easy data visualization, data exploration, and data apps
07-09, 08:00–12:00 (US/Pacific), Ballroom D

This tutorial will show you how to use the Pandas, Dask, or Xarray APIs you already know to interactively explore and visualize your data even if it is big, streaming, or multidimensional. Then just replace your expression arguments with widgets to get an instant web app that you can share as HTML+WASM or backed by a live Python server. These tools let you focus on your data rather than the API, and let you build linked, interactive drill-down exploratory apps without having to run a web-technology software development project, which you can then share without becoming an operations specialist.


Python offers many powerful visualization tools (listed on pyviz.org), each with their own strengths and advantages. Few people have the time and interest to learn all the different APIs required to use these different tools, but a de-facto standard API for data plotting has emerged in the Pandas .plot() API, now supported by many different plotting packages.

In this tutorial, you will learn how to use hvPlot, a high-level interactive plotting library that exposes the power of Bokeh, Matplotlib, Plotly, Datashader, HoloViews, GeoViews, and Cartopy using the same .plot API you may already know from using Pandas, Dask, or Xarray's plotting interface. We'll also show you how to turn nearly any expression you can write with that API into a web app with plots and tables by simply substituting widgets for any parameters you want users to be able to change, easily creating reactive expression pipelines. Thanks to the HoloViz tools on which hvPlot is built, the resulting apps can easily handle big data (up to billions of rows on an ordinary laptop), remote data (either in Jupyter or in standalone apps), streaming data, geographical data (building on the geoscience software stack), and multidimensional data (using Xarray).

hvPlot's high-level interface should be sufficient for nearly all of the common data-exploration and data-analysis tasks you want to do with Pandas, Dask, or Xarray, but in keeping with the HoloViz philosophy of "shortcuts rather than dead ends", we'll also show you how and when to drop down to lower-level APIs when you need to, such as when building more complex apps using Panel, doing complex graphical data calculations using Datashader, or integrating plotting and interactivity into your own libraries using Param and HoloViews.

With the techniques you learn in the hands-on exercises in this tutorial, you'll get the tools and know-how to effectively explore, analyze and visualize simple or complex, small or large, and static or dynamic data easily, concisely, and reproducibly. The resulting visualizations and apps can be shared as static images, simple HTML documents with limited interactivity, HTML+WASM documents with full Python-backed interactivity, or as Python apps deployed on a remote server. We expect participants to have previously used some sort of plotting tool and to be comfortable with Python and at least one array-based Python library (Numpy, Pandas, Xarray, CuPy, cuDF, Dask, etc.).


Prerequisites

Experience plotting data with any tool (Python or otherwise) should be sufficient background for understanding and appreciating the approach used here.
Some experience with pandas, xarray, or numpy is helpful.

Installation Instructions

The HoloViz suite of tools can be installed as described at holoviz.org/tutorial .

Dr. James A. Bednar is the Director of Professional Services at Anaconda, Inc. Over a 10-year career of lecturing at the University of Edinburgh (UK), he received multiple nominations for teaching awards and published more than 50 scientific papers. He founded the HoloViz project and manages the Datashader, Param, and Colorcet packages within it.