\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": [
"
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
}