{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "

Tutorial 1. Overview

\n", "

\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Welcome to HoloViz!\n", "\n", "HoloViz is a set of compatible tools to make it easier to see and understand\n", "your data at _every_ stage needed by users, research groups, and projects:\n", "\n", "- importing and cleaning\n", "- initial exploration\n", "- testing hypotheses\n", "- generating accurate and convincing figures\n", "- sharing and deploying live apps\n", "- improving and adapting each stage over time\n", "\n", "Why \"Holo\"? \"_holo-_\", from the Greek root \"_hólos_\", means\n", "[\"whole, entire, complete\"](https://www.dictionary.com/browse/holo-).\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Doesn't Python _already_ cover all these stages?\n", "\n", "Sure! That's how it ended up with:\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Why so many tools?\n", "\n", "Because each tool is typically limited to one or two of the stages in the data\n", "life cycle, supporting some well but not the others:\n", "\n", "- Simple, quick plots, but limited in capabilities, customization, and\n", " compositionality.\n", "- Deep capabilities for print-based plots, but weak or no support for custom\n", " interactivity in web apps.\n", "- Good interactivity in Jupyter, but weak or no support for batch processing or\n", " deployed servers.\n", "- Good support for deployed servers, but weak or no support for Jupyter or\n", " interactive exploration in general.\n", "- Good support for small datasets, but can't handle large datasets until _after_\n", " they have been explored enough to determine how to aggregate or model them\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How does HoloViz help?\n", "\n", "To avoid having to abandon all your work on one stage to reach the next, HoloViz\n", "tools reduce friction and gaps between the stages:\n", "\n", "- Focuses from the start on tools that support web browsers fully, because all\n", " tools offer static output, but not vice versa.\n", "- Focuses on writing Python, not web tech -- web tech like JS/CSS would be fine\n", " for deployments, but very impractical for exploratory analysis.\n", "- Eliminates browser-based data-size restrictions, to avoid having to switch\n", " tools for each dataset.\n", "- Makes sure that all interactivity works the same in Jupyter and in a\n", " standalone deployment\n", "- Provides high-level (quick and convenient) interfaces that are shortcuts, not\n", " dead ends:\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Shortcuts, not dead ends\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## HoloViz principles\n", "\n", "Throughout the tutorial, you'll see these principles at work:\n", "\n", "- We'll usually start out with an easy one-line command to build a dashboard,\n", " app, or plot.\n", "- Then we'll show what you can do with it at this level: customize it, compose\n", " it with other things, etc.\n", "- Then we'll show you how to drop down a level when you need to make it do what\n", " you want\n", "- Repeat as necessary, all the way down to the HTML, CSS, and JS!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "\n", "



HoloViz currently covers this subset of viz tools

\n", "\n", "
\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "\n", "



These tools are the most fully supported and are often\n", "entirely sufficient on their own.

\n", "\n", "
\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## HoloViz libraries\n", "\n", "\n", "\n", "To address the above issues, we have developed a set of open-source Python\n", "packages to streamline the process of working with small and large datasets\n", "(from a few datapoints to billions or more) in a web browser, whether doing\n", "exploratory analysis, making simple widget-based tools, or building\n", "full-featured dashboards. The main libraries in this ecosystem include:\n", "\n", "- [Panel](http://panel.pyviz.org): Assembling objects from many different\n", " libraries into a layout or app, whether in a Jupyter notebook or in a\n", " standalone servable dashboard\n", "- [hvPlot](http://hvplot.pyviz.org): Quickly return interactive Bokeh-based\n", " HoloViews or GeoViews objects from Pandas, Xarray, orother data structures\n", "- [HoloViews](http://holoviews.org): Declarative objects for instantly\n", " visualizable data, building Bokeh plots from convenient high-level\n", " specifications\n", "- [GeoViews](http://geo.holoviews.org): Visualizable geographic data that that\n", " can be mixed and matched with HoloViews objects\n", "- [Datashader](http://datashader.org): Rasterizing huge datasets quickly as\n", " fixed-size images\n", "- [Param](http://param.pyviz.org): Declaring user-relevant parameters, making it\n", " simple to work with widgets inside and outside of a notebook context\n", "- [Colorcet](http://colorcet.pyviz.org): Perceptually accurate continuous and\n", " categorical colormaps for any viz tool\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Built on the Python scientific ecosystem\n", "\n", "Beyond the specific HoloViz tools, all these approaches work with and often rely\n", "upon a wide range of other open-source libraries for their implementation,\n", "including:\n", "\n", "- [Bokeh](https://bokeh.org): HTML/JS plots in a web browser for Python data\n", " structures (used by Panel, hvPlot, HoloViews, GeoViews)\n", "- [Matplotlib](https://matplotlib.org): Flexible, publication-quality plots\n", " (used by HoloViews, Geoviews; used with Panel)\n", "- [Pandas](http://pandas.pydata.org): Convenient computation on columnar\n", " datasets (used by HoloViews and Datashader)\n", "- [Xarray](http://xarray): Convenient computations on multidimensional array\n", " datasets (used by hvPlot HoloViews and Datashader)\n", "- [Dask](http://dask.pydata.org): Efficient out-of-core/distributed computation\n", " on massive datasets (used by hvPlot, Datashader)\n", "- [Numba](http://numba.pydata.org): Accelerated machine code for inner loops\n", " (used by Datashader)\n", "- [Fastparquet](https://fastparquet.readthedocs.io): Efficient storage for\n", " columnar data (used with Datashader)\n", "- [Cartopy](http://scitools.org.uk/cartopy): Support for geographical data (used\n", " by GeoViews; uses a wide range of other lower-level libraries)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The HoloViz tutorial\n", "\n", "In this tutorial, we'll focus on an example set of data using it to illustrate\n", "how to:\n", "\n", "- create simple but powerful apps and dashboards out of anything in a Jupyter\n", " notebook\n", "- make simple but powerful plots out of Pandas dataframes and Xarray\n", " multidimensional arrays\n", "- handle columnar data, big data, geo data, array data\n", "- provide custom interactive links between views of datasets\n", "- handle the whole process from getting the data in, cleaning it, exploring it\n", " visually, creating plots for communication, building dashboards for sharing\n", " your analyses, and deploying dashboards.\n", "\n", "The tutorial is organized around the most general to the most specific, in terms\n", "of tool support. We first look at [Panel](https://panel.pyviz.org) package,\n", "which works with nearly any plotting library, then\n", "[hvPlot](https://hvplot.pyviz.org), which works with nearly any data library and\n", "shares an API with many other plotting libraries, and then dive deeper into\n", "HoloViz-specific approaches that let you work with large data, provide deep\n", "interactivity, and other advanced features.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## To summarize\n", "\n", "- HoloViz provides a set of very high-level tools for interacting with data\n", "- These tools make it simple to work with multidimensional data, flexibly\n", " selecting, visualizing, combining, and comparing it.\n", "- The tools focus on information visualization in 2D in web browsers, not 3D\n", " scientific visualization.\n", "- Together the tools support a flexible workflow with very little friction\n", " between initial exploratory analysis, making interactive apps, building fully\n", " deployable dashboards, and revisiting the initial analyses as needed, with\n", " changes immediately propagating to the deployed dashboard.\n", "- The tools are designed around \"shortcuts\", not \"dead ends\", and so there is\n", " always another level deeper that you can go if you need more power or more\n", " customization.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting started\n", "\n", "Before going further, it's worth exploring some examples of what you can get\n", "with HoloViz, to make sure that it covers your needs:\n", "\n", "- https://panel.pyviz.org/gallery\n", "- https://examples.pyviz.org\n", "\n", "And then you can browse through the already-run versions of the HoloViz\n", "[tutorials](https://holoviz.org/tutorial/) to see what they cover and how it all\n", "fits together. But everything on this website is a Jupyter Notebook that you can\n", "run yourself, once you follow the\n", "[installation](https://holoviz.org/installation) instructions, so the next step\n", "is then to try it all out and have fun exploring it!\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:root] *", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 4 }