From 85d08c9b260dbdc16eaad9a7322a6094aee2bfd9 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 16:15:51 +0100 Subject: [PATCH 01/99] Added draft of the first getting started guide section --- examples/start/I-Introduction.ipynb | 409 ++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 examples/start/I-Introduction.ipynb diff --git a/examples/start/I-Introduction.ipynb b/examples/start/I-Introduction.ipynb new file mode 100644 index 0000000000..bbda913c75 --- /dev/null +++ b/examples/start/I-Introduction.ipynb @@ -0,0 +1,409 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to HoloViews!\n", + "\n", + "This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our [User Guide] which we will link to from the appropriate sections of this guide.\n", + "\n", + "I-Introduction
\n", + "II-Customization
\n", + "III-Datasets
\n", + "IV-Live_Data
\n", + "V-Pipelines
\n", + "VI-Principles
\n", + "\n", + "\n", + "# Why HoloViews?\n", + "\n", + "HoloViews is a BSD licensed package used for data analysis and visualization for Python 2 and 3. There are plenty of excellent tools available for Python already such as numpy, pandas and xarray for raw data processing as well as some excellent plotting libraries such as matplotlib, bokeh and plotly. So why is there a need for another plotting library?\n", + "\n", + "As will be made clear over the course of this guide, HoloViews takes a distinct approach to visualization which is quite distinct from the traditional plotting paradigm. Instead of building plots and writing plotting code, you describe your data with a small amount of semantic information. This then enables immediate, automatic visualization that can be effortlessly requested at any time as your data evolves. Without requiring any traditional plotting code, HoloViews brings your data to life with your favorite plotting library, whether it is matplotlib, bokeh or plotly.\n", + "\n", + "HoloViews is data-centric while traditional plotting libraries are visualization-centric. Instead of a 'Data Visualization' library that visualizes data at a snapshot in time, HoloViews is about empowering your data with the power of self-visualization as it is explored and transformed. For this reason, HoloViews can be viewed as a 'Visualization Data' library and by the end of this guide this distinction should be clear.\n", + "\n", + "\n", + "## Tabulated data: subway stations\n", + "\n", + "We will now introduce HoloViews and demonstrate some of its most compelling features using real data relating to transportation in Manhattan, New York. First lets run some imports to make [numpy] and [pandas] accessible for loading our transportation data. We will start with a table of subway station information loaded from a CSV file with pandas and later on in this section, we will load some data relating to taxi dropoffs using numpy:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the standard way to make the numpy and pandas libraries available in the namespace. We recommend always importing HoloViews as ``hv`` and if you haven't already installed HoloViews, checkout our [installation page].\n", + "\n", + "Note that after importing HoloViews as ``hv`` we run ``hv.extension('bokeh')`` to load the bokeh plotting extension, allowing us to generate visualizations with [Bokeh]. In the next section we will see how you can use other plotting libraries such as [matplotlib] and even how you can mix and match between them.\n", + "\n", + "Now let's load our subway data using pandas:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "station_info = pd.read_csv('../assets/station_info.csv')\n", + "station_info.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that this table contains the subway station name, its latitude and longitude, the year it was opened, the number of services available from the station and ther names and finally the yearly ridership (in millions for 2015)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ``Elements`` of visualization\n", + "\n", + "We can immediately visualize some of the the data in this table as a scatter plot. Let's view how ridership varies with the number of services offered at each station:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "scatter = hv.Scatter(station_info, kdims=['services'], vdims=['ridership'])\n", + "scatter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we passed or dataframe to ``hv.Scatter`` to create an *object* called *scatter*. This object is independent of any plotting library and is a simple wrapper around our dataframe that knows that the 'services' column is to be plotted along the x-axis and 'ridership' column is to be plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", + "\n", + "Given that we have the handle ``scatter`` on our ``Scatter`` object, we can show that it is indeed an object and not a plot by printing it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(scatter)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The bokeh plot above is simply the rich, visual representation of ``scatter`` which is plotted automatically by HoloViews and displayed automatically in [the Jupyter notebook]. Although HoloViews itself is independent of notebooks, this convenience makes working with HoloViews easiest in the notebook environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compositional ``Layouts``\n", + "\n", + "The class ``hv.Scatter`` is a subclass of ``Element`` which are the simplest viewable components in HoloViews as shown in our [element gallery]. Now we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])\n", + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In a single line and the ``+`` operator, we created a new, compositional object called a ``Layout`` built from our scatter visualizations and a ``Histogram`` that shows how many subway stations opened in Manhattan since 1900. Note that once again, all the plotting is happening behind the scenes and ``layout`` is a new object that exists independently of any given plotting system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(layout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Array data: taxi dropoffs\n", + "\n", + "So far we have visualized data in a [pandas DataFrame] but ``HoloViews`` is as agnostic to data formats as it is to plotting libraries; see [User Guide] for more information. This means we can work with array data as easily as we can work with tabular data and to demonstrate this, here are some [numpy arrays] relating to taxi dropoff locations in Manhattan:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "taxi_dropoffs = {hour:arr for hour, arr in np.load('../assets/hourly_taxi_data.npz').items()}\n", + "#print('Hours: {hours}'.format(hours=', '.join(taxi_dropoffs.keys())))\n", + "print('Taxi data contains {num} arrays (one per hour).\\nDescription of the first array:\\n'.format(num=len(taxi_dropoffs)))\n", + "np.info(taxi_dropoffs['0'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we can see, this dataset contains 24 arrays (one for each hour of the day) of taxi dropoff locations (by latitude and longitude), aggregated over one month in 2015, where the array shown above contains the accumulated dropoffs for the first hour of the day." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compositional ``Overlays``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once again, we can easily visualize this data with HoloViews by passing our array to ``hv.Image`` to create the ``image`` object which has the spatial extent of the data declared as the ``bounds`` in terms of the corresponding range of latitudes and longitudes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bounds = (-74.05, 40.70, -73.90, 40.80)\n", + "image = hv.Image(taxi_dropoffs['0'], bounds=bounds, kdims=['lon','lat'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews supports ``numpy``, ``xarray``, ``iris``, ``dask`` when working with array data (see [User Guide]) and we can compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a ``Points`` element which is used to mark positions in two-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "points = hv.Points(station_info, kdims=['lon','lat'])\n", + "image + image * points" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "On the left, we have the visual representation of the ``image`` object we declared. Using ``+`` we put it into a ``Layout`` together with a new compositional object created with the ``*`` operator called an ``Overlay``. This particular overlay displays the station positions on top of our image which works correctly as both elements contain data that exist in the same space, namely Manhattan.\n", + "\n", + "This overlay on the right lets us see the location of all the subway stations in relation to our midnight taxi dropoffs. Note that HoloViews allows you to visually express more of the available information with our points, for instance, you could represent the ridership of each subway by point color or point size. For more information see [User Guide]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Effortlessly exploring data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of ``Images`` (on for every hour of the day) by declaring a ``HoloMap``: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dictionary = {int(hour):hv.Image(arr, bounds=bounds, kdims=['lon','lat']) for hour, arr in taxi_dropoffs.items()}\n", + "hv.HoloMap(dictionary, kdims=['Hour'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is yet another object which is rendered by the HoloViews plotting system with Bokeh behind the scenes:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "holomap = hv.HoloMap(dictionary, kdims=['Hour'])\n", + "print(holomap)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As this a ``HoloMap`` is a container for our ``Image`` elements, we can the methods it offers to return new containers. For instance, in the next cell we select three different hours of the morning from the ``HoloMap`` and display them as a ``Layout``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "holomap.select(Hour={3,6,9}).layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here the ``select`` method picks values from the specified 'Hour' *dimension*. We have seen dimensions used in the ``kdims`` and ``vdims`` arguments when declaring our elements (``scatter``, ``histogram`` and ``image`` above) and when declaring the ``HoloMap`` of ``Image``s above. These are the *key dimensions* (``kdims``) and *value dimensions* (``vdims``) used to express the space in which our data lives.\n", + "\n", + "Note how the ``Image`` elements where the holomap is constructed are declared using ``kdims=['lat','lon']`` which describes the fact that Manhattan is being viewed in terms of longitude and latitude. This semantic information is automatically mapped to our visualization by the HoloViews plotting system which sets the x-axis and y-axis labels accordingly. In the case of the ``HoloMap`` we used ``kdims=['Hour']`` to declare that the interactive slider ranges over the hours of the day." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Data as visualization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Holomaps are able to compose with elements and other holomaps into overlay and layouts just as easily as you compose two elements together. Here is one such composition where we select a range of longitudes and latitudes from our ``Points`` before we overlay them:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Image [xrotation=90] Points (color='deepskyblue' marker='v' size=6)\n", + "hotspot = points.select(lon=(-73.99, -73.96), lat=(40.75,40.765))\n", + "composition = holomap * hotspot\n", + "composition" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The line starting with ``%%opts`` used to specify the visual style is part of the HoloViews options system described in the next 'Getting started' section which also describes how to achieve the same effect with standard Python syntax.\n", + "\n", + "In the cell above we created and styles a composite object within a few short lines of code. Furthermore, this composite object relates tabular and array data and is immediately presented in a way that can be explored interactively. This way of working enables highly productive exploration allowing new insights to be gained easily. For instance, after exploring with the slider we notice a hotspot of taxi dropoffs at 7am which we can select as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "composition.select(Hour=7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now see that the slice of subway locations was chosen in relation to the hotspot in taxi dropoffs around 7am in the morning. This area of Manhattan just south of Central Park contains many popular tourist attractions, including Times Square and we can infer that tourists often take short taxi rides from the subway stations into this area.\n", + "\n", + "At this point it may appear that HoloViews is about easily generating explorative, interactive visualizations *from* your data. In fact, as we have been building these visualizations we have been working *with* our data, as we can show by examining the ``.data`` attribute of our sliced subway locations:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hotspot.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that slicing the HoloViews ``Points`` object in the visualization sliced the underlying data with the structure of the table left intact. We can see that the Times Square 42nd Street station is inded one of the subway stations surrounding our taxi dropoff hotspot." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Onwards" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Advanced topics:\n", + "\n", + "* For geographical areas much larger than Manhattan the curvature of the Earth becomes important: holoviews extension called geoviews.\n", + "* The taxi array data was derived from a very large tabular dataset and rasterized using datashader which is also supported by HoloViews." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 8a989d18c905f9ed614c7bcc7b2c96bf81e9100f Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 16:18:41 +0100 Subject: [PATCH 02/99] Initialized assets for the first section --- examples/assets/hourly_taxi_data.npz | Bin 0 -> 660600 bytes examples/assets/station_info.csv | 61 +++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 examples/assets/hourly_taxi_data.npz create mode 100644 examples/assets/station_info.csv diff --git a/examples/assets/hourly_taxi_data.npz b/examples/assets/hourly_taxi_data.npz new file mode 100644 index 0000000000000000000000000000000000000000..1aba0683fecf1668cf6861da1357f66f7eee8979 GIT binary patch literal 660600 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

KA-S$*7&!E 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�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

E-c_iD$o_IaKdDHGanOTUgR~kDv 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�o!vn4%xsAsQ6D%u9~ho~Bi;Q?#!Amsh>nd0~sS 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

QJ`m;GaskR`49 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 vvVU&eM$a08UYv@%PZK*cD^G6*zr07d+j!a+^?- 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%0AH2PIT?>1cn<61ni`{>n*26du0 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≫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 }=4k86y4d745;p=!NGybNvs( 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
C3K!!cBAVXTL0qaF1ocWt&bSs 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 literal 0 HcmV?d00001 diff --git a/examples/assets/station_info.csv b/examples/assets/station_info.csv new file mode 100644 index 0000000000..07ec08fe55 --- /dev/null +++ b/examples/assets/station_info.csv @@ -0,0 +1,61 @@ +name,lat,lon,opened,services,service_names,ridership +First Avenue,40.730953,-73.981628,1924,1,['L'],7.70211 +Second Avenue,40.723402,-73.989938,1936,1,['F'],5.84771 +Third Avenue,40.732849,-73.986122,1924,1,['L'],2.386533 +Fifth Avenue,40.753821,-73.981963,1920,6,"['7', 'E', 'M', 'N', 'R', 'W']",16.220605 +Sixth Avenue,40.737335,-73.996786,1924,1,['L'],16.121318 +Seventh Avenue,40.762862,-73.981637,1919,7,"['B', 'D', 'E', 'N', 'Q', 'R', 'W']",12.013107 +Eighth Street,40.730328,-73.992629,1917,4,"['N', 'Q', 'R', 'W']",5.894747 +14th Street,40.737826,-74.000201,1918,8,"['1', '2', '3', 'A', 'C', 'E', 'F', 'M']",30.885045 +14th Street–Union Square,40.734673,-73.989951,1904,8,"['4', '5', '6', 'L', 'N', 'Q', 'R', 'W']",35.320623 +18th Street,40.74104,-73.997871,1918,2,"['1', '2']",2.676304 +23rd Street,40.739864,-73.986599,1904,13,"['1', '2', '4', '6', 'A', 'C', 'E', 'F', 'M', 'N', 'Q', 'R', 'W']",38.264231 +28th Street,40.74307,-73.984264,1904,8,"['1', '2', '4', '6', 'N', 'Q', 'R', 'W']",15.962813 +33rd Street,40.746081,-73.982076,1904,2,"['4', '6']",9.701723 +34th Street,40.750373,-73.991057,1917,15,"['1', '2', '3', '7', 'A', 'B', 'C', 'D', 'E', 'F', 'M', 'N', 'Q', 'R', 'W']",54.456594 +42nd Street,40.757308,-73.989735,1932,7,"['A', 'B', 'C', 'D', 'E', 'F', 'M']",66.359208 +49th Street,40.759901,-73.984139,1919,4,"['N', 'Q', 'R', 'W']",8.029988 +51st Street,40.757107,-73.97192,1918,2,"['4', '6']",20.479923 +57th Street,40.764664,-73.980658,1968,1,['F'],4.720245 +59th Street,40.762526,-73.967967,1918,3,"['4', '5', '6']",25.566655 +59th Street–Columbus Circle,40.768247,-73.981929,1904,6,"['1', '2', 'A', 'B', 'C', 'D']",23.299666 +66th Street–Lincoln Center,40.77344,-73.982209,1904,2,"['1', '2']",7.790234 +68th Street–Hunter College,40.768141,-73.96387,1918,2,"['4', '6']",10.237854 +72nd Street,40.778453,-73.98197,1904,8,"['1', '2', '3', 'A', 'B', 'C', 'N', 'Q']",16.320597 +77th Street,40.77362,-73.959874,1918,2,"['4', '6']",12.738039 +81st Street–Museum of Natural History,40.781433,-73.972143,1932,3,"['A', 'B', 'C']",4.584041 +96th Street,40.785672,-73.95107,1904,10,"['1', '2', '3', '4', '6', 'A', 'B', 'C', 'N', 'Q']",24.38848 +103rd Street,40.7906,-73.947478,1904,6,"['1', '4', '6', 'A', 'B', 'C']",9.810965 +110th Street,40.79502,-73.94425,1904,4,"['2', '3', '4', '6']",4.209449 +116th Street,40.798629,-73.941617,1904,7,"['2', '3', '4', '6', 'A', 'B', 'C']",11.518755 +Astor Place,40.730054,-73.99107,1904,2,"['4', '6']",5.447655 +Bleecker Street,40.725915,-73.994659,1904,2,"['4', '6']",12.666868 +Bowery,40.72028,-73.993915,1913,2,"['J', 'Z']",1.18492 +Bowling Green,40.704817,-74.014065,1905,2,"['4', '5']",9.153462 +Broad Street,40.706476,-74.011056,1931,2,"['J', 'Z']",1.83478 +Broadway–Lafayette Street,40.725297,-73.996204,1936,4,"['B', 'D', 'F', 'M']",12.666868 +Brooklyn Bridge–City Hall,40.713065,-74.004131,1904,3,"['4', '5', '6']",10.481576 +Canal Street,40.718092,-73.999892,1904,13,"['1', '2', '4', '6', 'A', 'C', 'E', 'J', 'N', 'Q', 'R', 'W', 'Z']",22.936298 +Chambers Street,40.71419,-74.003199,1913,7,"['1', '2', '3', 'A', 'C', 'J', 'Z']",34.446431 +Christopher Street,40.733422,-74.002906,1918,2,"['1', '2']",3.363949 +City Hall,40.713282,-74.006978,1918,3,"['N', 'R', 'W']",1.828806 +Cortlandt Street,40.710668,-74.011029,1918,3,"['N', 'R', 'W']",2.713532 +Delancey Street,40.718611,-73.988114,1936,1,['F'],8.226975 +East Broadway,40.713715,-73.990173,1936,1,['F'],4.576662 +Essex Street,40.718315,-73.987437,1908,3,"['J', 'M', 'Z']",8.226975 +Franklin Street,40.719318,-74.006886,1918,2,"['1', '2']",1.731354 +Fulton Street,40.710374,-74.007582,1905,8,"['2', '3', '4', '5', 'A', 'C', 'J', 'Z']",23.315037 +Grand Central–42nd Street,40.751776,-73.976848,1904,5,"['4', '5', '6', '7', 'S']",46.737564 +Grand Street,40.711926,-73.94067,1967,2,"['B', 'D']",10.253621 +Houston Street,40.728251,-74.005367,1918,2,"['1', '2']",4.377409 +Lexington Avenue,40.76266,-73.967258,1920,7,"['E', 'F', 'M', 'N', 'Q', 'R', 'W']",21.407792 +Prince Street,40.724329,-73.997702,1917,4,"['N', 'Q', 'R', 'W']",5.386641 +Rector Street,40.707513,-74.013783,1918,4,"['1', 'N', 'R', 'W']",4.939783 +Roosevelt Island,40.759145,-73.95326,1989,1,['F'],1.966493 +South Ferry,40.702068,-74.013664,2009,1,['1'],8.750364 +Spring Street,40.722301,-73.997141,1904,5,"['4', '6', 'A', 'C', 'E']",7.586717 +Times Square–42nd Street,40.754672,-73.986754,1917,7,"['1', '2', '3', 'N', 'Q', 'R', 'W']",66.359208 +Wall Street,40.707557,-74.011862,1905,4,"['2', '3', '4', '5']",14.359598 +West Fourth Street,40.732338,-74.000495,1932,7,"['A', 'B', 'C', 'D', 'E', 'F', 'M']",14.147148 +Whitehall Street,40.703087,-74.012994,1918,3,"['N', 'R', 'W']",8.750364 +World Trade Center,40.712582,-74.009781,1932,1,['E'],16.910084 From f77897048b5e07dd8395f3a755d4de38988414b8 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 16:36:06 +0100 Subject: [PATCH 03/99] Updated naming convention for getting_started --- .../I-Introduction.ipynb => getting_started/1-Introduction.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/{start/I-Introduction.ipynb => getting_started/1-Introduction.ipynb} (100%) diff --git a/examples/start/I-Introduction.ipynb b/examples/getting_started/1-Introduction.ipynb similarity index 100% rename from examples/start/I-Introduction.ipynb rename to examples/getting_started/1-Introduction.ipynb From 5844060b026f63a923054beafa890cbdd39bc4c7 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 16:56:22 +0100 Subject: [PATCH 04/99] Moved getting_started into guides directory --- examples/{ => guides}/getting_started/1-Introduction.ipynb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/{ => guides}/getting_started/1-Introduction.ipynb (100%) diff --git a/examples/getting_started/1-Introduction.ipynb b/examples/guides/getting_started/1-Introduction.ipynb similarity index 100% rename from examples/getting_started/1-Introduction.ipynb rename to examples/guides/getting_started/1-Introduction.ipynb From 3c5d80deebdb98e5a85b18b532ddf47784cdcc9b Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 17:41:16 +0100 Subject: [PATCH 05/99] Moved the guides directory out of examples --- {examples/guides => guides}/getting_started/1-Introduction.ipynb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {examples/guides => guides}/getting_started/1-Introduction.ipynb (100%) diff --git a/examples/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb similarity index 100% rename from examples/guides/getting_started/1-Introduction.ipynb rename to guides/getting_started/1-Introduction.ipynb From 0536f054bd0f95459c96361e71988d77f3e8372d Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 17:50:47 +0100 Subject: [PATCH 06/99] Moved examples/assets to guides/datasets --- .../assets => guides/datasets}/hourly_taxi_data.npz | Bin .../assets => guides/datasets}/station_info.csv | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {examples/assets => guides/datasets}/hourly_taxi_data.npz (100%) rename {examples/assets => guides/datasets}/station_info.csv (100%) diff --git a/examples/assets/hourly_taxi_data.npz b/guides/datasets/hourly_taxi_data.npz similarity index 100% rename from examples/assets/hourly_taxi_data.npz rename to guides/datasets/hourly_taxi_data.npz diff --git a/examples/assets/station_info.csv b/guides/datasets/station_info.csv similarity index 100% rename from examples/assets/station_info.csv rename to guides/datasets/station_info.csv From a9798e0bb4e64ca982a9cfaa032dae8acf7d2c84 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 14 Jun 2017 17:53:09 +0100 Subject: [PATCH 07/99] Updated file paths in 'Getting started' guide introduction --- guides/getting_started/1-Introduction.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index bbda913c75..ba80c58eb2 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -59,7 +59,7 @@ "metadata": {}, "outputs": [], "source": [ - "station_info = pd.read_csv('../assets/station_info.csv')\n", + "station_info = pd.read_csv('../datasets/station_info.csv')\n", "station_info.head()" ] }, @@ -164,7 +164,7 @@ "metadata": {}, "outputs": [], "source": [ - "taxi_dropoffs = {hour:arr for hour, arr in np.load('../assets/hourly_taxi_data.npz').items()}\n", + "taxi_dropoffs = {hour:arr for hour, arr in np.load('../datasets/hourly_taxi_data.npz').items()}\n", "#print('Hours: {hours}'.format(hours=', '.join(taxi_dropoffs.keys())))\n", "print('Taxi data contains {num} arrays (one per hour).\\nDescription of the first array:\\n'.format(num=len(taxi_dropoffs)))\n", "np.info(taxi_dropoffs['0'])" From bbdc7df0683d1e8f644bc80c3ac9273dfbdc7c8e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Thu, 15 Jun 2017 01:37:40 +0100 Subject: [PATCH 08/99] Added draft of second section of the Getting Started guide --- guides/getting_started/2-Customization.ipynb | 314 +++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 guides/getting_started/2-Customization.ipynb diff --git a/guides/getting_started/2-Customization.ipynb b/guides/getting_started/2-Customization.ipynb new file mode 100644 index 0000000000..312defdb8d --- /dev/null +++ b/guides/getting_started/2-Customization.ipynb @@ -0,0 +1,314 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Customizing visual appearance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A HoloViews element, such as those illustrated in the [Introduction](1-Introduction.ipynb) section, packages your data together with crucial bits of semantic metadata that are required before the data can be interpreted as a visualizable object like a curve or an image. Even though the resulting object can easily be visualized, it is designed not to contain any information that is solely about visualization -- it only stores declarations about what the data *is*. In turn, the visualization details can be controlled separately, which allows easy customization without complicating the actual data objects." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing neural spike trains" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now introduce the HoloViews options system using another dataset, namely a recording of the electrical spiking activity of a [neuron](https://en.wikipedia.org/wiki/Neuron). We will be visualizing the first trial of this [publicly accessible neural recording](http://www.neuralsignal.org/data/04/nsa2004.4/433l019). We will now import pandas and holoviews and load our data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import holoviews as hv\n", + "spike_train = pd.read_csv('../datasets/spike_train.csv.')\n", + "spike_train.head(n=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This dataset contains the spike times (in milliseconds) and the average spiking frequency (in Hertz, within a 200 millisecond window) for a total of six seconds (6000 miliseconds). We will now declare ``Curve`` and ``Spike`` elements using this data and combine them into a ``Layout``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve = hv.Curve(spike_train, kdims=['milliseconds'], vdims=['hertz'])\n", + "spikes = hv.Spikes(spike_train.sample(300), kdims=['milliseconds'], vdims=[])\n", + "curve + spikes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now given a purely textual representation of our object as we have no yet loaded the HoloViews extension to enable the plotting system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.extension('bokeh', 'matplotlib') # Enable the use of both Bokeh and Matplotlib" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the text representation is less useful that the rich representation, this line is normally executed right after importing HoloViews. Note that in the [Introduction](1-Introduction.ipynb), only the 'bokeh' backend was loaded but here we will allow HoloViews to make use of both the [Bokeh](http://bokeh.pydata.org/) and [matplotlib](http://matplotlib.org/) libraries. As 'bokeh' is listed listed first, this is the extension that is now enabled by default." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Default appearance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the extension loaded, lets look at the default appearance as rendered with Bokeh:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve + spikes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This representation is far more useable than the textual representation even if many aesthetic aspects of it are not to our liking. The ``Curve`` has a useable default representation and there is no need to customize its appearance if we only want a quick overview of the overall trend. The ``Spikes`` representation is *not* useable by default as the plot is nearly solid black even though we already downsampled from 700 spikes to 200 spikes when we declared the element!\n", + "\n", + "This highlights the importance of being able to quickly and easily customize the display of your elements. Sometimes these changes are a matter of personal preference and sometimes these are necessary changes to make the data interpretable as the HoloViews default settings cannot be appropriate for all possible data inputs." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Customization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now lets see what we can achieve when we do decide to customize the appearance propely:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%output size=150\n", + "%%opts Spikes [height=100 width=600 yaxis=None] (color='grey' line_width=0.25)\n", + "%%opts Curve [width=600 height=100 xaxis=None show_grid=False tools=['hover']]\n", + "%%opts Curve (color='red' line_width=1.5)\n", + "curve = hv.Curve(spike_train, kdims=['milliseconds'], vdims=['hertz'])\n", + "spikes = hv.Spikes(spike_train, kdims=['milliseconds'], vdims=[])\n", + "(curve+spikes).cols(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Much better!\n", + "\n", + "A detailed breakdown of this exact customization is given in the [User Guide] but we can use this example to convey a number of important concepts.\n", + "\n", + "* The option system is based around keyword settings.\n", + "* You can customize the output format using the ``%%output`` and the element appearance with the ``%%opts`` *cell magics*.\n", + "* These *cell magics* affect the display output of the cell they are in, consult the User Guide for equivalent, Python compatible syntax.\n", + "* The layout container has a ``cols`` method to specify the number of columns in the layout.\n", + "\n", + "While the ``%%output`` cell magic accepts a simple list of keywords, we see some special syntax used in the ``%%opts`` magic:\n", + "\n", + "* The element type is specified following by special groups of keywords.\n", + "* The keywords in square brackets ``[...]`` are ***plot options*** which instruct HoloViews how to build the plot.\n", + "* The keywords in parentheses ``(...)`` are **style options** with keywords that are passed directly to the plotting library.\n", + "\n", + "The corresponding [User Guide] entry explains the keywords used in detail but it is possible to state quick simply what we have done: we have elongated the ``Curve`` and ``Scatter`` elements and toggle various axes with the ***plot options***.. We have also specified the color and line widths of the [Bokeh glyphs](http://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html) with the ***style options***.\n", + "\n", + "As you can see, these tools allow significant customization of how our elements appear. HoloViews offers many other tools for setting options either locally or globally, including the ``%output`` and ``%opts`` *line magics*, the ``.opts`` method on all HoloViews objects and the ``hv.output`` and ``hv.opts`` utilities. All these tools, how they work and details of the opts syntax can be found in the [User Guide].\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Switching to matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HIDDEN CELL!\n", + "%output backend='matplotlib'\n", + "# New style should follow this by default\n", + "%opts Spikes [bgcolor='white']\n", + "%opts Curve [bgcolor='white']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's switch our backend to [matplotlib](http://matplotlib.org/) to show the same elements as rendered with different customizations, in a different output format (SVG) with a completely different plotting library:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%output size=200 backend='matplotlib' fig='svg'\n", + "%%opts Layout [sublabel_format='' vspace=0.1]\n", + "%%opts Spikes [aspect=6 yaxis='bare'] (color='red' linewidth=0.25 )\n", + "%%opts Curve [aspect=6 xaxis=None show_grid=False] (color='blue' linewidth=0.5 marker='s' ms=2)\n", + "(hv.Curve(spike_train, kdims=['milliseconds'], vdims=['hertz'])\n", + " + hv.Spikes(spike_train, kdims=['milliseconds'], vdims=[])).cols(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we use the same tools with a different plotting extension. Naturally a few changes need to be made:\n", + "\n", + "* A few of the plotting options are different. For instance, ``aspect`` is used instead of setting ``width`` and ``height``.\n", + "* The bokeh hover tool is no longer supported as you might expect.\n", + "* Some style options have different names, for instance the bokeh ``line_width`` option is called ``linewidth`` in matplotlib.\n", + "* Containers such as Layouts have plot option but no style options. Here is adjust the gap betwen the plots using ``vspace``.\n", + "\n", + "Note that you can even write options that work across multiple backends as HoloViews will ignore keywords that are not applicable to the current backend. See the [User Guide] for more details." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Persistent styles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's switch back to the bokeh plotting extension using the ``%output`` *line magic* and try the select operation introduced in the Introduction on the ``spikes`` handled we made earlier:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%output backend='bokeh' size=150\n", + "spikes.select(milliseconds=(2000,4000))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note how HoloViews remembered the bokeh specific styles we applied to this object earlier! This allows us to style objects once and then keep that styling as we work. You can learn more about the output line magic and the exact semantics of the opts magic in the [User Guide]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting axis labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you look closely, the example above might worry you. First we defined our ``Spikes`` element with ``kdims=['milliseconds']`` which we then used as a keyword argument in ``select`` above. This is also the string used as the axis label. Does this mean we cannot choose any arbitrary axis labels if we want to use the corresponding dimension with ``select``?\n", + "\n", + "Dimensions specified as string are often convenient but behind the scenes, HoloViews always uses a much richer ``Dimensions`` object which you can pass to the ``kdims`` and ``vdims`` explicitly (see the Dimensions User Guide for more information). One of the things each ``Dimension`` object supports is a long, descriptive ``label`` which complements the short programmer-friendly name.\n", + "\n", + "We can set the dimension labels on our existing ``spikes`` object as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "spikes= spikes.redim.label(milliseconds='Time in milliseconds (10⁻³ seconds)')\n", + "curve = curve.redim.label(hertz='Frequency (Hz)')\n", + "(curve + spikes).select(milliseconds=(2000,4000)).cols(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see we can set long descriptive labels on our dimensions (including unicode) while still making use of the short dimension name in methods such as ``select``." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 56591fe40f4c51630be3cf312a01483a1b8e597f Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Thu, 15 Jun 2017 03:08:03 +0100 Subject: [PATCH 09/99] Added early draft of Datasets guide --- guides/getting_started/3-Datasets.ipynb | 201 ++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 guides/getting_started/3-Datasets.ipynb diff --git a/guides/getting_started/3-Datasets.ipynb b/guides/getting_started/3-Datasets.ipynb new file mode 100644 index 0000000000..942cd33fa0 --- /dev/null +++ b/guides/getting_started/3-Datasets.ipynb @@ -0,0 +1,201 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh', 'matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we have already discovered Elements are simple wrappers around your data, which provide a semantically meaningful representation. To work directly with a wide range of data formats HoloViews provides flexible and extensible interfaces that allow you to work with two main categories of supported data types:\n", + "\n", + " * **Tabular:** Tables of flat columns usually in a tidy format\n", + " * **Gridded:** N-dimensional array-like data\n", + " \n", + "Here we will take a quick tour on how to work with such datasets, for more detail check out the [Columnar Data](...) and [Gridded Data](Gridded_Data.ipynb) user guides. Look especially for details on all the supported formats which include simple dictionaries of column arrays, pandas' ``DataFrame``, dask's ``DataFrame``, xarray's ``DataArray`` and ``Dataset`` and more. Here we will use two of the most flexible and powerful formats: **pandas** DataFrames and **xarray** Datasets to provide a quick overview and introduction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tabular" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tabular data is both one of the most common, general and versatile data formats. At the same time there are many different formats tabular data can be laid out in. For interactive analysis the so called **tidy format** is the most flexible and simple. The **columns** and **rows** of the table represent **variables** or **dimensions** and **observations** respectively. The best way to understand this format is to look at such a dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "diseases = pd.read_csv('./diseases.csv').groupby(['Year', 'State']).sum().reset_index().drop('Week', 1)\n", + "diseases.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This particular dataset was the subject of an excellent article in the [WSJ](http://graphics.wsj.com/infectious-diseases-and-vaccines/#b02g20t20w15) and was downloaded from the [University of Pittsburgh's Project Tycho](http://www.tycho.pitt.edu/). We can see we have 4 columns corresponding to different variables. We can also make a distinction between the variables, 'Year', 'State' are independent variables and the 'Incidence' columns are the observed or dependent variables. In HoloViews these map onto key dimensions (**kdims**) and value dimensions (**vdims**) respectively.\n", + "\n", + "This is a fairly complex dataset and we can't visualize it all at once. Therefore we will declare a ``Dataset`` Element, which acts as a powerful wrapper for our data and is also the baseclass for most Elements in HoloViews. As long as we supply either the ``kdims`` or ``vdims`` the ``Dataset`` will infer the remainder from the dataframe:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "vdims = [('measles', 'Measles Incidence'), ('pertussis', 'Pertussis Incidence')]\n", + "ds = hv.Dataset(diseases, kdims=['Year', 'State'], vdims=vdims)\n", + "ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Now we can start thinking about how to display the data. Perhaps the most natural representation of this dataset is as a curve for each state. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display a timeseries we will pick the ``Curve`` element and specify the 'Year' as the key dimension and the 'Measles Incidence' as the value dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve [width=600 height=400] {+framewise}\n", + "ds.to(hv.Curve, 'Year', 'measles')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You will immediately notice that we automatically received a dropdown menu to select which State to view. The ``.to`` interface automatically groups your data by all the key dimensions you didn't assign to the Element, which in this case just leaves the 'State'. To explicitly specify which key dimensions to group over simply supply a list or single dimension as the third positional or ``groupby`` keyword argument.\n", + "\n", + "#### Selecting\n", + "\n", + "One of the most common thing we might want to do is ``select`` only a subset of the data. The ``select`` method makes this extremely easy letting you select a single value, a list of values supplied as a list and a range of values supplied as a tuple. Here we will use ``select`` to display the display the measles incidence in four states over the 1980s. After applying the selection we again use the ``.to`` method to display the data as ``Bars`` indexed by 'Year' and 'State' key dimensions and displaying the 'Measles Incidence':" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Bars [width=800 height=400 tools=['hover'] group_index=1 legend_position='top_left']\n", + "states = ['New York', 'New Jersey', 'California', 'Texas']\n", + "ds.select(State=states, Year=(1980, 1990)).to(hv.Bars, ['Year', 'State'], 'measles').sort()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Faceting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Above we already saw what happens to key dimensions that we didn't explicitly assign to the Element using the ``.to`` method. They are grouped over and pop up a set of widgets to select the values we want. Often we want to facet the data in other ways however, and HoloViews let's you do this very easily using the ``.overlay``, ``.grid`` and ``.layout`` methods:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve [width=200] (color='indianred')\n", + "grouped = ds.select(State=states, Year=(1930, 2005)).to(hv.Curve, 'Year', 'measles')\n", + "grouped.grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can take the same grouped object and ``overlay`` the individual curves instead of laying them out in a grid. These faceting methods even compose together, meaning that if we had more key dimensions we could ``.overlay`` one dimension, ``.grid`` another and have a widget for any other remaining key dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve [width=600] (color=Cycle(values=['indianred', 'slateblue', 'lightseagreen', 'coral']))\n", + "grouped.overlay()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Aggregating" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of selecting a subset of the data another common operation supported by HoloViews is computing aggregates. Using the ``aggregate`` method we can compute various statistics from our data. A simple example using our dataset is to compute the mean and standard deviation of the Measles Incidence by ``'Year'``. We can express this simply by passing the key ``dimensions`` to aggregate over (in this case just the 'Year') along with a function and optional ``spreadfn`` to compute the statistics we want. The spread_fn will append the name of the function to the dimension name so we can reference it separately. Once we have computed the aggregate we can simply cast it to a ``Curve`` and ``ErrorBars``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve [width=600]\n", + "agg = ds.aggregate('Year', function=np.mean, spreadfn=np.std)\n", + "(hv.Curve(agg) * hv.ErrorBars(agg,vdims=['measles', 'measles_std'])).redim.range(measles=(0, None))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this way we can summarize a high-dimensional dataset to something that can be visualized more easily and allowing us to compute arbitrary statistics along a dimension." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that because we defined two additional key dimensions on top of 'Date', namely the 'State' and 'Disease' we got a dropdown menu letting us pick the country we want. This is because any key dimensions not assigned to an Element in the ``.to`` expression will be grouped over. To view all the data at once instead simply specify an empty list:" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9aae1b86b1d270eadc25ffae6f37fedd49fb247d Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Thu, 15 Jun 2017 21:47:52 +0100 Subject: [PATCH 10/99] Renamed and edited Tabular_Datasets notebook --- ...atasets.ipynb => 3-Tabular_Datasets.ipynb} | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) rename guides/getting_started/{3-Datasets.ipynb => 3-Tabular_Datasets.ipynb} (71%) diff --git a/guides/getting_started/3-Datasets.ipynb b/guides/getting_started/3-Tabular_Datasets.ipynb similarity index 71% rename from guides/getting_started/3-Datasets.ipynb rename to guides/getting_started/3-Tabular_Datasets.ipynb index 942cd33fa0..d40a0b754d 100644 --- a/guides/getting_started/3-Datasets.ipynb +++ b/guides/getting_started/3-Tabular_Datasets.ipynb @@ -44,7 +44,7 @@ "metadata": {}, "outputs": [], "source": [ - "diseases = pd.read_csv('./diseases.csv').groupby(['Year', 'State']).sum().reset_index().drop('Week', 1)\n", + "diseases = pd.read_csv('./diseases.csv')\n", "diseases.head()" ] }, @@ -52,9 +52,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This particular dataset was the subject of an excellent article in the [WSJ](http://graphics.wsj.com/infectious-diseases-and-vaccines/#b02g20t20w15) and was downloaded from the [University of Pittsburgh's Project Tycho](http://www.tycho.pitt.edu/). We can see we have 4 columns corresponding to different variables. We can also make a distinction between the variables, 'Year', 'State' are independent variables and the 'Incidence' columns are the observed or dependent variables. In HoloViews these map onto key dimensions (**kdims**) and value dimensions (**vdims**) respectively.\n", + "This particular dataset was the subject of an excellent piece of visual journalism in the [WSJ](http://graphics.wsj.com/infectious-diseases-and-vaccines/#b02g20t20w15), detailing the incidence of various diseases over time, and was downloaded from the [University of Pittsburgh's Project Tycho](http://www.tycho.pitt.edu/). We can see we have 5 columns corresponding to different variables. We can also make a distinction between the variables. 'Year', 'Week', and 'State' are independent variables and the 'measles' and 'pertussis' columns are the observed or dependent variables. In HoloViews these map onto key dimensions (**kdims**) and value dimensions (**vdims**) respectively.\n", "\n", - "This is a fairly complex dataset and we can't visualize it all at once. Therefore we will declare a ``Dataset`` Element, which acts as a powerful wrapper for our data and is also the baseclass for most Elements in HoloViews. As long as we supply either the ``kdims`` or ``vdims`` the ``Dataset`` will infer the remainder from the dataframe:" + "This is a fairly complex dataset and we can't visualize it all at once. Therefore we will declare a ``Dataset`` Element, which acts as a powerful wrapper for our data and allows us to add additional metadata. One of the most common pieces of metadata are additional labels for the dimensions of our data. We will give the measles and pertussis columns in our dataset more readable labels by supplying a tuple of the form **``(name, label)``** as the dimension. In this notebook we don't need the ``Week`` column so we will quickly the aggregate data computing the mean incidence for each ``Year`` and ``State`` (don't worry, we will cover that later on)." ] }, { @@ -65,6 +65,7 @@ "source": [ "vdims = [('measles', 'Measles Incidence'), ('pertussis', 'Pertussis Incidence')]\n", "ds = hv.Dataset(diseases, kdims=['Year', 'State'], vdims=vdims)\n", + "ds = ds.aggregate(function=np.mean)\n", "ds" ] }, @@ -72,7 +73,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Now we can start thinking about how to display the data. Perhaps the most natural representation of this dataset is as a curve for each state. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display a timeseries we will pick the ``Curve`` element and specify the 'Year' as the key dimension and the 'Measles Incidence' as the value dimension:" + "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Now we can start thinking about how to display the data. Perhaps the most natural representation of this dataset is as a curve for each state. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display a timeseries we will pick the ``Curve`` element and specify the ``'Year'`` as the key dimension and the ``'Measles Incidence'`` as the value dimension, which we will refer to by its name (``'measles'``) rather than the more readable but also more verbose label." ] }, { @@ -118,7 +119,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Above we already saw what happens to key dimensions that we didn't explicitly assign to the Element using the ``.to`` method. They are grouped over and pop up a set of widgets to select the values we want. Often we want to facet the data in other ways however, and HoloViews let's you do this very easily using the ``.overlay``, ``.grid`` and ``.layout`` methods:" + "Above we already saw what happens to key dimensions that we didn't explicitly assign to the Element using the ``.to`` method. They are grouped over and pop up a set of widgets to select the values we want. Often we want to facet the data in other ways however, and HoloViews let's you do this very easily using the ``.overlay``, ``.grid`` and ``.layout`` methods. Using the grid method we can lay out the selected states instead:" ] }, { @@ -129,7 +130,7 @@ "source": [ "%%opts Curve [width=200] (color='indianred')\n", "grouped = ds.select(State=states, Year=(1930, 2005)).to(hv.Curve, 'Year', 'measles')\n", - "grouped.grid()" + "grouped.grid('State')" ] }, { @@ -146,7 +147,7 @@ "outputs": [], "source": [ "%%opts Curve [width=600] (color=Cycle(values=['indianred', 'slateblue', 'lightseagreen', 'coral']))\n", - "grouped.overlay()" + "grouped.overlay('State')" ] }, { @@ -160,7 +161,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Instead of selecting a subset of the data another common operation supported by HoloViews is computing aggregates. Using the ``aggregate`` method we can compute various statistics from our data. A simple example using our dataset is to compute the mean and standard deviation of the Measles Incidence by ``'Year'``. We can express this simply by passing the key ``dimensions`` to aggregate over (in this case just the 'Year') along with a function and optional ``spreadfn`` to compute the statistics we want. The spread_fn will append the name of the function to the dimension name so we can reference it separately. Once we have computed the aggregate we can simply cast it to a ``Curve`` and ``ErrorBars``:" + "Instead of selecting a subset of the data another common operation supported by HoloViews is computing aggregates. When we first loaded this dataset we aggregated over the 'Week' column to compute the mean incidence for every year reducing our data significantly. The ``aggregate`` method is therefore very useful to compute statistics from our data.\n", + "\n", + "A simple example using our dataset is to compute the mean and standard deviation of the Measles Incidence by ``'Year'``. We can express this simply by passing the key ``dimensions`` to aggregate over (in this case just the 'Year') along with a function and optional ``spreadfn`` to compute the statistics we want. The spread_fn will append the name of the function to the dimension name so we can reference it separately. Once we have computed the aggregate we can simply cast it to a ``Curve`` and ``ErrorBars``:" ] }, { @@ -180,13 +183,6 @@ "source": [ "In this way we can summarize a high-dimensional dataset to something that can be visualized more easily and allowing us to compute arbitrary statistics along a dimension." ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that because we defined two additional key dimensions on top of 'Date', namely the 'State' and 'Disease' we got a dropdown menu letting us pick the country we want. This is because any key dimensions not assigned to an Element in the ``.to`` expression will be grouped over. To view all the data at once instead simply specify an empty list:" - ] } ], "metadata": { @@ -194,6 +190,18 @@ "display_name": "Python [conda env:science]", "language": "python", "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" } }, "nbformat": 4, From ddee5358e97b14d5ede06b1ceda0a9e2ebf143ea Mon Sep 17 00:00:00 2001 From: jlstevens Date: Thu, 15 Jun 2017 22:46:51 +0100 Subject: [PATCH 11/99] Removed cell setting bgcolor='white' --- guides/getting_started/2-Customization.ipynb | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/guides/getting_started/2-Customization.ipynb b/guides/getting_started/2-Customization.ipynb index 312defdb8d..986f98a9b5 100644 --- a/guides/getting_started/2-Customization.ipynb +++ b/guides/getting_started/2-Customization.ipynb @@ -174,19 +174,6 @@ "# Switching to matplotlib" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HIDDEN CELL!\n", - "%output backend='matplotlib'\n", - "# New style should follow this by default\n", - "%opts Spikes [bgcolor='white']\n", - "%opts Curve [bgcolor='white']" - ] - }, { "cell_type": "markdown", "metadata": {}, From d2e9ee043aa615091f45629559b2032265cfc0c7 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Fri, 16 Jun 2017 12:33:56 +0100 Subject: [PATCH 12/99] Added draft of fifth section demonstrating live data --- guides/getting_started/5-Live_Data.ipynb | 273 +++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 guides/getting_started/5-Live_Data.ipynb diff --git a/guides/getting_started/5-Live_Data.ipynb b/guides/getting_started/5-Live_Data.ipynb new file mode 100644 index 0000000000..20db7a5afa --- /dev/null +++ b/guides/getting_started/5-Live_Data.ipynb @@ -0,0 +1,273 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Live Data\n", + "\n", + "The 'Getting Started' Guide has up until this point demonstrate how HoloViews objects can wrap your data and be given a rich, useful representation. This has assumed that the data was available in memory so that it could be used to construct the appropriate object.\n", + "\n", + "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exit yet: it may be the result of some computation yet to be performed or the outcome of some live live process with the corresponding measurement not yet made.\n", + "\n", + "All these examples are of *live data* that can be made available to HoloViews using the appropriate Python process. In this section, we will see how HoloViews allows you to build visualizations that update dynamically to newly available data and that can even respond to live user interaction.

\n", + "\n", + "
Note: To work with live data, you need a live server which is why the output shown below are GIF animations. If you run this notebook yourself, you will be able to try out your own interactions and compare them to the displayed GIF animations.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A computational process" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are many possible examples of live data including financial data feeds, real-time scientific measurements and sophisticated numerical simulations. Here we will consider the path traced by two very simple equations:\n", + "\n", + "$$x_{n+1} = \\sin(ay_n) + c \\cos(ax_n)$$\n", + "$$y_{n+1} = \\sin(bx_n) + d \\cos(by_n)$$\n", + "\n", + "These equations define the 'Clifford Attractor' described in the book \"Chaos In Wonderland\" by [Cliff Pickover](https://en.wikipedia.org/wiki/Clifford_A._Pickover). Now let's write a simple Python function to iterate these two equations starting from position ``(x0,y0)``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def clifford(a,b,c,d,x0,y0):\n", + " xn,yn = x0,y0\n", + " coords = [(x0,y0)]\n", + " for i in range(10000):\n", + " x_n1 = np.sin(a*yn) + c*np.cos(a*xn)\n", + " y_n1 = np.sin(b*xn) + d*np.cos(b*yn)\n", + " xn,yn = x_n1,y_n1\n", + " coords.append((xn,yn))\n", + " return coords" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we run this function now, we'll get a list of 10000 tuples which won't be very informative. We will want to visualize this path in two-dimensional space so now we import NumPy and HoloViews:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import numpy as np\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Curve`` element accepts the output of our ``clifford`` function, making it trivial to define a function that when called gives us a visualization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%opts Curve [show_grid=False xaxis=None yaxis=None]\n", + "def clifford_attractor(a,b,c,d):\n", + " return hv.Curve(clifford(a,b,c,d,x0=0,y0=0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first line with the ``%opts`` line magic disables axes and grids. We can then view the output for some combination of values for ``a,b,c`` and ``d``, starting from the origin:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve (line_width=0.03 color='red')\n", + "clifford_attractor(a =-1.5, b=1.5, c=1, d=0.75 )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This gives us a snapshot for the four chosen values, what we really would like to do is to interact with the four-dimensional parameter space directly." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Live parameter exploration" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To dynamically explore these parameters, we can start by declaring a ``DynamicMap``, passing in our function instead of a dictionary of ``Image`` elements as we saw in the [Introduction](1-Introduction.ipynb). We declare the four arguments of our function as ``kdims``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap = hv.DynamicMap(clifford_attractor, kdims=['a','b','c','d'])\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews does not yet have the information needed to give us a visualization as we have not specified the ranges that the 'a','b','c' and 'd' dimension can take. We can now do this easily with the ``redim`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve (line_width=0.03 color='green')\n", + "# When run live, this cell's output should match the behavior of the GIF below\n", + "dmap.redim.range(a=(-1.5,-1),b=(1.5,2),c=(1,1.2),d=(0.75,0.8))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note how the HoloViews options system described in the [Customization section](2-Customization.ipynb) continues to work with the ``DynamicMap``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Live interaction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The concept of the ``DynamicMap`` also supports live interaction (when using the Bokeh plotting extension) via the *streams system*. A stream is simple a parameter of a corresponding stream class that is configured to track some variable reflecting a user interaction. For this example we'll use ``PointerXY`` to get the ``x`` and ``y`` value of the mouse as it hovers over the plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from holoviews.streams import PointerXY" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can extend our function to accept the ``x`` and ``y`` values of the pointer to set the initial ``x0`` and ``y0`` values of the attractor. In addition, we can use this position to create a red point that follows the cursor, some text to show the position of this point and finally a red line segment to show the first step taken when computing the attractor:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def interactive(a,b,c,d,x=0,y=0):\n", + " coords = clifford(a,b,c,d,x0=x,y0=y)\n", + " return (hv.Curve(coords) * hv.Points(coords[0]) * hv.Curve(coords[:2], group='Init')\n", + " * hv.Text(-0.75,1.35, 'x:{x:.2f} y:{y:.2f}'.format(x=coords[0][0],y=coords[0][1])))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All we have do is created an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing the our clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and setting the ranges as before, we have an explorable visualization you can interact with directly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve (line_width=0.03 color='blue') Points (color='red' size=10) Curve.Init (color='red' line_width=2)\n", + "# When run live, this cell's output should match the behavior of the GIF below\n", + "dmap = hv.DynamicMap(interactive, kdims=['a','b','c','d'], streams=[PointerXY(x=0,y=0)])\n", + "dmap.redim.range(a=(-1.4,-1),b=(1.6,1.8),c=(1,1.5),d=(0.7,0.8))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "By exploring with the mouse, see if you can find the fixedpoint location (where the next step maps you to the same position) located at ``x=0.18,y=0.65`` with parameters ``a=1.4, b=1.6, c=1`` and ``d=0.7``.\n", + "\n", + "To learn more about the streams system please consult the [User Guide] and checkout our [Linked streams gallery]." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 1ccc8568d0db8d1ea5e1339c0a60791cb142c01e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Fri, 16 Jun 2017 15:23:06 +0100 Subject: [PATCH 13/99] Updated Live Data section --- guides/getting_started/5-Live_Data.ipynb | 84 +++++++++++++++++++----- 1 file changed, 67 insertions(+), 17 deletions(-) diff --git a/guides/getting_started/5-Live_Data.ipynb b/guides/getting_started/5-Live_Data.ipynb index 20db7a5afa..b5ff9e180d 100644 --- a/guides/getting_started/5-Live_Data.ipynb +++ b/guides/getting_started/5-Live_Data.ipynb @@ -9,7 +9,7 @@ "\n", "The 'Getting Started' Guide has up until this point demonstrate how HoloViews objects can wrap your data and be given a rich, useful representation. This has assumed that the data was available in memory so that it could be used to construct the appropriate object.\n", "\n", - "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exit yet: it may be the result of some computation yet to be performed or the outcome of some live live process with the corresponding measurement not yet made.\n", + "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exist yet: it may be the result of some computation yet to be performed or the outcome of some live live process with the corresponding measurement not yet made.\n", "\n", "All these examples are of *live data* that can be made available to HoloViews using the appropriate Python process. In this section, we will see how HoloViews allows you to build visualizations that update dynamically to newly available data and that can even respond to live user interaction.

\n", "\n", @@ -23,6 +23,25 @@ "## A computational process" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us start by importing NumPy and HoloViews and setting some suitable defaults for the ``Curve`` element we will be using:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import numpy as np\n", + "hv.extension('bokeh')\n", + "%opts Curve [show_grid=False xaxis=None yaxis=None]" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -58,18 +77,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we run this function now, we'll get a list of 10000 tuples which won't be very informative. We will want to visualize this path in two-dimensional space so now we import NumPy and HoloViews:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import holoviews as hv\n", - "import numpy as np\n", - "hv.extension('bokeh')" + "If we run this function now, we'll get a list of 10000 tuples which won't be very informative." ] }, { @@ -87,7 +95,6 @@ }, "outputs": [], "source": [ - "%opts Curve [show_grid=False xaxis=None yaxis=None]\n", "def clifford_attractor(a,b,c,d):\n", " return hv.Curve(clifford(a,b,c,d,x0=0,y0=0))" ] @@ -169,7 +176,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Note how the HoloViews options system described in the [Customization section](2-Customization.ipynb) continues to work with the ``DynamicMap``." + "These ranges supplied with ``redim.range`` are semantic specifications of suitable values for each of the parameters and thet are used to defining suitable ranges for the interactive sliders above. Note how the HoloViews options system described in the [Customization section](2-Customization.ipynb) continues to work with the ``DynamicMap``." ] }, { @@ -222,7 +229,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "All we have do is created an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing the our clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and setting the ranges as before, we have an explorable visualization you can interact with directly:" + "All we have done is create an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing the our clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and setting the ranges as before, we have an explorable visualization you can interact with directly:" ] }, { @@ -241,12 +248,55 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "\n", "By exploring with the mouse, see if you can find the fixedpoint location (where the next step maps you to the same position) located at ``x=0.18,y=0.65`` with parameters ``a=1.4, b=1.6, c=1`` and ``d=0.7``.\n", "\n", "To learn more about the streams system please consult the [User Guide] and checkout our [Linked streams gallery]." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At the end, maybe talk a bit about how all this works, and what the pros and cons are (can work with data that doesn't exist at the time of execution, for large parameter spaces will be faster than computing entire space, allows interactivity, but can't be exported to static HTML; requires a live running Python process).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tradeoffs using live data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The DynamicMap together with the streams system allow specification of exciting, dynamic visualizations and interactions. The way it works is that HoloViews runs JavaScript in your browser which then communicates with a running Python server process which may be running in the Jupyter notebook server or in the [Bokeh server]. This Python process may be running locally on your machine or some remote server either online or somewhere else on your local network. Regardless of where it is running, this Python process executes the callback you supply to ``DynamicMap`` allowing HoloViews to update your visualization whenever the parameters change.\n", + "\n", + "This architecture is powerful and fully general as you can always make static content in memory into dynamic output generated by a function (see the [User Guide] to learn more). This is not always recommend however as static content also has some important advantages.\n", + "\n", + "### Reasons to use live data\n", + "\n", + "* Your data is inherently coming from a live source and your visualization needs to reflect this in realtime.\n", + "* You wish to explore a large parameter space and statically sampling this space adequately is prohibitive in memory or computation time.\n", + "* Your data is too big to fit in memory and you only need to explore a portion of it that you can stream in from disk\n", + "* You want an open-ended visualization that keeps updating indefinitely.\n", + "\n", + "### Reasons to use static data\n", + "\n", + "* You wish to archive or record your visualization in such a way that they exist independently of code execution in a potentially changing codebase.\n", + "* You wish to share visualizations in a static HTML file that does not require running a live server (e.g a file that can be e-mailed and immediately viewed).\n", + "\n", + "The general recommendation is to visualize your data with ``HoloMap`` when you have a small amount of data (typically a few megabytes) that can be quickly computed and can reasonably be embedded into an HTML file. Otherwise, you can use ``DynamicMap`` that you can sample from to generate a ``HoloMap`` from when you wish to share your results (see the [User Guide] for more information on how to turn your ``DynamicMap`` objects into ``HoloMap``s)." + ] } ], "metadata": { From 0f69597e960f1b726d98b1ba89d7bbc894326504 Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Fri, 16 Jun 2017 09:31:28 -0500 Subject: [PATCH 14/99] Fixed typos --- guides/getting_started/5-Live_Data.ipynb | 35 ++++++++++-------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/guides/getting_started/5-Live_Data.ipynb b/guides/getting_started/5-Live_Data.ipynb index b5ff9e180d..134fa6b2d8 100644 --- a/guides/getting_started/5-Live_Data.ipynb +++ b/guides/getting_started/5-Live_Data.ipynb @@ -9,11 +9,11 @@ "\n", "The 'Getting Started' Guide has up until this point demonstrate how HoloViews objects can wrap your data and be given a rich, useful representation. This has assumed that the data was available in memory so that it could be used to construct the appropriate object.\n", "\n", - "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exist yet: it may be the result of some computation yet to be performed or the outcome of some live live process with the corresponding measurement not yet made.\n", + "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exist yet: it may be the result of some computation yet to be performed or the outcome of some live process with the corresponding measurement not yet made.\n", "\n", "All these examples are of *live data* that can be made available to HoloViews using the appropriate Python process. In this section, we will see how HoloViews allows you to build visualizations that update dynamically to newly available data and that can even respond to live user interaction.

\n", "\n", - "
Note: To work with live data, you need a live server which is why the output shown below are GIF animations. If you run this notebook yourself, you will be able to try out your own interactions and compare them to the displayed GIF animations.
" + "
Note: To work with live data, you need a live server which is why the outputs shown below are GIF animations. If you run this notebook yourself, you will be able to try out your own interactions and compare them to the displayed GIF animations.
" ] }, { @@ -46,7 +46,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are many possible examples of live data including financial data feeds, real-time scientific measurements and sophisticated numerical simulations. Here we will consider the path traced by two very simple equations:\n", + "There are many possible examples of live data including financial data feeds, real-time scientific measurements, and sophisticated numerical simulations. Here we will consider the path traced by two very simple equations:\n", "\n", "$$x_{n+1} = \\sin(ay_n) + c \\cos(ax_n)$$\n", "$$y_{n+1} = \\sin(bx_n) + d \\cos(by_n)$$\n", @@ -151,7 +151,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "HoloViews does not yet have the information needed to give us a visualization as we have not specified the ranges that the 'a','b','c' and 'd' dimension can take. We can now do this easily with the ``redim`` method:" + "HoloViews does not yet have the information needed to give us a visualization as we have not specified the ranges that the 'a','b','c' and 'd' dimensions can take. We can now do this easily with the ``redim`` method:" ] }, { @@ -176,7 +176,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "These ranges supplied with ``redim.range`` are semantic specifications of suitable values for each of the parameters and thet are used to defining suitable ranges for the interactive sliders above. Note how the HoloViews options system described in the [Customization section](2-Customization.ipynb) continues to work with the ``DynamicMap``." + "These ranges supplied with ``redim.range`` are semantic specifications of suitable values for each of the parameters and they are used to define suitable ranges for the interactive sliders above. Note how the HoloViews options system described in the [Customization section](2-Customization.ipynb) continues to work with the ``DynamicMap``." ] }, { @@ -190,7 +190,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The concept of the ``DynamicMap`` also supports live interaction (when using the Bokeh plotting extension) via the *streams system*. A stream is simple a parameter of a corresponding stream class that is configured to track some variable reflecting a user interaction. For this example we'll use ``PointerXY`` to get the ``x`` and ``y`` value of the mouse as it hovers over the plot." + "The concept of the ``DynamicMap`` also supports live interaction (when using the Bokeh plotting extension) via the *streams system*. A stream is simply a parameter of a corresponding stream class that is configured to track some variable reflecting a user interaction. For this example we'll use ``PointerXY`` to get the ``x`` and ``y`` value of the mouse as it hovers over the plot." ] }, { @@ -208,7 +208,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can extend our function to accept the ``x`` and ``y`` values of the pointer to set the initial ``x0`` and ``y0`` values of the attractor. In addition, we can use this position to create a red point that follows the cursor, some text to show the position of this point and finally a red line segment to show the first step taken when computing the attractor:" + "Now we can extend our function to accept the ``x`` and ``y`` values of the pointer to set the initial ``x0`` and ``y0`` values of the attractor. In addition, we can use this position to create a red point that follows the cursor, some text to show the position of this point, and finally a red line segment to show the first step taken when computing the attractor:" ] }, { @@ -229,7 +229,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "All we have done is create an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing the our clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and setting the ranges as before, we have an explorable visualization you can interact with directly:" + "All we have done is create an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing our clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and setting the ranges as before, we have an explorable visualization you can interact with directly:" ] }, { @@ -256,16 +256,9 @@ "metadata": {}, "source": [ "\n", - "By exploring with the mouse, see if you can find the fixedpoint location (where the next step maps you to the same position) located at ``x=0.18,y=0.65`` with parameters ``a=1.4, b=1.6, c=1`` and ``d=0.7``.\n", + "By exploring with the mouse, see if you can find the fixed-point location (where the next step maps you to the same position) located at ``x=0.18,y=0.65`` with parameters ``a=1.4, b=1.6, c=1`` and ``d=0.7``.\n", "\n", - "To learn more about the streams system please consult the [User Guide] and checkout our [Linked streams gallery]." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At the end, maybe talk a bit about how all this works, and what the pros and cons are (can work with data that doesn't exist at the time of execution, for large parameter spaces will be faster than computing entire space, allows interactivity, but can't be exported to static HTML; requires a live running Python process).\n" + "To learn more about the streams system please consult the [User Guide] and check out our [Linked streams gallery]." ] }, { @@ -279,13 +272,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The DynamicMap together with the streams system allow specification of exciting, dynamic visualizations and interactions. The way it works is that HoloViews runs JavaScript in your browser which then communicates with a running Python server process which may be running in the Jupyter notebook server or in the [Bokeh server]. This Python process may be running locally on your machine or some remote server either online or somewhere else on your local network. Regardless of where it is running, this Python process executes the callback you supply to ``DynamicMap`` allowing HoloViews to update your visualization whenever the parameters change.\n", + "The DynamicMap together with the streams system allow specification of exciting, dynamic visualizations and interactions. The way it works is that HoloViews runs JavaScript in your browser which then communicates with a running Python server process that may be running in the Jupyter notebook server or in the [Bokeh server]. This Python process may be running locally on your machine or some remote server either online or somewhere else on your local network. Regardless of where it is running, this Python process executes the callback you supply to ``DynamicMap`` allowing HoloViews to update your visualization whenever the parameters change.\n", "\n", - "This architecture is powerful and fully general as you can always make static content in memory into dynamic output generated by a function (see the [User Guide] to learn more). This is not always recommend however as static content also has some important advantages.\n", + "This architecture is powerful and fully general as you can always make static content in memory into dynamic output generated by a function (see the [User Guide] to learn more). Using live data is not always recommended, however, as using purely static content also has some important advantages.\n", "\n", "### Reasons to use live data\n", "\n", - "* Your data is inherently coming from a live source and your visualization needs to reflect this in realtime.\n", + "* Your data is inherently coming from a live source and your visualization needs to reflect this in real time.\n", "* You wish to explore a large parameter space and statically sampling this space adequately is prohibitive in memory or computation time.\n", "* Your data is too big to fit in memory and you only need to explore a portion of it that you can stream in from disk\n", "* You want an open-ended visualization that keeps updating indefinitely.\n", @@ -293,7 +286,7 @@ "### Reasons to use static data\n", "\n", "* You wish to archive or record your visualization in such a way that they exist independently of code execution in a potentially changing codebase.\n", - "* You wish to share visualizations in a static HTML file that does not require running a live server (e.g a file that can be e-mailed and immediately viewed).\n", + "* You wish to share visualizations in a static HTML file that does not require running a live server (e.g a file that can be e-mailed and immediately viewed or placed on an HTML server).\n", "\n", "The general recommendation is to visualize your data with ``HoloMap`` when you have a small amount of data (typically a few megabytes) that can be quickly computed and can reasonably be embedded into an HTML file. Otherwise, you can use ``DynamicMap`` that you can sample from to generate a ``HoloMap`` from when you wish to share your results (see the [User Guide] for more information on how to turn your ``DynamicMap`` objects into ``HoloMap``s)." ] From 154b0ed2c603004dd56385c7be72b2674f122d93 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Fri, 16 Jun 2017 23:37:32 +0100 Subject: [PATCH 15/99] Various edits for the Tabular Datasets guide --- guides/getting_started/3-Tabular_Datasets.ipynb | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/guides/getting_started/3-Tabular_Datasets.ipynb b/guides/getting_started/3-Tabular_Datasets.ipynb index d40a0b754d..0b58a727e3 100644 --- a/guides/getting_started/3-Tabular_Datasets.ipynb +++ b/guides/getting_started/3-Tabular_Datasets.ipynb @@ -44,7 +44,7 @@ "metadata": {}, "outputs": [], "source": [ - "diseases = pd.read_csv('./diseases.csv')\n", + "diseases = pd.read_csv('../datasets/diseases.csv.gz')\n", "diseases.head()" ] }, @@ -73,7 +73,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Now we can start thinking about how to display the data. Perhaps the most natural representation of this dataset is as a curve for each state. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display a timeseries we will pick the ``Curve`` element and specify the ``'Year'`` as the key dimension and the ``'Measles Incidence'`` as the value dimension, which we will refer to by its name (``'measles'``) rather than the more readable but also more verbose label." + "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Now we just have to find the right visualizations to answer the questions we want to ask about the data. For that we can pick from the large library of [Elements] to visualize our data.\n", + "\n", + "Perhaps the most natural representation of this dataset is as a Curve displaying the incidence for each year. for each state. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display a timeseries we will pick the ``Curve`` element and specify the ``'Year'`` as the key dimension and the ``'Measles Incidence'`` as the value dimension, which we will refer to by its name (``'measles'``) rather than the more readable but also more verbose label. We will also do the same for the ``'Pertussis Incidence'`` and lay out the two plots." ] }, { @@ -82,8 +84,8 @@ "metadata": {}, "outputs": [], "source": [ - "%%opts Curve [width=600 height=400] {+framewise}\n", - "ds.to(hv.Curve, 'Year', 'measles')" + "%%opts Curve [width=600 height=250] {+framewise}\n", + "(ds.to(hv.Curve, 'Year', 'measles') + ds.to(hv.Curve, 'Year', 'pertussis')).cols(1)" ] }, { @@ -181,7 +183,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In this way we can summarize a high-dimensional dataset to something that can be visualized more easily and allowing us to compute arbitrary statistics along a dimension." + "In this way we can summarize a multi-dimensional dataset to something that can be visualized more easily and allowing us to compute arbitrary statistics along a dimension.\n", + "\n", + "### Other data\n", + "\n", + "If you want to know more about working with tabular data particularly when using datatypes other than pandas have a look at the [Tabular Data] user guide. The different interfaces allow you to work with everything from simple NumPy arrays to out-of-core dataframes using dask which will scale to visualizations of billions of rows particularly when using the [datashader](https://anaconda.org/jbednar/holoviews_datashader/notebook) integration in HoloViews." ] } ], From 2baa6bcb30fb864d7c118e1153b278400dd593ac Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Fri, 16 Jun 2017 23:38:11 +0100 Subject: [PATCH 16/99] Added initial Gridded_Datasets draft --- .../getting_started/4-Gridded_Datasets.ipynb | 269 ++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 guides/getting_started/4-Gridded_Datasets.ipynb diff --git a/guides/getting_started/4-Gridded_Datasets.ipynb b/guides/getting_started/4-Gridded_Datasets.ipynb new file mode 100644 index 0000000000..4ae97aa0ad --- /dev/null +++ b/guides/getting_started/4-Gridded_Datasets.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh', 'matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the [previous guide](3-Tabular_Datasets.ipynb) we discovered how to work with tabular datasets. Although this is a near ubiquitous type of data many datasets are best represented by n-dimensional arrays whether that is simple images, volumetric data or higher dimensional parameter spaces. On a 2D screen and using traditional plotting libraries it is often difficult to visualize such parameter spaces quickly and succinctly, using HoloViews we can quickly slice and dice such a dataset to quickly explore the data and answer questions about it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gridded" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Gridded datasets usually represent observations of some continuous variable across multiple dimensions. This could me everything from a simple image representing luminance values across a 2D surface, volumetric 3D data, an image sequence over time or any other multi-dimensional parameter space. This type of data is particularly common in research areas that make use of spatial imaging or modeling such as climatology, biology and astronomy but can also be used to represent any arbitrary data that varies over multiple dimensions.\n", + "\n", + "In HoloViews terminology the dimensions the data varies over are the so called key dimensions (**kdims**), which define the coordinates of the underlying array. The actual value arrays are described by the value dimensions (**vdims**). Libraries like ``xarray`` or ``iris`` allow you to store the coordinates with the array, but here we will declare the coordinate arrays ourselves so we can get a better understanding of how the gridded data interfaces work. We will therefore start by loading a very simple 3D array:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = np.load('../datasets/twophoton.npz')\n", + "calcium_array = data['Calcium']\n", + "calcium_array.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This particular dataset represents imaging data obtained with 2-photon calcium imaging, which provides an indirect measure of neural activity encoded via changes in fluorescent light intensity. The 3D array represents the activity of a 2D imaging plane over time, i.e. it is in effect a sequence of images with a shape of (62, 111) over 50 time steps. Just as we did in the [Tabular Dataset] guide we start by wrapping our data in a HoloViews ``Dataset``. However for HoloViews to understand the raw NumPy array we need to pass coordinates for each of the dimensions (or axes) of the data, here we will simply use integer coordinates for the ``'Time'``, ``'x'`` and ``'y'`` dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds = hv.Dataset((np.arange(50), np.arange(111), np.arange(62), calcium_array),\n", + " kdims=['Time', 'x', 'y'], vdims=['Fluorescence'])\n", + "ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we should be used to by now the ``Dataset`` repr shows us the dimensions of the data. If we inspect the ``.data`` attribute we can see that by default HoloViews will store this data as a simple dictionary of our key dimension coordinates and value dimension arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(ds.data), list(ds.data.keys())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Other datatypes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of defining the coordinates manually we recommend using [xarray](http://xarray.pydata.org/en/stable/), which will flexibly work with labeled n-dimensional arrays. We can even make a clone of our dataset set the datatype to xarray to convert to an ``xarray.Dataset``, which is the recommended format:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds.clone(datatype=['xarray']).data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To see more details on working with different datatypes have a look at the [Gridded Data] user guide." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Viewing the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perhaps the most natural representation of this dataset is as an Image displaying the fluorescence at each point in time. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display an image we will pick the ``Image`` element and specify the ``'x'`` and ``'y'`` as the key dimension, since we only have one value dimension we won't have to declare it explicitly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Image (cmap='viridis')\n", + "ds.to(hv.Image, ['x', 'y']).hist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the slider widget you can select the ``Box select`` tool in the plot toolbar and select a Fluorescence range on the Histogram, which will control the color mapping range. Also try pressing the ``P`` and ``R`` buttons after clicking on the slider to play the animation forward and in reverse respectively. When using ``.to`` or ``.groupby`` on larger datasets you can use the ``dynamic=True`` flag, letting you explore the parameter space dynamically (for more detail have a look at the [Live Data] and [Pipeline] sections).\n", + "\n", + "#### Selecting\n", + "\n", + "Often when working with multi-dimensional datasets we are only interested in small regions of the parameter space. When working with neural imaging data like this it is very common to focus on regions of interest (ROIs) within the larger image. Here we will fetch some bounding boxes the data we loaded earlier. ROIs are often more complex polygons but for simplicity's sake we will use simple rectangular ROIs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ROIs = data['ROIs']\n", + "roi_bounds = hv.NdOverlay({i: hv.Bounds(tuple(roi)) for i, roi in enumerate(ROIs)})\n", + "print ROIs.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we have 147 ROIs representing bounding boxes around 147 identified neurons in our data. To display them we have wrapped the data in ``Bounds`` elements, which we can overlay on top of our animation. Additionally we will create some ``Text`` elements to label them so we can identify them easily:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Image [width=400 height=400 xaxis=None yaxis=None] (cmap='viridis') \n", + "%%opts Bounds (color='white') Text (text_color='white' text_font_size='8pt')\n", + "roi_text = hv.NdOverlay({i: hv.Text(roi[0], roi[1], str(i),\n", + " halign='left', valign='bottom')\n", + " for i, roi in enumerate(ROIs)})\n", + "ds.select(Time=21).to(hv.Image, ['x', 'y']) * roi_bounds * roi_text" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use these bounding boxes to select some data since they simply represent coordinates. Have a look at the ROI #60 for example, we can see the neuron activate quite strongly in the middle of our animation. Using the ``select`` method we can select the x and y-coordinates of our ROI and the rough time period when we saw the neuron respond." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x0, y0, x1, y1 = ROIs[60]\n", + "roi = ds.select(x=(x0, x1), y=(y0, y1), time=(250, 280)).relabel('ROI #60')\n", + "roi.to(hv.Image, ['x', 'y'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Faceting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even though we have selected a very small region of the data, there is still quite a lot of data there. We can use the ``faceting`` methods to display the data in different ways. Since we have only a few pixels in our dataset now, we can for example plot how the fluorescence changes at each pixel in our ROI over time. We simply use the ``.to`` interface to display the data as ``Curve`` types with time as the key dimension. If you recall from the [Tabular Data](1-Tabular_Data.ipynb), the two method will group by any remaining key dimensions (in this case ``'x'`` and ``'y'``) to display sliders. Here we will instead facet the ``Curve`` elements using the ``.grid``allowing us to see the evolution of the fluorescence signal over time and space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts GridSpace [shared_xaxis=True shared_yaxis=True]\n", + "roi.to(hv.Curve, 'Time').grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Aggregating" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of generating a Curve for each pixel individually we may instead want to average the data across x- and y- to get a more robust signal. For that purpose we can use the aggregate method to get the average signal within the ROI window, using the ``spreadfn`` we can also compute the standard deviation between pixels. We will display the mean and standard deviation data as a overlay of a ``Spread`` and ``Curve`` Element:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Overlay [show_legend=False width=600]\n", + "agg = roi.aggregate('Time', np.mean, spreadfn=np.std)\n", + "hv.Spread(agg) * hv.Curve(agg)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9bf9db40be66f7cf1664c04c2001c392cacac94c Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Fri, 16 Jun 2017 23:44:57 +0100 Subject: [PATCH 17/99] Added two-photon dataset --- guides/datasets/twophoton.npz | Bin 0 -> 535712 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 guides/datasets/twophoton.npz diff --git a/guides/datasets/twophoton.npz b/guides/datasets/twophoton.npz new file mode 100644 index 0000000000000000000000000000000000000000..cb09c72cbbcd0671cd0044fe3f95dbb09629973c GIT binary patch literal 535712 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�TV0( z=Ut|!sIsL{-~m*NTTx9olq2*FY!eJ*7zE$3h~|UMQqd8(>y11a?~a5=2*LYF(YAa2 z^e`R;###VHK9f(;CZ{81L|tcuf?h-mXsc7&-H(fW!Cbp3n#$8;s!waE76pK#t^mub z!P^kn>y49z`r(KH;HRln`iiba*F z3ix_9eBo4TNTcZ~mBy=|C=boV@2S|`cVQnLfMOZWDZ%Qu>4y_e<)}0NM{_Wa*W`=d z-Rq8S&@Bpv^D01}ofl33ka;qgpb9v5Aay`nU1%4@<3Cg!e;=TA&T+~@gK0X}VhJsT zS1XOyXCi_*aaIY8CNs3cFub=5>(-0@qxQhL3%nN2%)O3oGn`*edPoN(8Qpd!Vm#-e zj&@TYsDt>D5Q-u;UqocfV&tWuYR*CZ?V>R}2JCSkZlV{I^^BNosszm!1{ItHZtSwu zmyqN?pNk2&?%q6IQO|e*tH+H{~>Jv zo~@ABsF+`pQ}@9?v`~08AlY9jt?r$%3AHe?J518+PO)l%6~!f!Hk9Oe*B6+60-T@G zL`z}QUyjKXEw8I|s;1Eb(gxMG7OmFT&cMFfG6_l}T8=|w&j4q2m2(;*sq`oB0pb=z z<|ox8(hTnD2AH9-q=zavrB#5YxuiP~?2p6-3bjU`h16pLWf-t2C(e6?{;zXajP@F0 z9t>rA1$?{<8hjsgY++z_dntr?rqBBA#- zBAyK>&}A+7tUYiA`?(m@>ScDnb$Y=mkOd|2F9qsp7iv5nJZvA-&S&}nU3ZCYkb@R8 zLe*u*x;Da35q^hyJWalGjHc5Btj|~aL)XCG#bWM_c@*>g$1UXO7oLDuKhjfY9@V2D z)ZYl&N>e!@YOgO-2;)O_u7STl#b=zB$j+o( z2}p4jwR92sqcu0DIuwTrQaXC*RH2$s7R~VcJ1UDBNYAY?>tVDIIrbW@{ct*=Vjm;_ zvxB_@DL3VyIGFQaWb$M_K=8Jx*glwFY4p38raRTB5A@4YCy1^(%bh09P1MU`obeHL zS_`_OHRc{0^_m~;jfS$C%iF0Jdg$qXE)13O6lcDr<*16){0|zTGi|5bIQ9l+cZyac zt}mU3B&h2!RD5>mH81W)?k;NyP!r7S$o*v1AD(UnF9BwSLHmSb)x-D#qBQ}ldV)K% zKio}KXs^wDz?nrtGbovCrt#2N!{GdzlRvd0RqoPo+O0JeFPmkoaP~? zPjeh-@KW$2>b8x%DhE$k8u^_^is&Y=)l$v{Meqi?XmHHk773*uSA}0JEET03>Z3Ds zMFRLVfvQghMREknZWWiu`?2*g3r5oc)sz$7=s8g3k+^#uOp!*Y-Z&Btci=(&mzHXh z3AGbP)9FE}WgH!Z9uvrC)Wul%&X=gXw2}-up*K{Pd$nUHxPrn`0s4Ke~@ z!Lwu$d&^W_CJptgT!yYGf*uN>_U~{~jQu^gMz1ySYC*V!H~bXNtQj!nAL^@%Oq0~m zeSuJI-*pk*9VPvsm#?APH^L9Jg;GAq)uGAGYhNJ36sVO8oCEqT(7o>pvDq!95Z}b; zt14E+y~-d!HcL&oz5-HOieaWtz@43eYK;*6QCbR4XbM{BiIuJ+BY?33;4A~64yQx& zo&-XC;+4=}K|B~SNXEm|qhI+6{M-)d!l&TTqLBq}IEnO=4w!v8nTdC=KqocQ^)gUT zN{BiVf>;knR7xNt5fw>(7*it-wn0#DNhQRwgPlCB^5Kjcgu zD8Ze7|9}RWXBGoPN9b=!VIIm>c|`{5yq_G9`N$f~OR@n4-CYfQG1}Eo z6L;wqT>2*74nz#4RlH48z&$9A@R1E1SN_mqI>~$33t89{D!mRTw#Q5bjnXM*vgyWa zc{p`-pN7EC$oLc!#QM(i94IP6=84e6N z3d}eN{;vlglOMel;15`d^T?n_oE){3o=Wfv`pPG%1KdCXIKK|&x4ol3^^k3CBEa_l zQ3K3lH0Pz2{GO|$u19fGAVp)KZ31}?hv@DR_8ur23RGChwfHu-kf-znIev@}!--Yn z+ragl5|5K%w(fqyacn{ROAeYD=AxdG?O=joyclz-&zZpPtGE+J!b8j-T_~ruqM5HZ^pRxX zzKHfvRAFW0*E}vMelk+ZLU&~2aJosMoCU7`A29s{*l#gbYAKxUEa2vRNde4DDb>ML z4k~XI&BLq>u=lC-p|gcaj4TlR1=8Dgk|K@;KmhV${W0 z_i7ICcvDnzBUw-Xpb)YFp__6KT87Ns$+M`a1S3C6^8>K`7EX`V$N)|Fn-T(x79o>@ zVy=zfhj;~{{~Y{`v*OI7P;l;@cM13q)~G5p!+liaTh1Ws_!TdJ!g2kqKQvl;Er-}H zghLI0R~iRZa+aH`yNkbjpVJGVc^giIc~1jV+=g?V3UtqhnkXdha|o`%u7G;`&Ll!FJ%4R>?}qrC_R`BL2LR(vqt=CV$o zz{BK16mx5TZHrfX$PpO|O&CuH=sTWbl0w(r5(`auh)e5x9S`kSS~_to&8LOnxbo>9 zX{3WRGw?7jdP;!vChAnoBiMEQau;rLoQ%-FvIt!ESNcjCc=uz{%@mZiG7|l?hifYi zUh1b$q&*LSUi8&1a8uD>-)D&NZn*ub@*kqH5%DXjn@}CQ3pFnP^xEr*q?su#_1 z9cE&|zqi!gT3UA^x|vL{83P}_TH~7fT2bqn2XODn^^3N#741$9ftrud<@UUpU^bb% z#&{arN2aVSJnO?H*N(PlZ3_Dnt=G0WY!3574rmH{ z**f-_y>5D%WY!<8_<8(ocU!<_wR=rIo7{dh0d}{^VSCsWX1zJD2L!Z+lLADtkWJAd}M`*LY^5nQJC`(t6ICA*Qz(X}a4q=7WvU z3pN*8Ol<-Yk36Q4&E?r+TYDg||r|V(6(!Mia)tE2luYKqp$NQmY zs%L^{zNeGzV?LUc=8}0}CU};4F52(f*>o}6?G`iEPO^TUX!Kda1Y?wo?I`O9tChwR z%SM`cCY3#G=h?-kvn^;Em{1dqpJ1anKE2OI@5|mjyfb^pu~j`U%{4Q`*2WlK+hLw1 zp5nHw9bgKZ!ZxX=w>@i4+v2t)O09!EqwDn#Vsu@Ld*-9<3+6HYf3rPprkd3zj@_Uy z%oAL}hs(|k}rd(GYf!;P`Cjo3YyqhofP#paL}F!^+;$z?m(xSlHBHNBsE64=$q ziwWkrcJmar@6BcH=$UOd*iFcrmFA*3Xw%s_=Dr!Kr%Wq5z=oKsCekFaPt9iA#a=T- z^p37Kzff(@O(wel6*1X_YPd$?{0iRe-QIh;XPhlHY9L;5JnxjT7I86?GfK9A8DO3u!-m-^wt-1v;@fT}g?(YVn<8c&GQXNRXp)=d zp6s5ao*|xg=p(O&YCChtvr7X!{d62+)WAH`ji#<`W2Tu%Eo-LQP&3f%F`vyp^gYnb z)LQ1X_1LB+whcrMzSS-ISgYFu<}zo{j=+sj?SZjm^kg!#O*3KRc3ocU1tG))b!>c7%mX{ zxvrdm@0s8}{Zu2N#4>^7ze*)dB12@A_~>>xiJB4$%yjqm%>cD`mA|{s@B)X$a($W} z!)Pl=H#^prutV)M9f4Us1a_a$>lpDd_g*DaLK91FNur;j%2r@bW2Kcmb6E`B)4ymt+Oe5%OfiH@s zedQmx!UL>sphx5}l=uMMg0re1icFq23g0L|s@@wP)ILem{oa2i&l zmp0`Aa8;+lQ;B$k6oP)NDdS}cm5BMC@FbPi1G*KM28n z>cJ1;FB>E0%h|!;)P`CFZmPSx*Du(_BzbcnOD=DC~7|{dqX`hf!YgalCM0UyYUeD0?ij4v%~yQsK6iaAbrde8OQNWTWI4%Tw9VzN49WI z-m;pZ1>q60!xb#2P0j&$0v~va85B>V2~mRQ^nt?63or42_CrB-<@e5bYDYgg3`#mF zwDJ||)f)Trmiw4Iu8HE7}cRFR)hLaad(a_=@A!^1JB zH&hVo6^|?NJ9uSibyqn6)c#M^lwe{`Rc z1|8oXjv&N<Py!@~4*sNg&qevFzqfvIg;OFDqic`|XbE*~=@qxE|*Cx(3KOgcEYG z8f1G{X=e^&RGp0bDUX4-Dj=PZ(YN?^%vJQ+p%K5}{Y&zhesCg93V)w8=1$vRTo_ud zsV32d`UwtgDDRa#@b!(MCC5u4D95qzh<>Q~eNeeIfbko28=ps;hc!QtG#jesFqA!f znjVM$f6e8ApT~FtRQU$1+Z(yf$AJ^>6Muj4UAZCaQ6Y&{fq-98XOB=dGf*Y&?$@ok zmK4@L=y5;lbQ`=&dJdAgTn-sLPO1QXzQB((L5`|aKyIF)QS_M7(Rna zdwAJW`~hxoHr3=Va7h*TD%~Z2@IWYhTmq^h)8YCu=>m+?y??kEr)2kuKH;(xtFadO zxr;Bt1-_z($iuUgnNx8NiVrXS-C0X(=rHAw(=>(G@Hga?msc=wA`5cTVBJ2^aqbEK z-;%S@Z}>4^u#I0Nc<|#?nSVGhksX<3 zJZD7DttbPq&I{-tMl-29Fros@<+K>Wpt9d)_*V5#<+m=YkbnhwAeMXC)Qp{`{53J8ej~e#~AA$0-l@ z;l;F;8qsvBLOaQq`;bx~4FryaCKA5IZIA5b+AYL>*MO|FLtiMrvxV>CB6oM8TAZ8{AtOS#Emkr!pF$STm+Q#=?O>UHyoLP1vPY;oWki!eE-6w4)c~d8OU2CrS`#GO37X*sB9WvD#{cY0EKxQvmA$7`On=|QQT{es=&Wz zh8jtRYWXd!&-nu|B@Hyx&zMh~Q}JqvP1QILRwXYNr|Vd$x%|~}pCUdLsNw}~D8ZIR zYqOD37~2sl0zSJ$*{D6wq;nW|H6XY?JrcQVpa^ghQaPqUl^?1R2`Q7qm-Wq^W}-6udgb)56G z(0So3a(+^%(-ie6^vx;moOdocCAlAZsv7f*#FWTCMq9&af^&y_F%DmhcD{4l$wzTf z5f`1TR0?Pw%avoP*9`CkY*Nf>7xZIOc}4oIW};FuUVU2Fgr5Xpl_65rLS?Tf`tG{cuiGQD>Rs zMZq+mn$jd^COvYJQhthqD7~Z8&NjyYu}YwN?>ld)1P!8DG!LuP1~YDrRSp75&UAO< z2Oo66yc_agtnQ;2^bFwz)D5|Cg0fOL&}fBAioCpKc=2y z!Ch0K7Sn)3dq6*J;C*mi>$nJ~m144q*Fy(y1$$PLcwk%)+|Me`0{7_NSNMSc!UHh8 z+!eT{zMMqX0i7lTN7BG$UW1aaC1cQPYv9sIsL3GcqX#@xS76Q`Ap1*Lfe!hmv%k)%3*~ zM-!kxmQy=0bv&SX6vYQSK@o5=_YQt&uLxB1RUXAVkvFH24ZEb0l%WndVgQh>H8pgW z(KOWZYsY;y#uCSe&pU_c4stJoHX&n+!UuIko%Dv%`$Ge`4W9+q55|ZxpyiHWvpHx# zJ1Wngi&1?rQxs}E5pXmW4aK|LkmDs#r9WMig#i8e@!+F#L zPGku!;l5}m1LuNH*ah4f11Gi(NOBLVssIqWKQ*Aqz}9Qr7&>r=bI2j-3~#WFKLRDZ zp>!&+0b=Cl+0FuBWHR7R2&yVIuwxRcbrMaa6JWYO^c_|Ffhy7!sz)Q~0ggKfPRv04 zxd@d58@hMIy>t$7f3z6_^_U!L<0csL9{TMDE;x!x^M$4;#~CRPH3m0qar&a_#yOYB z17^<8b;-T!a6heg2E#YFI}+xG)_F~RfRTwgImWn`y28=ChEiQ9HQ^=xVm!XkTKAzD zmOvB6XIDSoaN=TY<4cBf=0*+42kFNbq*w2LX+7=3=i~o z5Cx$QW^n;p1yoECb6sE`Zo!r19Onklr-4R^Cp)+;4+iT_gW~T4jg}kZe}vx^d>w}; z(M!zTePUn(a-URF8Q75-NMoTylY!Ga;N4WnxB95e>A;M6JP_`s8xUb9T)hv_;4SoI zGmYSz@(*VW(;-?~v&a%?oTtzZ?PU$kfZq+3v`~z_sawo$n~!-FYPo>BUyCRog%fdW zc)q)rA#kMoc}Cq1s!^gq3%o7KXr z6*aTO&vera=BLy#+n~l*=pmVN2e$KBlCO#c`kT?pdv1@9Io_t&`=QY}Pq)PU=Y`od<+d zD4`>=Oh3sjarc)`uVr09jaI5 zsg%@b@?J*k3uv={K(mEF$ir~&4|$dx12WgZzXNc|iFK*W)<&EaadTBxV>v8urI(CH zALk`2_tuP(ir@0+m`{q@Bj4UiQXF4bLM4~Xig7io;h9cxNy*JErMJYBW7`LK+ zE^|5^4-eCa`@yTsfQ$GGw_jK`$2>!>9fe3&^m5~_zx(@ylxcCdSxBI-+ zIH-&jJP@dV2q^851#sfm;Goipx4dMMKKQFAJl#8R)odJBOY+JkFvCg-M%7M4F7HQ- zMnFARK#Z11d#;YC#EQ8p_X~VTNASZ&uwXNe3xDU4zp@vldPK6(SuwK`p& z%1s`x=YR=&xU^Y^dR{FPWsYnD=bb||^64mWeU$7&E)+7Sq#wBT6aH;Nl^9tA42Y#S z;Q|UvIr$cI?PoqySSQF1^UrQe_h0`#VAMU{TQ3fz%L_?Emv!t4`iQ*69W$sFRR9QD*(Rt{U8Jgbg zl9!mvVKY@nn}p_oW-?V(%sr)pOdp(8Zh>@rWZzNUqT zYN_STd7Y(w%nQAabN6T)Gf{msrFn@XPnwZtirJ#RriLAFb{jvF+~l!E%t`ez9nBh(++HxBw2*CX!Zn%6 zV&Cc}%(*mBw5eW}yr!NWmalq37s>(srk`W3viS)7nJh^);kiqRYaroG~IXfdPyfdf3k zW8u;7f}{6C>&yht`k}s?Lq+edzs;P~>yrTAIPPEvJ-l@8x(FrA8%(LO*qf8_UA4 zsG9Q_EWI3P)|zio5@_Qx{L9&haXf$qd*MvtcTPeX0NrqvD)Bt1xCu~KyP=pi@OS4s z+=WmU=!N!pwL9k6m3Fch-GVYn4KG=o@-e16nc% zTuBt1p!=!L1~Bn5ILZ!Gn$rM5KGGQ{H(7S~_B(>VW1l>vp;9T1B4d*N6XrZwf{Y7U0&@>eg z*uCGlm{jDPd$p zg85E>Tl~bmmSis6k^^5*kMnCoDa&`bG>1rR{mYMlX|Z{+qyu||QEo73Qn1|tyq8TU zXnVb&iL{tLl*Gu_^w2v8fnCqRL{l`EHqmQ99nyo~vJN=*95ldryjn^tgZcBxB<-pt z^sMGEWq}TFB?xF!NvoNm8rwb>(FGb`8$w03G6OWf^fMXtiL@|Zxw!c*U!ZmF0RcKm z6^x`E>hYMY1U@74C6{`cy&7OzVuV*P%Q)sW##9A5<&ESwxAmSB)Wv!n^_pMH=}vf+ zijqa==st-?Enm?^x<`UFF7UM^l*d;cr^|5e6X^>Dv_lG*)angRNQd6SfC}vqrLA}` zqn?s!=skyCg+>`8tb?SK7T4~Q2+F1v@G-k4!$`+zKkb8gwUaZF5mAbk2NI5B-b)md zDWg}QFcRtm86gAkLqP3Z&{nB2rjAkp^Zm^yq_VQ!K%2=Wjdp;>`ww{knHPeKrT|}l zNj5NFEWNM$xs3dgo4Oi$L68AoWfCfWsN`o-0>(_$ui{<>GfBdvqSgnpNAX>04t^{J z{WTj$#|D?=0xJc}HLajqp)Xc~3Dd}KX&_gnvDVR&P%+WaTkB+t_Sa}mpi3~HesYR) zBd#T-fwqPE8;$s{k-=I73idb;(e3h6&%n8M=9AF2Ptfxiai4j$QrbY%-sd-Rgngk| z<|8vp={J7OMR0y1XrAO4^G)z>S7c0XxX5#G)0v?z3W4#C$aSvEo1lsIW6eHu0@Ds> z^wHH^Nq_JmXs!8B{43=iUz8@OgV9iUNhCctggWr>Z(bldFy>d1St^5@4{=*P%Ex4` zRMNR@pbHWsUqZoi%lH{jW@DZJC(CFL#OXR_T31eTYHffDtjcAj2$zu2d@x3r?cl*s z68oT-CxVexa;h)f_-!c3r(6uIJrFM6Tf0CVEPzkW4K4c$IwTe9>9s^k8;;U7P#+sm zzxQ|oBDfNo-RP!Fl~om_Oy$%*$U^p@=KmO_kHF;h4%3vts^I&wAe$c3X$mpv)6H0b1GNKVO=_4nUYT`b> zWwFjez1`>7;K&S!*I`s-cg^AYd(91<}c@9v< zfnTf3gTTXCc{l!hjE-tri)u96ZEpKn|Ks6c?CQv}pU9nfk`b#p4X$mz4CXqLQC=XE z_aNsRA_vRE5A1_#pNzaWQeXPQ;YDx|Ps&gFo8y4siT% z`0FZkn-aUMEfp79pN>9t3HB^@CfkE#%JHd}{sXT=c6N6PG z)0O^FZ|5mJ#ruPa_%xNIc;Mq8szK@Ki?f6FI8D(*A@ZTQ81)fT)l6Yuohz$!EWMz| z?x!)})xnNM+@;dpNpdC_so1r(R|IS&29JdQi(orj3YO)752=|s+~gOG9Y zcqkOoW=cR4=vU0H&r|8Mvkkr`0Vjik=t85Ni?oZ<&`HWcFP%~xKq;Z6YSCw`(?N=j zQT=olIrANV=&43@0g+704=9V7qgjFVp|V$RLCvg(5}J#6CZXRL`7J6z4&S5gP9S}Q z_K0-uAui1+3}YTdNs$q8p(;8vlCxH#`ZKJF%eDADmeh>y`L=%jA+h4OHG&dASbA5UfX)0ijpoD<1#I!5PsqD+Ol zozD4U_AEXJA9zWgNKW1h_di2#cuv}Xrn1>$Uf4V~1N`-2=!4l(S5pEFyi~aX>R=AE zRZ6MP`_&69U0q7^J^oBrfjix~y}HkTddG3VTdgGvJh_J>;7YerIVheK@*l@HLBQE9 z(!k7wMp(|@;UACFdaekpEC`3(n`>aTPViNZg7V#q?B9dR+D6G`EZ2aqR{rQdlL>0= zB+r1~{0xmg3{|`rx;%m!v%~Ilj89N5j3%{MPNUPw2k5_@PI3YG>1q4{D|~}y!%KIE zIu4Sb^a|~CpqgkUlJY^Z{iHe61d(q@wRjA5;6%KWm&if*@7>TQ&wz`2`3jW;gG>NV zOaqEm*WWxDuJN2?*6&gWoW5Kp!xN|15HOpMl++e**1y;X40Xo+_EZ+?0KOuHFw<00 zT+XUTu5o#F;Q3B)XDFzK`h>@U*P7~UX$Y;c63Da`j(#N2JvSKV4gS@X<4|4IbR(yi zF5t>avX%2_5={X1ej{bz_`h>BP<9Uwks$nC%q*sr$gZP&3IInyxW8O;3Ap)`D{4Y; z(@f6JSw*-hba5RH<@Qjb9kFiRp^&R_XKpKZDKSst&F=ogaQctA4#x8heEN}lB03ZJ z05b6+-u33v#4eJLK_KKfcRP_y(U9_inmH6aj2_gB4Ez*K8AL9+s9v$Q>T?3C61H1GDW|2NM?D0|GmQYA9FywMMZvO!mWliQ zB(q7}4$yyiwJGI#iox4k|Mk~~` zd;Ny&l0SMI)%8@iz!$ooF~os>x+2{rgEj**x;m!~6lq#*rfE!+zR~_%1nRi7+(iwZ zmE`8ABr+*&OS{~j_2f5m%ndsdzI&#rViVYE=9c!hDa~=uJX^}fx3`VaE~b+SG)YZ6 z_~bHXm&p#N?ro;plJ=t+351wwhkDlP3)=-=!QBJ5wsAaBTFSgOb-qX$F z<*8zu+H7{P&FN`{v-5b~+N`#=O>Uc@zYr7O7V@k&v*E_Q>>T^YR<@_jelyA@^>{qb zOm%z4_BG$^IrHAsx2^3|^BiZc0t%M4m(6?64e!RDJU+MVCsWNXupey+Pf2sZzBf}m zlk6npWs=(2rn%i@tJn}b%H}ooJgZCto6A-;SJ2-l>+6Z@8R%&MoSR`s+lqFL{cYOW z-Z*!K?Q9!*a@#51y?y5SeDvAjd2aWao1O}uJDzEFlBbz{V|P5>pNNR?(!;SDIVrYhgWSTH6hFv03iu$8<2*aRr)XK+bpv@URFiL3{HtkdVb z!0gsPI!#*0QtkzW877CphY#2T*WZn5!udBr%co=zoLLGe*4pNQdLYb(R zwO`;RlfreU)g@5Fzx0tl;2Cm=W`O(df=R}4LSWE3K2Co)pVX$;+z~G6Id|gge2E=d z43FOpNn;J70@BQH#S_pZN!HkAGsi9|irx>V?-Lgn0tNX;@vzpg4 z$urM1@c5au+DkopTHf0<*590gPw$E~KBhf%5M2E!ad(-|U`8MtXJ`re4DS&P6<%3J z=oYh0)0@&lrX{>upoYUi1z`-|z#Ly>p56!M1=+p!2K;IOd_hjFWC{Ue-@&JaXmYay ztv!%W?4wn*oz9p3m|G$}tQ#f22>{O~0$YzT4KSWyZH;jcl%!@4*76wo4@FeMp%;#$ z+S}<$lO9ase!uKqG2RjC?U6*tL7gav%maA1KohA;w38Ol78(IJH%bS|9Aw-;Sp+Bg zT$*bct)*Gv_3FTT)z?naMe~~3I#D~|tn%6jnHA3*RW>J(Q#-(EUu6Z>-M|rFlk@rp z{iWBn8VMy-OjBxAXqp>nqrLj-ByDX9m_PCl8S_hqX*{hb&7h4YLw~h_#@MK{pm+93 z5#5RPpTGpSTUQ3^Sm=j|@bo^?8qRD#viAUd?OWud`x#A$c_Trb4f9ALH~0}eVM6HD z3|dPr%LlZ11CF__hQhJdkx}vtOkYv_k!kH$<=ru2v6MPuepGbPhdx_^63~iM{g5g6;%4qm-UwH{1 zn?>r$ZYZJt=s6*L=?L_)j}=(32KBp+Psnm8-tppx+D{7?(i&R$K4pfIsVpHp1`hkK zu;hjMjKkmUU>So5b&>;m9>6X(;eqW+n908u8NunpCry@0?t#h_^|g z?~&&{Wu{hxCwLF+nTJ{Y1zP>naILJdP_ZSn0V*S*_ER6kYppJaiVM`AV2)&ZTnb?< zha{6$lH1xB3M;*?(LlI}DyWuX`c9Gqzn04o{2ppXa42#%gx4dJdg(&hiaIhHEz2<8 zVu*^OCNsz!eJGRl8B}5(WbFkRtvk84vSwE=V8KmrPjWecY<>g35+=`qCpjb=T04s@ zi{jJLS&v9L-mc3K`EVM~Q!#@eO^zxl!QB`RNJ~j4^_Iz;3z*sytKI;4;SqQLg_7#8 zfnnG|0l z_&eo+E89lTz*ceK;~Jo*y}WAUXCl035PNxLp|jLQnu>dEZ9(+02`=I%+8obi@osDl zpf+&N0sKpDaS0BFd!B>-wuA9Dv#)lS))X6lCzKf@NelGq$5l~Vkx~X@>LERJD<^e7 zBZM2vBB$YeR&WMn=pej*)ZJ~J=OR-#$LxyK4Su$no&_olfv-C&OE@9i?Kt??Nip8> z9{I{at}Sm-Wj!c}O92~N%N@AK2(Wr$F<{7)V4$1a97neRzHO0JoL@3aZ!QNfni5Q% z3!ZB%aHfYu(PH-wK^~4{V(vIa9ZbQj268^Q!%eh}a`Ac0YAJYmI{popR=n2TzYMKr z27fo;5ZcIXvBC$aJ@Do%xw{Mg#>yPyV^o&A!SPgv*ZU8Z_mfURWpu}if5z*L*?sa& zM+(3@kxqMlMt!&f=6QsI++BO&_%kCTE|V`JRi08K+X8`&r|?P#-UNTt8-Kl%gistG zI6gV>T$|z0np1YJ#Or}`_4qa$PQpzj8GoU&aEN(08;zh>RE+x4MOwgF;qqHhI!ez8 zX#-v3^E7}~VHCxzR3=#ewey@HgI0ZG%s4_=@F+z6weMr*kO zy+Us*-JO1E35C!Wx=y<}IWGbdKf)`6sjl+|YHA&|=1CNfeQ6xVQW3N5${Xn}@~je8 zE-4p+_hso$4=Iv<@GUydU+E0rcY=Y$Ex|y$C?jlVuMl6kS25=w8 zj~CNeIf#~urm!Arv3#~TE_4~S17J`3H&_G_zlY#1;$qRXNnIqw$ z{mgn)_bfh#>{ub~B!isc`rKFJ$!s18H0}%b-VL3Q6O17R*QWLOEr=45L(QD@G=YZGCMOHdJ>o2J!pN5n&}rwIQ;~8ZXM0lv=Y;dX z@ut-n;XxYgRCB6RZ2INgcLvizCl>8=t~wntt0T@WXPuLb%25lN>Rh9D&PZxNPn}hc zA7!ATPC~wj5x;TjQ5fDUPnGcAXX=2Kh`Kr7FuMjc8sj!J);Z<$p-)bBszu3ZGIFXq zCE>@2S_SIjY(t!$ItMY1aA&9!L^CKmjdGql7HzGe)AYwlfXL>hXlD$Sah^FdDK%P4 zO$E6Q-A1d?l!Q*;jEXoj2@OT2rpA0)JBetLbJF?ibmq5CIlhV9_S$go*-!8wBpFO59?iK@F#9Z+*cD444O`HIsW zs>VsABbA`bYH1nQ0t#*ev$>zmt%|wcXf!8f;dpWmuVm$c^qV$QCe95W+CZUvAGKA6GGW}6 z-QDBmDG+QP<`zY*fPiV>9A7#4IgWg%Lwt=s;J1>fS}#onFZvfguRnBZEvU@^u+%@) z<0AC3jD`V?3Ue$df#g87Uv$iUiZh7}h8z4TtGTEY0RvBmX2=2`Ia4aSdoBX2+DT0) z>=Xav=o-N5TDEY`EX+aD)J|VM!!G7n#)Nz0)Er6YkoVU6t(%hvSK$q;mgL~kZpQarUxGVH%RcCiG z@azg2N!NguAE^>;0oL55{`|{K0D8;*GpGUZi(v-;LeSx@awMAuC1=h#=)I%{A3CcHWH{> z64f-uTtIDaaBXyzG`Y-t6Ndk~%}>`7^T)}36$?kgVN&&2Dg*NxQ@|qy?9=Q3( zgquJxdWgB|Dh_6gaBXsRaiyfgK$rOD3r5!o=&;}10G~rciD2nk>M#1sLgfS2$ua z9?=YT{$7r{E@?8FU#TUwU4aR&&m>_Cmh9J^=!3w9){$RxR3Ra_= zao+VPO$}+N`3X%t56s-zIj7V06-cS5;c;dec)(e==Cm3J(*jsu0a4z9_1^{5sX$p> z8E6Xnyal%Zirl#hFU`~vt@Hs0JcnvXC`EV#Re^3hMuWgO!po=*wWC0Ac}AM-oN;K* znsZbUUk#wO(19tSwvqscznRQHj{dyOG-Br@#2^~L!Q7f#!K+`P33Lg(8YHLryA;%B zaKx`r9X?6OU8pXU>=5V7KT6L(P-o4!3g1G7_W|oRg0`pzU+o9q{Q~GWh1)l zxDyLKzK-vs%kgO9f3U z7qKE;<)DURmXCF|rzPQ&pfm@>;3 z#Oo{Hg9i!XC2-wvYkLqC_ZiH1 zmX>1$MUL}`n3ESb@eHioS~`yLEaLdk4_)D8GDtqCf_r?Cd?uRPp>~c^FGM8@(OpX6 z`1uLMmpGLiL_2$F5Zd3*HE13xb+B}xN2u8@s1PsL1pfR66K4UpHiN$Zz}=uCih||G z@^gH@%6TIijyatSVvjVHZt{fdi}NJYXsIs0;a4)qBkqT~4n&m>o8gnC)p$awuO z6*Wu>$g-HT=No7bnWC}nZkd5AR_Yh^;M!mb(y4M&PUDUj;&Yz3)!2GRvdV6*s4aD* z`fM9HEZsFq3h63+C0BU7=FmGD2fuOfDN?&gE$O1|wV}+EQo31hXsEuHWxCZ?)dN~o z=5b!VDr?ZzA*rsxHcWTueo1X-NOAq6chT=FpwI`IqwzIN)7ipW#~zZy>Zgk_MzyoF zyd^EEDQqj7#LkwsdQKNhxTdr}b)Ov@GmZ##*~+p-ck4n4#q}xeI6a|BYpq!IH=^)O|DSN>cT`}G{I!yEHKV1Dnw`w#{?XWHDoJgP@G4}sBp;pyw zHVfujPNF3eJ$;cc@&x0)u6yLUtdUl>fc{V1LVA|B%Wo;FlVpteVLjJ#O{px|WC_

vzNeyDBdDxcrX`|y?lhT$s%sbStX^6)RCNs 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 z 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 ^n+ca&&1#MmcqJ8-^*i-gTH%g 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

-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%0Dg3u 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 W1^@s600IC40B-;Q02?d_0001-hyk1c literal 0 HcmV?d00001 From 3ba747f506db3133dbae58c8b197625e95a0a3bb Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Sat, 17 Jun 2017 00:09:01 +0100 Subject: [PATCH 18/99] Edits for Gridded Data guide --- guides/getting_started/4-Gridded_Datasets.ipynb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guides/getting_started/4-Gridded_Datasets.ipynb b/guides/getting_started/4-Gridded_Datasets.ipynb index 4ae97aa0ad..ff65343c21 100644 --- a/guides/getting_started/4-Gridded_Datasets.ipynb +++ b/guides/getting_started/4-Gridded_Datasets.ipynb @@ -130,7 +130,7 @@ "metadata": {}, "outputs": [], "source": [ - "%%opts Image (cmap='viridis')\n", + "%opts Image (cmap='viridis')\n", "ds.to(hv.Image, ['x', 'y']).hist()" ] }, @@ -142,7 +142,7 @@ "\n", "#### Selecting\n", "\n", - "Often when working with multi-dimensional datasets we are only interested in small regions of the parameter space. When working with neural imaging data like this it is very common to focus on regions of interest (ROIs) within the larger image. Here we will fetch some bounding boxes the data we loaded earlier. ROIs are often more complex polygons but for simplicity's sake we will use simple rectangular ROIs." + "Often when working with multi-dimensional datasets we are only interested in small regions of the parameter space. When working with neural imaging data like this it is very common to focus on regions of interest (ROIs) within the larger image. Here we will fetch some bounding boxes the data we loaded earlier. ROIs are often more complex polygons but for simplicity's sake we will use simple rectangular ROIs specified as the left, bottom, right and top coordinate of a bounding box." ] }, { @@ -160,7 +160,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we have 147 ROIs representing bounding boxes around 147 identified neurons in our data. To display them we have wrapped the data in ``Bounds`` elements, which we can overlay on top of our animation. Additionally we will create some ``Text`` elements to label them so we can identify them easily:" + "Here we have 147 ROIs representing bounding boxes around 147 identified neurons in our data. To display them we have wrapped the data in ``Bounds`` elements, which we can overlay on top of our animation. Additionally we will create some ``Text`` elements to label each ROI. Finally we will use the regular Python indexing semantics to select along the Time dimension, which is the first key dimension and can therefore simply with ``ds[21]``. Just like the ``select`` method this indexes and slices by value not the index (which are one and the same here):" ] }, { @@ -169,12 +169,12 @@ "metadata": {}, "outputs": [], "source": [ - "%%opts Image [width=400 height=400 xaxis=None yaxis=None] (cmap='viridis') \n", + "%%opts Image [width=400 height=400 xaxis=None yaxis=None] \n", "%%opts Bounds (color='white') Text (text_color='white' text_font_size='8pt')\n", - "roi_text = hv.NdOverlay({i: hv.Text(roi[0], roi[1], str(i),\n", - " halign='left', valign='bottom')\n", - " for i, roi in enumerate(ROIs)})\n", - "ds.select(Time=21).to(hv.Image, ['x', 'y']) * roi_bounds * roi_text" + "\n", + "opts = dict(halign='left', valign='bottom')\n", + "roi_text = hv.NdOverlay({i: hv.Text(roi[0], roi[1], str(i), **opts) for i, roi in enumerate(ROIs)})\n", + "(ds[21].to(hv.Image, ['x', 'y']) * roi_bounds * roi_text).relabel('Time: 21')" ] }, { From 921d908679b247dfa97f3b261354cbc29629f00c Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Sat, 17 Jun 2017 21:30:05 +0100 Subject: [PATCH 19/99] Copied, cleaned up and renamed tutorials to user guides --- .../user_guide/Applying_Transformations.ipynb | 341 +++++++ .../Building_Composite_Objects.ipynb | 441 ++++++++++ .../user_guide/Continuous_Coordinates.ipynb | 426 +++++++++ guides/user_guide/Custom_Interactivity.ipynb | 433 +++++++++ guides/user_guide/Customizing_Plots.ipynb | 653 ++++++++++++++ guides/user_guide/Deploying_Bokeh_Apps.ipynb | 606 +++++++++++++ .../user_guide/Exporting_and_Archiving.ipynb | 474 ++++++++++ guides/user_guide/Gridded_Datasets.ipynb | 426 +++++++++ .../Indexing_and_Selecting_Data.ipynb | 447 ++++++++++ guides/user_guide/Live_Data.ipynb | 688 +++++++++++++++ guides/user_guide/Plotting_with_Bokeh.ipynb | 621 +++++++++++++ guides/user_guide/Responding_to_Events.ipynb | 833 ++++++++++++++++++ guides/user_guide/Tabular_Datasets.ipynb | 596 +++++++++++++ 13 files changed, 6985 insertions(+) create mode 100644 guides/user_guide/Applying_Transformations.ipynb create mode 100644 guides/user_guide/Building_Composite_Objects.ipynb create mode 100644 guides/user_guide/Continuous_Coordinates.ipynb create mode 100644 guides/user_guide/Custom_Interactivity.ipynb create mode 100644 guides/user_guide/Customizing_Plots.ipynb create mode 100644 guides/user_guide/Deploying_Bokeh_Apps.ipynb create mode 100644 guides/user_guide/Exporting_and_Archiving.ipynb create mode 100644 guides/user_guide/Gridded_Datasets.ipynb create mode 100644 guides/user_guide/Indexing_and_Selecting_Data.ipynb create mode 100644 guides/user_guide/Live_Data.ipynb create mode 100644 guides/user_guide/Plotting_with_Bokeh.ipynb create mode 100644 guides/user_guide/Responding_to_Events.ipynb create mode 100644 guides/user_guide/Tabular_Datasets.ipynb diff --git a/guides/user_guide/Applying_Transformations.ipynb b/guides/user_guide/Applying_Transformations.ipynb new file mode 100644 index 0000000000..cf069526a3 --- /dev/null +++ b/guides/user_guide/Applying_Transformations.ipynb @@ -0,0 +1,341 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import param\n", + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh', 'matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews objects provide a convenient way of wrapping your data along with some metadata for exploration and visualization. For the simplest visualizations, you can simply declare a small collection of element which can then be composed or placed in an appropriate container. As soon as the task becomes more complex, it is natural to write a function of a class to output HoloViews objects.\n", + "\n", + "In this tutorial, the concept of ``Operations`` are introduced which help structure such code, making it possible to write general code that can process HoloViews objects. This enables powerful new ways of specifying HoloViews objects computed from existing data, allowing flexible data processing pipelines to be constructed. Examples of such operations are ``histogram``, ``rolling``, ``datashade`` or ``decimate``, which apply some computation on certain types of Element and return a new Element with the transformed data.\n", + "\n", + "In this Tutorial we will discover how operations work, how to control their parameters and how to chain them. The [Dynamic_Operations](Dynamic_Operations.ipynb) extends what we have learned to demonstrate how operations can be applied lazily by using the ``dynamic`` flag, letting us define deferred processing pipelines that can drive highly complex visualizations and dashboards.\n", + "\n", + "\n", + "## Operations are parameterized\n", + "\n", + "Operations in HoloViews are subclasses of ``Operation``, which transform one Element or ``Overlay`` of Elements by returning a new Element that may be a transformation of the original. All operations are parameterized using the [param](https://ioam.github.io/param/) library which allows easy validation and documentation of the operation arguments. In particular, operations are instances of ``param.ParameterizedFunction`` which allows operations to be used in the same way as normal python functions.\n", + "\n", + "This approach has several advantages, one of which is that we can manipulate the operations parameters at several different levels: at the class-level, at the instance-level or when we call it. Another advantage, is that using parameterizing operations allows them to be inspected just like any other HoloViews object using ``hv.help``. We will now do this for the ``histogram`` operation:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from holoviews.operation import histogram\n", + "hv.help(histogram)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Applying operations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Above we can see a listing of all the parameters of the operation, with their defaults, the expected types and detailed docstrings for each one. The ``histogram`` operation can be applied to any Element and will by default generate a histogram for the first value dimension defined on the object it is applied to. As a simple example we can create an ``BoxWhisker`` Element containing samples from a normal distribution, and then apply the ``histogram`` operation to those samples in two ways: 1) by creating an instance on which we will change the ``num_bins`` and 2) by passing ``bin_range`` directly when calling the operation:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "boxw = hv.BoxWhisker(np.random.randn(10000))\n", + "histop_instance = histogram.instance(num_bins=50)\n", + "\n", + "boxw + histop_instance(boxw).relabel('num_bins=50') + histogram(boxw, bin_range=(0, 3)).relabel('bin_range=(0, 3)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that these two ways of using operations gives us convenient control over how the parameters are applied. An instance allows us to persist some defaults which will be used in all subsequent calls, while passing keyword argument to the operations applies the parameters for just that particular call.\n", + "\n", + "The third way to manipulate parameters is to set them at the class level. If we always want to use ``num_bins=30`` instead of the default of ``num_bins=20`` shown in the help output above, we can simply set ``histogram.num_binds=30``. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operations on containers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Operations`` in HoloViews are applied to individual elements, which means that when you apply an operation to a container object (such as ``NdLayout``, ``GridSpace`` and ``HoloMap``) the operation is once applied per element. For an operation to work, all the elements must be of the same type which means the operation effectively acts to map the operation over all the contained elements. As a simple example we can define a HoloMap of ``BoxWhisker`` Elements by varying the width of the distribution via the ``Sigma`` value and then apply the histogram operation to it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "holomap = hv.HoloMap({(i*0.1+0.1): hv.BoxWhisker(np.random.randn(10000)*(i*0.1+0.1)) for i in range(5)},\n", + " kdims=['Sigma'])\n", + "holomap + histogram(holomap)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see the operation has generated a ``Histogram`` for each value of ``Sigma`` in the ``HoloMap``. In this way we can apply the operation to the entire parameter space defined by a ``HoloMap``, ``GridSpace``, and ``NdLayout``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Combining operations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since operations take a HoloViews object as input and return another HoloViews object we can very easily chain and combine multiple operations to perform complex analyses quickly and easily, while instantly visualizing the output.\n", + "\n", + "In this example we'll work with a timeseries, so we'll define a small function to generate a random, noisy timeseries:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from holoviews.operation import timeseries\n", + "\n", + "def time_series(T = 1, N = 100, mu = 0.1, sigma = 0.1, S0 = 20): \n", + " \"\"\"Parameterized noisy time series\"\"\"\n", + " dt = float(T)/N\n", + " t = np.linspace(0, T, N)\n", + " W = np.random.standard_normal(size = N) \n", + " W = np.cumsum(W)*np.sqrt(dt) # standard brownian motion\n", + " X = (mu-0.5*sigma**2)*t + sigma*W \n", + " S = S0*np.exp(X) # geometric brownian motion\n", + " return S\n", + "\n", + "curve = hv.Curve(time_series(N=1000))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will start applying some operations to this data. HoloViews ships with two ready-to-use timeseries operations: the ``rolling`` operation, which applies a function over a rolling window, and a ``rolling_outlier_std`` operation that computes outlier points in a timeseries by excluding points less than ``sigma`` standard deviation removed from the rolling mean:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter [width=600] (color='black')\n", + "smoothed = curve * timeseries.rolling(curve) * timeseries.rolling_outlier_std(curve)\n", + "smoothed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the next section we will define a custom operation that will compose with the ``smoothed`` operation output above to form a short operation pipeline." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Defining custom operations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now define our own custom ``Operation`` which as you may recall can process either elements and overlays. This means we can define a simple operation that takes our ``smoothed`` overlay and computes a difference between the raw and smoothed curves that it contains. Such a subtraction will give us the residual between the smoothed and unsmoothed ``Curve`` elements, removing long-term trends and leaving the short-term variation.\n", + "\n", + "Defining an operation is very simple. An ``Operation`` subclass should define a ``_process`` method, which simply accepts an ``element`` argument. Optionally we can also define parameters on the operation, which we can access using the ``self.p`` attribute on the operation. In this case we define a ``String`` parameter, which specifies the name of the subtracted value dimension on the returned Element." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from holoviews.operation import Operation\n", + "\n", + "class residual(Operation):\n", + " \"\"\"\n", + " Subtracts two curves from one another.\n", + " \"\"\"\n", + " \n", + " label = param.String(default='Residual', doc=\"\"\"\n", + " Defines the label of the returned Element.\"\"\")\n", + " \n", + " def _process(self, element, key=None):\n", + " # Get first and second Element in overlay\n", + " el1, el2 = element.get(0), element.get(1)\n", + " \n", + " # Get x-values and y-values of curves\n", + " xvals = el1.dimension_values(0)\n", + " yvals = el1.dimension_values(1)\n", + " yvals2 = el2.dimension_values(1)\n", + " \n", + " # Return new Element with subtracted y-values\n", + " # and new label\n", + " return el1.clone((xvals, yvals-yvals2),\n", + " vdims=[self.p.label])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Having defined the residual operation let's try it out right away by applying it to our original and smoothed ``Curve``. We'll place the two objects on top of each other so they can share an x-axis and we can compare them directly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve [width=600] Overlay [xaxis=None]\n", + "(smoothed + residual(smoothed)).cols(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this view we can immediately see that only a very small residual is left when applying this level of smoothing. However we have only tried one particular ``rolling_window`` value, the default value of ``10``. To assess how this parameter affects the residual we can evaluate the operation over a number different parameter settongs, as we will now see in the next section." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluating operation parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When applying an operation there are often various parameters to vary. Using traditional plotting approaches it's often difficult to evaluate them interactively to get an detailed understanding of what they do. Here we will apply the ``rolling`` operations with varying ``rolling_window`` widths and ``window_type``s across a ``HoloMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rolled = hv.HoloMap({(w, str(wt)): timeseries.rolling(curve, rolling_window=w, window_type=wt)\n", + " for w in [10, 25, 50, 100, 200] for wt in [None, 'hamming', 'triang']},\n", + " kdims=['Window', 'Window Type'])\n", + "rolled" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This visualization is already useful as we can compare between various parameter values by moving the slider and trying different window options. However since we can also chain operations we can also easily compute the residual and view the two together. \n", + "\n", + "To do this we simply overlay the ``HoloMap`` of smoothed curves on top of the original curve and pass it to our new ``residual`` function. Then we can combine the smoothed view with the original and see how the smoothing and residual curves vary across parameter values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve [width=600] Overlay [legend_position='top_left']\n", + "(curve(style=dict(color='black')) * rolled + residual(curve * rolled)).cols(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using a few additional lines we have now evaluated the operation over a number of different parameters values, allowing us to process the data with different smoothing parameters. In addition, by interacting with this visualization we can gain a better understanding of the operation parameters as well as gain insights into the structure of the underlying data.\n", + "\n", + "## Benefits of using ``Operation``\n", + "\n", + "Now that we have seen some operations in action we can get some appreciation of what makes them useful. When working with data interactively you often end up applying a lot of ad-hoc data transforms, which provides maximum flexibility but is neither reproducible nor maintainable. Operations allow you to encapsulate analysis code using a well defined interface that is well suited for building complex analysis pipelines:\n", + "\n", + "1. ``Operation`` parameters are well defined by declaring parameters on the class. These parameters can be easily documented and automatically carry out validation on the types and ranges of the inputs. These parameters are documented using ``hv.help``.\n", + "\n", + "2. Both inputs and outputs of an operation are instantly visualizable, because the data **is** the visualization. This means you're not constantly context switching between data processing and visualization --- visualization comes for free as you build your data processing pipeline.\n", + "\n", + "3. Operations understand HoloViews datastructures and can be immediately applied to any appropriate collection of elements, allowing you to evaluate the operation with permutations of parameter values. This flexibility makes it easy to assess the effect of operation parameters and their effect on your data.\n", + "\n", + "4. As we will discover in the [Dynamic Operation Tutorial](Dynamic_Operations.ipynb), operations can be applied lazily to build up complex deferred data-processing pipelines, which can aid your data exploration and drive interactive visualizations and dashboards.\n", + "\n", + "## Other types of operation\n", + "\n", + "As we have seen ``Operation`` is defined at the level of processing HoloViews elements or overlays of elements. In some situations, you may want to compute a new HoloViews datastructure from a number of elements contained in a structure other than an overlay, such as a HoloMap or a Layout. \n", + "\n", + "One such pattern is an operation that accepts and returns a ``HoloMap`` where each of the output element depends on all the data in the input ``HoloMap``. For situations such as these, subclassing ``Operation`` is not appropriate and we recommend defining your own function. These custom operation types won't automatically gain support for lazy pipelines as described in the [Dynamic Operation Tutorial](Dynamic_Operations.ipynb) and how these custom operations are pipelined is left as a design decision for the user. Note that as long as these functions return simple elements or containers, their output can be used by subclasses of ``Operation`` as normal. \n", + "\n", + "What we *do* recommend is that you subclass from ``param.ParameterizedFunction`` so that you can declare well-documented and validated parameters, add a description of your operation with a class level docstring and gain automatic documentation support via ``hv.help``." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/guides/user_guide/Building_Composite_Objects.ipynb b/guides/user_guide/Building_Composite_Objects.ipynb new file mode 100644 index 0000000000..19b2b0aa89 --- /dev/null +++ b/guides/user_guide/Building_Composite_Objects.ipynb @@ -0,0 +1,441 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Containers](Containers.ipynb) tutorial shows examples of each of the container types in HoloViews, and it is useful to look at the description of each type there, as you work through this tutorial. \n", + "\n", + "This tutorial shows you how to combine the various container types, in order to build data structures that can contain all of the data that you want to visualize or analyze, in an extremely flexible way. For instance, you may have a large set of measurements of different types of data (numerical, image, textual notations, etc.) from different experiments done on different days, with various different parameter values associated with each one. HoloViews can store all of this data together, which will allow you to select just the right bit of data \"on the fly\" for any particular analysis or visualization, by indexing, slicing, selecting, and sampling in this data structure.\n", + "\n", + "To illustrate the full functionality provided, we will create an example of the maximally nested object structure currently possible with HoloViews:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(10)\n", + "\n", + "def sine_curve(phase, freq, amp, power, samples=102):\n", + " xvals = [0.1* i for i in range(samples)]\n", + " return [(x, amp*np.sin(phase+freq*x)**power) for x in xvals]\n", + "\n", + "phases = [0, np.pi/2, np.pi, 3*np.pi/2]\n", + "powers = [1,2,3]\n", + "amplitudes = [0.5,0.75, 1.0]\n", + "frequencies = [0.5, 0.75, 1.0, 1.25, 1.5, 1.75]\n", + "\n", + "\n", + "gridspace = hv.GridSpace(kdims=['Amplitude', 'Power'], group='Parameters', label='Sines')\n", + "\n", + "for power in powers:\n", + " for amplitude in amplitudes:\n", + " holomap = hv.HoloMap(kdims=['Frequency'])\n", + " for frequency in frequencies:\n", + " sines = {phase : hv.Curve(sine_curve(phase, frequency, amplitude, power))\n", + " for phase in phases}\n", + " ndoverlay = hv.NdOverlay(sines , kdims=['Phase']).relabel(group='Phases',\n", + " label='Sines', depth=1)\n", + " overlay = ndoverlay * hv.Points([(i,0) for i in range(0,10)], group='Markers', label='Dots')\n", + " holomap[frequency] = overlay\n", + " gridspace[amplitude, power] = holomap\n", + "\n", + "penguins = hv.RGB.load_image('../assets/penguins.png').relabel(group=\"Family\", label=\"Penguin\")\n", + "\n", + "layout = gridspace + penguins" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code produces what looks like a relatively simple animation of two side-by-side figures, but is actually a deeply nested data structure:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The structure of this object can be seen using ``print()``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(layout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Nesting hierarchy " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To help us understand this structure, here is a schematic for us to refer to as we unpack this object, level by level:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Everything that is *displayable* in HoloViews has this same basic structure, although any of the levels can be omitted in simpler cases, and many different Element types (not containers) can be substituted for any other. \n", + "\n", + "Since HoloViews 1.3.0, you are allowed to build data-structures that violate this hierarchy (e.g., you can put ``Layout`` objects into ``HoloMaps``) but the resulting object cannot be displayed. Instead, you will be prompted with a message to call the ``collate`` method. Using the ``collate`` method will allow you to generate the appropriate object that correctly obeys the hierarchy shown above, so that it can be displayed.\n", + "\n", + "As shown in the diagram, there are three different types of container involved:\n", + "\n", + "- Basic Element: elementary HoloViews object containing raw data in an external format like Numpy or pandas.\n", + "- Homogenous container (UniformNdMapping): collections of Elements or other HoloViews components that are all the same type. These are indexed using array-style key access with values sorted along some dimension(s), e.g. ``[0.50]`` or ``[\"a\",7.6]``.\n", + "- Heterogenous container (AttrTree): collections of data of different types, e.g. different types of Element. These are accessed by categories using attributes, e.g. ``.Parameters.Sines``, which does not assume any ordering of a dimension.\n", + "\n", + "We will now go through each of the containers of these different types, at each level." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Layout`` Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Above, we have already viewed the highest level of our data structure as a Layout. Here is the representation of entire Layout object, which reflects all the levels shown in the diagram:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(layout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the examples below, we will unpack this data structure using attribute access (explained in the [Introductory tutorial](Introduction.ipynb)) as well as indexing and slicing (explained in the [Sampling Data tutorial](Sampling_Data.ipynb)).\n", + "\n", + "### ``GridSpace`` Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Elements within a ``Layout``, such as the ``GridSpace`` in this example, are reached via attribute access:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout.Parameters.Sines" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This ``GridSpace`` consists of nine ``HoloMap``s arranged in a two-dimensional space. Let's now select one of these ``HoloMap`` objects, by indexing to retrieve the one at [Amplitude,Power] ``[0.5,1.0]``, i.e. the lowest amplitude and power:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout.Parameters.Sines[0.5, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As shown in the schematic above, a ``HoloMap`` contains many elements with associated keys. In this example, these keys are indexed with a dimension ``Frequency``, which is why the ``Frequency`` varies when you play the animation here." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Overlay`` Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The printed representation showed us that the ``HoloMap`` is composed of ``Overlay`` objects, six in this case (giving six frames to the animation above). Let us access one of these elements, i.e. one frame of the animation above, by indexing to retrieve an ``Overlay`` associated with the key with a ``Frequency`` of *1.0*:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout.Parameters.Sines[0.5, 1][1.0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### NdOverlay Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the representation shows, the ``Overlay`` contains a ``Points`` object and an ``NdOverlay`` object. We can access either one of these using the attribute access supported by ``Overlay``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(layout.Parameters.Sines[0.5, 1][1].Phases.Sines +\n", + " layout.Parameters.Sines[0.5, 1][1].Markers.Dots)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Curve`` Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``NdOverlay`` is so named because it is an overlay of items indexed by dimensions, unlike the regular attribute-access overlay types. In this case it is indexed by ``Phase``, with four values. If we index to select one of these values, we will get an individual ``Curve``, e.g. the one with zero phase:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "l=layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0]\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(l)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Data Level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this point, we have reached the end of the HoloViews objects; below this object is only the raw data as a Numpy array:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0].data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Actually, HoloViews will let you go even further down, accessing data inside the Numpy array using the continuous (floating-point) coordinate systems declared in HoloViews. E.g. here we can ask for a single datapoint, such as the value at x=5.2:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Indexing into 1D Elements like Curve and higher-dimensional but regularly gridded Elements like Image, Surface, and HeatMap will return the nearest defined value (i.e., the results \"snap\" to the nearest data item):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.23], layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.27]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For other Element types, such as Points, snapping is not supported and thus indexing down into the .data array will be less useful, because it will only succeed for a perfect floating-point match on the key dimensions. In those cases, you can still use all of the access methods provided by the numpy array itself, via ``.data``, e.g. ``.data[52]``, but note that such native operations force you to use the native indexing scheme of the array, i.e. integer access starting at zero, not the more convenient and semantically meaningful [continuous coordinate systems](Continuous_Coordinates.ipynb) we provide through HoloViews." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Indexing using ``.select``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The curve displayed immediately above shows the final, deepest Element access possible in HoloViews for this object:\n", + "\n", + "```python\n", + "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0]\n", + "```\n", + "This is the curve with an amplitude of *0.5*, raised to a power of *1.0* with frequency of *1.0* and *0* phase. These are all the numbers, in order, used in the access shown above.\n", + "\n", + "The ``.select`` method is a more explicit way to use key access, with both of these equivalent to each other:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "o1 = layout.Parameters.Sines.select(Amplitude=0.5, Power=1.0).select(Frequency=1.0)\n", + "o2 = layout.Parameters.Sines.select(Amplitude=0.5, Power=1.0, Frequency=1.0)\n", + "o1 + o2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second form demonstrates HoloViews' **deep indexing** feature, which allows indexes to cross nested container boundaries. The above is as far as we can index before reaching a heterogeneous type (the ``Overlay``), where we need to use attribute access. Here is the more explicit method of indexing down to a curve, using ``.select`` to specify dimensions by name instead of bracket-based indexing by position:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout.Parameters.Sines.select(Amplitude=0.5,Power=1.0, \n", + " Frequency=1.0).Phases.Sines.select(Phase=0.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, HoloViews lets you compose objects of heterogenous types, and objects covering many different numerical or other dimensions, laying them out spatially, temporally, or overlaid. The resulting data structures are complex, but they are composed of simple elements with well-defined interactions, making it feasible to express nearly any relationship that will characterize your data. In practice, you will probably not need this many levels, but given this complete example, you should be able to construct an appropriate organization for whatever type of data that you do want to organize or visualize. \n", + "\n", + "As emphasized above, it is not possible to combine these objects in other orderings. Of course, any ``Element`` can be substituted for any other, which doesn't change the structure. But you cannot e.g. display an ``Overlay`` or ``HoloMap`` of ``Layout`` objects. Confusingly, the objects may *act* as if you have these arrangements. For instance, a ``Layout`` of ``HoloMap`` objects will be animated, like ``HoloMap`` objects, but only because of the extra dimension(s) provided by the enclosed ``HoloMap`` objects, not because the ``Layout`` itself has data along those dimensions. Similarly, you cannot have a ``Layout`` of ``Layout`` objects, even though it looks like you can. E.g. the ``+`` operator on two ``Layout`` objects will not create a ``Layout`` of ``Layout`` objects; it just creates a new ``Layout`` object containing the data from both of the other objects. Similarly for the ``Overlay`` of ``Overlay`` objects using ``*``; only a single combined ``Overlay`` is returned.\n", + "\n", + "If you are confused about how all of this works in practice, you can use the examples in the tutorials to guide you, especially the [Exploring Data](Exploring_Data.ipynb) tutorial. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Continuous_Coordinates.ipynb b/guides/user_guide/Continuous_Coordinates.ipynb new file mode 100644 index 0000000000..8f4b527b1b --- /dev/null +++ b/guides/user_guide/Continuous_Coordinates.ipynb @@ -0,0 +1,426 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews is designed to work with scientific and engineering data, which is often in the form of discrete samples from an underlying continuous system. Imaging data is one clear example: measurements taken at a regular interval over a grid covering a two-dimensional area. Although the measurements are discrete, they approximate a continuous distribution, and HoloViews provides extensive support for working naturally with data of this type." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2D Continuous spaces" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial we will show the support provided by HoloViews for working with two-dimensional regularly sampled grid data like images, and then in subsequent sections discuss how HoloViews supports one-dimensional, higher-dimensional, and irregularly sampled data with continuous coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension()\n", + "\n", + "np.set_printoptions(precision=2, linewidth=80)\n", + "%opts HeatMap (cmap=\"hot\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, let's consider: \n", + "\n", + "|||\n", + "|:--------------:|:----------------|\n", + "| **``f(x,y)``** | a simple function that accepts a location in a 2D plane specified in millimeters (mm) |\n", + "| **``region``** | a 1mm×1mm square region of this 2D plane, centered at the origin, and |\n", + "| **``coords``** | a function returning a square (s×s) grid of (x,y) coordinates regularly sampling the region in the given bounds, at the centers of each grid cell |\n", + "||||\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def f(x,y): \n", + " return x+y/3.1\n", + " \n", + "region=(-0.5,-0.5,0.5,0.5)\n", + "\n", + "def coords(bounds,samples):\n", + " l,b,r,t=bounds\n", + " hc=0.5/samples\n", + " return np.meshgrid(np.linspace(l+hc,r-hc,samples),\n", + " np.linspace(b+hc,t-hc,samples))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's build a Numpy array regularly sampling this function at a density of 5 samples per mm: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "f5=f(*coords(region,5))\n", + "f5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can visualize this array (and thus the function ``f``) either using a ``Raster``, which uses the array's own integer-based coordinate system (which we will call \"array\" coordinates), or an ``Image``, which uses a continuous coordinate system, or as a ``HeatMap`` labelling each value explicitly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "r5 = hv.Raster(f5, label=\"R5\")\n", + "i5 = hv.Image( f5, label=\"I5\", bounds=region)\n", + "h5 = hv.HeatMap([(x, y, f5[4-y,x]) for x in range(0,5) for y in range(0,5)], label=\"H5\")\n", + "r5+i5+h5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both the ``Raster`` and ``Image`` ``Element`` types accept the same input data and show the same arrangement of colors, but a visualization of the ``Raster`` type reveals the underlying raw array indexing, while the ``Image`` type has been labelled with the coordinate system from which we know the data has been sampled. All ``Image`` operations work with this continuous coordinate system instead, while the corresponding operations on a ``Raster`` use raw array indexing.\n", + "\n", + "For instance, all five of these indexing operations refer to the same element of the underlying Numpy array, i.e. the second item in the first row:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\"r5[0,1]=%0.2f r5.data[0,1]=%0.2f i5[-0.2,0.4]=%0.2f i5[-0.24,0.37]=%0.2f i5.data[0,1]=%0.2f\" % \\\n", + "(r5[1,0], r5.data[0,1], i5[-0.2,0.4], i5[-0.24,0.37], i5.data[0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see that the ``Raster`` and the underlying ``.data`` elements both use Numpy's raw integer indexing, while the ``Image`` uses floating-point values that are then mapped onto the appropriate array element.\n", + "\n", + "This diagram should help show the relationships between the ``Raster`` coordinate system in the plot (which ranges from 0 at the top edge to 5 at the bottom), the underlying raw Numpy integer array indexes (labelling each dot in the **Array coordinates** figure), and the underlying **Continuous coordinates**:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Array coordinates
Continuous coordinates
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Importantly, although we used a 5×5 array in this example, we could substitute a much larger array with the same continuous coordinate system if we wished, without having to change any of our continuous indexes -- they will still point to the correct location in the continuous space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "f10=f(*coords(region,10))\n", + "f10" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "r10 = hv.Raster(f10, label=\"R10\")\n", + "i10 = hv.Image(f10, label=\"I10\", bounds=region)\n", + "r10+i10" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The image now has higher resolution, but still visualizes the same underlying continuous function, now evaluated at 100 grid positions instead of 25:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Array coordinates
Continuous coordinates
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Indexing the exact same coordinates as above now gets very different results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\"r10[0,1]=%0.2f r10.data[0,1]=%0.2f i10[-0.2,0.4]=%0.2f i10[-0.24,0.37]=%0.2f i10.data[0,1]=%0.2f\" % \\\n", + "(r10[1,0], r10.data[0,1], i10[-0.2,0.4], i10[-0.24,0.37], i10.data[0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The array-based indexes used by ``Raster`` and the Numpy array in ``.data`` still return the second item in the first row of the array, but this array element now corresponds to location (-0.35,0.4) in the continuous function, and so the value is different. These indexes thus do *not* refer to the same location in continuous space as they did for the other array density, because raw Numpy-based indexing is *not* independent of density or resolution.\n", + "\n", + "Luckily, the two continuous coordinates still return very similar values to what they did before, since they always return the value of the array element corresponding to the closest location in continuous space. They now return elements just above and to the right, or just below and to the left, of the earlier location, because the array now has a higher resolution with elements centered at different locations. \n", + "\n", + "Indexing in continuous coordinates always returns the value closest to the requested value, given the available resolution. Note that in the case of coordinates truly on the boundary between array elements (as for -0.2,0.4), the bounds of each array cell are taken as right exclusive and upper exclusive, and so (-0.2,0.4) returns array index (3,0). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Slicing in 2D" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to indexing (looking up a value), slicing (selecting a region) works as expected in continuous space (see the [Sampling Data](Sampling_Data) tutorial for more explanation). For instance, we can ask for a slice from (-0.275,-0.0125) to (0.025,0.2885) in continuous coordinates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sl10=i10[-0.275:0.025,-0.0125:0.2885]\n", + "sl10.data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sl10" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This slice has selected those array elements whose centers are contained within the specified continuous space. To do this, the continuous coordinates are first converted by HoloViews into the floating-point range (5.125,2.250) (2.125,5.250) of array coordinates, and all those elements whose centers are in that range are selected:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Array coordinates
Continuous coordinates
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Slicing also works for ``Raster`` elements, but it results in an object that always reflects the contents of the underlying Numpy array (i.e., always with the upper left corner labelled 0,0):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "r5[0:3,1:3] + r5[0:3,1:2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hopefully these examples make it clear that if you are using data that is sampled from some underlying continuous system, you should use the continuous coordinates offered by HoloViews objects like ``Image`` so that your programs can be independent of the resolution or sampling density of that data, and so that your axes and indexes can be expressed naturally, using the actual units of the underlying continuous space. The data will still be stored in the same Numpy array, but now you can treat it consistently like the approximation to continuous values that it is." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1D and nD Continuous coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All of the above examples use the common case for visualizations of a two-dimensional regularly gridded continuous space, which is implemented in ``holoviews.core.sheetcoords.SheetCoordinateSystem``. \n", + "\n", + "Similar continuous coordinates and slicing are also supported for ``Chart`` elements, such as ``Curve``s, but using a single index and allowing arbitrary irregular spacing, implemented in ``holoviews.elements.chart.Chart``. \n", + "\n", + "They also work the same for the n-dimensional coordinates and slicing supported by the [container](Containers) types ``HoloMap``, ``NdLayout``, and ``NdOverlay``, implemented in ``holoviews.core.dimension.Dimensioned`` and again allowing arbitrary irregular spacing. \n", + "\n", + "Together, these powerful continuous-coordinate indexing and slicing operations allow you to work naturally and simply in the full *n*-dimensional space that characterizes your data and parameter values." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sampling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above examples focus on indexing and slicing, but as described in the [Sampling Data](Sampling_Data) tutorial there is another related operation supported for continuous spaces, called sampling. Sampling is similar to indexing and slicing, in that all of them can reduce the dimensionality of your data, but sampling is implemented in a general way that applies for any of the 1D, 2D, or nD datatypes. For instance, if we take our 10×10 array from above, we can ask for the value at a given location, which will come back as a ``Table``, i.e. a dictionary with one (key,value) pair:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "e10=i10.sample(x=-0.275, y=0.2885)\n", + "e10" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, if we ask for the value of a given *y* location in continuous space, we will get a ``Curve`` with the array row closest to that *y* value in the ``Image`` 2D array returned as arrays of $x$ values and the corresponding *z* value from the image:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "r10=i10.sample(y=0.2885)\n", + "r10" + ] + }, + { + "cell_type": "markdown", + "metadata": { + }, + "source": [ + "The same sampling syntax can be used on HoloViews objects with any number of continuous-coordinate dimensions, in each case returning a HoloViews object of the correct dimensionality. This support for working in continuous spaces makes it much more natural to work with HoloViews objects than directly with the underlying raw Numpy arrays, but the raw data always remains available when needed." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/guides/user_guide/Custom_Interactivity.ipynb b/guides/user_guide/Custom_Interactivity.ipynb new file mode 100644 index 0000000000..08266aadc4 --- /dev/null +++ b/guides/user_guide/Custom_Interactivity.ipynb @@ -0,0 +1,433 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import param\n", + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh', 'matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In previous notebooks we discovered how the [DynamicMap](Dynamic_Map.ipynb) class allows us to declare objects in a lazy way to enable exploratory analysis of large parameter spaces. In the [Streams](Streams.ipynb) tutorial we learned how to interactively push updates to existing plots by declaring Streams on a DynamicMap. In this tutorial we will extend the idea to so called *linked* Streams, which allows complex interactions to be declared by specifying which events should be exposed when a plot is interacted with. By passing information about live interactions to a simple Python based callback, you will be able to build richer, even more interactive visualizations that enable seemless data exploration.\n", + "\n", + "Some of the possibilities this opens up include:\n", + "\n", + "* Dynamically aggregating datasets of billions of datapoints depending on the plot axis ranges using the [datashader](https://anaconda.org/jbednar/holoviews_datashader/notebook) library.\n", + "* Responding to ``Tap`` and ``DoubleTap`` events to reveal more information in subplots.\n", + "* Computing statistics in response to selections applied with box- and lasso-select tools.\n", + "\n", + "Currently only the bokeh backend for HoloViews supports the linked streams system but the principles used should extend to any backend can define callbacks that fire when a user zooms or pans or interacts with a plot.\n", + "\n", + "
To use and visualize DynamicMap or Stream objects you need to be running a live Jupyter server.
This tutorial assumes that it will be run in a live notebook environment.
\n", + "When viewed statically, DynamicMaps will only show the first available Element,
\n", + "\n", + "## Available Linked Streams\n", + "\n", + "There are a huge number of ways one might want to interact with a plot. The HoloViews streams module aims to expose many of the most common interactions you might want want to employ, while also supporting extensibility via custom linked Streams. \n", + "\n", + "Here is the full list of linked Stream that are all descendents of the ``LinkedStream`` baseclass:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from holoviews import streams\n", + "listing = ', '.join(sorted([str(s.name) for s in param.descendents(streams.LinkedStream)]))\n", + "print('The linked stream classes supported by HoloViews are:\\n\\n{listing}'.format(listing=listing))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, most of these events are about specific interactions with a plot such as the current axis ranges (the ``RangeX``, ``RangeY`` and ``RangeXY`` streams), the mouse pointer position (the ``PointerX``, ``PointerY`` and ``PointerXY`` streams), click or tap positions (``Tap``, ``DoubleTap``). Additionally there a streams to access plotting selections made using box- and lasso-select tools (``Selection1D``), the plot size (``PlotSize``) and the ``Bounds`` of a selection. \n", + "\n", + "Each of these linked Stream types has a corresponding backend specific ``Callback``, which defines which plot attributes or events to link the stream to and triggers events on the ``Stream`` in response to changes on the plot. Defining custom ``Stream`` and ``Callback`` types will be covered in the [Stream Callback Tutorial](Stream_Callbacks.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linking streams to plots\n", + "\n", + "At the end of the [Streams](./Streams.ipynb) tutorial we discovered that streams have ``subscribers``, which allow defining user defined callbacks on events, but also allows HoloViews to install subscribers that allow plots to respond to Stream updates. Linked streams add another concept on top of ``subscribers``, namely the Stream ``source``.\n", + "\n", + "The source of a linked stream defines which plot element to receive events from. Any plot containing the ``source`` object will be attached to the corresponding linked stream and will send event values in response to the appropriate interactions.\n", + "\n", + "Let's start with a simple example. We will declare one of the linked Streams from above, the ``PointerXY`` stream. This stream sends the current mouse position in plot axes coordinates, which may be continuous or categorical. The first thing to note is that we haven't specified a ``source`` which means it uses the default value of ``None``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pointer = streams.PointerXY()\n", + "print(pointer.source)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before continuing, we can check the stream parameters that are made available to user callbacks from a given stream instance by looking at its contents:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('The %s stream has contents %r' % (pointer, pointer.contents))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Automatic linking" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A stream instance is automatically linked to the first ``DynamicMap`` we pass it to, which we can confirm by inspecting the stream's ``source`` attribute after supplying it to a ``DynamicMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pointer_dmap = hv.DynamicMap(lambda x, y: hv.Points([(x, y)]), streams=[pointer])\n", + "print pointer.source is pointer_dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``DynamicMap`` we defined above simply defines returns a ``Points`` object composed of a single point that marks the current ``x`` and ``y`` position supplied by our ``PointerXY`` stream. The stream is linked whenever this ``DynamicMap`` object is displayed as it is the stream source:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pointer_dmap(style={\"Points\": dict(size=10)})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you hover over the plot canvas above you can see that the point tracks the current mouse position. We can also inspect the last cursor position by examining the stream contents:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pointer.contents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the [Streams](Streams.ipynb) tutorial, we introduced an integral example that would work more intuitively with linked streams. Here it is again with the ``limit`` value controlled by the ``PointerX`` linked stream:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Area (color='#fff8dc' line_width=2) Curve (color='black') VLine (color='red')\n", + "xs = np.linspace(-3, 3, 400)\n", + "\n", + "def function(xs, time):\n", + " \"Some time varying function\"\n", + " return np.exp(np.sin(xs+np.pi/time))\n", + "\n", + "def integral(limit, time):\n", + " limit = -3 if limit is None else np.clip(limit,-3,3)\n", + " curve = hv.Curve((xs, function(xs, time)))[limit:]\n", + " area = hv.Area((xs, function(xs, time)))[:limit]\n", + " summed = area.dimension_values('y').sum() * 0.015 # Numeric approximation\n", + " return (area * curve * hv.VLine(limit) * hv.Text(limit + 0.8, 2.0, '%.2f' % summed))\n", + "\n", + "hv.DynamicMap(integral, streams=[streams.Stream.define('Time', time=1.0)(), \n", + " streams.PointerX().rename(x='limit')])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We only needed to import and use ``PointerX`` stream and rename the ``x`` parameter that tracks the cursor position to 'limit' so that it maps to the corresponding argument. Otherwise, the example only required bokeh specific style options to match the matplotlib example as closely as possible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Explicit linking\n", + "\n", + "In the example above, we took advantage of the fact that a ``DynamicMap`` automatically becomes the stream source if a source isn't explicitly specified. If we want to link the stream instance to a different object we can specify our our source explicitly. Here we will create a 2D ``Image`` of sine gratings, declare that is then declared as the ``source`` of the ``PointerXY`` stream. This pointer stream is then used to generate a single point that tracks the cursor when hovering over the image:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "xvals = np.linspace(0,4,202)\n", + "ys,xs = np.meshgrid(xvals, -xvals[::-1])\n", + "img = hv.Image(np.sin(((ys)**3)*xs))\n", + "\n", + "pointer = streams.PointerXY(source=img)\n", + "pointer_dmap = hv.DynamicMap(lambda x, y: hv.Points([(x, y)]), streams=[pointer])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now if we display a ``Layout`` consisting of the ``Image`` acting as the source together with the ``DynamicMap``, the point shown on the right tracks the cursor position when hovering over the image on the left:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img + pointer_dmap(style={\"Points\": dict(size=10)})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This will even work across different cells. If we use this particular stream instance in another ``DynamicMap`` and display it, this new visualization will also be supplied with the cursor position when hovering over the image. \n", + "\n", + "To illustrate this, we will now use the pointer ``x`` and ``y`` position to generate cross-sections of the image at the cursor position on the ``Image``, making use of the ``Image.sample`` method. Note the use of ``np.clip`` to make sure the cross-section is well defined when the cusor goes out of bounds:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve {+framewise}\n", + "hv.DynamicMap(lambda x, y: img.sample(y=np.clip(y,-.49,.49)), streams=[pointer]) +\\\n", + "hv.DynamicMap(lambda x, y: img.sample(x=np.clip(x,-.49,.49)), streams=[pointer])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now when you hover over the ``Image`` above, you will see the cross-sections update while the point position to the right of the ``Image`` simultaneously updates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Unlinking objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sometimes we just want to display an object designated as a source without linking it to the stream. If the object is not a ``DynamicMap``, like the ``Image`` we designated as a ``source`` above, we can make a copy of the object using the ``clone`` method. We can do the same with ``DynamicMap`` though we just need to supply ``link_inputs=False`` as an extra argument.\n", + "\n", + "Here we will create a ``DynamicMap`` that draws a cross-hair at the cursor position:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pointer = streams.PointerXY(x=0, y=0)\n", + "cross_dmap = hv.DynamicMap(lambda x, y: (hv.VLine(x) * hv.HLine(y)), streams=[pointer])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will add two copies of the ``cross_dmap`` into a Layout but the subplot on the right will not be linking the inputs. Try hovering over the two subplots and observe what happens:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "cross_dmap + cross_dmap.clone(link_inputs=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice how hovering over the left plot updates the crosshair position on both subplots, while hovering over the right subplot has no effect." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transient linked streams" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the basic [Streams](Streams.ipynb) tutorial we saw that stream parameters can be updated and those values are then passed to the callback. This model works well for many different types of streams that have a well-defined values at all times.\n", + "\n", + "This approach is not suitable for certain events which only have a well defined value at a particular point in time. For instance, when you hover your mouse over a plot, the hover position always has a well-defined value but the click position is only defined when a click occurs (if it occurs).\n", + "\n", + "This latter case are what are called 'transient' streams. These streams are supplied new values only when they occur and fall back to a default value at all other times. This default value is typically ``None`` to indicate that the event is not occuring and therefore has no data.\n", + "\n", + "\n", + "Transient streams are particularly useful when you are subscribed to multiple streams, some of which are only occasionally triggered. A good example are the ``Tap`` and ``DoubleTap`` streams; while you sometimes just want to know the last tapped position, we can only tell the two events apart if their values are ``None`` when not active. \n", + "\n", + "We'll start by declaring a ``Tap`` and a ``DoubleTap`` stream as ``transient``. Since both streams supply 'x' and 'y' parameters, we will rename the ``DoubleTap`` parameters to 'x2' and 'y2'." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "tap = streams.Tap(transient=True)\n", + "double_tap = streams.DoubleTap(rename={'x': 'x2', 'y': 'y2'}, transient=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we define a list of taps we can append to and a function that performs that accumulates the tap and double tap coordinate along with the number of taps, returning a ``Points`` Element of the tap positions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "taps = []\n", + "\n", + "def record_taps(x, y, x2, y2):\n", + " if None not in [x,y]:\n", + " taps.append((x, y, 1))\n", + " elif None not in [x2, y2]:\n", + " taps.append((x2, y2, 2))\n", + " return hv.Points(taps, vdims=['Taps'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally we can create a ``DynamicMap`` from our callback and attach the streams. We also apply some styling so the points are colored depending on the number of taps." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%%opts Points [color_index='Taps' tools=['hover']] (size=10 cmap='Set1')\n", + "hv.DynamicMap(record_taps, streams=[tap, double_tap])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now try single- and double-tapping within the plot area, each time you tap a new point is appended to the list and displayed. Single taps show up in red and double taps show up in grey. We can also inspect the list of taps directly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "taps" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Customizing_Plots.ipynb b/guides/user_guide/Customizing_Plots.ipynb new file mode 100644 index 0000000000..ca41db3071 --- /dev/null +++ b/guides/user_guide/Customizing_Plots.ipynb @@ -0,0 +1,653 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews is designed to be both highly customizable, allowing you to control how your visualizations appear, but also to enforce a strong separation between your data (with any semantically associated metadata, like type, dimension names, and description) and all options related purely to visualization. This separation allows HoloViews objects to be generated easily by external programs, without giving them a dependency on any plotting or windowing libraries. It also helps make it completely clear which parts of your code deal with the actual data, and which are just about displaying it nicely, which becomes very important for complex visualizations that become more complicated than your data itself.\n", + "\n", + "To achieve this separation, HoloViews stores visualization options independently from your data, and applies the options only when rendering the data to a file on disk, a GUI window, or an IPython notebook cell.\n", + "\n", + "This tutorial gives an overview of the different types of options available, how to find out more about them, and how to set them in both regular Python and using the IPython magic interface that is shown elsewhere in the tutorials." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example objects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " First, we'll create some HoloViews data objects ready to visualize:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension()\n", + "\n", + "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", + "image = hv.Image(np.sin(x**2+y**2), group=\"Function\", label=\"Sine\") \n", + "\n", + "coords = [(0.1*i, np.sin(0.1*i)) for i in range(100)]\n", + "curve = hv.Curve(coords)\n", + "\n", + "curves = {phase: hv.Curve([(0.1*i, np.sin(phase+0.1*i)) for i in range(100)])\n", + " for phase in [0, np.pi/2, np.pi, np.pi*3/2]}\n", + "\n", + "waves = hv.HoloMap(curves)\n", + "\n", + "layout = image + curve" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rendering and saving objects from Python " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To illustrate how to do plotting independently of IPython, we'll generate and save a plot directly to disk. First, let's create a ``renderer`` object that will render our files to SVG (for static figures) or GIF (for animations):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "renderer = hv.Store.renderers['matplotlib'].instance(fig='svg', holomap='gif')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We could instead have used the default ``Store.renderer``, but that would have been PNG format. Using this renderer, we can save any HoloViews object as SVG or GIF:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "renderer.save(layout, 'example_I')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's it! The renderer builds the figure in matplotlib, renders it to SVG, and saves that to \"example_I.svg\" on disk. Everything up to this point would have worked the same in IPython or in regular Python, even with no display available. But since we're in IPython Notebook at the moment, we can check whether the exporting worked, by loading the file back into the notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import SVG\n", + "SVG(filename='example_I.svg')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use this workflow for generating HoloViews visualizations directly from Python, perhaps as a part of a set of scripts that you run automatically, e.g. to put your results up on a web server as soon as data is generated. But so far, this plot just uses all the default options, with no customization. How can we change how the plot will appear when we render it?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## HoloViews visualization options" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews provides three categories of visualization options that can be set by the user. In this section we will first describe the different kinds of options, then later sections show you how to list the supported options of each type for a given HoloViews object or class, and how to change them in Python or IPython." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### ``style`` options:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``style`` options are passed directly to the underlying rendering backend that actually draws the plots, allowing you to control the details of how it behaves. The default backend is matplotlib, but there are other backends either using matplotlib's options (e.g. ``mpld3``), or their own sets of options (e.g. [``bokeh``](Bokeh_Backend) ).\n", + "\n", + "For whichever backend has been selected, HoloViews can tell you which options are supported, but you will need to see the plotting library's own documentation (e.g. [matplotlib](http://matplotlib.org/contents.html), [bokeh](http://bokeh.pydata.org)) for the details of their use.\n", + "\n", + "HoloViews has been designed to be easily extensible to additional backends in the future, such as [Plotly](https://github.com/ioam/holoviews/pull/398), Cairo, VTK, or D3.js, and if one of those backends were selected then the supported style options would differ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### ``plot`` options:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each of the various HoloViews plotting classes declares various [Parameters](http://ioam.github.io/param) that control how HoloViews builds the visualization for that type of object, such as plot sizes and labels. HoloViews uses these options internally; they are not simply passed to the underlying backend. HoloViews documents these options fully in its online help and in the [Reference Manual](http://holoviews.org/Reference_Manual). These options may vary for different backends in some cases, depending on the support available both in that library and in the HoloViews interface to it, but we try to keep any options that are meaningful for a variety of backends the same for all of them." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### ``norm`` options:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``norm`` options are a special type of plot option that are applied orthogonally to the above two types, to control normalization. Normalization refers to adjusting the properties of one plot relative to those of another. For instance, two images normalized together would appear with relative brightness levels, with the brightest image using the full range black to white, while the other image is scaled proportionally. Two images normalized independently would both cover the full range from black to white. Similarly, two axis ranges normalized together will expand to fit the largest range of either axis, while those normalized separately would cover different ranges.\n", + "\n", + "There are currently only two ``norm`` options supported, ``axiswise`` and ``framewise``, but they can be applied to any of the various object types in HoloViews to specify a huge range of different normalization options.\n", + "\n", + "For a given category or group of HoloViews objects, if ``axiswise`` is True, normalization will be computed independently for all items in that category that have their own axes, such as different ``Image`` plots or ``Curve`` plots. If ``axiswise`` is False, all such objects are normalized together.\n", + "\n", + "For a given category or group of HoloViews objects, if ``framewise`` is True, normalization of any ``HoloMap`` objects included is done independently per frame rendered -- each frame will appear as it would if it were extracted from the ``HoloMap`` and plotted separately. If ``framewise`` is False (the default), all frames in a given ``HoloMap`` are normalized together, so that you can see strength differences over the course of the animation.\n", + "\n", + "As described below, these options can be controlled precisely and in any combination to make sure that HoloViews displays the data of most interest, ignoring irrelevant differences and highlighting important ones." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Finding out which options are available for an object" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the ``norm`` options, no further online documentation is provided, because all of the various visualization classes support only the two options described above. But there are a variety of ways to get the list of supported ``style`` options and detailed documentation for the ``plot`` options for a given component.\n", + "\n", + "First, for any Python class or object in HoloViews, you can use ``holoviews.help(``*object-or-class*``, visualization=False)`` to find out about its parameters. For instance, these parameters are available for our ``Image`` object, shown with their current value (or default value, for a class), data type, whether it can be changed by the user (if it is constant, read-only, etc.), and bounds if any:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.help(image, visualization=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This information can be useful, but we have explicitly suppressed information regarding the visualization parameters -- these all report metadata about your data, not about anything to do with plotting directly. That's because the normal HoloViews components have nothing to do with plotting; they are just simple containers for your data and a small amount of metadata.\n", + "\n", + "Instead, the plotting implementation and its associated parameters are kept in completely separate Python classes and objects. To find out about *visualizing* a HoloViews component like an ``Image``, you can simply use the help command ``holoviews.help(``*object-or-class*``)`` that looks up the code that plots that particular type of component, and then reports the ``style`` and ``plot`` options available for it.\n", + "\n", + "For our ``image`` example, ``holoviews.help`` first finds that ``image`` is of type ``Image``, then looks in its database to find that ``Image`` visualization is handled by the ``RasterPlot`` class (which users otherwise rarely need to access directly). ``holoviews.help`` then shows information about what objects are available to customize (either the object itself, or the items inside a container), followed by a brief list of ``style`` options supported by a ``RasterPlot``, and a list of ``plot`` options (which are all the [parameters](http://ioam.github.io/param) of a ``RasterPlot``). As this list of ``plot`` options is very long by default, here is an example that uses the ``pattern`` argument to limit the results to the options referencing the string ``'bounds'``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "hv.help(image, pattern='bounds')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "The pattern option is particularly useful in conjunction with ``recursive=True`` which helps when searching for information across the different levels of a composite object. Note that the ``pattern`` argument supports Python's regular expression syntax and may also be used together with the ``visualization=False`` option." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Supported ``style`` options" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, HoloViews lists the currently allowed ``style`` options, but provides no further documentation because these settings are implemented by matplotlib and described at the matplotlib site. Note that matplotlib actually accepts a huge range of additional options, but they are not listed as being allowed because those options are not normally meaningful for this plot type. But if you know of a specific matplotlib option not on the list and really want to use it, you can add it manually to the list of supported options using ``Store.add_style_opts(``*holoviews-component-class*``, ['``*matplotlib-option* ...``'])``. For instance, if you want to use the ``filternorm`` parameter with this image object, you would run ``Store.add_style_opts(Image, ['filternorm'])``. This will add the new option to the corresponding plotting class ``RasterPlot``, ready for use just like any other style option: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Store.add_style_opts(hv.Image, ['filternorm'])\n", + "# To check that it worked:\n", + "RasterPlot = renderer.plotting_class(hv.Image)\n", + "print(RasterPlot.style_opts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Changing ``plot`` options at the class level" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Any [parameter](http://ioam.github.io/param) in HoloViews can be set on an object or on the class of the object, so any of the above plot options can be set like: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "RasterPlot.colorbar=True\n", + "RasterPlot.set_param(show_title=False,show_frame=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here ``.set_param()`` allows you to set multiple parameters conveniently, but it works the same as the single-parameter ``.colorbar`` example above it. Setting these values at the class level affects all previously created and to-be-created plotting objects of this type, unless specifically overridden via ``Store`` as described below.\n", + "\n", + "Note that if you look at the source code for a particular plotting class, you will only see *some* of the parameters it supports. The rest, such as ``show_frame`` above, are defined in a superclass of the given object. The [Reference Manual](http://holoviews.org/Reference_Manual) shows the complete list of parameters available for any given class (those labeled ``param`` in the manual), but it can be an overwhelming list since it includes all superclasses, all the metadata about each parameter, etc. The ``holoviews.help`` command with ``visualization=True`` not only provides a much more concise listing, it can will also provide ``style`` options not available in the Reference Manual, by using the database to determine which plotting class is associated with this object.\n", + "\n", + "Because setting these parameters at the class level does not provide much control over individual plots, HoloViews provides a much more flexible system using the ``OptionTree`` mechanisms described below, which can override these class defaults according to the more specific HoloViews object type, ``group``, and ``label`` attributes. \n", + "\n", + "The rest of the sections show how to change any of the above options, once you have found the right one using the suitable call to ``holoviews.help``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Controlling options from Python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once you know the name of the option you want to change, and the value you want to change it to, there are a number of ways to customize your plot. \n", + "\n", + "For the Python output to SVG example above, you can specify the options for a given type using keywords supplying a dictionary for any of the above option categories. You can see that the colormap changes when we supply that ``style`` option and render a new SVG:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "renderer.save(layout, 'example_II', style=dict(Image={'cmap':'Blues'}),\n", + " plot= dict(Image={'yaxis':None}))\n", + "SVG(filename='example_II.svg')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, the SVG call is simply to display it here in the notebook; the actual image is saved on disk and then loaded back in here for display. \n", + "\n", + "You can see that the image now has a colorbar, because we set ``colorbar=True`` on the ``RasterPlot`` class, that it has become blue, because we set the matplotlib ``cmap`` style option in the ``renderer.save`` call, and that the *y* axis has been disabled, because we set the ``plot`` option ``yaxis`` to ``None`` (which is normally ``'left'`` by default, as you can see in the default value for ``RasterPlot``'s parameter ``yaxis`` above). Hopefully you can see that once you know the option value you want to use, it can be provided easily.\n", + "\n", + "You can also create a whole set of options separately, perhaps holding a large collection of preferred values, and apply it whenever you wish to save:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "options={'Image.Function.Sine': {'plot':dict(fig_size=50), 'style':dict(cmap='jet')}}\n", + "renderer.save(layout, 'example_III',options=options)\n", + "SVG(filename='example_III.svg')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here you can see that the *y* axis has returned, because our previous setting to turn it off was just for the call to ``renderer.save``. But we still have a colorbar, because that parameter was set at the class level, for all future plots of this type. Note that this form of option setting, while more verbose, accepts the full ``{type}[.{group}[.{label}]]`` syntax, like ``'Image.Function.Sine'`` or ``'Image.Function'``, while the shorter keyword approach above only supports the class, like 'Image'.\n", + "\n", + "Note that for the ``options`` dictionary, the option nesting is inverted compared to the keyword approach: the outermost dictionary is by key (``Image``, or ``Image.Function.Sines``), with the option categories underneath. You can see that with this mechanism, we can specify the options even for subobjects of a container, as long as we can specify them with an appropriate key.\n", + "\n", + "There's also another way to customize options in Python that lets you build up customizations incrementally. To do this, you can associate a particular set of options persistently with a particular HoloViews object, even if that object is later combined with other objects into a container. Here a new copy of the object is created, with the given set of options (using either the keyword or ``options=`` format above) bound to it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "green_sine = image(style={'cmap':'Greens'})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we could save the object to SVG just as before, but in this case we can skip a step and simply view it directly in the notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "green_sine" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To customize options of individual components in composite objects like Overlays or Layouts you can either specify the options on each individual component or specify which object to customize using the ``{type}[.{group}[.{label}]]`` syntax." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(image + curve)(style={'Image.Function.Sine': dict(cmap='Reds'), 'Curve': dict(color='indianred')})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both IPython notebook and ``renderer.save()`` use the same mechanisms for keeping track of the options, so they will give the same results. Specifically, what happens when you \"bind\" a set of options to an object is that there is an integer ID stored in the object (``green_sine`` in this case), and a corresponding entry with that ID is stored in a database of options called an ``OptionTree`` (kept in ``holoviews.core.options.Store``). The object itself is otherwise unchanged, but then if that object is later used in another container, etc. it will retain its ID and therefore its customization. Any customization stored in an ``OptionTree`` will override any class attribute defaults set like ``RasterGridPlot.border=5`` above. This approach lets HoloViews keep track of any customizations you want to make, without ever affecting your actual data objects.\n", + "\n", + "If the same object is later customized again to create a new customized object, the old customizations will be copied, and then the new customizations applied. The new customizations will thus override the old, while retaining any previous customizations not specified in the new step. \n", + "\n", + "In this way, it is possible to build complex objects with arbitrary customization, step by step. As mentioned above, it is also possible to customize objects already combined into a complex container, just by specifying an option for a suitable key (e.g. ``'Image.Function.Sine'`` above). This flexible system should allow for any level of customization that is needed.\n", + "\n", + "Finally, there is one more way to apply options that is a mix of the above approaches -- temporarily assign a new ID to the object and apply a set of customizations during a specific portion of the code. To illustrate this, we'll create a new Image object called 'Cosine':" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cosine = hv.Image(np.cos(x**2+y**2), group=\"Function\", label=\"Cosine\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with hv.StoreOptions.options(cosine, options={'Image':{'style':{'cmap':'Reds'}}}):\n", + " data, info = renderer(cosine)\n", + "print(info)\n", + "SVG(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here the result is in red as it was generated in the context of a 'Reds' colormap but if we display cosine again outside the scope of the with statement, it retains the default settings:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cosine" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that if we want to use this context manager to set new options on the existing green_sine object, you must specify that the options apply to a specific Image by stating the applicable group and label:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with hv.StoreOptions.options(green_sine, options={'Image.Function.Sine':{'style':{'cmap':'Purples'}}}):\n", + " data, info = renderer(green_sine)\n", + "print(info)\n", + "SVG(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the result inside the context is purple but elswhere green_sine remains green. If the group and label had not been specified above, the specific customization applied earlier (setting the green colormap) would take precedence over the general settings of Image. For this reason, it is important to know the appropriate precedence of new customizations, or else you can just always specify the object group and label to make sure the new settings override the old ones." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Controlling options in IPython using ``%%opts`` and ``%opts``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above sections describe how to set all of the options using regular Python. Similar functionality is provided in IPython, but with a more convenient syntax based on an IPython magic command:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve style(linewidth=8) Image style(interpolation='bilinear') plot[yaxis=None] norm{+framewise}\n", + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``%%opts`` magic works like the pure-Python option for associating options with an object, except that it works on the item in the IPython cell, and it affects the item directly rather than making a copy or applying only in scope. Specifically, it assigns a new ID number to the object returned from this cell, and makes a new ``OptionTree`` containing the options for that ID number.\n", + "\n", + "If the same ``layout`` object is used later in the notebook, even within a complicated container object, it will retain the options set on it.\n", + "\n", + "The options accepted are just the same as for the Python version, but specified more succinctly:\n", + "\n", + "``%%opts`` *target-specification* ``style(``*styleoption*``=``*val* ...``) plot[``*plotoption*``=``*val* ...``] norm{+``*normoption* ``-``*normoption*...``}``\n", + "\n", + "Here *key* lets you specify the object type (e.g. ``Image``), and optionally its ``group`` (e.g. ``Image.Function``) or even both ``group`` and ``label`` (e.g. ``Image.Function.Sine``), if you want to control options very precisely. There is also an even further abbreviated syntax, because the special bracket types alone are enough to indicate which category of option is specified:\n", + "\n", + "``%%opts`` *target-specification* ``(``*styleoption*``=``*val* ...``) [``*plotoption*``=``*val* ...``] {+``*normoption* ``-``*normoption* ...``}``\n", + "\n", + "Here parentheses indicate style options, square brackets indicate plot options, and curly brackets indicate norm options (with ``+axiswise`` and ``+framewise`` indicating True for those values, and ``-axiswise`` and ``-framewise`` indicating False). Additional *target-specification*s and associated options of each type for that *target-specification* can be supplied at the end of this line. This ultra-concise syntax is used throughout the other tutorials, because it helps minimize the code needed to specify the plotting options, and helps make it very clear that these options are handled separately from the actual data.\n", + "\n", + "Here we demonstrate the concise syntax by customizing the style and plot options of the ``Curve`` in the layout:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve (color='r') [fontsize={'xlabel':15, 'ticks':8}] \n", + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The color of the curve has been changed to red and the fontsizes of the x-axis label and all the tick labels have been modified. The ``fontsize`` is an important plot option, and you can find more information about the available options in the ``fontsize`` documentation above.\n", + "\n", + "The ``%%opts`` magic is designed to allow incremental customization, which explains why the curve in the cell above has retained the increased thickness specified earlier. To reset all the customizations that have been applied to an object, you can create a fresh, uncustomized copy as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``%opts`` \"line\" magic (with one ``%``) works just the same as the ``%%opts`` \"cell\" magic, but it changes the global default options for all future cells, allowing you to choose a new default colormap, line width, etc.\n", + "\n", + "Apart from its brevity, a big benefit of using the IPython magic syntax ``%%opts`` or ``%opts`` is that it is fully tab-completable. Each of the options that is currently available will be listed if you press ```` when you are ready to write it, which makes it much easier to find the right parameter. Of course, you will still need to consult the full ``holoviews.help`` documentation (described above) to see the type, allowable values, and documentation for each option, but the tab completion should at least get you started and is great for helping you remember the list of options and see which options are available.\n", + "\n", + "You can even use the succinct IPython-style specification directly in your Python code if you wish, but it requires the external [pyparsing](https://pypi.python.org/pypi/pyparsing) library (which is already available if you are using matplotlib):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from holoviews.util.parser import OptsSpec\n", + "renderer.save(image + waves, 'example_V', \n", + " options=OptsSpec.parse(\"Image (cmap='gray')\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is also a special IPython syntax for listing the visualization options for a plotting object in a pop-up window that is equivalent to calling ``holoviews.help(``*object*``)``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%output info=True\n", + "curve" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The line-magic version of this syntax ``%output info=True`` is particularly useful for learning about components using the notebook, because it will keep a window open with the available options for each object updated as you do ```` in each cell. E.g. you can go through each of the components in the ``Elements`` or ``Containers`` tutorials in this way, to see what options are offered by each without having to type anything for each one." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Option inheritance\n", + "\n", + "Since HoloViews objects nest in a variety of ways and you do not want to keep changing the options specification when you compose your object into an ``Overlay`` or ``NdOverlay``, certain ``plot`` options are inherited. This includes all plot options which control the appearance of the axes, but not those that are specific to the Element. As a simple example let us combine the ``Image`` from above with some ``Bounds``. Even though we apply the ``xrotation`` and ``yticks`` options to the ``Image`` they are inherited by the ``Overlay`` of the ``Image`` and ``Bounds``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Image [xrotation=90 yticks=[-0.5, 0., 0.5]]\n", + "image * hv.Bounds((-.25, -.25, .25, .25))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Separating data and visualization options" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hopefully you see from this tutorial how HoloViews enforces a strict separation between your data, stored in HoloViews ``Element`` and container objects, and your plotting options, stored in dictionaries or ``OptionTree``s. Finding the right options is easiest in IPython, because of ```` completion, but the same options are available in pure Python as well, with or without a display, allowing you to automate any part of the process of visualization and analysis." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Deploying_Bokeh_Apps.ipynb b/guides/user_guide/Deploying_Bokeh_Apps.ipynb new file mode 100644 index 0000000000..f0164bb825 --- /dev/null +++ b/guides/user_guide/Deploying_Bokeh_Apps.ipynb @@ -0,0 +1,606 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Purpose\n", + "\n", + "HoloViews is an incredible convenient way of working interactively and exploratively within a notebook or commandline context, however when you have implemented a polished interactive dashboard or some other complex interactive visualization you often want to deploy it outside the notebook. The [bokeh server](http://bokeh.pydata.org/en/latest/docs/user_guide/server.html) provides a very convenient way of deploying HoloViews plots and interactive dashboards in a scalable and flexible manner. The bokeh server allows all the usual interactions that HoloViews lets you define and more including:\n", + "\n", + "* responding to plot events and tool interactions via [Linked Streams](Linked_Stream.ipynb)\n", + "* generating and interacting with plots via the usual widgets that HoloViews supports for HoloMap and DynamicMap objects.\n", + "* using periodic and timeout events to drive plot updates\n", + "* combining HoloViews plots with custom bokeh plots to quickly write highly customized apps.\n", + "\n", + "## Overview\n", + "\n", + "In this guide we will cover how we can deploy a bokeh app from a HoloViews plot in a number of different ways:\n", + "\n", + "1. Inline from within the Jupyter notebook\n", + "\n", + "2. Starting a server interactively and open it in a new browser window.\n", + "\n", + "3. From a standalone script file\n", + "\n", + "4. Combining HoloViews and Bokeh models to create a more customized app\n", + "\n", + "If you have read a bit about HoloViews you will know that HoloViews objects are not themselves plots, instead they contain sufficient data and metadata allowing them to be rendered automatically in a notebook context. In other words when a HoloViews object is evaluated a backend specific ``Renderer`` converts the HoloViews object into bokeh models, a matplotlib figure or a plotly graph. This intermediate representation is then rendered as an image or as HTML with associated Javascript, which is what ends up being displayed.\n", + "\n", + "## The workflow\n", + "\n", + "The most convenient way to work with HoloViews is to iteratively improve a visualization in the notebook. Once you have developed a visualization or dashboard that you would like to deploy you can use the ``BokehRenderer`` to save the visualization or deploy it as a bokeh server app. \n", + "\n", + "Here we will create a small interactive plot, using [Linked Streams](Linked_Streams.html), which mirrors the points selected using box- and lasso-select tools in a second plot and computes some statistics:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%%opts Points [tools=['box_select', 'lasso_select']]\n", + "\n", + "# Declare some points\n", + "points = hv.Points(np.random.randn(1000,2 ))\n", + "\n", + "# Declare points as source of selection stream\n", + "selection = hv.streams.Selection1D(source=points)\n", + "\n", + "# Write function that uses the selection indices to slice points and compute stats\n", + "def selected_info(index):\n", + " arr = points.array()[index]\n", + " if index:\n", + " label = 'Mean x, y: %.3f, %.3f' % tuple(arr.mean(axis=0))\n", + " else:\n", + " label = 'No selection'\n", + " return points.clone(arr, label=label)(style=dict(color='red'))\n", + "\n", + "# Combine points and DynamicMap\n", + "layout = points + hv.DynamicMap(selected_info, streams=[selection])\n", + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Working with the BokehRenderer\n", + "\n", + "When working with bokeh server or wanting to manipulate a backend specific plot object you will have to use a HoloViews ``Renderer`` directly to convert the HoloViews object into the backend specific representation. Therefore we will start by getting a hold of a ``BokehRenderer``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "renderer = hv.renderer('bokeh')\n", + "print(renderer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All ``Renderer`` classes in HoloViews are so called ParameterizedFunctions, they provide both classmethods and instance methods to render an object. You can easily create a new ``Renderer`` instance using the ``.instance`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "renderer = renderer.instance(mode='server')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Renderers can also have different modes, in this case we will instantiate the renderer in ``'server'`` mode, which tells the Renderer to render the HoloViews object to a format that can easily be deployed as a server app. Before going into more detail about deploying server apps we will quickly remind ourselves how the renderer turns HoloViews objects into bokeh models." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Figures" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The BokehRenderer converts the HoloViews object to a HoloViews ``Plot``, which holds the bokeh models that will be rendered to screen. As a very simple example we can convert a HoloViews ``Image`` to a HoloViews plot:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hvplot = renderer.get_plot(layout)\n", + "hvplot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``state`` attribute on the HoloViews plot we can access the bokeh ``Column`` model, which we can then work with directly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hvplot.state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the background this is how HoloViews converts any HoloViews object into bokeh models, which can then be converted to embeddable or standalone HTML and be rendered in the browser. This conversion is usually done in the background using the ``figure_data`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "html = renderer.figure_data(hvplot)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bokeh Documents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In bokeh the [``Document``](http://bokeh.pydata.org/en/latest/docs/reference/document.html) is the basic unit at which Bokeh models (such as plots, layouts and widgets) are held and serialized. The serialized JSON representation is then sent to BokehJS on the client side browser. When in ``'server'`` mode the BokehRenderer will automatically return a server Document:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "renderer(layout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also easily use the ``server_doc`` method to get a bokeh ``Document``, which does not require you to make an instance in 'server' mode." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "doc = renderer.server_doc(layout)\n", + "doc.title = 'HoloViews App'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploying with ``bokeh serve``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Deployment from a script with bokeh serve is one of the most common ways to deploy a bokeh app. Any ``.py`` or ``.ipynb`` file that attaches a plot to bokeh's ``curdoc`` can be deployed using ``bokeh serve``. The easiest way to do this is using the ``BokehRenderer.server_doc`` method, which accepts any HoloViews object generates the appropriate bokeh models and then attaches them to ``curdoc``. See below to see a full standalone script:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "import numpy as np\n", + "import holoviews as hv\n", + "import holoviews.plotting.bokeh\n", + "\n", + "renderer = hv.renderers('bokeh')\n", + "\n", + "points = hv.Points(np.random.randn(1000,2 ))(plot=dict(tools=['box_select', 'lasso_select']))\n", + "selection = hv.streams.Selection1D(source=points)\n", + "\n", + "def selected_info(index):\n", + " arr = points.array()[index]\n", + " if index:\n", + " label = 'Mean x, y: %.3f, %.3f' % tuple(arr.mean(axis=0))\n", + " else:\n", + " label = 'No selection'\n", + " return points.clone(arr, label=label)(style=dict(color='red'))\n", + "\n", + "layout = points + hv.DynamicMap(selected_info, streams=[selection])\n", + "\n", + "doc = renderer.server_doc(layout)\n", + "doc.title = 'HoloViews App'\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In just a few steps, i.e. by our plot to a Document ``renderer.server_doc`` we have gone from an interactive plot which we can iteratively refine in the notebook to a deployable bokeh app. Note also that we can also deploy an app directly from a notebook. By adding ``BokehRenderer.server_doc(holoviews_object)`` to the end of the notebook any regular ``.ipynb`` file can be made into a valid bokeh app, which can be served with ``bokeh serve example.ipynb``.\n", + "\n", + "In addition to starting a server from a script we can also start up a server interactively, so let's do a quick deep dive into bokeh ``Application`` and ``Server`` objects and how we can work with them from within HoloViews." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bokeh Applications and Server" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A bokeh ``Application`` encapsulates a Document and allows it to be deployed on a bokeh server. The ``BokehRenderer.app`` method provides an easy way to create an ``Application`` and either display it immediately in a notebook or manually include it in a server app.\n", + "\n", + "To let us try this out we'll define a slightly simpler plot to deploy as a server app. We'll define a ``DynamicMap`` of a sine ``Curve`` varying by frequency, phase and an offset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sine(frequency, phase, amplitude):\n", + " xs = np.linspace(0, np.pi*4)\n", + " return hv.Curve((xs, np.sin(frequency*xs+phase)*amplitude))(plot=dict(width=800))\n", + "\n", + "ranges = dict(frequency=(1, 5), phase=(-np.pi, np.pi), amplitude=(-2, 2), y=(-2, 2))\n", + "dmap = hv.DynamicMap(sine, kdims=['frequency', 'phase', 'amplitude']).redim.range(**ranges)\n", + "\n", + "app = renderer.app(dmap)\n", + "print(app)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we have a bokeh Application we can manually create a ``Server`` instance to deploy it. To start a ``Server`` instance we simply define a mapping between the URL paths and apps that we want to deploy. Additionally we define a port (defining ``port=0`` will use any open port), and the ``IOLoop``. To get an ``IOLoop`` we simply use ``IOLoop.current()``, which will already be running if working from within a notebook but will give you a new ``IOLoop`` outside a notebook context." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from tornado.ioloop import IOLoop\n", + "from bokeh.server.server import Server\n", + "\n", + "loop = IOLoop.current()\n", + "server = Server({'/': app}, port=0, loop=loop)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we can define a callback on the IOLoop that will open the server app in a new browser window and actually start the app (and if outside the notebook the IOLoop):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def show_callback():\n", + " server.show('/')\n", + "loop.add_callback(show_callback)\n", + "server.start()\n", + "# Outside the notebook ioloop needs to be started\n", + "# loop.start() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After running the cell above you should have noticed a new browser window popping up displaying our plot. Once you are done playing with it you can stop it with:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "server.stop()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``BokehRenderer.app`` method allows us to the same thing automatically (but less flexibly) using the ``show=True`` and ``new_window=True`` arguments:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "server = renderer.app(dmap, show=True, new_window=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will once again stop this Server before continuing:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "server.stop()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inlining apps in the notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of displaying our app in a new browser window and manually creating a ``Server`` instance we can also display an app inline in the notebook simply by supplying the ``show=True`` argument to the ``BokehRenderer.app`` method. The server app will be killed whenever you rerun or delete the cell that contains the output." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "renderer.app(dmap, show=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Periodic callbacks\n", + "\n", + "One of the most important features of deploying apps is the ability to attach asynchronous, periodic callbacks, which update the plot. The simplest way of achieving this is to attach a ``Counter`` stream on the plot which is incremented on each callback. As a simple demo we'll simply compute a phase offset from the counter value, animating the sine wave:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sine(counter):\n", + " phase = counter*0.1%np.pi*2\n", + " xs = np.linspace(0, np.pi*4)\n", + " return hv.Curve((xs, np.sin(xs+phase)))(plot=dict(width=800))\n", + "\n", + "dmap = hv.DynamicMap(sine, streams=[hv.streams.Counter()])\n", + "\n", + "app = renderer.app(dmap, show=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we have created the app we can start a periodic callback with the ``periodic`` method on the ``DynamicMap``. The first argument to the method is the period and the second argument the number of executions to trigger (we can set this value to ``None`` to set up an indefinite callback). As soon as we start this callback you should see the Curve above become animated." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dmap.periodic(0.1, 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Combining HoloViews and Bokeh Plots/Widgets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While HoloViews provides very convenient ways of creating an app it is not as fully featured as bokeh itself is. Therefore we often want to extend a HoloViews based app with bokeh plots and widgets created directly using the bokeh API. Using the ``BokehRenderer`` we can easily convert a HoloViews object into a bokeh model, which we can combine with other bokeh models as desired.\n", + "\n", + "To see what this looks like we will use the sine example again but this time connect a [Stream](Stream.ipynb) to a manually created bokeh slider widget and play button. To display this in the notebook we will reuse what we learned about creating a ``Server`` instance using a ``FunctionHandler``, you can of course run this in a script by calling the ``modify_doc`` function with with the ``Document`` returned by the bokeh ``curdoc()`` function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "\n", + "from bokeh.application.handlers import FunctionHandler\n", + "from bokeh.application import Application\n", + "from bokeh.io import show\n", + "from bokeh.layouts import layout\n", + "from bokeh.models import Slider, Button\n", + "\n", + "renderer = hv.renderer('bokeh').instance(mode='server')\n", + "\n", + "# Create the holoviews app again\n", + "def sine(phase):\n", + " xs = np.linspace(0, np.pi*4)\n", + " return hv.Curve((xs, np.sin(xs+phase)))(plot=dict(width=800))\n", + "\n", + "stream = hv.streams.Stream.define('Phase', phase=0.)()\n", + "dmap = hv.DynamicMap(sine, streams=[stream])\n", + "\n", + "# Define valid function for FunctionHandler\n", + "# when deploying as script, simply attach to curdoc\n", + "def modify_doc(doc):\n", + " # Create HoloViews plot and attach the document\n", + " hvplot = renderer.get_plot(dmap, doc)\n", + "\n", + " # Create a slider and play buttons\n", + " def animate_update():\n", + " year = slider.value + 0.2\n", + " if year > end:\n", + " year = start\n", + " slider.value = year\n", + "\n", + " def slider_update(attrname, old, new):\n", + " # Notify the HoloViews stream of the slider update \n", + " stream.event(phase=new)\n", + " \n", + " start, end = 0, np.pi*2\n", + " slider = Slider(start=start, end=end, value=start, step=0.2, title=\"Phase\")\n", + " slider.on_change('value', slider_update)\n", + "\n", + " def animate():\n", + " if button.label == '► Play':\n", + " button.label = '❚❚ Pause'\n", + " doc.add_periodic_callback(animate_update, 50)\n", + " else:\n", + " button.label = '► Play'\n", + " doc.remove_periodic_callback(animate_update)\n", + " button = Button(label='► Play', width=60)\n", + " button.on_click(animate)\n", + " \n", + " # Combine the holoviews plot and widgets in a layout\n", + " plot = layout([\n", + " [hvplot.state],\n", + " [slider, button]], sizing_mode='fixed')\n", + " \n", + " doc.add_root(plot)\n", + " return doc\n", + "\n", + "# To display in the notebook\n", + "handler = FunctionHandler(modify_doc)\n", + "app = Application(handler)\n", + "show(app)\n", + "\n", + "# To display in a script\n", + "# doc = modify_doc(curdoc()) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you had trouble following the last example, you will noticed how much verbose things can get when we drop down to the bokeh API. The ability to customize the plot comes at the cost of additional complexity. However when we need it the additional flexibility of composing plots manually is there." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/guides/user_guide/Exporting_and_Archiving.ipynb new file mode 100644 index 0000000000..c43a4358c1 --- /dev/null +++ b/guides/user_guide/Exporting_and_Archiving.ipynb @@ -0,0 +1,474 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most of the other tutorials show you how to use HoloViews for interactive, exploratory visualization of your data, while the [Options](Options.ipynb) tutorial shows how to use HoloViews completely non-interactively, generating and rendering images directly to disk. In this notebook, we show how HoloViews works together with the IPython/Jupyter Notebook to establish a fully interactive yet *also* fully reproducible scientific or engineering workflow for generating reports or publications. That is, as you interactively explore your data and build visualizations in the notebook, you can automatically generate and export them as figures that will feed directly into your papers or web pages, along with records of how those figures were generated and even storing the actual data involved so that it can be re-analyzed later. \n", + "\n", + "## Reproducible research\n", + "\n", + "To understand why this capability is important, let's consider the process by which scientific results are typically generated and published without HoloViews. Scientists and engineers use a wide variety of data-analysis tools, ranging from GUI-based programs like Excel spreadsheets, mixed GUI/command-line programs like Matlab, or purely scriptable tools like matplotlib or bokeh. The process by which figures are created in any of these tools typically involves copying data from its original source, selecting it, transforming it, choosing portions of it to put into a figure, choosing the various plot options for a subfigure, combining different subfigures into a complete figure, generating a publishable figure file with the full figure, and then inserting that into a report or publication. \n", + "\n", + "If using GUI tools, often the final figure is the only record of that process, and even just a few weeks or months later a researcher will often be completely unable to say precisely how a given figure was generated. Moreover, this process needs to be repeated whenever new data is collected, which is an error-prone and time-consuming process. The lack of records is a serious problem for building on past work and revisiting the assumptions involved, which greatly slows progress both for individual researchers and for the field as a whole. Graphical environments for capturing and replaying a user's GUI-based workflow have been developed, but these have greatly restricted the process of exploration, because they only support a few of the many analyses required, and thus they have rarely been successful in practice. With GUI tools it is also very difficult to \"curate\" the sequence of steps involved, i.e., eliminating dead ends, speculative work, and unnecessary steps, with a goal of showing the clear path from incoming data to a final figure.\n", + "\n", + "In principle, using scriptable or command-line tools offers the promise of capturing the steps involved, in a form that can be curated. In practice, however, the situation is often no better than with GUI tools, because the data is typically taken through many manual steps that culminate in a published figure, and without a laboriously manually created record of what steps are involved, the provenance of a given figure remains unknown. Where reproducible workflows are created in this way, they tend to be \"after the fact\", as an explicit exercise to accompany a publication, and thus (a) they are rarely done, (b) they are very difficult to do if any of the steps were not recorded originally. \n", + "\n", + "An IPython/Jupyter notebook helps significantly to make the scriptable-tools approach viable, by recording both code and the resulting output, and can thus in principle act as a record for establishing the full provenance of a figure. But because typical plotting libraries require so much plotting-specific code before any plot is visible, the notebook quickly becomes unreadable. To make notebooks readable, researchers then typically move the plotting code for a specific figure to some external file, which then drifts out of sync with the notebook so that the notebook no longer acts as a record of the link between the original data and the resulting figure. \n", + "\n", + "HoloViews provides the final missing piece in this approach, by allowing researchers to work directly with their data interactively in a notebook, using small amounts of code that focus on the data and analyses rather than plotting code, yet showing the results directly alongside the specification for generating them. This tutorial will describe how use a Jupyter notebook with HoloViews to export your results in a way that preserves the information about how those results were generated, providing a clear chain of provenance and making reproducible research practical at last." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "from holoviews.operation import contours\n", + "hv.notebook_extension()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exporting specific files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "During interactive exploration in the IPython Notebook, your results are always visible within the notebook itself, but you can explicitly request that any IPython cell is also exported to an external file on disk:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%output filename=\"macaw_plot\" fig=\"png\" holomap=\"gif\"\n", + "parrot = hv.RGB.load_image('../assets/macaw.png')\n", + "parrot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This mechanism can be used to provide a clear link between the steps for generating the figure, and the file on disk. You can now load the exported plot back into HoloViews, if you like, though the result would be a bit confusing due to the additional set of axes applied to the new plot:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.RGB.load_image('macaw_plot.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``fig=\"png\"`` part of the ``%%output`` magic above specified that the file should be saved in PNG format, which is useful for posting on web pages or editing in raster-based graphics programs. It also specified that if the object contained a ``HoloMap`` (which this particular one does not), it would be saved in GIF format, which supports animation. Because of the need for animation, objects containing a ``HoloMap`` are handled specially, as animation is not supported by the common PNG or SVG formats.\n", + "\n", + "For a publication, you will usually want to select SVG format, using ``fig=\"svg\"``, because this vector format preserves the full resolution of all text and drawing elements. SVG files can be be used in some document preparation programs directly (e.g. [LibreOffice](http://www.libreoffice.org/)), and can easily be converted using e.g. [Inkscape](https://inkscape.org) to PDF for use with PDFLaTeX or to EMF for use with Microsoft Word. They can also be edited using Inkscape or other vector drawing programs to move graphical elements around, add arbitrary text, etc., if you need to make final tweaks before using the figures in a document. You can also embed them within other SVG figures in such a drawing program, e.g. by creating a larger figure as a template that automatically incorporates multiple SVG files you have exported separately." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exporting notebooks" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``%%output`` magic is useful when you want specific plots saved into specific files. Often, however, a notebook will contain an entire suite of results contained in multiple different cells, and manually specifying these cells and their filenames is error-prone, with a high likelihood of accidentally creating multiple files with the same name or using different names in different notebooks for the same objects.\n", + "\n", + "To make the exporting process easier for large numbers of outputs, as well as more predictable, HoloViews also offers a powerful automatic notebook exporting facility, creating an archive of all your results. Automatic export is very useful in the common case of having a notebook that contains a series of figures to be used in a report or publication, particularly if you are repeatedly re-running the notebook as you finalize your results, and want the full set of current outputs to be available to an external document preparation system." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To turn on automatic adding of your files to the export archive, run ``hv.archive.auto()``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.auto()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This object's behavior can be customized extensively; try pressing shift-[tab] twice within the parentheses for a list of options, which are described more fully below.\n", + "\n", + "By default, the output will go into a directory with the same name as your notebook, and the names for each object will be generated from the groups and labels used by HoloViews. Objects that contain HoloMaps are not exported by default, since those are usually rendered as animations that are not suitable for inclusion in publications, but you can change it to ``.auto(holomap='gif')`` if you want those as well. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding files to an archive" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To see how the auto-exporting works, let's define a few HoloViews objects:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "parrot[:,:,'R'].relabel(\"Red\") + parrot[:,:,'G'].relabel(\"Green\") + parrot[:,:,'B'].relabel(\"Blue\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "parrot * hv.Arrow(-0.1, 0.2, 'Polly', '>')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Contours (linewidth=1.3) Image (cmap=\"gray\")\n", + "cs = contours(parrot[:,:,'R'], levels=[0.10,0.80])\n", + "cs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now list what has been captured, along with the names that have been generated:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.contents()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here each object has resulted in two files, one in SVG format and one in Python \"pickle\" format (which appears as a ``zip`` file with extension ``.hvz`` in the listing). We'll ignore the pickle files for now, focusing on the SVG images.\n", + "\n", + "The name generation code for these files is heavily customizable, but by default it consists of a list of dimension values and objects:\n", + "\n", + " ``{dimension},{dimension},...{group}-{label},{group}-{label},...``. \n", + "\n", + "The ``{dimension}`` shows what dimension values are included anywhere in this object, if it contains any high-level ``Dimensioned`` objects like ``HoloMap``, ``NdOverlay``, and ``GridLayout``. In the last SVG image in the contents list above, which is for the ``contours`` object, there is one dimension ``Levels``, and the name shows that dimension values included in this object range from 0.1 to 0.8 (as is visible in the contours specification above.) Of course, nearly all HoloViews objects have dimensions, such as ``x`` and ``y`` in this case, but those dimensions are not used in the filenames because they are explicitly shown in the plots; only the top-level dimensions are used (those that determine which plot this is, not those that are shown in the plot itself.)\n", + "\n", + "The ``{group}-{label}`` information lists the names HoloViews uses for default titles and for attribute access for the various objects that make up a given displayed object. E.g. the first SVG image in the list is a ``Layout`` of the three given ``Image`` objects, and the second one is an ``Overlay`` of an ``RGB`` object and an ``Arrow`` object. This information usually helps distinguish one plot from another, because they will typically be plots of objects that have different labels. \n", + "\n", + "If the generated names are not unique, a numerical suffix will be added to make them unique. A maximum filename length is enforced, which can be set with ``hv.archive.max_filename=``_num_.\n", + "\n", + "If you prefer a fixed-width filename, you can use a hash for each name instead (or in addition), where ``:.8`` specifies how many characters to keep from the hash:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.filename_formatter=\"{SHA:.8}\"\n", + "cs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.contents()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see that the newest files added have the shorter, fixed-width format, though the names are no longer meaningful. If the ``filename_formatter`` had been set from the start, all filenames would have been of this type, which has both practical advantages (short names, all the same length) and disadvantages (no semantic clue about the contents)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generated indexes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the files that were added to the archive for each of the cell outputs above, the archive exporter also adds an ``index.html`` file with a static copy of the notebook, with each cell labelled with the filename used to save it. This HTML file acts as a definitive index to your results, showing how they were generated and where they were exported on disk. \n", + "\n", + "The exporter will also add a cleared, runnable copy of the notebook ``index.ipynb`` (with output deleted), so that you can later regenerate all of the output, with changes if necessary. \n", + "\n", + "The exported archive will thus be a complete set of your results, along with a record of how they were generated, plus a recipe for regenerating them -- i.e., fully reproducible research! This HTML file and .ipynb file can the be submitted as supplemental materials for a paper, allowing any reader to build on your results, or it can just be kept privately so that future collaborators can start where this research left off." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding your own data to the archive" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course, your results may depend on a lot of external packages, libraries, code files, and so on, which will not automatically be included or listed in the exported archive.\n", + "\n", + "Luckily, the archive support is very general, and you can add any object to it that you want to be exported along with your output. For instance, you can store arbitrary metadata of your choosing, such as version control information, here as a JSON-format text file: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "hv.archive.add(filename='metadata.json', \n", + " data=json.dumps({'repository':'git@github.com:ioam/holoviews.git',\n", + " 'commit':'437e8d69'}), info={'mime_type':'text/json'})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The new file can now be seen in the contents listing:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.contents()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this way, you should be able to automatically generate output files, with customizable filenames, storing any data or metadata you like along with them so that you can keep track of all the important information for reproducing these results later." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Controlling the behavior of ``hv.archive``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``hv.archive`` object provides numerous parameters that can be changed. You can e.g.:\n", + "\n", + "- output the whole directory to a single compressed ZIP or tar archive file (e.g. ``hv.archive.set_param(pack=False, archive_format='zip')`` or ``archive_format='tar'``)\n", + "\n", + "- generate a new directory or archive every time the notebook is run (``hv.archive.uniq_name=True``); otherwise the old output directory is erased each time \n", + "\n", + "- choose your own name for the output directory or archive (e.g. ``hv.archive.export_name=\"{timestamp}\"``)\n", + "\n", + "- change the format of the optional timestamp (e.g. to retain snapshots hourly, ``archive.set_param(export_name=\"{timestamp}\", timestamp_format=\"%Y_%m_%d-%H\")``)\n", + "\n", + "- select PNG output, at a specified rendering resolution:\n", + "```hv.archive.exporters=[hv.Store.renderers['matplotlib'].instance(size=50, fig='png', dpi=144)])\n", + "```\n", + "\n", + "These options and any others listed above can all be set in the ``hv.archive.auto()`` call at the start, for convenience and to ensure that they apply to all of the files that are added." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Writing the archive to disk" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To actually write the files you have stored in the archive to disk, you need to call ``export()`` after any cell that might contain computation-intensive code. Usually it's best to do so as the last or nearly last cell in your notebook, though here we do it earlier because we wanted to show how to use the exported files." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.export()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Shortly after the ``export()`` command has been executed, the output should be available as a directory on disk, by default in the same directory as the notebook file, named with the name of the notebook: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.getcwd()\n", + "if os.path.exists(\"Exporting\"):\n", + " print(sorted(os.listdir(\"Exporting\")))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For technical reasons to do with how the IPython Notebook interacts with JavaScript, if you use the IPython command ``Run all``, the ``hv.archive.export()`` command is not actually executed when the cell with that call is encountered during the run. Instead, the ``export()`` is queued until after the final cell in the notebook has been executed. This asynchronous execution has several awkward but not serious consequences:\n", + "\n", + "- It is not possible for the ``export()`` cell to show whether any errors were encountered during exporting, because these will not occur until after the notebook has completed processing. To see any errors, you can run ``hv.archive.last_export_status()`` separately, *after* the ``Run all`` has completed. E.g. just press shift-[Enter] in the following cell, which will tell you whether the previous export was successful.\n", + "\n", + "- If you use ``Run all``, the directory listing ``os.listdir()`` above will show the results from the *previous* time this notebook was run, since it executes before the export. Again, you can use shift-[Enter] to update the data once complete.\n", + "\n", + "- The ``Export name:`` in the output of ``hv.archive.export()`` will not always show the actual name of the directory or archive that will be created. In particular, it may say ``{notebook}``, which when saving will actually expand to the name of your IPython Notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.archive.last_export_status()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accessing your saved data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By default, HoloViews saves not only your rendered plots (PNG, SVG, etc.), but also the actual HoloViews objects that the plots visualize, which contain all your actual data. The objects are stored in compressed Python pickle files (``.hvz``), which are visible in the directory listings above but have been ignored until now. The plots are what you need for writing a document, but the raw data is is a crucial record to keep as well. For instance, you now can load in the HoloViews object, and manipulate it just as you could when it was originally defined. E.g. we can re-load our ``Levels`` ``Overlay`` file, which has the contours overlaid on top of the image, and easily pull out the underlying ``Image`` object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from holoviews.core.io import Unpickler\n", + "c, a = None,None\n", + "path = \"Exporting/Overlay,Image,Level.hvz\"\n", + "\n", + "if os.path.isfile(path):\n", + " o = Unpickler.load(open(path,\"rb\"))\n", + " c = o.Image\n", + "print(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Given the ``Image``, you can also access the underlying array data, because HoloViews objects are simply containers for your data and associated metadata. This means that years from now, as long as you can still run HoloViews, you can now easily re-load and explore your data, plotting it entirely different ways or running different analyses, even if you no longer have any of the original code you used to generate the data. All you need is HoloViews, which is permanently archived on GitHub and is fully open source and thus should always remain available. Because the data is stored conveniently in the archive alongside the figure that was published, you can see immediately which file corresponds to the data underlying any given plot in your paper, and immediately start working with the data, rather than laboriously trying to reconstruct the data from a saved figure.\n", + "\n", + "If you do not want the pickle files, you can of course turn them off if you prefer, by changing ``hv.archive.auto()`` to:\n", + "\n", + "```python\n", + "hv.archive.auto(exporters=[hv.Store.renderers['matplotlib'].instance(holomap=None)])\n", + "```\n", + "\n", + "Here, the exporters list has been updated to include the usual default exporters *without* the `Pickler` exporter that would usually be included." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using HoloViews (and Lancet) to do reproducible research" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The export options from HoloViews help you establish a feasible workflow for doing reproducible research: starting from interactive exploration, either export specific files with ``%%output``, or enable ``hv.archive.auto()``, which will store a copy of your notebook and its output ready for inclusion in a document but retaining the complete recipe for reproducing the results later. \n", + "\n", + "HoloViews also works very well with the [Lancet](http://ioam.github.io/lancet) tool for exploring large parameter spaces, and Lancet provides an interface to HoloViews that makes Lancet output directly available for use in HoloViews. Lancet, when used with IPython Notebook and HoloViews, makes it feasible to work with large numbers of computation-intensive processes that generate heterogeneous data that needs to be collated, analyzed, and visualized. For more background and a suggested workflow, see our [2013 paper on using Lancet](http://dx.doi.org/10.3389/fninf.2013.00044) with IPython Notebook. Because that paper was written before the release of HoloViews, it does not discuss how HoloViews helps in this process, but that aspect is covered in our [2015 paper on using HoloViews for reproducible research](http://conference.scipy.org/proceedings/scipy2015/pdfs/jean-luc_stevens.pdf)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Gridded_Datasets.ipynb b/guides/user_guide/Gridded_Datasets.ipynb new file mode 100644 index 0000000000..43741e3ff4 --- /dev/null +++ b/guides/user_guide/Gridded_Datasets.ipynb @@ -0,0 +1,426 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('matplotlib', 'bokeh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%opts Scatter3D [size_index=None color_index=3] (cmap='fire')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the [Columnar Data Tutorial](Columnar_Data.ipynb) we covered how to work with columnar data in HoloViews. Apart from tabular or column based data there is another data format that is particularly common in the science and engineering contexts, namely multi-dimensional arrays. The gridded data interfaces allow interfacing with grid-based datasets directly.\n", + "\n", + "Grid-based datasets have two types of dimensions:\n", + "\n", + "* they have coordinate or key dimensions, which describe the sampling of each dimension in the value arrays\n", + "* they have value dimensions which describe the quantity of the multi-dimensional value arrays\n", + "\n", + "\n", + "## Declaring gridded data\n", + "\n", + "All Elements that support a ColumnInterface also support the GridInterface. The simplest example of a multi-dimensional (or more precisely 2D) gridded dataset is an image, which has implicit or explicit x-coordinates, y-coordinates and an array representing the values for each combination of these coordinates. Let us start by declaring an Image with explicit x- and y-coordinates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img = hv.Image((range(10), range(5), np.random.rand(5, 10)), datatype=['grid'])\n", + "img" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above example we defined that there would be 10 samples along the x-axis, 5 samples along the y-axis and then defined a random ``5x10`` array, matching those dimensions. This follows the NumPy (row, column) indexing convention. When passing a tuple HoloViews will use the first gridded data interface, which stores the coordinates and value arrays as a dictionary mapping the dimension name to a NumPy array representing the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However HoloViews also ships with interfaces for ``xarray`` and ``iris``, two common libraries for working with multi-dimensional datasets:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xr_img = img.clone(datatype=['xarray'])\n", + "arr_img = img.clone(datatype=['image'])\n", + "iris_img = img.clone(datatype=['cube'])\n", + "\n", + "print(type(xr_img.data))\n", + "print(type(iris_img.data))\n", + "print(type(arr_img.data))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the case of an Image HoloViews also has a simple image representation which stores the data as a single array and converts the x- and y-coordinates to a set of bounds:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Array type: %s with bounds %s\" % (type(arr_img.data), arr_img.bounds))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To summarize the constructor accepts a number of formats where the value arrays should always match the shape of the coordinate arrays:\n", + "\n", + " 1. A simple np.ndarray along with (l, b, r, t) bounds\n", + " 2. A tuple of the coordinate and value arrays\n", + " 3. A dictionary of the coordinate and value arrays indexed by their dimension names\n", + " 3. XArray DataArray or XArray Dataset\n", + " 4. An Iris cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Working with a multi-dimensional dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A gridded Dataset may have as many dimensions as desired, however individual Element types only support data of a certain dimensionality. Therefore we usually declare a ``Dataset`` to hold our multi-dimensional data and take it from there." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataset3d = hv.Dataset((range(3), range(5), range(7), np.random.randn(7, 5, 3)),\n", + " kdims=['x', 'y', 'z'], vdims=['Value'])\n", + "dataset3d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is because even a 3D multi-dimensional array represents volumetric data which we can only easily display if it only contains a few samples. In this simple case we can get an overview of what this data looks like by casting it to a ``Scatter3D`` Element (which will help us visualize the operations we are applying to the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Scatter3D(dataset3d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Indexing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to explore the dataset we therefore often want to define a lower dimensional slice into the array and then convert the dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataset3d.select(x=1).to(hv.Image, ['y', 'z']) + hv.Scatter3D(dataset3d.select(x=1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Groupby\n", + "\n", + "Another common method to apply to our data is to facet or animate the data is ``groupby`` operations. HoloViews provides a convient interface to apply ``groupby`` operations and select which dimensions to visualize. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(dataset3d.to(hv.Image, ['y', 'z'], 'Value', ['x']) +\n", + "hv.HoloMap({x: hv.Scatter3D(dataset3d.select(x=x)) for x in range(3)}, kdims=['x']))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aggregating" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another common operation is to aggregate the data with a function thereby reducing a dimension. You can either ``aggregate`` the data by passing the dimensions to aggregate or ``reduce`` a specific dimension. Both have the same function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Image(dataset3d.aggregate(['x', 'y'], np.mean)) + hv.Image(dataset3d.reduce(z=np.mean))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By aggregating the data we can reduce it to any number of dimensions we want. We can for example compute the spread of values for each z-coordinate and plot it using a ``Spread`` and ``Curve`` Element. We simply aggregate by that dimension and pass the aggregation functions we want to apply:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Spread(dataset3d.aggregate('z', np.mean, np.std)) * hv.Curve(dataset3d.aggregate('z', np.mean))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is also possible to generate lower-dimensional views into the dataset which can be useful to summarize the statistics of the data along a particular dimension. A simple example is a box-whisker of the ``Value`` for each x-coordinate. Using the ``.to`` conversion interface we declare that we want a ``BoxWhisker`` Element indexed by the ``x`` dimension showing the ``Value`` dimension. Additionally we have to ensure to set ``groupby`` to an empty list because by default the interface will group over any remaining dimension." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataset3d.to(hv.BoxWhisker, 'x', 'Value', groupby=[])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly we can generate a ``Distribution`` Element showing the ``Value`` dimension, group by the 'x' dimension and then overlay the distributions, giving us another statistical summary of the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataset3d.to(hv.Distribution, [], 'Value', groupby='x').overlay()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Categorical dimensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The key dimensions of the multi-dimensional arrays do not have to represent continuous values, we can display datasets with categorical variables as a ``HeatMap`` Element:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap = hv.HeatMap((['A', 'B', 'C'], ['a', 'b', 'c', 'd', 'e'], np.random.rand(5, 3)))\n", + "heatmap + heatmap.table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# API" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Accessing the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to be able to work with data in different formats it defines a general interface to access the data. The dimension_values method allows returning underlying arrays.\n", + "\n", + "#### Key dimensions (coordinates)\n", + "\n", + "By default ``dimension_values`` will return the expanded columnar format of the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap.dimension_values('x')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To access just the unique coordinates along a dimension simply supply the ``expanded=False`` keyword:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap.dimension_values('x', expanded=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally we can also get a non-flattened, expanded coordinate array returning a coordinate array of the same shape as the value arrays" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap.dimension_values('x', flat=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Value dimensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When accessing a value dimension the method will also return a flat view of the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap.dimension_values('z')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can pass the ``flat=False`` argument to access the multi-dimensional array:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap.dimension_values('z', flat=False)" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Indexing_and_Selecting_Data.ipynb b/guides/user_guide/Indexing_and_Selecting_Data.ipynb new file mode 100644 index 0000000000..5e202b1b27 --- /dev/null +++ b/guides/user_guide/Indexing_and_Selecting_Data.ipynb @@ -0,0 +1,447 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As explained in the [Composing Data](Composing_Data.ipynb) and [Containers](Containers.ipynb) tutorials, HoloViews allows you to build up hierarchical containers that express the natural relationships between your data items, in whatever multidimensional space best characterizes your application domain. Once your data is in such containers, individual visualizations are then made by choosing subregions of this multidimensional space, either smaller numeric ranges (as in cropping of photographic images), or lower-dimensional subsets (as in selecting frames from a movie, or a specific movie from a large library), or both (as in selecting a cropped version of a frame from a specific movie from a large library). \n", + "\n", + "In this tutorial, we show how to specify such selections, using four different (but related) operations that can act on an element ``e``:\n", + "\n", + "| Operation | Example syntax | Description |\n", + "|:---------------|:----------------:|:-------------|\n", + "| **indexing** | e[5.5], e[3,5.5] | Selecting a single data value, returning one actual numerical value from the existing data\n", + "| **slice** | e[3:5.5], e[3:5.5,0:1] | Selecting a contiguous portion from an Element, returning the same type of Element\n", + "| **sample** | e.sample(y=5.5),
e.sample((3,3)) | Selecting one or more regularly spaced data values, returning a new type of Element\n", + "| **select** | e.select(y=5.5),
e.select(y=(3,5.5)) | More verbose notation covering all supporting slice and index operations by dimension name.\n", + "\n", + "These operations are all concerned with selecting some subset of your data values, without combining across data values (e.g. averaging) or otherwise transforming your actual data. In the [Columnar Data](Columnar_Data.ipynb) tutorial we will look at other operations on the data that reduce, summarize, or transform the data in other ways, rather than selections as covered here.\n", + "\n", + "We'll be going through each operation in detail and provide a visual illustration to help make the semantics of each operation clear. This Tutorial assumes that you are familiar with continuous and discrete coordinate systems, so please review our [Continuous Coordinates Tutorial](Continuous_Coordinates.ipynb) if you have not done so already." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Indexing and slicing Elements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the [Exploring Data Tutorial](Exploring_Data.ipynb) we saw examples of how to select individual elements embedded in a multi-dimensional space. We also briefly introduced \"deep slicing\" of the ``RGB`` elements to select a subregion of the images. The [Continuous Coordinates Tutorial](Continuous_Coordinates.ipynb) covered slicing and indexing in Elements representing continuous coordinate coordinate systems such as ``Image`` types. Here we'll be going through each operation in full detail, providing a visual illustration to help make the semantics of each operation clear.\n", + "\n", + "How the Element may be indexed depends on the key dimensions (or ``kdims``) of the Element. It is thus important to consider the nature and dimensionality of your data when choosing the Element type for it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension()\n", + "%opts Layout [fig_size=125] Points [size_index=None] (s=50) Scatter3D [size_index=None]\n", + "%opts Bounds (linewidth=2 color='k') {+axiswise} Text (fontsize=16 color='k') Image (cmap='Reds')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1D Elements: Slicing and indexing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Certain Chart elements support both single-dimensional indexing and slicing: ``Scatter``, ``Curve``, ``Histogram``, and ``ErrorBars``. Here we'll look at how we can easily slice a ``Histogram`` to select a subregion of it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(42)\n", + "edges, data = np.histogram(np.random.randn(100))\n", + "hist = hv.Histogram(edges, data)\n", + "subregion = hist[0:1]\n", + "hist * subregion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The two bins in a different color show the selected region, overlaid on top of the full histogram. We can also access the value for a specific bin in the ``Histogram``. A continuous-valued index that falls inside a particular bin will return the corresponding value or frequency." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hist[0.25], hist[0.5], hist[0.55]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can slice a ``Curve`` the same way:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = np.linspace(0, np.pi*2, 21)\n", + "curve = hv.Curve((xs, np.sin(xs)))\n", + "subregion = curve[np.pi/2:np.pi*1.5]\n", + "curve * subregion * hv.Scatter(curve)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here again the region in a different color is the specified subregion, and we've also marked each discrete point with a dot using the ``Scatter`` ``Element``. As before we can also get the value for a specific sample point; whatever x-index is provided will snap to the closest sample point and return the dependent value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "curve[4.05], curve[4.1], curve[4.17], curve[4.3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is important to note that an index (or a list of indices, as for the 2D and 3D cases below) will always return the raw indexed (dependent) value, i.e. a number. A slice (indicated with `:`), on the other hand, will retain the Element type even in cases where the plot might not be useful, such as having only a single value, two values, or no value at all in that range:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve[4:4.5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2D and 3D Elements: slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For data defined in a 2D space, there are 2D equivalents of the 1D Curve and Scatter types. A ``Points``, for example, can be thought of as a number of points in a 2D space." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "r = np.arange(0, 1, 0.005)\n", + "xs, ys = (r * fn(85*np.pi*r) for fn in (np.cos, np.sin))\n", + "paths = hv.Points((xs, ys))\n", + "paths + paths[0:1, 0:1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, indexing is not supported in this space, because there could be many possible points near a given set of coordinates, and finding the nearest one would require a search across potentially incommensurable dimensions, which is poorly defined and difficult to support.\n", + "\n", + "Slicing in 3D works much like slicing in 2D, but indexing is not supported for the same reason as in 2D:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = np.linspace(0, np.pi*8, 201)\n", + "scatter = hv.Scatter3D((xs, np.sin(xs), np.cos(xs)))\n", + "scatter + scatter[5:10, :, 0:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2D Raster and Image: slicing and indexing\n", + "\n", + "Raster and the various other image-like objects (Images, RGB, HSV, etc.) can all sliced and indexed, as can Surface, because they all have an underlying regular grid of key dimension values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%opts Image (cmap='Blues') Bounds (color='red')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(0)\n", + "extents = (0, 0, 10, 10)\n", + "img = hv.Image(np.random.rand(10, 10), bounds=extents)\n", + "img_slice = img[1:9,4:5]\n", + "box = hv.Bounds((1,4,9,5))\n", + "img*box + img_slice" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img[4.2,4.2], img[4.3,4.2], img[5.0,4.2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sampling\n", + "\n", + "Sampling is essentially a process of indexing an Element at multiple index locations, and collecting the results. Thus any Element that can be indexed can also be sampled. Compared to regular indexing, sampling is different in that multiple indices may be supplied at the same time. Also, indexing will only return the value at that location, whereas the return type from a sampling operation is another ``Element`` type, usually either a ``Table`` or a ``Curve``, to allow both key and value dimensions to be returned.\n", + "\n", + "### Sampling Elements\n", + "\n", + "Sampling can use either an explicit list of samples, or or by passing the samples for each dimension keyword arguments.\n", + "\n", + "We'll start by taking a single sample of an Image object, to make it clear how sampling and indexing are similar operations yet different in their results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img_coords = hv.Points(img.table(), extents=extents)\n", + "labeled_img = img * img_coords * hv.Points([img.closest([(5.1,4.9)])])(style=dict(color='r'))\n", + "img + labeled_img + img.sample([(5.1,4.9)])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img[5.1,4.9]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here, the output of the indexing operation is the value (0.1965823616800535) from the location closest to the specified , whereas ``.sample()`` returns a Table that lists both the coordinates *and* the value, and slicing (in previous section) returns an Element of the same type, not a Table.\n", + "\n", + "\n", + "Next we can try sampling along only one Dimension on our 2D Image, leaving us with a 1D Element (in this case a ``Curve``):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sampled = img.sample(y=5)\n", + "labeled_img = img * img_coords * hv.Points(zip(sampled['x'], [img.closest(y=5)]*10))\n", + "img + labeled_img + sampled" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sampling works on any regularly sampled Element type. For example, we can select multiple samples along the x-axis of a Curve." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = np.arange(10)\n", + "samples = [2, 4, 6, 8]\n", + "curve = hv.Curve(zip(xs, np.sin(xs)))\n", + "curve_samples = hv.Scatter(zip(xs, [0] * 10)) * hv.Scatter(zip(samples, [0]*len(samples))) \n", + "curve + curve_samples + curve.sample(samples)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sampling HoloMaps\n", + "\n", + "Sampling is often useful when you have more data than you wish to visualize or analyze at one time. First, let's create a HoloMap containing a number of observations of some noisy data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "obs_hmap = hv.HoloMap({i: hv.Image(np.random.randn(10, 10), bounds=extents)\n", + " for i in range(3)}, key_dimensions=['Observation'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloMaps also provide additional functionality to perform regular sampling on your data. In this case we'll take 3x3 subsamples of each of the Images." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sample_style = dict(edgecolors='k', alpha=1)\n", + "all_samples = obs_hmap.table().to.scatter3d()(style=dict(alpha=0.15))\n", + "sampled = obs_hmap.sample((3,3))\n", + "subsamples = sampled.to.scatter3d()(style=sample_style)\n", + "all_samples * subsamples + sampled" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By supplying bounds in as a (left, bottom, right, top) tuple we can also sample a subregion of our images:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sampled = obs_hmap.sample((3,3), bounds=(2,5,5,10))\n", + "subsamples = sampled.to.scatter3d()(style=sample_style)\n", + "all_samples * subsamples + sampled" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since this kind of sampling is only well supported for continuous coordinate systems, we can only apply this kind of sampling to Image types for now.\n", + "\n", + "### Sampling Charts\n", + "\n", + "Sampling Chart-type Elements like Curve, Scatter, Histogram is only supported by providing an explicit list of samples, since those Elements have no underlying regular grid." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = np.arange(10)\n", + "extents = (0, 0, 2, 10)\n", + "curve = hv.HoloMap({(i) : hv.Curve(zip(xs, np.sin(xs)*i))\n", + " for i in np.linspace(0.5, 1.5, 3)},\n", + " key_dimensions=['Observation'])\n", + "all_samples = curve.table().to.points()\n", + "sampled = curve.sample([0, 2, 4, 6, 8])\n", + "sampling = all_samples * sampled.to.points(extents=extents)(style=dict(color='r'))\n", + "sampling + sampled" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can always deconstruct your data into a Table (see the [Columnar Data](Columnar_Data.ipynb) tutorial) and perform ``select`` operations instead. This is also the easiest way to sample ``NdElement`` types like Bars. Individual samples should be supplied as a set, while ranges can be specified as a two-tuple." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sampled = curve.table().select(Observation=(0, 1.1), x={0, 2, 4, 6, 8})\n", + "sampling = all_samples * sampled.to.points(extents=extents)(style=dict(color='r'))\n", + "sampling + sampled" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These tools should help you index, slice, sample, and select your data with ease. The [Columnar Data](Columnar_Data.ipynb) tutorial) explains how to do other types of operations, such as averaging and other reduction operations." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Live_Data.ipynb b/guides/user_guide/Live_Data.ipynb new file mode 100644 index 0000000000..1ffd801059 --- /dev/null +++ b/guides/user_guide/Live_Data.ipynb @@ -0,0 +1,688 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Containers](Containers.ipynb) Tutorial introduced the [HoloMap](Containers.ipynb#HoloMap), a core HoloViews data structure that allows easy exploration of parameter spaces. The essence of a HoloMap is that it contains a collection of [Elements](Elements.ipynb) (e.g. Images and Curves) that you can easily select and visualize.\n", + "\n", + "HoloMaps hold fully constructed Elements at specifically sampled points in a multidimensional space. Although HoloMaps are useful for exploring high-dimensional parameter spaces, they can very quickly consume huge amounts of memory to store all these Elements. For instance, a hundred samples along four orthogonal dimensions would need a HoloMap containing a hundred *million* Elements, each of which could be a substantial object that takes time to create and costs memory to store. Thus ``HoloMaps`` have some clear limitations:\n", + "\n", + "* HoloMaps may require the generation of millions of Elements before the first element can be viewed.\n", + "* HoloMaps can easily exhaust all the memory available to Python.\n", + "* HoloMaps can even more easily exhaust all the memory in the browser when displayed.\n", + "* Static export of a notebook containing HoloMaps can result in impractically large HTML files.\n", + "\n", + "The ``DynamicMap`` addresses these issues by computing and displaying elements dynamically, allowing exploration of much larger datasets:\n", + "\n", + "* DynamicMaps generate elements on the fly, allowing the process of exploration to begin immediately.\n", + "* DynamicMaps do not require fixed sampling, allowing exploration of parameters with arbitrary resolution.\n", + "* DynamicMaps are lazy in the sense they only compute only as much data as the user wishes to explore.\n", + "\n", + "Of course, these advantages come with some limitations:\n", + "\n", + "* DynamicMaps require a live notebook server and cannot be fully exported to static HTML.\n", + "* DynamicMaps store only a portion of the underlying data, in the form of an Element cache and their output is dependent on the particular version of the executed code. \n", + "* DynamicMaps (and particularly their element caches) are typically stateful (with values that depend on patterns of user interaction), which can make them more difficult to reason about.\n", + "\n", + "In addition to the different computational requirements of ``DynamicMaps``, they can be used to build sophisticated, interactive vizualisations that cannot be achieved using only ``HoloMaps``. This notebook demonstrates some basic examples and the [Streams](Streams.ipynb) notebook follows on by introducing the streams system. The [Linked Streams](Linked_Streams.ipynb) tutorial shows how you can directly interact with your plots when using the Bokeh backend.\n", + "\n", + "When DynamicMap was introduced in version 1.6, it support multiple different 'modes' which have now been deprecated. This notebook demonstrates the simpler, more flexible and more powerful DynamicMap introduced in version 1.7. Users who have been using the previous version of DynamicMap should be unaffected as backwards compatibility has been preserved for the most common cases.\n", + "\n", + "All this will make much more sense once we've tried out some ``DynamicMaps`` and showed how they work, so let's create one!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
To visualize and use a DynamicMap you need to be running a live Jupyter server.
This tutorial assumes that it will be run in a live notebook environment.
\n", + "When viewed statically, DynamicMaps will only show the first available Element,
and will thus not have any slider widgets, making it difficult to follow the descriptions below.

\n", + "It's also best to run this notebook one cell at a time, not via \"Run All\",
so that subsequent cells can reflect your dynamic interaction with widgets in previous cells.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ``DynamicMap`` " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start by importing HoloViews and loading the extension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import numpy as np\n", + "hv.notebook_extension()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now create ``DynamicMap`` similar to the ``HoloMap`` introduced in the [Containers Tutorial](Containers.ipynb#HoloMap). The ``HoloMap`` in that tutorial consisted of ``Image`` elements defined by a function returning NumPy arrays called ``sine_array``. Here we will define a ``waves_image`` function that returns an array pattern parameterized by arbitrary ``alpha`` and ``beta`` parameters inside a HoloViews [Image](Elements.ipynb#Image) element:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = np.linspace(-4,0,202)\n", + "yvals = np.linspace(4,0,202)\n", + "xs,ys = np.meshgrid(xvals, yvals)\n", + "\n", + "def waves_image(alpha, beta):\n", + " return hv.Image(np.sin(((ys/alpha)**alpha+beta)*xs))\n", + "\n", + "waves_image(0,0) + waves_image(0,4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can demonstrate the possibilities for exploration enabled by the simplest declaration of a ``DynamicMap``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basic ``DynamicMap`` declaration" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A simple ``DynamicMap`` declaration looks identical to that needed to declare a ``HoloMap``. Instead supplying some initial data, we will supply the ``waves_image`` function instead with key dimensions simply declaring the arguments of that function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap = hv.DynamicMap(waves_image, kdims=['alpha', 'beta'])\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This object is created instantly, but because it doesn't generate any `hv.Image` objects initially it only shows the printed representation of this object along with some information about how to display it. We will refer to a ``DynamicMap`` that doesn't have enough information to display itself as 'unbounded'.\n", + "\n", + "The textual representation of all ``DynamicMaps`` look similar, differing only in the listed dimensions until they have been evaluated at least once." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Explicit indexing\n", + "\n", + "Unlike a corresponding ``HoloMap`` declaration, this simple unbounded ``DynamicMap`` cannot yet visualize itself. To view it, we can follow the advice in the warning message. First we will explicitly index into our ``DynamicMap`` in the same way you would access a key on a ``HoloMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap[0,1] + dmap.select(alpha=1, beta=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the declared kdims are specifying the arguments *by position* as they do not match the argument names of the ``waves_image`` function. If you *do* match the argument names *exactly*, you can map a kdim position to any argument position of the callable. For instance, the declaration ``kdims=['freq', 'phase']`` would index first by frequency, then phase without mixing up the arguments to ``waves_image`` when indexing." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Setting dimension ranges\n", + "\n", + "The second suggestion proposed by the warning was to supply dimension ranges using the ``redim.range`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.redim.range(alpha=(0,5.0), beta=(1,5.0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here each `hv.Image` object visualizing a particular sine ring pattern with the given parameters is created dynamically, whenever the slider is set to that value. Any value in the allowable range can be requested by dragging the sliders or by tweaking the values using the left and right arrow keys.\n", + "\n", + "Of course, we didn't have to use the ``redim.range`` method and we could have simply declared the ranges right away using explicit ``hv.Dimension`` objects. This would allow us to declare other dimension properties such as the step size used by the sliders: by default each slider can select around a thousand distinct values along its range but you can specify your own step value via the dimension ``step`` parameter. If you use integers in your range declarations, integer stepping will be assumed with a step size of one.\n", + "\n", + "It is important to note that whenever the ``redim`` method is used, a new ``DynamicMap`` is returned with the updated dimensions. In other words, the original ``dmap`` remains unbounded with default dimension objects.\n", + "\n", + "\n", + "#### Setting dimension values\n", + "\n", + "This ``DynamicMap`` above allows exploration of *any* phase and frequency within the declared range unlike an equivalent ``HoloMap`` which would have to be composed of a finite set of samples. We can achieve a similar discrete sampling using ``DynamicMap`` by setting the ``values`` parameter on the dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.redim.values(alpha=[0,1,2], beta=[0.1, 1.0, 2.5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The sliders now snap to the specified dimension values and if you are running this tutorial in a live notebook, the above cell should look like the ``HoloMap`` in the [Containers Tutorial](Containers.ipynb#HoloMap). ``DynamicMap`` is in fact a subclass of ``HoloMap`` with some crucial differences:\n", + "\n", + "* You can now pick as many values of **alpha** or **beta** as allowed by the slider.\n", + "* What you see in the cell above will not be exported in any HTML snapshot of the notebook\n", + "\n", + "\n", + "We will now explore how ``DynamicMaps`` relate to ``HoloMaps`` including conversion operations between the two types. As we will see, there are other ways to display a ``DynamicMap`` without using explict indexing or redim." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Interaction with ``HoloMap``s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To explore the relationship between ``DynamicMap`` and ``HoloMap``, let's declare another callable to draw some shapes we will use in a new ``DynamicMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def shapes(N, radius=0.5): # Positional keyword arguments are fine\n", + " paths = [hv.Path([[(radius*np.sin(a), radius*np.cos(a)) \n", + " for a in np.linspace(-np.pi, np.pi, n+2)]], \n", + " extents=(-1,-1,1,1)) \n", + " for n in range(N,N+3)]\n", + " return hv.Overlay(paths)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sampling ``DynamicMap`` from a ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When combining a ``HoloMap`` with a ``DynamicMap``, it would be very awkward to have to match the declared dimension ``values`` of the DynamicMap with the keys of the ``HoloMap``. Fortunately you don't have to:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Path (linewidth=1.5)\n", + "holomap = hv.HoloMap({(N,r):shapes(N, r) for N in [3,4,5] for r in [0.5,0.75]}, kdims=['N', 'radius'])\n", + "dmap = hv.DynamicMap(shapes, kdims=['N','radius'])\n", + "holomap + dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we declared a ``DynamicMap`` without using ``redim``, but we can view its output because it is presented alongside a ``HoloMap`` which defines the available keys. This convenience is subject to three particular restrictions:\n", + "\n", + "\n", + "* You cannot display a layout consisting of unbounded ``DynamicMaps`` only, because at least one HoloMap is needed to define the samples.\n", + "* The HoloMaps provide the necessary information required to sample the DynamicMap. \n", + "\n", + "Note that there is one way ``DynamicMap`` is less restricted than ``HoloMap``: you can freely combine bounded ``DynamicMaps`` together in a ``Layout``, even if they don't share key dimensions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Also notice that the ``%%opts`` cell magic allows you to style DynamicMaps can be styled in exactly the same way as HoloMaps. We will now use the ``%opts`` line magic to set the linewidths of all ``Path`` elements in the rest of the notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%opts Path (linewidth=1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Converting from ``DynamicMap`` to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Above we mentioned that ``DynamicMap`` is an instance of ``HoloMap``. Does this mean it has a ``.data`` attribute?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dtype = type(dmap.data).__name__\n", + "length = len(dmap.data)\n", + "print(\"DynamicMap 'dmap' has an {dtype} .data attribute of length {length}\".format(dtype=dtype, length=length))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is exactly the same sort of ``.data`` as the equivalent ``HoloMap``, except that its values will vary according to how much you explored the parameter space of ``dmap`` using the sliders above. In a ``HoloMap``, ``.data`` contains a defined sampling along the different dimensions, whereas in a ``DynamicMap``, the ``.data`` is simply the *cache*.\n", + "\n", + "The cache serves two purposes:\n", + "\n", + "* Avoids recomputation of an element should we revisit a particular point in the parameter space. This works well for categorical or integer dimensions, but doesn't help much when using continuous sliders for real-valued dimensions.\n", + "* Records the space that has been explored with the ``DynamicMap`` for any later conversion to a ``HoloMap`` up to the allowed cache size.\n", + "\n", + "We can always convert *any* ``DynamicMap`` directly to a ``HoloMap`` as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.HoloMap(dmap)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is in fact equivalent to declaring a HoloMap with the same parameters (dimensions, etc.) using ``dmap.data`` as input, but is more convenient. Note that the slider positions reflect those we sampled from the ``HoloMap`` in the previous section.\n", + "\n", + "Although creating a HoloMap this way is easy, the result is poorly controlled, as the keys in the DynamicMap cache are usually defined by how you moved the sliders around. If you instead want to specify a specific set of samples, you can easily do so by using the same key-selection semantics as for a ``HoloMap`` to define exactly which elements are to be sampled and put into the cache:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.HoloMap(dmap[{(2,0.3), (2,0.6), (3,0.3), (3,0.6)}])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we index the ``dmap`` with specified keys to return a *new* DynamicMap with those keys in its cache, which we then cast to a ``HoloMap``. This allows us to export specific contents of ``DynamicMap`` to static HTML which will display the data at the sampled slider positions.\n", + "\n", + "The key selection above happens to define a Cartesian product, which is one of the most common way to sample across dimensions. Because the list of such dimension values can quickly get very large when enumerated as above, we provide a way to specify a Cartesian product directly, which also works with ``HoloMaps``. Here is an equivalent way of defining the same set of four points in that two-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "samples = hv.HoloMap(dmap[{2,3},{0.5,1.0}])\n", + "samples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "samples.data.keys()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The default cache size of 500 Elements is relatively high so that interactive exploration will work smoothly, but you can reduce it using the ``cache_size`` parameter if you find you are running into issues with memory consumption. A bounded ``DynamicMap`` with ``cache_size=1`` requires the least memory, but will recompute a new Element every time the sliders are moved, making it less responsive." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Converting from ``HoloMap`` to ``DynamicMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have now seen how to convert from a ``DynamicMap`` to a ``HoloMap`` for the purposes of static export, but why would you ever want to do the inverse?\n", + "\n", + "Although having a ``HoloMap`` to start with means it will not save you memory, converting to a ``DynamicMap`` does mean that the rendering process can be deferred until a new slider value requests an update. You can achieve this conversion using the ``Dynamic`` utility as demonstrated here by applying it to the previously defined ``HoloMap`` called ``samples``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from holoviews.util import Dynamic\n", + "dynamic = Dynamic(samples)\n", + "print('After apply Dynamic, the type is a {dtype}'.format(dtype=type(dynamic).__name__))\n", + "dynamic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this particular example, there is no real need to use ``Dynamic`` as each frame renders quickly enough. For visualizations that are slow to render, using ``Dynamic`` can result in more responsive visualizations. \n", + "\n", + "The ``Dynamic`` utility is very versatile and is discussed in more detail in the [Dynamic Operations](Dynamic_Operations.ipynb) tutorial." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Slicing ``DynamicMaps``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we have seen we can either declare dimension ranges directly in the kdims or use the ``redim.range`` convenience method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dmap = hv.DynamicMap(shapes, kdims=['N','radius']).redim.range(N=(2,20), radius=(0.5,1.0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The declared dimension ranges define the absolute limits allowed for exploration in this continuous, bounded DynamicMap . That said, you can use the soft_range parameter to view subregions within that range. Setting the soft_range parameter on dimensions can be done conveniently using slicing:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sliced = dmap[4:8, :]\n", + "sliced" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Notice that N is now restricted to the range 4:8. Open slices are used to release any ``soft_range`` values, which resets the limits back to those defined by the full range:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sliced[:, 0.8:1.0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``[:]`` slice leaves the soft_range values alone and can be used as a convenient way to clone a ``DynamicMap``. Note that mixing slices with any other object type is not supported. In other words, once you use a single slice, you can only use slices in that indexing operation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using groupby to discretize a DynamicMap\n", + "\n", + "A DynamicMap also makes it easy to partially or completely discretize a function to evaluate in a complex plot. By grouping over specific dimensions that define a fixed sampling via the Dimension values parameter, the DynamicMap can be viewed as a ``GridSpace``, ``NdLayout``, or ``NdOverlay``. If a dimension specifies only a continuous range it can't be grouped over, but it may still be explored using the widgets. This means we can plot partial or completely discretized views of a parameter space easily.\n", + "\n", + "#### Partially discretize\n", + "\n", + "The implementation for all the groupby operations uses the ``.groupby`` method internally, but we also provide three higher-level convenience methods to group dimensions into an ``NdOverlay`` (``.overlay``), ``GridSpace`` (``.grid``), or ``NdLayout`` (``.layout``).\n", + "\n", + "Here we will evaluate a simple sine function with three dimensions, the phase, frequency, and amplitude. We assign the frequency and amplitude discrete samples, while defining a continuous range for the phase:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "xs = np.linspace(0, 2*np.pi)\n", + "\n", + "def sin(ph, f, amp):\n", + " return hv.Curve((xs, np.sin(xs*f+ph)*amp))\n", + "\n", + "kdims=[hv.Dimension('phase', range=(0, np.pi)),\n", + " hv.Dimension('frequency', values=[0.1, 1, 2, 5, 10]),\n", + " hv.Dimension('amplitude', values=[0.5, 5, 10])]\n", + "\n", + "waves_dmap = hv.DynamicMap(sin, kdims=kdims)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we define the amplitude dimension to be overlaid and the frequency dimension to be gridded:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts GridSpace [show_legend=True fig_size=200]\n", + "waves_dmap.overlay('amplitude').grid('frequency')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, instead of having three sliders (one per dimension), we've now laid out the frequency dimension as a discrete set of values in a grid, and the amplitude dimension as a discrete set of values in an overlay, leaving one slider for the remaining dimension (phase). This approach can help you visualize a large, multi-dimensional space efficiently, with full control over how each dimension is made visible.\n", + "\n", + "\n", + "#### Fully discretize\n", + "\n", + "Given a continuous function defined over a space, we could sample it manually, but here we'll look at an example of evaluating it using the groupby method. Let's look at a spiral function with a frequency and first- and second-order phase terms. Then we define the dimension values for all the parameters and declare the DynamicMap:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%opts Path (linewidth=1 color=Palette('Blues'))\n", + "\n", + "def spiral_equation(f, ph, ph2):\n", + " r = np.arange(0, 1, 0.005)\n", + " xs, ys = (r * fn(f*np.pi*np.sin(r+ph)+ph2) for fn in (np.cos, np.sin))\n", + " return hv.Path((xs, ys))\n", + "\n", + "spiral_dmap = hv.DynamicMap(spiral_equation, kdims=['f','ph','ph2']).\\\n", + " redim.values(f=np.linspace(1, 10, 10),\n", + " ph=np.linspace(0, np.pi, 10),\n", + " ph2=np.linspace(0, np.pi, 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can make use of the ``.groupby`` method to group over the frequency and phase dimensions, which we will display as part of a GridSpace by setting the ``container_type``. This leaves the second phase variable, which we assign to an NdOverlay by setting the ``group_type``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts GridSpace [xaxis=None yaxis=None] Path [bgcolor='w' xaxis=None yaxis=None]\n", + "spiral_dmap.groupby(['f', 'ph'], group_type=hv.NdOverlay, container_type=hv.GridSpace)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This grid shows a range of frequencies `f` on the x axis, a range of the first phase variable `ph` on the `y` axis, and a range of different `ph2` phases as overlays within each location in the grid. As you can see, these techniques can help you visualize multidimensional parameter spaces compactly and conveniently.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DynamicMaps and normalization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By default, a ``HoloMap`` normalizes the display of elements according the minimum and maximum values found across the ``HoloMap``. This automatic behavior is not possible in a ``DynamicMap``, where arbitrary new elements are being generated on the fly. Consider the following examples where the arrays contained within the returned ``Image`` objects are scaled with time:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Image {+axiswise}\n", + "ls = np.linspace(0, 10, 200)\n", + "xx, yy = np.meshgrid(ls, ls)\n", + "\n", + "def cells(time):\n", + " return hv.Image(time*np.sin(xx+time)*np.cos(yy+time), vdims=['Intensity'])\n", + "\n", + "dmap = hv.DynamicMap(cells, kdims=['time']).redim.range(time=(1,20))\n", + "dmap + dmap.redim.range(Intensity=(0,10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we use ``+axiswise`` to see the behavior of the two cases independently. We see in **A** that when only the time dimension is given a range, no automatic normalization occurs (unlike a ``HoloMap``). In **B** we see that normalization is applied, but only when the value dimension ('Intensity') range has been specified. \n", + "\n", + "In other words, ``DynamicMaps`` cannot support automatic normalization across their elements, but do support the same explicit normalization behavior as ``HoloMaps``. Values that are generated outside this range are simply clipped according the usual semantics of explicit value dimension ranges. \n", + "\n", + "Note that we can always have the option of casting a ``DynamicMap`` to a ``HoloMap`` in order to automatically normalize across the cached values, without needing explicit value dimension ranges." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using DynamicMaps in your code\n", + "\n", + "As you can see, ``DynamicMaps`` let you use HoloViews with a very wide range of dynamic data formats and sources, making it simple to visualize ongoing processes or very large data spaces. \n", + "\n", + "Given unlimited computational resources, the functionality covered in this tutorial would match that offered by ``HoloMap`` but with fewer normalization options. ``DynamicMap`` actually enables a vast range of new possibilities for dynamic, interactive visualizations as covered in the [Streams](Streams.ipynb) tutorial. Following on from that, the [Linked Streams](Linked_Streams.ipynb) tutorial shows how you can directly interact with your plots when using the Bokeh backend." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Plotting_with_Bokeh.ipynb b/guides/user_guide/Plotting_with_Bokeh.ipynb new file mode 100644 index 0000000000..059a1a8215 --- /dev/null +++ b/guides/user_guide/Plotting_with_Bokeh.ipynb @@ -0,0 +1,621 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "focus": true, + "id": "e6a399c2-931d-445e-a80a-30ea27653f27" + }, + "source": [ + "
\n", + " This tutorial contains a lot of bokeh plots, which may take a little while to load and render.\n", + "
\n", + "\n", + "One of the major design principles of HoloViews is that the declaration of data is completely independent from the plotting implementation. This means that the visualization of HoloViews data structures can be performed by different plotting backends. As part of the 1.4 release of HoloViews, a [Bokeh](http://bokeh.pydata.org) backend was added in addition to the default ``matplotlib`` backend. Bokeh provides a powerful platform to generate interactive plots using HTML5 canvas and WebGL, and is ideally suited towards interactive exploration of data.\n", + "\n", + "By combining the ease of generating interactive, high-dimensional visualizations with the interactive widgets and fast rendering provided by Bokeh, HoloViews becomes even more powerful.\n", + "\n", + "This tutorial will cover some basic options on how to style and change various plot attributes and explore some of the more advanced features like interactive tools, linked axes, and brushing." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "23b0bc81-6d36-4fc6-b43c-4cfb13c32ef6" + }, + "source": [ + "As usual, the first thing we do is initialize the HoloViews notebook extension, but we now specify the backend specifically." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "735ed729-9f22-44c3-8b29-323e8a453960" + }, + "outputs": [], + "source": [ + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "c97173e0-8eb2-437c-8316-23336a9f9d7b" + }, + "source": [ + "We could instead leave the default backend as ``'matplotlib'``, and then switch only some specific cells to use bokeh using a cell magic:\n", + "\n", + "```python\n", + "%%output backend='bokeh'\n", + "obj\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "c0d5e9a6-258f-47c0-b6e6-0744af327c03" + }, + "source": [ + "## Element Style options\n", + "\n", + "Most Bokeh Elements support a mixture of the following fill, line, and text style customization options:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "d19a49d0-b715-4175-a56b-10f33c179927" + }, + "outputs": [], + "source": [ + "from holoviews.plotting.bokeh.element import (line_properties, fill_properties,\n", + " text_properties)\n", + "print(\"\"\"\n", + " Line properties: %s\\n\n", + " Fill properties: %s\\n\n", + " Text properties: %s\n", + " \"\"\" % (line_properties, fill_properties, text_properties))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's an example of HoloViews Elements using a Bokeh backend, with bokeh's style options:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "1ec75e9b-5625-4108-b393-6f6fddcfa1fb" + }, + "outputs": [], + "source": [ + "curve_opts = dict(line_width=10, line_color='indianred', line_dash='dotted', line_alpha=0.5)\n", + "point_opts = dict(fill_color='#00AA00', fill_alpha=0.5, line_width=1, line_color='black', size=5)\n", + "text_opts = dict(text_align='center', text_baseline='middle', text_color='gray', text_font='Arial')\n", + "xs = np.linspace(0, np.pi*4, 100)\n", + "data = (xs, np.sin(xs))\n", + "\n", + "(hv.Curve(data)(style=curve_opts) +\n", + " hv.Points(data)(style=point_opts) +\n", + " hv.Text(6, 0, 'Here is some text')(style=text_opts))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that because the first two plots use the same underlying data, they become linked, such that zooming or panning one of the plots makes the corresponding change on the other." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "a7dbd6d6-198f-4461-a344-134a54a67bba" + }, + "source": [ + "### Sizing Elements" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "367c674e-01a9-4d95-8941-83458c3cfc75" + }, + "source": [ + "Sizing and aspect of Elements in bokeh are always computed in absolute pixels. To change the size or aspect of an Element set the ``width`` and ``height`` plot options." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "31636ffa-4c06-4156-9415-167a837da843", + "scrolled": false + }, + "outputs": [], + "source": [ + "%%opts Points.A [width=300 height=300] Points.B [width=600 height=300]\n", + "hv.Points(data, group='A') + hv.Points(data, group='B')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "7a5b4269-adc2-4f7d-b91b-6715debaaf12" + }, + "source": [ + "### Controlling axes" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "cec51ba5-7648-437c-b482-a0033201e733" + }, + "source": [ + "Bokeh provides a variety of options to control the axes. Here we provide a quick overview of linked plots for the same data displayed differently by applying log axes, disabling axes, rotating ticks, specifying the number of ticks, and supplying an explicit list of ticks." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "6eb1e3f1-6a5d-4800-a75e-b13fa09e268f" + }, + "outputs": [], + "source": [ + "points = hv.Points(np.exp(xs)) \n", + "axes_opts = [('Plain', {}),\n", + " ('Log', {'logy': True}),\n", + " ('None', {'yaxis': None}),\n", + " ('Rotate', {'xrotation': 90}),\n", + " ('N Ticks', {'xticks': 3}),\n", + " ('List Ticks', {'xticks': [0, 100, 300, 500]})]\n", + "\n", + "hv.Layout([points.relabel(group=group)(plot=opts)\n", + " for group, opts in axes_opts]).cols(3).display('all')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "cb20e6b1-babb-4d0b-b0e6-51a7753e3636" + }, + "source": [ + "### Datetime axes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both the matplotlib and the bokeh backends allow plotting datetime data, if you ensure the dates array is of a datetime dtype. Note also that the legends are interactive and can be toggled by clicking on its entries. Additionally the style of unselected curve can be controlled by setting the ``muted_alpha`` and ``muted_color`` style options." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "5e40a09f-98ec-40a0-b2a6-15c7d1e64c64" + }, + "outputs": [], + "source": [ + "%%opts Overlay [width=600 legend_position='top_left'] Curve (muted_alpha=0.5 muted_color='black')\n", + "try:\n", + " import bokeh.sampledata.stocks\n", + "except:\n", + " import bokeh.sampledata\n", + " bokeh.sampledata.download()\n", + "\n", + "from bokeh.sampledata.stocks import GOOG, AAPL\n", + "goog_dates = np.array(GOOG['date'], dtype=np.datetime64)\n", + "aapl_dates = np.array(AAPL['date'], dtype=np.datetime64)\n", + "hv.Curve((goog_dates, GOOG['adj_close']), kdims=['Date'], vdims=['Stock Index'], label='Google') *\\\n", + "hv.Curve((aapl_dates, AAPL['adj_close']), kdims=['Date'], vdims=['Stock Index'], label='Apple')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Categorical axes\n", + "\n", + "A number of Elements will also support categorical (i.e. string types) as dimension values, these include ``HeatMap``, ``Points``, ``Scatter``, ``Curve``, ``ErrorBar`` and ``Text`` types.\n", + "\n", + "Here we create a set of points indexed by ascending alphabetical x- and y-coordinates and values multiplying the integer index of each coordinate. We then overlay a ``HeatMap`` of the points with the points themselves enabling the hover tool for both and scaling the point size by the 'z' coordines." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points [size_index='z' tools=['hover']] HeatMap [toolbar='above' tools=['hover']]\n", + "points = hv.Points([(chr(i+65), chr(j+65), i*j) for i in range(10) for j in range(10)], vdims=['z'])\n", + "hv.HeatMap(points) * points" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the example above both axes are categorical because a HeatMap by definition represents 2D categorical coordinates (unlike Image and Raster types). Other Element types will automatically infer a categorical dimension if the coordinates along that dimension include string types.\n", + "\n", + "Here we will generate random samples indexed by categories from 'A' to 'E' using the Scatter Element and overlay them.\n", + "Secondly we compute the mean and standard deviation for each category and finally we overlay these two elements with a curve representing the mean value and a text element specifying the global mean. All these Elements respect the categorical index, providing us a view of the distribution of values in each category:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Overlay [show_legend=False height=400 width=600] ErrorBars (line_width=5) Scatter(alpha=0.2 size=6)\n", + "\n", + "overlay = hv.NdOverlay({group: hv.Scatter(([group]*100, np.random.randn(100)*(i+1)+i))\n", + " for i, group in enumerate(['A', 'B', 'C', 'D', 'E'])})\n", + "\n", + "errorbars = hv.ErrorBars([(k, el.reduce(function=np.mean), el.reduce(function=np.std))\n", + " for k, el in overlay.items()])\n", + "\n", + "global_mean = hv.Text('A', 12, 'Global mean: %.3f' % overlay.dimension_values('y').mean())\n", + "\n", + "errorbars * overlay * hv.Curve(errorbars) * global_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "fd1916ba-13a5-404a-8115-f63487b38689" + }, + "source": [ + "## Containers" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "1b4d7def-38d5-4872-b780-e203345e98d8" + }, + "source": [ + "### Tabs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "fc7964ba-2dcd-48e3-b859-c8a5b09386e6" + }, + "source": [ + "Using bokeh, both ``(Nd)Overlay`` and ``(Nd)Layout`` types may be displayed inside a ``tabs`` widget. This may be enabled via a plot option ``tabs``, and may even be nested inside a Layout." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "caf6fe45-30fe-4053-b242-b4a6241d9e30" + }, + "outputs": [], + "source": [ + "%%opts Overlay [tabs=True] Image [width=400 height=400]\n", + "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", + "\n", + "img = hv.Image(np.sin(x**2+y**2), bounds=(-1,-1,1,1))\n", + "img.relabel('Low') * img.clone(img.data*2).relabel('High')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "da0f093f-182c-4db1-9ba3-b9c0c18f2df8" + }, + "source": [ + "Another reason to use ``tabs`` is that some Layout combinations may not be able to be displayed directly using HoloViews. For example, it is not currently possible to display a ``GridSpace`` as part of a ``Layout`` in any backend, and this combination will automatically switch to a ``tab`` representation for the bokeh backend." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "a7b248c0-b8f6-443c-816a-4c212c2eb718" + }, + "source": [ + "### Marginals\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "d1f0abbf-6a6f-4700-883a-9ab604a62071" + }, + "source": [ + "The Bokeh backend also supports marginal plots to generate adjoined plots. The most convenient way to build an AdjointLayout is with the ``.hist()`` method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "b87c3c95-e073-427a-b84d-7f370f4f7023" + }, + "outputs": [], + "source": [ + "points = hv.Points(np.random.randn(500,2))\n", + "points.hist(num_bins=51, dimension=['x','y'])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "8c3ad886-bff5-4b5f-af1e-39cb10faa00d" + }, + "source": [ + "When the histogram represents a quantity that is mapped to a value dimension with a corresponding colormap, it will automatically share the colormap, making it useful as a colorbar for that dimension as well as a histogram." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "bd398ce3-991b-4985-9b3e-32faad7e0af2" + }, + "outputs": [], + "source": [ + "img.hist(num_bins=100, dimension=['x', 'y'], weight_dimension='z', mean_weighted=True) +\\\n", + "img.hist(dimension='z')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "b2da1a91-c36a-4962-a837-12897e1e7498" + }, + "source": [ + "## HoloMaps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloMaps work in bokeh just as in other backends." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "91d49de6-7ed6-43ff-bf06-e6d8bb439a90" + }, + "outputs": [], + "source": [ + "hmap = hv.HoloMap({phase: img.clone(np.sin(x**2+y**2+phase))\n", + " for phase in np.linspace(0, np.pi*2, 6)}, kdims=['Phase'])\n", + "hmap.hist(num_bins=100, dimension=['x', 'y'], weight_dimension='z', mean_weighted=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "aec37542-5975-4468-ad19-06c3e5f0b407" + }, + "source": [ + "## Tools: Interactive widgets" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "2bee6761-63ac-40b9-9eb4-c9ff568f75ac" + }, + "source": [ + "#### Hover tools" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some Elements allow revealing additional data by hovering over the data. To enable the hover tool, simply supply ``'hover'`` as a list to the ``tools`` plot option." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "f9d2df76-be40-498a-afe1-730790603088" + }, + "outputs": [], + "source": [ + "%%opts Points [tools=['hover']] (size=5) HeatMap [tools=['hover']] Histogram [tools=['hover']] Layout [shared_axes=False]\n", + "error = np.random.rand(100, 3)\n", + "heatmap_data = {(chr(65+i),chr(97+j)):i*j for i in range(5) for j in range(5) if i!=j}\n", + "data = [np.random.normal() for i in range(10000)]\n", + "hist = np.histogram(data, 20)\n", + "hv.Points(error) + hv.HeatMap(heatmap_data).sort() + hv.Histogram(hist)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "focus": false, + "id": "79c02062-97c6-46e2-9f90-954001962c4c" + }, + "source": [ + "#### Selection tools" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bokeh provides a number of tools for selecting data points including ``tap``, ``box_select``, ``lasso_select`` and ``poly_select``. To distinguish between selected and unselected data points we can also control the color and alpha of the ``selection`` and ``nonselection`` points. You can try out any of these selection tools and see how the plot is affected:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "fc473384-8f85-4560-a656-5d6c2929ae30", + "scrolled": true + }, + "outputs": [], + "source": [ + "%%opts Points [tools=['box_select', 'lasso_select', 'tap']] (size=10 nonselection_color='red' color='blue')\n", + "hv.Points(error)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "fba3095a-bebb-4d97-b602-82e4bf67df06" + }, + "source": [ + "#### Selection widget with shared axes and linked brushing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When dealing with complex multi-variate data it is often useful to explore interactions between variables across plots. HoloViews will automatically link the data sources of plots in a Layout if they draw from the same data, allowing for both linked axes and brushing.\n", + "\n", + "We'll see what this looks like in practice using a small dataset of macro-economic data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By creating two ``Points`` Elements, which both draw their data from the same pandas DataFrame, the two plots become automatically linked. This linking behavior can be toggled with the ``shared_datasource`` plot option on a ``Layout`` or ``GridSpace``. You can try selecting data in one plot, and see how the corresponding data (those on the same rows of the DataFrame, even if the plots show different data, will be highlighted in each." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter [tools=['box_select', 'lasso_select']] Layout [shared_axes=True shared_datasource=True]\n", + "hv.Scatter(macro_df, kdims=['year'], vdims=['gdp']) +\\\n", + "hv.Scatter(macro_df, kdims=['gdp'], vdims=['unem'])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "focus": false, + "id": "818135f9-ae0c-4eb9-a3c5-5fb5a86196a7" + }, + "source": [ + "A gridmatrix is a clear use case for linked plotting. This operation plots any combination of numeric variables against each other, in a grid, and selecting datapoints in any plot will highlight them in all of them. Such linking can thus reveal how values in a particular range (e.g. very large outliers along one dimension) relate to each of the other dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "focus": false, + "id": "3494a694-f7e1-4c26-a58e-5fc0969fac08", + "scrolled": false + }, + "outputs": [], + "source": [ + "%%opts Scatter [tools=['box_select', 'lasso_select', 'hover'] border=0] Histogram {+axiswise}\n", + "table = hv.Table(macro_df, kdims=['year', 'country'])\n", + "matrix = hv.operation.gridmatrix(table.groupby('country'))\n", + "matrix.select(country=['West Germany', 'United Kingdom', 'United States'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Bokeh Elements](Bokeh_Elements.ipynb) tutorial shows examples of all the Elements supported for Bokeh, in a format that can be compared with the default matplotlib [Elements](Elements.ipynb) tutorial." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Responding_to_Events.ipynb b/guides/user_guide/Responding_to_Events.ipynb new file mode 100644 index 0000000000..89d65275b4 --- /dev/null +++ b/guides/user_guide/Responding_to_Events.ipynb @@ -0,0 +1,833 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "import numpy as np\n", + "hv.notebook_extension()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the [DynamicMap tutorial](Dynamic_Map.ipynb) we saw how ``DynamicMap`` allows you to explore high dimensional data using the widgets in the same style as ``HoloMaps``. Although suitable for unbounded exploration of large parameter spaces, the ``DynamicMaps`` described in that notebook support exactly the same mode of interaction as ``HoloMaps``. In particular, the key dimensions are used to specify a set of widgets that when manipulated apply the appopriate indexing to invoke the user-supplied callable.\n", + "\n", + "In this tutorial we will explore the HoloViews streams system that allows *any* sort of value to be supplied from *anywhere*. This system opens a huge set of new possible visualization types, including continuously updating plots that reflect live data as well as dynamic visualizations that can be interacted with directly, as described in the [Linked Streams](Linked_Streams.ipynb) tutorial.\n", + "\n", + "
To use visualize and use a DynamicMap you need to be running a live Jupyter server.
This tutorial assumes that it will be run in a live notebook environment.
\n", + "When viewed statically, DynamicMaps will only show the first available Element,
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Styles and plot options used in this tutorial\n", + "%opts Ellipse [bgcolor='w'] (color='b')\n", + "%opts Image (cmap='viridis')\n", + "%opts VLine (color='r' linewidth=2) HLine (color='r' linewidth=1)\n", + "%opts Path [show_grid=False bgcolor='w'] (color='k' linestyle='-.')\n", + "%opts Area (hatch='\\\\' facecolor='cornsilk' linewidth=2 edgecolor='k')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A simple ``DynamicMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before introducing streams, let us declare a simple ``DynamicMap`` of the sort discussed in the [DynamicMap tutorial](Dynamic_Map.ipynb). This example consists of an ``Curve`` element showing a [Lissajous curve](https://en.wikipedia.org/wiki/Lissajous_curve) with ``VLine`` and ``HLine`` annotation to form a crosshair:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lin = np.linspace(-np.pi,np.pi,300)\n", + "\n", + "def lissajous(t, a,b, delta):\n", + " return (np.sin(a * t + delta), np.sin(b * t))\n", + "\n", + "def lissajous_curve(t, a=3,b=5, delta=np.pi/2):\n", + " (x,y) = lissajous(t,a,b,delta)\n", + " return hv.Path(lissajous(lin,a,b,delta)) * hv.VLine(x) * hv.HLine(y)\n", + "\n", + "hv.DynamicMap(lissajous_curve, kdims=['t']).redim.range(t=(-3.,3.))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected, the declared key dimension (``kdims``) has turned into slider widgets that let us move the crosshair along the curve. Now let's see how to position the crosshair using streams." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introducing streams\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The core concept behind a stream is simple: it is a parameter that can change over time that automatically refreshes code depending on those parameter values. \n", + "\n", + "Like all objects in HoloViews, these parameters are declared using [param](https://ioam.github.io/param) and you can define streams as a parameterized subclass of the ``holoviews.streams.Stream``. A more convenient way is to use the ``Stream.define`` classmethod:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from holoviews.streams import Stream, param\n", + "Time = Stream.define('Time', t=0.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This results in a ``Time`` class with a numeric ``t`` parameter that defaults to zero. As this object is parameterized, we can use ``hv.help`` to view it's parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.help(Time)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This parameter is a ``param.Number`` as we supplied a float, if we have supplied an integer it would have been a ``param.Integer``. Notice that there is no docstring in the help output above but we can add one by explicit defining the parameter as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Time = Stream.define('Time', t=param.Number(default=0.0, doc='A time parameter'))\n", + "hv.help(Time)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have defined this ``Time`` stream class, we can make of an instance of it and looks at its parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_dflt = Time()\n", + "print('This Time instance has parameter t={t}'.format(t=time_dflt.t))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As with all parameterized classes, we can instantiate our parameters with a suitable value of our choice instead of relying on defaults." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time = Time(t=np.pi/4)\n", + "print('This Time instance has parameter t={t}'.format(t=time.t))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For more information on defining ``Stream`` classes this way, use ``hv.help(Stream.define)``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simple streams example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now supply this streams object to a ``DynamicMap`` using the same ``lissajous_curve`` callback above by adding it to the ``streams`` list:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap = hv.DynamicMap(lissajous_curve, streams=[time])\n", + "dmap + lissajous_curve(t=np.pi/4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Immediately we see that the crosshair position of the ``DynamicMap`` reflects the ``t`` parameter values we set on the ``Time`` stream. This means that the ``t`` parameter was supplied as the argument to the ``lissajous_curve`` callback. As we now have no key dimensions, there is no widgets for the ``t`` dimensions.\n", + "\n", + "Although we have what looks like a static plot, it is in fact dynamic and can be updated in place at any time. To see this, we can call the ``event`` method on our ``DynamicMap``:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.event( t=0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Running this cell will have updated the crosshair from its original position where $t=\\frac{\\pi}{4}$ to a new position where ``t=0.2``. Try running the cell above with different values of ``t`` and watch the plot update!\n", + "\n", + "This ``event`` method is the recommended way of updating the stream parameters on a ``DynamicMap`` but if you have a handle on the relevant stream instance, you can also call the ``event`` method on that:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time.event(t=-0.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Running the cell above also move the crosshair to a new position. As there are no key dimensions, there is only a single valid (empty) key that can be accessed with ``dmap[()]`` or ``dmap.select()`` making ``event`` the only way to explore new parameters.\n", + "\n", + "We will examine the ``event`` method and the machinery that powers streams in more detail later in the tutorial after we have looked at more examples of how streams are used in practice." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Working with multiple streams" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The previous example showed a curve parameterized by a single dimension ``t``. Often you will have multiple stream parameters you would like to declare as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ls = np.linspace(0, 10, 200)\n", + "xx, yy = np.meshgrid(ls, ls)\n", + "\n", + "XY = Stream.define('XY',x=0.0,y=0.0)\n", + "\n", + "def marker(x,y):\n", + " return hv.Image(np.sin(xx)*np.cos(yy)) * hv.VLine(x) * hv.HLine(y)\n", + "\n", + "dmap = hv.DynamicMap(marker, streams=[XY()])\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can update both ``x`` and ``y`` by passing multiple keywords to the ``event`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.event(x=-0.2, y=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the definition above behaves the same as this definition where we define separate ``X`` and ``Y`` stream classes:\n", + "\n", + "```python\n", + "X = Stream.define('X',x=0.0)\n", + "Y = Stream.define('Y',y=0.0)\n", + "hv.DynamicMap(crosshairs, streams=[X(),Y()])\n", + "```\n", + "\n", + "The reason why you might want to list multiple streams instead of always defining a single stream containing all the required stream parameters will be made clear in the [Linked Streams](Linked_Streams.ipynb) tutorial." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Combining streams and key dimensions\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All the ``DynamicMap`` examples above can't be indexed with anything other than ``dmap[()]`` or ``dmap.select()`` as none of them had any key dimensions. This was to focus exclusively on the streams system at the start of the tutorial and not because you can't combine key dimensions and streams:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%opts Curve (linestyle='-')\n", + "xs = np.linspace(-3, 3, 400)\n", + "\n", + "def function(xs, time):\n", + " \"Some time varying function\"\n", + " return np.exp(np.sin(xs+np.pi/time))\n", + "\n", + "def integral(limit, time):\n", + " curve = hv.Curve((xs, function(xs, time)))[limit:]\n", + " area = hv.Area((xs, function(xs, time)))[:limit]\n", + " summed = area.dimension_values('y').sum() * 0.015 # Numeric approximation\n", + " return (area * curve * hv.VLine(limit) * hv.Text(limit + 0.5, 2.0, '%.2f' % summed))\n", + "\n", + "Time = Stream.define('Time', time=1.0)\n", + "dmap=hv.DynamicMap(integral, kdims=['limit'], streams=[Time()]).redim.range(limit=(-3,2))\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, you can drag the slider to see a numeric approximation to the integral on the left side on the ``VLine``.\n", + "\n", + "As ``'limit'`` is declared as a key dimension, it is given a normal HoloViews slider. As we have also defined a ``time`` stream, we can update the displayed curve for any time value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.event(time=8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now see how to control the ``time`` argument of the integral function by triggered an event with a new time value, and how to control the ``limit`` argument by moving a slider. Controlling ``limit`` with a slider this way is valid but also a little unintuitive: what if you could control ``limit`` just by hovering over the plot?\n", + "\n", + "In the [Linked Streams](Linked_Streams.ipynb) tutorial, we will see how we can do exactly this by switching to the bokeh backend and using the linked streams system." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matching names to arguments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that in the example above, the key dimension names and the stream parameter names match the arguments to the callable. This *must* be true for stream parameters but this isn't a requirement of key dimensions: if you replace the word 'radius' with 'size' in the example above after ``XY`` is defined, the example still works. \n", + "\n", + "Here are the rules regarding the callback argument names:\n", + "\n", + "* If your key dimensions and stream parameters match the callable argument names, the definition is valid.\n", + "* If your callable accepts mandatory positional arguments and their number matches the number of key dimensions, the names don't need to match and these arguments will be passed key dimensions values.\n", + "\n", + "As stream parameters always need to match the argument names, there is a method to allow them to be easily renamed. Let's say you imported a stream class as shown in the [Linked Streams](Linked_Streams.ipynb) tutorial or for this example, reuse the existing ``XY`` stream class. You can then use the ``rename`` method allowing the following definition:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def integral2(lim, t): \n", + " 'Same as integral with different argument names'\n", + " return integral(lim, t)\n", + "\n", + "dmap = hv.DynamicMap(integral2, kdims=['limit'], streams=[Time().rename(time='t')]).redim.range(limit=(-3.,3.))\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overlapping stream and key dimensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above example above, the stream parameters do not overlap with the declared key dimension. What happens if we add 'time' to the declared key dimensions?\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap=hv.DynamicMap(integral, kdims=['time','limit'], streams=[Time()]).redim.range(limit=(-3.,3.))\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First you might notice that the 'time' value is now shown in the title but that there is no corresponding time slider as its value is supplied by the stream.\n", + "\n", + "The 'time'parameters is now what is called 'dimensioned streams' which renables indexing of these dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap[1,0] + dmap.select(time=3,limit=1.5) + dmap[None,1.5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In **A**, we supply our own values for the 'time and 'limit' parameters. This doesn't change the values of the 'time' parameters on the stream itself but it does allow us to see what would happen when the time value is one. Note the use of ``None`` in **C** as a way of leaving an explicit value unspecified, allowing the current stream value to be used.\n", + "\n", + "This is one good reason to use dimensioned streams - it restores access to convenient indexing and selecting operation as a way of exploring your visualizations. The other reason it is useful is that if you keep all your parameters dimensioned, it re-enables the ``DynamicMap`` cache described in the [DynamicMap tutorial](Dynamic_Map.ipynb), allowing you to record your interaction with streams and allowing you to cast to ``HoloMap`` for export:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.reset() # Reset the cache, we don't want the values from the cell above\n", + "# TODO: redim the limit dimension to a default of 0\n", + "dmap.event(time=1)\n", + "dmap.event(time=1.5)\n", + "dmap.event(time=2)\n", + "hv.HoloMap(dmap)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One use of this would be to have a simulator drive a visualization forward using ``event`` in a loop. You could then stop your simulation and retain the a recent history of the output as long as the allowed ``DynamicMap`` cache." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generators and argument-free callables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to callables, Python supports [generators](https://docs.python.org/3/glossary.html#term-generator) that can be defined with the ``yield`` keyword. Calling a function that uses yield returns a [generator iterator](https://docs.python.org/3/glossary.html#term-generator-iterator) object that accepts no arguments but returns new values when iterated or when ``next()`` is applied to it.\n", + "\n", + "HoloViews supports Python generators for completeness and [generator expressions](https://docs.python.org/3/glossary.html#term-generator-expression) can be a convenient way to define code inline instead of using lambda functions. As generators expressions don't accept arguments and can get 'exhausted' ***we recommend using callables with ``DynamicMap``*** - exposing the relevant arguments also exposes control over your visualization.\n", + "\n", + "Callables that have arguments, unlike generators allow you to re-visit portions of your parameter space instead of always being forced in one direction via calls to ``next()``. With this caveat in mind, here is an example of a generator and the corresponding generator iterator that returns a ``BoxWhisker`` element:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def sample_distributions(samples=10, tol=0.04):\n", + " np.random.seed(42)\n", + " while True:\n", + " gauss1 = np.random.normal(size=samples)\n", + " gauss2 = np.random.normal(size=samples)\n", + " data = (['A']*samples + ['B']*samples, np.hstack([gauss1, gauss2]))\n", + " yield hv.BoxWhisker(data, kdims=['Group'], vdims=['Value'])\n", + " samples+=1\n", + " \n", + "sample_generator = sample_distributions()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This returns two box whiskers representing samples from two Gaussian distributions of 10 samples. Iterating over this generator simply resamples from these distributions using an additional sample each time.\n", + "\n", + "As with a callable, we can pass our generator iterator to ``DynamicMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.DynamicMap(sample_generator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Without using streams, we now have a problem as there is no way to trigger the generator to view the next distribution in the sequence. We can solve this by defining a stream with no parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap = hv.DynamicMap(sample_generator, streams=[Stream.define('Next')()])\n", + "dmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Stream event update loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can simply use ``event()`` to drive the generator forward and update the plot, showing how the two Gaussian distributions converge as the number of samples increase." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(40):\n", + " dmap.event()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that there is a better way to run loops that drive ``dmap.event()`` which supports a ``period`` (in seconds) between updates and a ``timeout`` argument (also in seconds):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dmap.periodic(0.1, 1000, timeout=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this generator example, ``event`` does not require any arguments but you can set the ``param_fn`` argument to a callable that takes an iteration counter and returns a dictionary for setting the stream parameters. In addition you can use ``block=False`` to avoid blocking the notebook using a threaded loop. This can be very useful although there can have two downsides 1. all running visualizations using non-blocking updates will be competing for computing resources 2. if you override a variable that the thread is actively using, there can be issues with maintaining consistent state in the notebook.\n", + "\n", + "Generally, the ``periodic`` utility is recommended for all such event update loops and it will be used instead of explicit loops in the rest of the tutorials involving streams.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using ``next()``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The approach shown above of using an empty stream works in an exactly analogous fashion for callables that take no arguments. In both cases, the ``DynamicMap`` ``next()`` method is enabled:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.HoloMap({i:next(dmap) for i in range(10)}, kdims=['Iteration'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next steps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The streams system allows you to update plots in place making it possible to build live visualizations that update in response to incoming live data or any other type of event. As we have seen in this tutorial, you can use streams together with key dimensions to add additional interactivity to your plots while retaining the familiar widgets.\n", + "\n", + "This tutorial used examples that work with either the matplotlib or bokeh backends. In the [Linked Streams](Linked_Streams.ipynb) tutorial, you will see how you can directly interact with dynamic visualizations when using the bokeh backend." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Advanced] How streams work\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This optional section is not necessary for users who simply want to use the streams system, but it does describes how streams actually work in more detail.\n", + "\n", + "A stream class is one that inherits from ``Stream`` that typically defines some new parameters. We have already seen one convenient way of defining a stream class:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "defineXY = Stream.define('defineXY', x=0.0, y=0.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is equivalent to the following definition which would be more appropriate in library code or for complex stream class requiring lots of parameters that need to be documented:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class XY(Stream):\n", + " x = param.Number(default=0.0, constant=True, doc='An X position.')\n", + " y = param.Number(default=0.0, constant=True, doc='A Y position.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we have already seen, we can make an instance of ``XY`` with some initial values for ``x`` and ``y``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "xy = XY(x=2,y=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, trying to modify these parameters directly will result in an exception as they have been declared constant (e.g ``xy.x=4`` will throw an error). This is because there are two allowed ways of modifying these parameters, the simplest one being ``update``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xy.update(x=4,y=50)\n", + "xy.rename(x='xpos', y='ypos').contents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This shows how you can update the parameters and also shows the correct way to view the stream parameter values via the ``contents`` property as this will apply any necessary renaming.\n", + "\n", + "So far, using ``update`` has done nothing but forced us to access parameter a certain way. What makes streams work are the side-effects you can trigger when changing a value via the ``event`` method. The relevant side-effect is to invoke callables called 'subscribers'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Subscribers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Without defining any subscribes, the ``event`` method is identical to ``update``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xy = XY()\n", + "xy.event(x=4,y=50)\n", + "xy.contents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's add a subscriber:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def subscriber(xpos,ypos):\n", + " print('The subscriber received xpos={xpos} and ypos={ypos}'.format(xpos=xpos,ypos=ypos))\n", + "\n", + "xy = XY().rename(x='xpos', y='ypos')\n", + "xy.add_subscriber(subscriber)\n", + "xy.event(x=4,y=50)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we can see, now when you call ``event``, our subscriber is called with the updated parameter values, renamed as appropriate. The ``event`` method accepts the original parameter names and the subscriber receives the new values after any renaming is applied. You can add as many subscribers as you want and you can clear them using the ``clear`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "xy.clear()\n", + "xy.event(x=0,y=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you define a ``DynamicMap`` using streams, the HoloViews plotting system install the necessary callbacks as subscibers to update the plot when the stream parameters change. The above example clears all subscribers (it is equivalent to ``clear('all')``. To clear only the subscribers you define yourself use ``clear('user')`` and to clear any subscribers installed by the HoloViews plotting system use ``clear('internal')``.\n", + "\n", + "When using linked streams as described in the [Linked Streams](Linked_Streams.ipynb) tutorial, the plotting system recognizes the stream class and registers the necessary machinery with Bokeh to update the stream values based on direct interaction with the plot." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/Tabular_Datasets.ipynb b/guides/user_guide/Tabular_Datasets.ipynb new file mode 100644 index 0000000000..345452527d --- /dev/null +++ b/guides/user_guide/Tabular_Datasets.ipynb @@ -0,0 +1,596 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this Tutorial we will explore how to work with columnar data in HoloViews. Columnar data has a fixed list of column headings, with values stored in an arbitrarily long list of rows. Spreadsheets, relational databases, CSV files, and many other typical data sources fit naturally into this format. HoloViews defines an extensible system of interfaces to load, manipulate, and visualize this kind of data, as well as allowing conversion of any of the non-columnar data types into columnar data for analysis or data interchange.\n", + "\n", + "By default HoloViews will use one of three storage formats for columnar data:\n", + "\n", + "* A pure Python dictionary containing each column.\n", + "* A purely NumPy-based format for numeric data.\n", + "* Pandas DataFrames\n", + "* Dask DataFrames" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "from IPython.display import HTML\n", + "hv.notebook_extension()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simple Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Usually when working with data we have one or more independent variables, taking the form of categories, labels, discrete sample coordinates, or bins. These variables are what we refer to as key dimensions (or ``kdims`` for short) in HoloViews. The observer or dependent variables, on the other hand, are referred to as value dimensions (``vdims``), and are ordinarily measured or calculated given the independent variables. The simplest useful form of a Dataset object is therefore a column 'x' and a column 'y' corresponding to the key dimensions and value dimensions respectively. An obvious visual representation of this data is a Table:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = range(10)\n", + "ys = np.exp(xs)\n", + "\n", + "table = hv.Table((xs, ys), kdims=['x'], vdims=['y'])\n", + "table" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, this data has many more meaningful visual representations, and therefore the first important concept is that Dataset objects are interchangeable as long as their dimensionality allows it, meaning that you can easily create the different objects from the same data (and cast between the objects once created):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Scatter(table) + hv.Curve(table) + hv.Bars(table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each of these three plots uses the same data, but represents a different assumption about the semantic meaning of that data -- the Scatter plot is appropriate if that data consists of independent samples, the Curve plot is appropriate for samples chosen from an underlying smooth function, and the Bars plot is appropriate for independent categories of data. Since all these plots have the same dimensionality, they can easily be converted to each other, but there is normally only one of these representations that is semantically appropriate for the underlying data. For this particular data, the semantically appropriate choice is Curve, since the *y* values are samples from the continuous function ``exp``.\n", + "\n", + "As a guide to which Elements can be converted to each other, those of the same dimensionality here should be interchangeable, because of the underlying similarity of their columnar representation:\n", + "\n", + "* 0D: BoxWhisker, Spikes, Distribution*, \n", + "* 1D: Scatter, Curve, ErrorBars, Spread, Bars, BoxWhisker, Regression*\n", + "* 2D: Points, HeatMap, Bars, BoxWhisker, Bivariate*\n", + "* 3D: Scatter3D, Trisurface, VectorField, BoxWhisker, Bars\n", + "\n", + "\\* - requires Seaborn\n", + "\n", + "This categorization is based only on the ``kdims``, which define the space in which the data has been sampled or defined. An Element can also have any number of value dimensions (``vdims``), which may be mapped onto various attributes of a plot such as the color, size, and orientation of the plotted items. For a reference of how to use these various Element types, see the [Elements Tutorial](Elements.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data types and Constructors\n", + "\n", + "As discussed above, Dataset provide an extensible interface to store and operate on data in different formats. All interfaces support a number of standard constructors." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Storage formats" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dataset types can be constructed using one of three supported formats, (a) a dictionary of columns, (b) an NxD array with N rows and D columns, or (c) pandas dataframes:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(hv.Scatter({'x': xs, 'y': ys}) +\n", + " hv.Scatter(np.column_stack([xs, ys])) +\n", + " hv.Scatter(pd.DataFrame({'x': xs, 'y': ys})))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Literals\n", + "\n", + "In addition to the main storage formats, Dataset Elements support construction from three Python literal formats: (a) An iterator of y-values, (b) a tuple of columns, and (c) an iterator of row tuples." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(hv.Scatter(ys) + hv.Scatter((xs, ys)) + hv.Scatter(zip(xs, ys)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For these inputs, the data will need to be copied to a new data structure, having one of the three storage formats above. By default Dataset will try to construct a simple array, falling back to either pandas dataframes (if available) or the dictionary-based format if the data is not purely numeric. Additionally, the interfaces will try to maintain the provided data's type, so numpy arrays and pandas DataFrames will therefore always be parsed by the array and dataframe interfaces first respectively." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame({'x': xs, 'y': ys, 'z': ys*2})\n", + "print(type(hv.Scatter(df).data))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dataset will attempt to parse the supplied data, falling back to each consecutive interface if the previous could not interpret the data. The default list of fallbacks and simultaneously the list of allowed datatypes is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Dataset.datatype" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note these include grid based datatypes, which are not covered in this tutorial. To select a particular storage format explicitly, supply one or more allowed datatypes:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(type(hv.Scatter((xs, ys), datatype=['array']).data))\n", + "print(type(hv.Scatter((xs, ys), datatype=['dictionary']).data))\n", + "print(type(hv.Scatter((xs, ys), datatype=['dataframe']).data))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sharing Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since the formats with labelled columns do not require any specific order, each Element can effectively become a view into a single set of data. By specifying different key and value dimensions, many Elements can show different values, while sharing the same underlying data source." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overlay = hv.Scatter(df, kdims='x', vdims='y') * hv.Scatter(df, kdims='x', vdims='z')\n", + "overlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can quickly confirm that the data is actually shared:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overlay.Scatter.I.data is overlay.Scatter.II.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For columnar data, this approach is much more efficient than creating copies of the data for each Element, and allows for some advanced features like linked brushing in the [Bokeh backend](Bokeh_Backend.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Converting to raw data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Column types make it easy to export the data to the three basic formats: arrays, dataframes, and a dictionary of columns.\n", + "\n", + "###### Array" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table.array()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Pandas DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "HTML(table.dframe().head().to_html())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###### Dataset dictionary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table.columns()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating tabular data from Elements using the .table and .dframe methods\n", + "\n", + "If you have data in some other HoloViews element and would like to use the columnar data features, you can easily tabularize any of the core Element types into a ``Table`` Element, using the ``.table()`` method. Similarly, the ``.dframe()`` method will convert an Element into a pandas DataFrame. These methods are very useful if you want to then transform the data into a different Element type, or to perform different types of analysis.\n", + "\n", + "## Tabularizing simple Elements\n", + "\n", + "For a simple example, we can create a ``Curve`` of an exponential function and convert it to a ``Table`` with the ``.table`` method, with the same result as creating the Table directly from the data as done earlier on this Tutorial:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = np.arange(10)\n", + "curve = hv.Curve(zip(xs, np.exp(xs)))\n", + "curve * hv.Scatter(zip(xs, curve)) + curve.table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, we can get a pandas dataframe of the Curve using ``curve.dframe()``. Here we wrap that call as raw HTML to allow automated testing of this notebook, but just calling ``curve.dframe()`` would give the same result visually:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "HTML(curve.dframe().to_html())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although 2D image-like objects are *not* inherently well suited to a flat columnar representation, serializing them by converting to tabular data is a good way to reveal the differences between Image and Raster elements. Rasters are a very simple type of element, using array-like integer indexing of rows and columns from their top-left corner as in computer graphics applications. Conversely, Image elements are a higher-level abstraction that provides a general-purpose continuous Cartesian coordinate system, with x and y increasing to the right and upwards as in mathematical applications, and each point interpreted as a sample representing the pixel in which it is located (and thus centered within that pixel). Given the same data, the ``.table()`` representation will show how the data is being interpreted (and accessed) differently in the two cases (as explained in detail in the [Continuous Coordinates Tutorial](Continuous_Coordinates.ipynb)):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points (s=200) [size_index=None]\n", + "extents = (-1.6,-2.7,2.0,3)\n", + "np.random.seed(42)\n", + "mat = np.random.rand(3, 3)\n", + "\n", + "img = hv.Image(mat, bounds=extents)\n", + "raster = hv.Raster(mat)\n", + "\n", + "img * hv.Points(img) + img.table() + \\\n", + "raster * hv.Points(raster) + raster.table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tabularizing space containers\n", + "\n", + "Even deeply nested objects can be deconstructed in this way, serializing them to make it easier to get your raw data out of a collection of specialized Element types. Let's say we want to make multiple observations of a noisy signal. We can collect the data into a HoloMap to visualize it and then call ``.table()`` to get a columnar object where we can perform operations or transform it to other Element types. Deconstructing nested data in this way only works if the data is homogenous. In practical terms, the requirement is that your data structure contains Elements (of any types) in these Container types: NdLayout, GridSpace, HoloMap, and NdOverlay, with all dimensions consistent throughout (so that they can all fit into the same set of columns).\n", + "\n", + "Let's now go back to the Image example. We will now collect a number of observations of some noisy data into a HoloMap and display it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obs_hmap = hv.HoloMap({i: hv.Image(np.random.randn(10, 10), bounds=(0,0,3,3))\n", + " for i in range(3)}, key_dimensions=['Observation'])\n", + "obs_hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can serialize this data just as before, where this time we get a four-column (4D) table. The key dimensions of both the HoloMap and the Images, as well as the z-values of each Image, are all merged into a single table. We can visualize the samples we have collected by converting it to a Scatter3D object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Layout [fig_size=150] Scatter3D [color_index=3 size_index=None] (cmap='hot' edgecolor='k' s=50)\n", + "obs_hmap.table().to.scatter3d() + obs_hmap.table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here the `z` dimension is shown by color, as in the original images, and the other three dimensions determine where the datapoint is shown in 3D. This way of deconstructing will work for any data structure that satisfies the conditions described above, no matter how nested. If we vary the amount of noise while continuing to performing multiple observations, we can create an ``NdLayout`` of HoloMaps, one for each level of noise, and animated by the observation number." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from itertools import product\n", + "extents = (0,0,3,3)\n", + "error_hmap = hv.HoloMap({(i, j): hv.Image(j*np.random.randn(3, 3), bounds=extents)\n", + " for i, j in product(range(3), np.linspace(0, 1, 3))},\n", + " key_dimensions=['Observation', 'noise'])\n", + "noise_layout = error_hmap.layout('noise')\n", + "noise_layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And again, we can easily convert the object to a ``Table``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Table [fig_size=150]\n", + "noise_layout.table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Applying operations to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting by columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once data is in columnar form, it is simple to apply a variety of operations. For instance, Dataset can be sorted by their dimensions using the ``.sort()`` method. By default, this method will sort by the key dimensions, but any other dimension(s) can be supplied to specify sorting along any other dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bars = hv.Bars((['C', 'A', 'B', 'D'], [2, 7, 3, 4]))\n", + "bars + bars.sort() + bars.sort(['y'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Working with categorical or grouped data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Data is often grouped in various ways, and the Dataset interface provides various means to easily compare between groups and apply statistical aggregates. We'll start by generating some synthetic data with two groups along the x-axis and 4 groups along the y axis." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n = np.arange(1000)\n", + "xs = np.repeat(range(2), 500)\n", + "ys = n%4\n", + "zs = np.random.randn(1000)\n", + "table = hv.Table((xs, ys, zs), kdims=['x', 'y'], vdims=['z'])\n", + "table" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since there are repeat observations of the same x- and y-values, we have to reduce the data before we display it or else use a datatype that supports plotting distributions in this way. The ``BoxWhisker`` type allows doing exactly that:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts BoxWhisker [aspect=2 fig_size=200 bgcolor='w']\n", + "hv.BoxWhisker(table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aggregating/Reducing dimensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most types require the data to be non-duplicated before being displayed. For this purpose, HoloViews makes it easy to ``aggregate`` and ``reduce`` the data. These two operations are simple inverses of each other--aggregate computes a statistic for each group in the supplied dimensions, while reduce combines all the groups except the supplied dimensions. Supplying only a function and no dimensions will simply aggregate or reduce all available key dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Bars [show_legend=False] {+axiswise}\n", + "hv.Bars(table).aggregate(function=np.mean) + hv.Bars(table).reduce(x=np.mean)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(**A**) aggregates over both the x and y dimension, computing the mean for each x/y group, while (**B**) reduces the x dimension leaving just the mean for each group along y." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Collapsing multiple Dataset Elements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When multiple observations are broken out into a HoloMap they can easily be combined using the ``collapse`` method. Here we create a number of Curves with increasingly larger y-values. By collapsing them with a ``function`` and a ``spreadfn`` we can compute the mean curve with a confidence interval. We then simply cast the collapsed ``Curve`` to a ``Spread`` and ``Curve`` Element to visualize them." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap = hv.HoloMap({i: hv.Curve(np.arange(10)*i) for i in range(10)})\n", + "collapsed = hmap.collapse(function=np.mean, spreadfn=np.std)\n", + "hv.Spread(collapsed) * hv.Curve(collapsed) + collapsed.table()" + ] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From b3c031a9a4cf66e48ba6e46ab1020d0394ce28ea Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 18 Jun 2017 22:49:35 +0100 Subject: [PATCH 20/99] Updated user guides to use hv.extension() --- guides/user_guide/Building_Composite_Objects.ipynb | 2 +- guides/user_guide/Continuous_Coordinates.ipynb | 2 +- guides/user_guide/Customizing_Plots.ipynb | 2 +- guides/user_guide/Exporting_and_Archiving.ipynb | 2 +- guides/user_guide/Indexing_and_Selecting_Data.ipynb | 2 +- guides/user_guide/Live_Data.ipynb | 2 +- guides/user_guide/Responding_to_Events.ipynb | 2 +- guides/user_guide/Tabular_Datasets.ipynb | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/guides/user_guide/Building_Composite_Objects.ipynb b/guides/user_guide/Building_Composite_Objects.ipynb index 19b2b0aa89..f1200b59df 100644 --- a/guides/user_guide/Building_Composite_Objects.ipynb +++ b/guides/user_guide/Building_Composite_Objects.ipynb @@ -19,7 +19,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension()" + "hv.extension()" ] }, { diff --git a/guides/user_guide/Continuous_Coordinates.ipynb b/guides/user_guide/Continuous_Coordinates.ipynb index 8f4b527b1b..020b558ae5 100644 --- a/guides/user_guide/Continuous_Coordinates.ipynb +++ b/guides/user_guide/Continuous_Coordinates.ipynb @@ -31,7 +31,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension()\n", + "hv.extension()\n", "\n", "np.set_printoptions(precision=2, linewidth=80)\n", "%opts HeatMap (cmap=\"hot\")" diff --git a/guides/user_guide/Customizing_Plots.ipynb b/guides/user_guide/Customizing_Plots.ipynb index ca41db3071..3adbc40549 100644 --- a/guides/user_guide/Customizing_Plots.ipynb +++ b/guides/user_guide/Customizing_Plots.ipynb @@ -33,7 +33,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension()\n", + "hv.extension()\n", "\n", "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", "image = hv.Image(np.sin(x**2+y**2), group=\"Function\", label=\"Sine\") \n", diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/guides/user_guide/Exporting_and_Archiving.ipynb index c43a4358c1..bc422bf554 100644 --- a/guides/user_guide/Exporting_and_Archiving.ipynb +++ b/guides/user_guide/Exporting_and_Archiving.ipynb @@ -28,7 +28,7 @@ "import numpy as np\n", "import holoviews as hv\n", "from holoviews.operation import contours\n", - "hv.notebook_extension()" + "hv.extension()" ] }, { diff --git a/guides/user_guide/Indexing_and_Selecting_Data.ipynb b/guides/user_guide/Indexing_and_Selecting_Data.ipynb index 5e202b1b27..4ae99c39a6 100644 --- a/guides/user_guide/Indexing_and_Selecting_Data.ipynb +++ b/guides/user_guide/Indexing_and_Selecting_Data.ipynb @@ -44,7 +44,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension()\n", + "hv.extension()\n", "%opts Layout [fig_size=125] Points [size_index=None] (s=50) Scatter3D [size_index=None]\n", "%opts Bounds (linewidth=2 color='k') {+axiswise} Text (fontsize=16 color='k') Image (cmap='Reds')" ] diff --git a/guides/user_guide/Live_Data.ipynb b/guides/user_guide/Live_Data.ipynb index 1ffd801059..e5cade0127 100644 --- a/guides/user_guide/Live_Data.ipynb +++ b/guides/user_guide/Live_Data.ipynb @@ -63,7 +63,7 @@ "source": [ "import holoviews as hv\n", "import numpy as np\n", - "hv.notebook_extension()" + "hv.extension()" ] }, { diff --git a/guides/user_guide/Responding_to_Events.ipynb b/guides/user_guide/Responding_to_Events.ipynb index 89d65275b4..836df76275 100644 --- a/guides/user_guide/Responding_to_Events.ipynb +++ b/guides/user_guide/Responding_to_Events.ipynb @@ -9,7 +9,7 @@ "import numpy as np\n", "import holoviews as hv\n", "import numpy as np\n", - "hv.notebook_extension()" + "hv.extension()" ] }, { diff --git a/guides/user_guide/Tabular_Datasets.ipynb b/guides/user_guide/Tabular_Datasets.ipynb index 345452527d..e705a60001 100644 --- a/guides/user_guide/Tabular_Datasets.ipynb +++ b/guides/user_guide/Tabular_Datasets.ipynb @@ -24,7 +24,7 @@ "import pandas as pd\n", "import holoviews as hv\n", "from IPython.display import HTML\n", - "hv.notebook_extension()" + "hv.extension()" ] }, { From a91ca9fa0db51cc93afd86b93d433608c74fa30e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 12:33:33 +0100 Subject: [PATCH 21/99] Initialized rst files for the user and getting started guides --- doc/Getting_Started/Introduction.rst | 4 ++++ doc/Getting_Started/index.rst | 5 +++++ doc/User_Guide/Applying_Transformations.rst | 4 ++++ doc/User_Guide/index.rst | 5 +++++ 4 files changed, 18 insertions(+) create mode 100644 doc/Getting_Started/Introduction.rst create mode 100644 doc/Getting_Started/index.rst create mode 100644 doc/User_Guide/Applying_Transformations.rst create mode 100644 doc/User_Guide/index.rst diff --git a/doc/Getting_Started/Introduction.rst b/doc/Getting_Started/Introduction.rst new file mode 100644 index 0000000000..55e02668b2 --- /dev/null +++ b/doc/Getting_Started/Introduction.rst @@ -0,0 +1,4 @@ +Introduction +____________ + +.. notebook:: holoviews ../../guides/getting_started/1-Introduction.ipynb diff --git a/doc/Getting_Started/index.rst b/doc/Getting_Started/index.rst new file mode 100644 index 0000000000..c6f3c56fe0 --- /dev/null +++ b/doc/Getting_Started/index.rst @@ -0,0 +1,5 @@ + +Getting Started +_______________ + +`Introduction `_ diff --git a/doc/User_Guide/Applying_Transformations.rst b/doc/User_Guide/Applying_Transformations.rst new file mode 100644 index 0000000000..d793ffbafd --- /dev/null +++ b/doc/User_Guide/Applying_Transformations.rst @@ -0,0 +1,4 @@ +Applying Transformations +________________________ + +.. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb diff --git a/doc/User_Guide/index.rst b/doc/User_Guide/index.rst new file mode 100644 index 0000000000..016cbacea3 --- /dev/null +++ b/doc/User_Guide/index.rst @@ -0,0 +1,5 @@ + +User Guide +__________ + +`Applying Transformations `_ From 2ce92cb4e488d6772bf733e864d8b5d4c843e358 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 13:24:37 +0100 Subject: [PATCH 22/99] Added remaining rst files for the getting started guide --- doc/Getting_Started/Customization.rst | 2 ++ doc/Getting_Started/Gridded_Datasets.rst | 2 ++ doc/Getting_Started/Introduction.rst | 2 -- doc/Getting_Started/Live_Data.rst | 2 ++ doc/Getting_Started/Tabular_Datasets.rst | 2 ++ doc/Getting_Started/index.rst | 4 ++++ 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 doc/Getting_Started/Customization.rst create mode 100644 doc/Getting_Started/Gridded_Datasets.rst create mode 100644 doc/Getting_Started/Live_Data.rst create mode 100644 doc/Getting_Started/Tabular_Datasets.rst diff --git a/doc/Getting_Started/Customization.rst b/doc/Getting_Started/Customization.rst new file mode 100644 index 0000000000..e4871f3bda --- /dev/null +++ b/doc/Getting_Started/Customization.rst @@ -0,0 +1,2 @@ + +.. notebook:: holoviews ../../guides/getting_started/2-Customization.ipynb diff --git a/doc/Getting_Started/Gridded_Datasets.rst b/doc/Getting_Started/Gridded_Datasets.rst new file mode 100644 index 0000000000..4a2c51a6ff --- /dev/null +++ b/doc/Getting_Started/Gridded_Datasets.rst @@ -0,0 +1,2 @@ + +.. notebook:: holoviews ../../guides/getting_started/4-Gridded_Datasets.ipynb diff --git a/doc/Getting_Started/Introduction.rst b/doc/Getting_Started/Introduction.rst index 55e02668b2..c055ec83c0 100644 --- a/doc/Getting_Started/Introduction.rst +++ b/doc/Getting_Started/Introduction.rst @@ -1,4 +1,2 @@ -Introduction -____________ .. notebook:: holoviews ../../guides/getting_started/1-Introduction.ipynb diff --git a/doc/Getting_Started/Live_Data.rst b/doc/Getting_Started/Live_Data.rst new file mode 100644 index 0000000000..75300835df --- /dev/null +++ b/doc/Getting_Started/Live_Data.rst @@ -0,0 +1,2 @@ + +.. notebook:: holoviews ../../guides/getting_started/5-Live_Data.ipynb diff --git a/doc/Getting_Started/Tabular_Datasets.rst b/doc/Getting_Started/Tabular_Datasets.rst new file mode 100644 index 0000000000..9accc4d1f6 --- /dev/null +++ b/doc/Getting_Started/Tabular_Datasets.rst @@ -0,0 +1,2 @@ + +.. notebook:: holoviews ../../guides/getting_started/3-Tabular_Datasets.ipynb diff --git a/doc/Getting_Started/index.rst b/doc/Getting_Started/index.rst index c6f3c56fe0..6f2e99cfac 100644 --- a/doc/Getting_Started/index.rst +++ b/doc/Getting_Started/index.rst @@ -3,3 +3,7 @@ Getting Started _______________ `Introduction `_ +`Customization `_ +`Tabular Datasets `_ +`Gridded Datasets `_ +`Live Data `_ From 3cdbcc642671ad1b8f2eb73d75a8d4034690e4c8 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 13:38:12 +0100 Subject: [PATCH 23/99] Added remaining rst files for user guide --- doc/User_Guide/Applying_Transformations.rst | 5 +---- doc/User_Guide/Building_Composite_Objects.rst | 1 + doc/User_Guide/Continuous_Coordinates.rst | 1 + doc/User_Guide/Custom_Interactivity.rst | 1 + doc/User_Guide/Customizing_Plots.rst | 1 + doc/User_Guide/Deploying_Bokeh_Apps.rst | 1 + doc/User_Guide/Exporting_and_Archiving.rst | 1 + doc/User_Guide/Gridded_Datasets.rst | 1 + doc/User_Guide/Indexing_and_Selecting_Data.rst | 1 + doc/User_Guide/Live_Data.rst | 1 + doc/User_Guide/Plotting_with_Bokeh.rst | 1 + doc/User_Guide/Responding_to_Events.rst | 1 + doc/User_Guide/Tabular_Datasets.rst | 1 + doc/User_Guide/index.rst | 12 ++++++++++++ 14 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 doc/User_Guide/Building_Composite_Objects.rst create mode 100644 doc/User_Guide/Continuous_Coordinates.rst create mode 100644 doc/User_Guide/Custom_Interactivity.rst create mode 100644 doc/User_Guide/Customizing_Plots.rst create mode 100644 doc/User_Guide/Deploying_Bokeh_Apps.rst create mode 100644 doc/User_Guide/Exporting_and_Archiving.rst create mode 100644 doc/User_Guide/Gridded_Datasets.rst create mode 100644 doc/User_Guide/Indexing_and_Selecting_Data.rst create mode 100644 doc/User_Guide/Live_Data.rst create mode 100644 doc/User_Guide/Plotting_with_Bokeh.rst create mode 100644 doc/User_Guide/Responding_to_Events.rst create mode 100644 doc/User_Guide/Tabular_Datasets.rst diff --git a/doc/User_Guide/Applying_Transformations.rst b/doc/User_Guide/Applying_Transformations.rst index d793ffbafd..ee3a086e60 100644 --- a/doc/User_Guide/Applying_Transformations.rst +++ b/doc/User_Guide/Applying_Transformations.rst @@ -1,4 +1 @@ -Applying Transformations -________________________ - -.. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb +.. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Building_Composite_Objects.rst b/doc/User_Guide/Building_Composite_Objects.rst new file mode 100644 index 0000000000..6469e98fb0 --- /dev/null +++ b/doc/User_Guide/Building_Composite_Objects.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Building_Composite_Objects.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Continuous_Coordinates.rst b/doc/User_Guide/Continuous_Coordinates.rst new file mode 100644 index 0000000000..9e1ee8cf73 --- /dev/null +++ b/doc/User_Guide/Continuous_Coordinates.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Continuous_Coordinates.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Custom_Interactivity.rst b/doc/User_Guide/Custom_Interactivity.rst new file mode 100644 index 0000000000..bc39f35a8a --- /dev/null +++ b/doc/User_Guide/Custom_Interactivity.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Custom_Interactivity.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Customizing_Plots.rst b/doc/User_Guide/Customizing_Plots.rst new file mode 100644 index 0000000000..22a3e18286 --- /dev/null +++ b/doc/User_Guide/Customizing_Plots.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Customizing_Plots.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Deploying_Bokeh_Apps.rst b/doc/User_Guide/Deploying_Bokeh_Apps.rst new file mode 100644 index 0000000000..a22915adff --- /dev/null +++ b/doc/User_Guide/Deploying_Bokeh_Apps.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Deploying_Bokeh_Apps.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Exporting_and_Archiving.rst b/doc/User_Guide/Exporting_and_Archiving.rst new file mode 100644 index 0000000000..654f860f5d --- /dev/null +++ b/doc/User_Guide/Exporting_and_Archiving.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Exporting_and_Archiving.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Gridded_Datasets.rst b/doc/User_Guide/Gridded_Datasets.rst new file mode 100644 index 0000000000..5c4bbbcc7e --- /dev/null +++ b/doc/User_Guide/Gridded_Datasets.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Gridded_Datasets.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Indexing_and_Selecting_Data.rst b/doc/User_Guide/Indexing_and_Selecting_Data.rst new file mode 100644 index 0000000000..012f8e56dc --- /dev/null +++ b/doc/User_Guide/Indexing_and_Selecting_Data.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Indexing_and_Selecting_Data.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Live_Data.rst b/doc/User_Guide/Live_Data.rst new file mode 100644 index 0000000000..48102e7cb1 --- /dev/null +++ b/doc/User_Guide/Live_Data.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Live_Data.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Plotting_with_Bokeh.rst b/doc/User_Guide/Plotting_with_Bokeh.rst new file mode 100644 index 0000000000..596218e3da --- /dev/null +++ b/doc/User_Guide/Plotting_with_Bokeh.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Plotting_with_Bokeh.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Responding_to_Events.rst b/doc/User_Guide/Responding_to_Events.rst new file mode 100644 index 0000000000..b808705fd2 --- /dev/null +++ b/doc/User_Guide/Responding_to_Events.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Responding_to_Events.ipynb \ No newline at end of file diff --git a/doc/User_Guide/Tabular_Datasets.rst b/doc/User_Guide/Tabular_Datasets.rst new file mode 100644 index 0000000000..bb3540c66b --- /dev/null +++ b/doc/User_Guide/Tabular_Datasets.rst @@ -0,0 +1 @@ +.. notebook:: holoviews ../../guides/user_guide/Tabular_Datasets.ipynb \ No newline at end of file diff --git a/doc/User_Guide/index.rst b/doc/User_Guide/index.rst index 016cbacea3..5fc272f3a1 100644 --- a/doc/User_Guide/index.rst +++ b/doc/User_Guide/index.rst @@ -3,3 +3,15 @@ User Guide __________ `Applying Transformations `_ +`Building Composite Objects `_ +`Continuous Coordinates `_ +`Custom Interactivity `_ +`Customizing Plots `_ +`Deploying Bokeh Apps `_ +`Exporting and Archiving `_ +`Gridded Datasets `_ +`Indexing and Selecting Data `_ +`Live Data `_ +`Plotting with Bokeh `_ +`Responding to Events `_ +`Tabular Datasets `_ From 1ba394831ebf5bb14b3a4a449ace07b19418b77d Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 14:08:03 +0100 Subject: [PATCH 24/99] Moved overall introduction to the getting started guide into index.rst --- doc/Getting_Started/index.rst | 5 ++ guides/getting_started/1-Introduction.ipynb | 67 +++++++++++++-------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/doc/Getting_Started/index.rst b/doc/Getting_Started/index.rst index 6f2e99cfac..7d5561242a 100644 --- a/doc/Getting_Started/index.rst +++ b/doc/Getting_Started/index.rst @@ -2,6 +2,11 @@ Getting Started _______________ + +Welcome to HoloViews! + +This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our `User Guide <../User_Guide/index.html>`_ which we will link to from the appropriate sections of this guide. + `Introduction `_ `Customization `_ `Tabular Datasets `_ diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index ba80c58eb2..b3d3d2c300 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -4,17 +4,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Welcome to HoloViews!\n", - "\n", - "This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our [User Guide] which we will link to from the appropriate sections of this guide.\n", - "\n", - "I-Introduction
\n", - "II-Customization
\n", - "III-Datasets
\n", - "IV-Live_Data
\n", - "V-Pipelines
\n", - "VI-Principles
\n", - "\n", "\n", "# Why HoloViews?\n", "\n", @@ -33,7 +22,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pandas as pd\n", @@ -56,7 +47,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "station_info = pd.read_csv('../datasets/station_info.csv')\n", @@ -82,7 +75,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "scatter = hv.Scatter(station_info, kdims=['services'], vdims=['ridership'])\n", @@ -101,7 +96,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(scatter)" @@ -126,7 +123,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])\n", @@ -143,7 +142,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(layout)" @@ -161,7 +162,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "taxi_dropoffs = {hour:arr for hour, arr in np.load('../datasets/hourly_taxi_data.npz').items()}\n", @@ -213,7 +216,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "points = hv.Points(station_info, kdims=['lon','lat'])\n", @@ -247,7 +252,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dictionary = {int(hour):hv.Image(arr, bounds=bounds, kdims=['lon','lat']) for hour, arr in taxi_dropoffs.items()}\n", @@ -264,7 +271,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "holomap = hv.HoloMap(dictionary, kdims=['Hour'])\n", @@ -281,7 +290,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "holomap.select(Hour={3,6,9}).layout()" @@ -315,7 +326,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Image [xrotation=90] Points (color='deepskyblue' marker='v' size=6)\n", @@ -336,7 +349,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "composition.select(Hour=7)" @@ -354,7 +369,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hotspot.data" From 9e37d1ac35e6d3abcf5c4d4a2e7814460acce236 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 14:16:35 +0100 Subject: [PATCH 25/99] Fixed guide directory names in doc/ --- doc/{Getting_Started => getting_started}/Customization.rst | 0 doc/{Getting_Started => getting_started}/Gridded_Datasets.rst | 0 doc/{Getting_Started => getting_started}/Introduction.rst | 0 doc/{Getting_Started => getting_started}/Live_Data.rst | 0 doc/{Getting_Started => getting_started}/Tabular_Datasets.rst | 0 doc/{Getting_Started => getting_started}/index.rst | 2 +- doc/{User_Guide => user_guide}/Applying_Transformations.rst | 0 doc/{User_Guide => user_guide}/Building_Composite_Objects.rst | 0 doc/{User_Guide => user_guide}/Continuous_Coordinates.rst | 0 doc/{User_Guide => user_guide}/Custom_Interactivity.rst | 0 doc/{User_Guide => user_guide}/Customizing_Plots.rst | 0 doc/{User_Guide => user_guide}/Deploying_Bokeh_Apps.rst | 0 doc/{User_Guide => user_guide}/Exporting_and_Archiving.rst | 0 doc/{User_Guide => user_guide}/Gridded_Datasets.rst | 0 doc/{User_Guide => user_guide}/Indexing_and_Selecting_Data.rst | 0 doc/{User_Guide => user_guide}/Live_Data.rst | 0 doc/{User_Guide => user_guide}/Plotting_with_Bokeh.rst | 0 doc/{User_Guide => user_guide}/Responding_to_Events.rst | 0 doc/{User_Guide => user_guide}/Tabular_Datasets.rst | 0 doc/{User_Guide => user_guide}/index.rst | 0 20 files changed, 1 insertion(+), 1 deletion(-) rename doc/{Getting_Started => getting_started}/Customization.rst (100%) rename doc/{Getting_Started => getting_started}/Gridded_Datasets.rst (100%) rename doc/{Getting_Started => getting_started}/Introduction.rst (100%) rename doc/{Getting_Started => getting_started}/Live_Data.rst (100%) rename doc/{Getting_Started => getting_started}/Tabular_Datasets.rst (100%) rename doc/{Getting_Started => getting_started}/index.rst (91%) rename doc/{User_Guide => user_guide}/Applying_Transformations.rst (100%) rename doc/{User_Guide => user_guide}/Building_Composite_Objects.rst (100%) rename doc/{User_Guide => user_guide}/Continuous_Coordinates.rst (100%) rename doc/{User_Guide => user_guide}/Custom_Interactivity.rst (100%) rename doc/{User_Guide => user_guide}/Customizing_Plots.rst (100%) rename doc/{User_Guide => user_guide}/Deploying_Bokeh_Apps.rst (100%) rename doc/{User_Guide => user_guide}/Exporting_and_Archiving.rst (100%) rename doc/{User_Guide => user_guide}/Gridded_Datasets.rst (100%) rename doc/{User_Guide => user_guide}/Indexing_and_Selecting_Data.rst (100%) rename doc/{User_Guide => user_guide}/Live_Data.rst (100%) rename doc/{User_Guide => user_guide}/Plotting_with_Bokeh.rst (100%) rename doc/{User_Guide => user_guide}/Responding_to_Events.rst (100%) rename doc/{User_Guide => user_guide}/Tabular_Datasets.rst (100%) rename doc/{User_Guide => user_guide}/index.rst (100%) diff --git a/doc/Getting_Started/Customization.rst b/doc/getting_started/Customization.rst similarity index 100% rename from doc/Getting_Started/Customization.rst rename to doc/getting_started/Customization.rst diff --git a/doc/Getting_Started/Gridded_Datasets.rst b/doc/getting_started/Gridded_Datasets.rst similarity index 100% rename from doc/Getting_Started/Gridded_Datasets.rst rename to doc/getting_started/Gridded_Datasets.rst diff --git a/doc/Getting_Started/Introduction.rst b/doc/getting_started/Introduction.rst similarity index 100% rename from doc/Getting_Started/Introduction.rst rename to doc/getting_started/Introduction.rst diff --git a/doc/Getting_Started/Live_Data.rst b/doc/getting_started/Live_Data.rst similarity index 100% rename from doc/Getting_Started/Live_Data.rst rename to doc/getting_started/Live_Data.rst diff --git a/doc/Getting_Started/Tabular_Datasets.rst b/doc/getting_started/Tabular_Datasets.rst similarity index 100% rename from doc/Getting_Started/Tabular_Datasets.rst rename to doc/getting_started/Tabular_Datasets.rst diff --git a/doc/Getting_Started/index.rst b/doc/getting_started/index.rst similarity index 91% rename from doc/Getting_Started/index.rst rename to doc/getting_started/index.rst index 7d5561242a..a294a6ae5c 100644 --- a/doc/Getting_Started/index.rst +++ b/doc/getting_started/index.rst @@ -5,7 +5,7 @@ _______________ Welcome to HoloViews! -This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our `User Guide <../User_Guide/index.html>`_ which we will link to from the appropriate sections of this guide. +This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our `User Guide <../user_guide/index.html>`_ which we will link to from the appropriate sections of this guide. `Introduction `_ `Customization `_ diff --git a/doc/User_Guide/Applying_Transformations.rst b/doc/user_guide/Applying_Transformations.rst similarity index 100% rename from doc/User_Guide/Applying_Transformations.rst rename to doc/user_guide/Applying_Transformations.rst diff --git a/doc/User_Guide/Building_Composite_Objects.rst b/doc/user_guide/Building_Composite_Objects.rst similarity index 100% rename from doc/User_Guide/Building_Composite_Objects.rst rename to doc/user_guide/Building_Composite_Objects.rst diff --git a/doc/User_Guide/Continuous_Coordinates.rst b/doc/user_guide/Continuous_Coordinates.rst similarity index 100% rename from doc/User_Guide/Continuous_Coordinates.rst rename to doc/user_guide/Continuous_Coordinates.rst diff --git a/doc/User_Guide/Custom_Interactivity.rst b/doc/user_guide/Custom_Interactivity.rst similarity index 100% rename from doc/User_Guide/Custom_Interactivity.rst rename to doc/user_guide/Custom_Interactivity.rst diff --git a/doc/User_Guide/Customizing_Plots.rst b/doc/user_guide/Customizing_Plots.rst similarity index 100% rename from doc/User_Guide/Customizing_Plots.rst rename to doc/user_guide/Customizing_Plots.rst diff --git a/doc/User_Guide/Deploying_Bokeh_Apps.rst b/doc/user_guide/Deploying_Bokeh_Apps.rst similarity index 100% rename from doc/User_Guide/Deploying_Bokeh_Apps.rst rename to doc/user_guide/Deploying_Bokeh_Apps.rst diff --git a/doc/User_Guide/Exporting_and_Archiving.rst b/doc/user_guide/Exporting_and_Archiving.rst similarity index 100% rename from doc/User_Guide/Exporting_and_Archiving.rst rename to doc/user_guide/Exporting_and_Archiving.rst diff --git a/doc/User_Guide/Gridded_Datasets.rst b/doc/user_guide/Gridded_Datasets.rst similarity index 100% rename from doc/User_Guide/Gridded_Datasets.rst rename to doc/user_guide/Gridded_Datasets.rst diff --git a/doc/User_Guide/Indexing_and_Selecting_Data.rst b/doc/user_guide/Indexing_and_Selecting_Data.rst similarity index 100% rename from doc/User_Guide/Indexing_and_Selecting_Data.rst rename to doc/user_guide/Indexing_and_Selecting_Data.rst diff --git a/doc/User_Guide/Live_Data.rst b/doc/user_guide/Live_Data.rst similarity index 100% rename from doc/User_Guide/Live_Data.rst rename to doc/user_guide/Live_Data.rst diff --git a/doc/User_Guide/Plotting_with_Bokeh.rst b/doc/user_guide/Plotting_with_Bokeh.rst similarity index 100% rename from doc/User_Guide/Plotting_with_Bokeh.rst rename to doc/user_guide/Plotting_with_Bokeh.rst diff --git a/doc/User_Guide/Responding_to_Events.rst b/doc/user_guide/Responding_to_Events.rst similarity index 100% rename from doc/User_Guide/Responding_to_Events.rst rename to doc/user_guide/Responding_to_Events.rst diff --git a/doc/User_Guide/Tabular_Datasets.rst b/doc/user_guide/Tabular_Datasets.rst similarity index 100% rename from doc/User_Guide/Tabular_Datasets.rst rename to doc/user_guide/Tabular_Datasets.rst diff --git a/doc/User_Guide/index.rst b/doc/user_guide/index.rst similarity index 100% rename from doc/User_Guide/index.rst rename to doc/user_guide/index.rst From 18c3e9650fb9048ff86b591927ee326b739d738a Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 14:23:11 +0100 Subject: [PATCH 26/99] Updated links defined in conf.py --- doc/conf.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 9727bf1a5f..e3ff2bfddb 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -52,8 +52,8 @@ ), # Links 'LINKS': ( - ('Getting started', 'Getting_Started/index.html'), - ('User Guides', 'User_Guide/index.html'), + ('Getting started', 'getting_started/index.html'), + ('User Guides', 'user_guide/index.html'), ('Tutorials', 'Tutorials/index.html'), ('Gallery', 'Gallery/index.html'), ('Reference', 'Reference_Manual/index.html'), @@ -71,8 +71,8 @@ ), # Links for the docs sub navigation 'NAV_DOCS': ( - ('Getting started', 'Getting_Started/index'), - ('User Guides', 'User_Guide/index'), + ('Getting started', 'getting_started/index'), + ('User Guides', 'user_guide/index'), ('Tutorials', 'Tutorials/index'), ('Gallery', 'gallery/index'), ('Reference', 'Reference_Manual/index'), From 3a9b631e9b21776fcced916d7218a0842f948252 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 14:26:11 +0100 Subject: [PATCH 27/99] Fixed heading in Getting Started guide index --- doc/getting_started/index.rst | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/doc/getting_started/index.rst b/doc/getting_started/index.rst index a294a6ae5c..22be5c3b65 100644 --- a/doc/getting_started/index.rst +++ b/doc/getting_started/index.rst @@ -1,9 +1,5 @@ - -Getting Started -_______________ - - Welcome to HoloViews! +_____________________ This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our `User Guide <../user_guide/index.html>`_ which we will link to from the appropriate sections of this guide. From 87b79d4d1eed5249cafb28cb5a425e446b937566 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 14:33:15 +0100 Subject: [PATCH 28/99] Header now uses 'User Guide' not 'User Guides' --- doc/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index e3ff2bfddb..dfc26d484a 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -53,7 +53,7 @@ # Links 'LINKS': ( ('Getting started', 'getting_started/index.html'), - ('User Guides', 'user_guide/index.html'), + ('User Guide', 'user_guide/index.html'), ('Tutorials', 'Tutorials/index.html'), ('Gallery', 'Gallery/index.html'), ('Reference', 'Reference_Manual/index.html'), @@ -72,7 +72,7 @@ # Links for the docs sub navigation 'NAV_DOCS': ( ('Getting started', 'getting_started/index'), - ('User Guides', 'user_guide/index'), + ('User Guide', 'user_guide/index'), ('Tutorials', 'Tutorials/index'), ('Gallery', 'gallery/index'), ('Reference', 'Reference_Manual/index'), From da2e5a54b87f4ae2cc377d879c9a6828db7148b4 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 14:41:31 +0100 Subject: [PATCH 29/99] Fixed links in the introduction notebook --- guides/getting_started/1-Introduction.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index b3d3d2c300..90f266bb9f 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -39,7 +39,7 @@ "source": [ "This is the standard way to make the numpy and pandas libraries available in the namespace. We recommend always importing HoloViews as ``hv`` and if you haven't already installed HoloViews, checkout our [installation page].\n", "\n", - "Note that after importing HoloViews as ``hv`` we run ``hv.extension('bokeh')`` to load the bokeh plotting extension, allowing us to generate visualizations with [Bokeh]. In the next section we will see how you can use other plotting libraries such as [matplotlib] and even how you can mix and match between them.\n", + "Note that after importing HoloViews as ``hv`` we run ``hv.extension('bokeh')`` to load the bokeh plotting extension, allowing us to generate visualizations with [Bokeh](http://bokeh.pydata.org/). In the next section we will see how you can use other plotting libraries such as [matplotlib](matplotlib.org) and even how you can mix and match between them.\n", "\n", "Now let's load our subway data using pandas:" ] @@ -156,7 +156,7 @@ "source": [ "## Array data: taxi dropoffs\n", "\n", - "So far we have visualized data in a [pandas DataFrame] but ``HoloViews`` is as agnostic to data formats as it is to plotting libraries; see [User Guide] for more information. This means we can work with array data as easily as we can work with tabular data and to demonstrate this, here are some [numpy arrays] relating to taxi dropoff locations in Manhattan:" + "So far we have visualized data in a [pandas ``DataFrame``](http://pandas.pydata.org/) but ``HoloViews`` is as agnostic to data formats as it is to plotting libraries; see [Customizing Plots](../user_guide/Customizing_Plots.ipynb) for more information. This means we can work with array data as easily as we can work with tabular data and to demonstrate this, here are some [numpy arrays](http://www.numpy.org/) relating to taxi dropoff locations in Manhattan:" ] }, { @@ -210,7 +210,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "HoloViews supports ``numpy``, ``xarray``, ``iris``, ``dask`` when working with array data (see [User Guide]) and we can compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a ``Points`` element which is used to mark positions in two-dimensional space:" + "HoloViews supports ``numpy``, ``xarray``, ``iris``, ``dask`` when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb))) and we can compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a ``Points`` element which is used to mark positions in two-dimensional space:" ] }, { @@ -232,7 +232,7 @@ "\n", "On the left, we have the visual representation of the ``image`` object we declared. Using ``+`` we put it into a ``Layout`` together with a new compositional object created with the ``*`` operator called an ``Overlay``. This particular overlay displays the station positions on top of our image which works correctly as both elements contain data that exist in the same space, namely Manhattan.\n", "\n", - "This overlay on the right lets us see the location of all the subway stations in relation to our midnight taxi dropoffs. Note that HoloViews allows you to visually express more of the available information with our points, for instance, you could represent the ridership of each subway by point color or point size. For more information see [User Guide]." + "This overlay on the right lets us see the location of all the subway stations in relation to our midnight taxi dropoffs. Note that HoloViews allows you to visually express more of the available information with our points, for instance, you could represent the ridership of each subway by point color or point size. For more information see [Customizing Plots](../user_guide/Customizing_Plots.ipynb)." ] }, { From efbcabe719acff97a57b403cd4bda972a1b0056a Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 15:39:22 +0100 Subject: [PATCH 30/99] Linked to element notebooks in Introduction --- guides/getting_started/1-Introduction.ipynb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index 90f266bb9f..08f5a7d8e1 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -88,7 +88,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we passed or dataframe to ``hv.Scatter`` to create an *object* called *scatter*. This object is independent of any plotting library and is a simple wrapper around our dataframe that knows that the 'services' column is to be plotted along the x-axis and 'ridership' column is to be plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", + "Here we passed or dataframe to [``hv.Scatter``](../../examples/elements/bokeh/Scatter.ipynb) to create an *object* called *scatter*. This object is independent of any plotting library and is a simple wrapper around our dataframe that knows that the 'services' column is to be plotted along the x-axis and 'ridership' column is to be plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", "\n", "Given that we have the handle ``scatter`` on our ``Scatter`` object, we can show that it is indeed an object and not a plot by printing it:" ] @@ -108,7 +108,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The bokeh plot above is simply the rich, visual representation of ``scatter`` which is plotted automatically by HoloViews and displayed automatically in [the Jupyter notebook]. Although HoloViews itself is independent of notebooks, this convenience makes working with HoloViews easiest in the notebook environment." + "The bokeh plot above is simply the rich, visual representation of ``scatter`` which is plotted automatically by HoloViews and displayed automatically in the [Jupyter notebook](https://jupyter.org/). Although HoloViews itself is independent of notebooks, this convenience makes working with HoloViews easiest in the notebook environment." ] }, { @@ -117,7 +117,7 @@ "source": [ "## Compositional ``Layouts``\n", "\n", - "The class ``hv.Scatter`` is a subclass of ``Element`` which are the simplest viewable components in HoloViews as shown in our [element gallery]. Now we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" + "The class [``Scatter``](../../examples/elements/bokeh/Scatter.ipynb) is a subclass of ``Element`` which are the simplest viewable components in HoloViews as shown in our [element gallery]. Now we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" ] }, { @@ -191,7 +191,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Once again, we can easily visualize this data with HoloViews by passing our array to ``hv.Image`` to create the ``image`` object which has the spatial extent of the data declared as the ``bounds`` in terms of the corresponding range of latitudes and longitudes." + "Once again, we can easily visualize this data with HoloViews by passing our array to [``Image``](../../examples/elements/bokeh/Image.ipynb) to create the ``image`` object which has the spatial extent of the data declared as the ``bounds`` in terms of the corresponding range of latitudes and longitudes." ] }, { @@ -210,7 +210,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "HoloViews supports ``numpy``, ``xarray``, ``iris``, ``dask`` when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb))) and we can compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a ``Points`` element which is used to mark positions in two-dimensional space:" + "HoloViews supports ``numpy``, ``xarray``, ``iris``, ``dask`` when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb))) and we can compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a [``Points``](../../examples/elements/bokeh/Points.ipynb) element which is used to mark positions in two-dimensional space:" ] }, { @@ -246,7 +246,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of ``Images`` (on for every hour of the day) by declaring a ``HoloMap``: " + "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of [``Images``](../../examples/elements/bokeh/Image.ipynb) (on for every hour of the day) by declaring a ``HoloMap``: " ] }, { @@ -320,7 +320,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Holomaps are able to compose with elements and other holomaps into overlay and layouts just as easily as you compose two elements together. Here is one such composition where we select a range of longitudes and latitudes from our ``Points`` before we overlay them:" + "Holomaps are able to compose with elements and other holomaps into overlay and layouts just as easily as you compose two elements together. Here is one such composition where we select a range of longitudes and latitudes from our [``Points``](../../examples/elements/bokeh/Points.ipynb) before we overlay them:" ] }, { @@ -381,7 +381,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see that slicing the HoloViews ``Points`` object in the visualization sliced the underlying data with the structure of the table left intact. We can see that the Times Square 42nd Street station is inded one of the subway stations surrounding our taxi dropoff hotspot." + "We see that slicing the HoloViews [``Points``](../../examples/elements/bokeh/Points.ipynb) object in the visualization sliced the underlying data with the structure of the table left intact. We can see that the Times Square 42nd Street station is inded one of the subway stations surrounding our taxi dropoff hotspot." ] }, { From 246f26bb73535cfdad9d45fb8032a185cd3393a0 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 17:39:57 +0100 Subject: [PATCH 31/99] Added the Large Data notebook describing datashader support --- guides/user_guide/Large_Data.ipynb | 568 +++++++++++++++++++++++++++++ 1 file changed, 568 insertions(+) create mode 100644 guides/user_guide/Large_Data.ipynb diff --git a/guides/user_guide/Large_Data.ipynb b/guides/user_guide/Large_Data.ipynb new file mode 100644 index 0000000000..9da6dd94da --- /dev/null +++ b/guides/user_guide/Large_Data.ipynb @@ -0,0 +1,568 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Working with large data using datashader\n", + "\n", + "The plotting extensions supported by HoloViews are good for different tasks depending on the strengths of the corresponding plotting library. For instance, matplotlib is the standard choice when generating output for publication and Bokeh offers excellent interactivity useful for data exploration. What none of these plotting libraries can handle directly are truly large datasets where the memory footprint of the visualized output is many magnitudes smaller than the data being visualized.\n", + "\n", + "[Datashader](https://github.com/bokeh/datashader) is a rasterizer that can process very large datasets quickly enough for interactive use. What this means is that it takes in some large dataset as input and outputs a raster which in HoloViews corresponds to either an ``RGB`` or ``Image`` element. This section of the user guide details the HoloViews operations designed to expose datashader's functionality when working with large data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "hidden": true + }, + "report_default": {} + } + } + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "import datashader as ds\n", + "from holoviews.operation.datashader import aggregate, shade, datashade, dynspread\n", + "from holoviews.operation import decimate\n", + "hv.notebook_extension('bokeh')\n", + "decimate.max_samples=1000\n", + "dynspread.max_px=20\n", + "dynspread.threshold=0.5\n", + "\n", + "def random_walk(n, f=5000):\n", + " \"\"\"Random walk in a 2D space, smoothed with a filter of length f\"\"\"\n", + " xs = np.convolve(np.random.normal(0, 0.1, size=n), np.ones(f)/f).cumsum()\n", + " ys = np.convolve(np.random.normal(0, 0.1, size=n), np.ones(f)/f).cumsum()\n", + " xs += 0.1*np.sin(0.1*np.array(range(n-1+f))) # add wobble on x axis\n", + " xs += np.random.normal(0, 0.005, size=n-1+f) # add measurement noise\n", + " ys += np.random.normal(0, 0.005, size=n-1+f)\n", + " return np.column_stack([xs, ys])\n", + "\n", + "def random_cov():\n", + " \"\"\"Random covariance for use in generating 2D Gaussian distributions\"\"\"\n", + " A = np.random.randn(2,2)\n", + " return np.dot(A, A.T)\n", + "\n", + "def time_series(T = 1, N = 100, mu = 0.1, sigma = 0.1, S0 = 20): \n", + " \"\"\"Parameterized noisy time series\"\"\"\n", + " dt = float(T)/N\n", + " t = np.linspace(0, T, N)\n", + " W = np.random.standard_normal(size = N) \n", + " W = np.cumsum(W)*np.sqrt(dt) # standard brownian motion\n", + " X = (mu-0.5*sigma**2)*t + sigma*W \n", + " S = S0*np.exp(X) # geometric brownian motion\n", + " return S" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 0, + "height": 4, + "hidden": false, + "row": 0, + "width": 11 + }, + "report_default": {} + } + } + } + }, + "source": [ + "# Supported ``Elements``\n", + "\n", + "As HoloViews elements are fundamentally data containers, not visualizations you can very quickly declare elements such as ``Points`` or ``Path`` containing datasets that may be as large as the available memory. For instance, this means you can immediately specify a datastructure that you can work with until you try to visualize it directly with either the matplotlib or bokeh plotting extensions as the rendering process may now be prohibitively expensive.\n", + "\n", + "Let's start with a simple example we can visualize as normal:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 0, + "height": 12, + "hidden": false, + "row": 6, + "width": 11 + }, + "report_default": {} + } + } + }, + "scrolled": false + }, + "outputs": [], + "source": [ + "np.random.seed(1)\n", + "points = hv.Points(np.random.multivariate_normal((0,0), [[0.1, 0.1], [0.1, 1.0]], (1000,)),label=\"Points\")\n", + "paths = hv.Path([random_walk(2000,30)], label=\"Paths\")\n", + "\n", + "points + paths" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These browser-based plots are fully interactive, as you can see if you select the Wheel Zoom or Box Zoom tools and use your scroll wheel or click and drag. \n", + "\n", + "Because all of the data in these plots gets transferred directly into the web browser, the interactive functionality will be available even on a static export of this figure as a web page. Note that even though the visualization above is not computationally expensive, even with just 1000 points as in the scatterplot above, the plot already suffers from [overplotting](https://anaconda.org/jbednar/plotting_pitfalls), with later points obscuring previously plotted points. With much larger datasets, these issues will quickly make it impossible to see the true structure of the data. \n", + "\n", + "\n", + "# Datashader operations\n", + "\n", + "If we tried to visualize the same two elements below which are just larger versions of the same data above, the plots would be nearly unusable even if the browser did not crash:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.random.seed(1)\n", + "points = hv.Points(np.random.multivariate_normal((0,0), [[0.1, 0.1], [0.1, 1.0]], (1000000,)),label=\"Points\")\n", + "paths = hv.Path([0.15*random_walk(100000) for i in range(10)],label=\"Paths\")\n", + "\n", + "#points + paths ## Danger! Browsers can't handle 1 million points!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "hidden": true + }, + "report_default": { + "hidden": true + } + } + } + } + }, + "source": [ + "Luckily, because elements are just containers for data and associated metadata, not plots, HoloViews can generate entirely different types of visualizations from the same data structure when appropriate. For instance, in the plot on the left below you can see the result of applying a `decimate()` operation acting on the `points` object, which will automatically downsample this million-point dataset to at most 1000 points at any time as you zoom in or out:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 7, + "height": 11, + "hidden": false, + "row": 20, + "width": 4 + }, + "report_default": {} + } + } + } + }, + "outputs": [], + "source": [ + "decimate(points) + datashade(points) + datashade(paths)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Decimating a plot in this way can be useful, but it discards most of the data, yet still suffers from overplotting. If you have Datashader installed, you can instead use the `datashade()` operation to create a dynamic Datashader-based Bokeh plot. (Here `datashade()` is just a convenient shortcut for the two main steps using in datashader, i.e., `shade(aggregate())`, which can also be invoked separately.) The middle plot above shows the result of using `datashade()` to create a dynamic Datashader-based plot out of an Element with arbitrarily large data. In the Datashader version, a new image is regenerated automatically on every zoom or pan event, revealing all the data available at that zoom level and avoiding issues with overplotting.\n", + "\n", + "These two Datashader-based plots are similar to the native Bokeh plots above, but instead of making a static Bokeh plot that embeds points or line segments directly into the browser, HoloViews sets up a Bokeh plot with dynamic callbacks that render the data as an RGB image using Datashader instead. The dynamic re-rendering provides an interactive user experience even though the data itself is never provided directly into the browser. Of course, because the full data is not in the browser, a static export of this page (e.g. on anaconda.org) will only show the initially rendered version, and will not update with new images when zooming as it will when there is a live Python process available.\n", + "\n", + "Though you can no longer have a completely interactive exported file, with the Datashader version on a live server you can now change 1000000 to 10000000 or more to see how well your machine will handle larger datasets. It will get a bit slower, but if you have enough memory, it should still be very usable, and should never crash your browser as transferring the whole dataset into your browser would. If you don't have enough memory, you can instead set up a [Dask](http://dask.pydata.org) dataframe as shown in other Datashader examples, which will provide out of core and/or distributed processing to handle even the largest datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Spreading\n", + "\n", + "\n", + "\n", + "The Datashader examples above treat points and lines as infinitesimal in width, such that a given point or small bit of line segment appears in at most one pixel. This approach ensures that the overall distribution of the points will be mathematically well founded -- each pixel will scale in value directly by the number of points that fall into it, or by the lines that cross it.\n", + "\n", + "However, many monitors are sufficiently high resolution that the resulting point or line can be difficult to see---a single pixel may not actually be visible on its own, and the color of it is likely to be very difficult to make out. To compensate for this issue, HoloViews provides access to Datashader's image-based \"spreading\", which makes isolated pixels \"spread\" into adjacent ones for visibility. Because the amount of spreading that's useful depends on how close the datapoints are to each other on screen, the most useful such function is `dynspread`, which spreads up to a maximum sized as long as it does not exceed a specified fraction of adjacency between pixels. You can compare the results in the two plots below after zooming in:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "hidden": true + }, + "report_default": { + "hidden": true + } + } + } + } + }, + "outputs": [], + "source": [ + "datashade(points) + dynspread(datashade(points))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both plots show the same data, and look identical when zoomed out, but when zoomed in enough you should be able to see the individual data points on the right while the ones on the left are barely visible. The dynspread parameters typically need some hand tuning, as the only purpose of such spreading is to make things visible on a particular monitor for a particular observer; the underlying mathematical operations in Datashader do not normally need parameters to be adjusted.\n", + "\n", + "The same operation works similarly for line segments:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datashade(paths) + dynspread(datashade(paths))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 0, + "height": 2, + "hidden": false, + "row": 59, + "width": 11 + }, + "report_default": {} + } + } + } + }, + "source": [ + "# Multidimensional plots\n", + "\n", + "The above plots show two dimensions of data plotted along *x* and *y*, but Datashader operations can be used with additional dimensions as well. For instance, an extra dimension (here called `k`), can be treated as a category label and used to colorize the points or lines. Compared to a standard scatterplot that would suffer from overplotting, here the result will be merged mathematically by Datashader, completely avoiding any overplotting issues except local ones due to spreading:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 0, + "height": 11, + "hidden": false, + "row": 61, + "width": 3 + }, + "report_default": {} + } + } + } + }, + "outputs": [], + "source": [ + "%%opts RGB [width=400] {+axiswise}\n", + "\n", + "np.random.seed(3)\n", + "kdims=['d1','d2']\n", + "num_ks=8\n", + "\n", + "def rand_gauss2d():\n", + " return 100*np.random.multivariate_normal(np.random.randn(2), random_cov(), (100000,))\n", + "\n", + "gaussians = {i: hv.Points(rand_gauss2d(), kdims=kdims) for i in range(num_ks)}\n", + "lines = {i: hv.Curve(time_series(N=10000, S0=200+np.random.rand())) for i in range(num_ks)}\n", + "\n", + "gaussspread = dynspread(datashade(hv.NdOverlay(gaussians, kdims=['k']), aggregator=ds.count_cat('k')))\n", + "linespread = dynspread(datashade(hv.NdOverlay(lines, kdims=['k']), aggregator=ds.count_cat('k')))\n", + "\n", + "gaussspread + linespread" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because Bokeh only ever sees an image, providing legends and keys has to be done separately, though we are working to make this process more seamless. For now, you can show a legend by adding a suitable collection of labeled points:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts RGB [width=600]\n", + "\n", + "from datashader.colors import Sets1to3 # default datashade() and shade() color cycle\n", + "color_key = list(enumerate(Sets1to3[0:num_ks]))\n", + "color_points = hv.NdOverlay({k: hv.Points([0,0], label=str(k))(style=dict(color=v)) for k, v in color_key})\n", + "\n", + "color_points * gaussspread" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `hv.NdOverlay` data structure merges all values along that dimension into the same image, (optionally) coloring each point or line to keep the values visibly different. If you prefer to keep the values completely separate so that every image contains only one value along the `k` dimension, you can put the data into an `hv.HoloMap`, which lets you index to choose a value for that dimension (or for multiple such dimensions). If you have not indexed into the dimension(s) to choose one location in the multidimensional space, HoloViews will automatically generate slider widgets to allow you to choose such a value interactively:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "hidden": true + }, + "report_default": { + "hidden": true + } + } + } + } + }, + "outputs": [], + "source": [ + "%%opts RGB [width=300] {+axiswise}\n", + "\n", + "datashade(hv.HoloMap(gaussians, kdims=['k'])) + datashade(hv.HoloMap(lines, kdims=['k']))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 0, + "height": 4, + "hidden": false, + "row": 72, + "width": 11 + }, + "report_default": {} + } + } + } + }, + "source": [ + "You can thus very naturally explore even very large multidimensional datasets. Note that the static exported version (e.g. on anaconda.org) will only show a single frame, rather than the entire set of frames visible with a live Python server.\n", + "\n", + "\n", + "## Working with time series\n", + "\n", + "Although Datashader does not natively [support datetime(64)](https://github.com/bokeh/datashader/issues/270) types for its dimensions, we can convert to an integer representation and apply a custom formatter using HoloViews and Bokeh:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from bokeh.models import DatetimeTickFormatter\n", + "def apply_formatter(plot, element):\n", + " plot.handles['xaxis'].formatter = DatetimeTickFormatter()\n", + " \n", + "import pandas as pd\n", + "drange = pd.date_range(start=\"2014-01-01\", end=\"2016-01-01\", freq='1D') # or '1min'\n", + "dates = drange.values.astype('int64')/10**6 # Convert dates to ints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": { + "col": 0, + "height": 11, + "hidden": false, + "row": 76, + "width": 9 + }, + "report_default": {} + } + } + } + }, + "outputs": [], + "source": [ + "%%opts RGB [finalize_hooks=[apply_formatter] width=800]\n", + "\n", + "curve = hv.Curve((dates, time_series(N=len(dates), sigma = 1)))\n", + "datashade(curve, cmap=[\"blue\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloViews also supplies some operations that are useful in combination with Datashader timeseries. For instance, you can compute a rolling mean of the results and then show a subset of outlier points, which will then support hover, selection, and other interactive Bokeh features:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Overlay [finalize_hooks=[apply_formatter] width=800] \n", + "%%opts Scatter [tools=['hover', 'box_select']] (line_color=\"black\" fill_color=\"red\" size=10)\n", + "from holoviews.operation.timeseries import rolling, rolling_outlier_std\n", + "smoothed = rolling(curve, rolling_window=50)\n", + "outliers = rolling_outlier_std(curve, rolling_window=50, sigma=2)\n", + "\n", + "datashade(curve, cmap=[\"blue\"]) * dynspread(datashade(smoothed, cmap=[\"red\"]),max_px=1) * outliers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rolling.function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the above plot will look blocky in a static export (such as on anaconda.org), because the exported version is generated without taking the size of the actual plot (using default height and width for Datashader) into account, whereas the live notebook automatically regenerates the plot to match the visible area on the page.\n", + "\n", + "# Hover info\n", + "\n", + "As you can see, converting the data to an image using Datashader makes it feasible to work with even very large datasets interactively. One unfortunate side effect is that the original datapoints and line segments can no longer be used to support \"tooltips\" or \"hover\" information directly; that data simply is not present at the browser level, and so the browser cannot unambiguously report information about any specific datapoint. Luckily, you can still provide hover information that reports properties of a subset of the data in a separate layer (as above), or you can provide information for a spatial region of the plot rather than for specific datapoints. For instance, in some small rectangle you can provide statistics such as the mean, count, standard deviation, etc:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts QuadMesh [tools=['hover']] (alpha=0 hover_alpha=0.2)\n", + "from holoviews.streams import RangeXY\n", + "\n", + "fixed_hover = datashade(points, width=400, height=400) * \\\n", + " hv.QuadMesh(aggregate(points, width=10, height=10, dynamic=False))\n", + "\n", + "dynamic_hover = datashade(points, width=400, height=400) * \\\n", + " hv.util.Dynamic(aggregate(points, width=10, height=10, streams=[RangeXY]), operation=hv.QuadMesh)\n", + "\n", + "fixed_hover + dynamic_hover" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above examples, the plot on the left provides hover information at a fixed spatial scale, while the one on the right reports on an area that scales with the zoom level so that arbitrarily small regions of data space can be examined, which is generally more useful.\n", + "\n", + "As you can see, HoloViews exposes the functionality of Datashader, connecting this powerful rasterized with Bokeh output so you can visualize data of any size in a browser using just a few lines of code. Because Datashader-based HoloViews plots are just a few extra steps added on to regular HoloViews plots, they support all of the same features as regular HoloViews objects, and can freely be laid out, overlaid, and nested together them." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "extensions": { + "jupyter_dashboards": { + "activeView": "grid_default", + "version": 1, + "views": { + "grid_default": { + "cellMargin": 10, + "defaultCellHeight": 20, + "maxColumns": 12, + "name": "grid", + "type": "grid" + }, + "report_default": { + "name": "report", + "type": "report" + } + } + } + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 0b209f22fc5d00d877e5c6483d3dc68622da31b0 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 18:13:03 +0100 Subject: [PATCH 32/99] Updated the Large Data user guide introduction --- guides/user_guide/Large_Data.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/user_guide/Large_Data.ipynb b/guides/user_guide/Large_Data.ipynb index 9da6dd94da..d65548de84 100644 --- a/guides/user_guide/Large_Data.ipynb +++ b/guides/user_guide/Large_Data.ipynb @@ -6,9 +6,9 @@ "source": [ "# Working with large data using datashader\n", "\n", - "The plotting extensions supported by HoloViews are good for different tasks depending on the strengths of the corresponding plotting library. For instance, matplotlib is the standard choice when generating output for publication and Bokeh offers excellent interactivity useful for data exploration. What none of these plotting libraries can handle directly are truly large datasets where the memory footprint of the visualized output is many magnitudes smaller than the data being visualized.\n", + "The various plotting backends supported by HoloViews (such as Matplotlib and Bokeh) each have limitations on the amount of data that is practical to work with, for a variety of reasons. For instance, Bokeh mirrors your data directly into an HTML page viewable in your browser, which can cause problems when data sizes approach the limited memory available for each web page in your browser.\n", "\n", - "[Datashader](https://github.com/bokeh/datashader) is a rasterizer that can process very large datasets quickly enough for interactive use. What this means is that it takes in some large dataset as input and outputs a raster which in HoloViews corresponds to either an ``RGB`` or ``Image`` element. This section of the user guide details the HoloViews operations designed to expose datashader's functionality when working with large data." + "Luckily, a visualization of even the largest dataset will be constrained by the resolution of your display device, and so one approach to handling such data is to pre-render or rasterize the data into a fixed-size array or image before sending it to the backend. The [Datashader package](https://github.com/bokeh/datashader) provides a high-performance big-data rasterization pipeline that works seamlessly with HoloViews to support datasets that are orders of magnitude larger than those supported natively by the plotting backends." ] }, { From c0bdcf197d773e41b05551447b761debdb59d58b Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Mon, 19 Jun 2017 20:22:06 +0100 Subject: [PATCH 33/99] Small fixes for guide rst and ipynb --- doc/user_guide/Deploying_Bokeh_Apps.rst | 3 ++- guides/getting_started/2-Customization.ipynb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/user_guide/Deploying_Bokeh_Apps.rst b/doc/user_guide/Deploying_Bokeh_Apps.rst index a22915adff..e3a6de28f2 100644 --- a/doc/user_guide/Deploying_Bokeh_Apps.rst +++ b/doc/user_guide/Deploying_Bokeh_Apps.rst @@ -1 +1,2 @@ -.. notebook:: holoviews ../../guides/user_guide/Deploying_Bokeh_Apps.ipynb \ No newline at end of file +.. notebook:: holoviews ../../guides/user_guide/Deploying_Bokeh_Apps.ipynb + :skip execute: True diff --git a/guides/getting_started/2-Customization.ipynb b/guides/getting_started/2-Customization.ipynb index 986f98a9b5..c8b0d303cf 100644 --- a/guides/getting_started/2-Customization.ipynb +++ b/guides/getting_started/2-Customization.ipynb @@ -36,7 +36,7 @@ "source": [ "import pandas as pd\n", "import holoviews as hv\n", - "spike_train = pd.read_csv('../datasets/spike_train.csv.')\n", + "spike_train = pd.read_csv('../datasets/spike_train.csv')\n", "spike_train.head(n=3)" ] }, From bdb4dbd3b614fbb28f2ab2679f88894bce730745 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Mon, 19 Jun 2017 21:26:19 +0100 Subject: [PATCH 34/99] Small example notebook fixes --- examples/streams/bokeh/boundsx_selection.ipynb | 1 + examples/streams/bokeh/heatMap_tap.ipynb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/streams/bokeh/boundsx_selection.ipynb b/examples/streams/bokeh/boundsx_selection.ipynb index e5e3904723..b16d0ec10f 100644 --- a/examples/streams/bokeh/boundsx_selection.ipynb +++ b/examples/streams/bokeh/boundsx_selection.ipynb @@ -22,6 +22,7 @@ }, "outputs": [], "source": [ + "import pandas as pd\n", "import numpy as np\n", "import holoviews as hv\n", "from holoviews import streams\n", diff --git a/examples/streams/bokeh/heatMap_tap.ipynb b/examples/streams/bokeh/heatMap_tap.ipynb index cd6fb37cc8..5344a332fb 100644 --- a/examples/streams/bokeh/heatMap_tap.ipynb +++ b/examples/streams/bokeh/heatMap_tap.ipynb @@ -37,7 +37,7 @@ "%opts Histogram [width=375 height=500] (line_color='white' fill_color='grey') {+framewise}\n", "\n", "# Declare dataset\n", - "df = pd.read_csv('../../assets/disease.csv.gz')\n", + "df = pd.read_csv('../../../guides/datasets/diseases.csv.gz')\n", "dataset = hv.Dataset(df, vdims=['Measles Incidence'])\n", "\n", "# Declare HeatMap\n", From 999a8413cb85fb6281760059b31185914ee4222e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 22:27:54 +0100 Subject: [PATCH 35/99] Added penguins.png to examples/elements/assets --- examples/elements/assets/penguins.png | Bin 0 -> 175335 bytes examples/elements/bokeh/Bounds.ipynb | 2 +- examples/elements/bokeh/Path.ipynb | 2 +- examples/elements/bokeh/RGB.ipynb | 2 +- examples/elements/matplotlib/Bounds.ipynb | 2 +- examples/elements/matplotlib/Path.ipynb | 2 +- examples/elements/matplotlib/RGB.ipynb | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 examples/elements/assets/penguins.png diff --git a/examples/elements/assets/penguins.png b/examples/elements/assets/penguins.png new file mode 100644 index 0000000000000000000000000000000000000000..d288f9352acbc610fa7335c34a8da683537802ce GIT binary patch literal 175335 zcmV*5Ky<%}P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{03ZNKL_t(|+U&h|m}FOZ?)zJ7 z?NF(!^W>nBgmMl985t3bh=#)fjO}Z%!C+&eZG5nO557)tjJe0y_!<**FgO6lm|%>- zfRPbdAdobYW{@UpLU&K6%C*y4_m5pwy(@I>p6MAR@N7Nxw5GzYU2CuPuJ?PtBwqc2 z`%D;y*tSg+MFBY*J{5mnnD}{VKmf9JIZDZ{b0)tZz%pUiIeWjy7G~(ZR4MCQ z>Zt47$vG*6Sh>*EzQaU`*ZSY%Sdu7;-y@|&YmMi5Sda9?Kh=dG7ReK3EKI* zkzIq`4e>H{BTEDNNBj7jNBHvF_b0hPjWM0aqisH)`SCZ8iu*qZ2mvfa-|NYH5qt+f~v+qm0)hplwt{i1K4*ok%6PrMAughR)`P5~e(O#*-8&2jI!~WCR0&s{Or|>IJ_f=z^53bGJZTvhwfv^HJCPlmBmw!R-ak#J`O( z$N@l|e2<+nKDJPOpY2{#tua|;vl3zQv+<^+6IOyU?On?tG4bXj=(dA}5RdpuO$XAm zd;YZ@63{(BF4uN`aSklb#2o3}aEv*(#r!aiHjobjae#~xU29d!ZdPfxEY|q*tJ4Fq z3gAo8VxtIzF-QbbN~CGc3#t2e{5~)(IQ0uN6(7Wi3 zO1VP6HSp4`qO(QFmKiTQW~OQFo(7%fBS<@c+5oCYb|EV(ZH7c?oPT{6(4uU*ch$F? z3nFEDrTS1(G-fRYx;4k7lqjVz#t=mjVHjdUh2vT%%OVH@qA0?3T?7yYn!wbsZJSIc zgE59?vq>0+2o#oOb$ldAxu{!OG<_Ra@*RHU#PhMWRs|r8Zh@c1SZ?Po7!x7Tt$D1$ z7%X8W=Cnbo_T1F1=@$*uz&k)~%fwtZs1B~g^W0H-AY*TT#_^*8uO-3Q9z2y|ii_)r zp_pQKfY_{YeVOj}rc7U72Yr%=q_t@Yu+0#hGX`XuMI5X2LI{LZU?L1*nrG_Vu@;T? z94q{ z5JC{>U}c#L(OK@sw17^x!CefVlPX3GX<{H2280r*80iQB+1l-7%lFov#?lC^j&!0C zQnUaaL=$tKz@pc*1B(Ub+IRPPCNOp0_KB&^!UU3C=^C0xHg&yDJ71R zrCD#VF!wOJREPmjDICYabzFoHczy%l_sOb}RUL^j-1&%J^F2ZGY^x0x0)appjTA96 z79y4eV@H`r3V}j`Fs*1KodEK-)hLlNMj#;sPNWAi@y=hVTl%f&5L}TUyShi3>5pnz z0reGtPdEHuoMu-(wEM%;i#~VdQ>`9QB z6)-ol72}NP$TsaTJ7K`?^Rbw&zfuf}vo?v}m!cs@dR@}Xx*0hFEfNlS-IB<9BHT`& zNeq7a9FU*pA|ABM{y2c(BOS-Q?v3V$e0@m^O({ibd6BWPB86NI-}eEF>B(*QzE8DU zCu_$}P|pugO5wV0i=jvOfltQjb@b`3->p>GCr5OJ$HhAVQh?P0XCY!H54xp`$KWny z92YHHj!ngiBe%`Q+koDdWNd4NT_+_E(+&%4Z9J+IS<)RM7|Lkqd{WX3MJ}OJfLNs^ zB%WpIHKAe0Q8aYG{7kGL!C?QvIUqj`(`L{lY!9gZ5s$P!=dfKnaQEJSDJ4%je;YyI zvA8tL%(3IRuFK}_+ZdmmL~IymA+TalZ`7%jYc%Q&09@B)baWiiDE9!g?to*wS(q+K zqYb9*>v7^Zky!s0poAfoWeo~NvnAZbOkALZZt1P9&^=ntMxk5hl`)vN!f7nsomtu0 zL}Uw8ZxkL_mRz?~fajK#mp9G6^r zEkF12*YJ~%eIhf}2BEUpvu}p2TPM+hMZIO>IB zI!Y;2=yffY&U|Sl%oOdQ8(>fgmMF-|#_)MAS6g@Sk+DUBSsPHX(=Qr8xChQ;BRiXf zkt?K0x9^D)rp(8b^oA}y)?j~Qb85^6R(P&WjmRVYAFflQOE-f=L zF@fv4)M_^UNbsn-K^J7 zb*B7WrVq$PSN#-P8)Z_OOUf;gP6zUK2z0w>R-@5Cyyov>Ah)b@KzBJBt!{`vfA}NB7`wmQlgX~Gqs83*@NudI>}`_cJS5Pzr^3Y z=g%oWd;n)EPtlUNwxU_B;#fAe?eO4%!&E9wCO2>6ML+jie)bn$K&|St|Ii6M-6Yau zY&mZOP2ZysYU=emzVBn(Hjd-0)G4tnqzYDp*o0z9%%ZnL}Lw>R@OT2&ZM(kA&4+t zV6GBz)C0dOt<17wU7t@a^Q?#Cr=_B<4aykP1>R|+EU>#uL};yPHk*jo{cQ~7N}U7p zM+1=mxW{p)0l7?>%27Dnn`Nxw6Ua_^-D%ZM=`)X84=2({1*#p*VKl(9)L`sQg8_|h1;Tqll)Mt5n(?U?NLV^Gvsm%}+NAt(XFr}KG3nlo1Qt>xsH2ss?c zQ!R=XBToXk=Xr?Nf2bSC5$AyXkp%Lz@T5n59CzxGrU9nj!Qm_}MVhfw0*P~W8Y7Qd z(Hn8BG`dxIO2&0c#)_jHTP)#+0aIBQp}@9XipqwJW-2du$J_sy`@Z)r@($>rMi}}; z2*NO=V2!i5bP{FR%+4L>!iyivd*1&+uDRi2?tkDgt~0{i+#L0KoqRrzZQC>&4WcL_ zlgSVbtf#$l{Z6vz)&TZtlo^;SvDUe_-tfAl+|UNV2!qyo;6~CLJ$9<|_f$Whdi_!V zc~oLkO%~M~B(0>bf35nYm6(x#a8E}g5B&g?bq>hSG4iu^eQE1FtrSHXP-j!3UaS<; z*irpJ-d;5EqKx9?8QCrfr7h{~WHJubY85Y7=Go8uzxeIn`7QDzTR3#+ z5X;NU6pKZ2xg4J7p|vKL%TW)!p^;XW=}#FqiTWhMk=<}Y9h`1av*rM7n|G4tdzuY*qA6TKqV!X5;#GFS`aYmPNkrw@oRg308ZM>ago*%G4lgTksH2R%{oqtQRsz|l6 zOfDn1=Gu#S|84(=zxm*MC=|!>f-+N$`w1CAIujf?UP74Ie9mMt_)U+K^9%gs6Q9f< zy!H3F@~TVOz3(tfje7V{t3O${kR`1oswkhzJ{^1^2YbyYr-%jMcIIA)QolR&Ub247v z^D>dVl@)_~Qnvr!qTXHNSa$!0jFkuDBc;Xi;v7$U@^yUdqo3jRzwrxPaQjXt*D9s#Z&+HstW`u{Ans{!G^9oZOJiG@-<#@}Vyp1=%;Z@wd?vhC$-qsD|DPg!>UfIE>1;ZJ2>W(Z|{b51~qLjk&X$v{6K~dU9CJ4{? zjq0vmxB7dHF<5GC+EB73mm--;9d$9-{-R6Ksz7B-)O~?;JEZ`GHJ}V>;-0!)am)kS zY9+G~2aH2IG0%v>VPt8uE8C-icQ-8nrM*=_I#wQ%n~&@tKT+>$w$S@}X?c;+(Q(En z3LHLsn2ej}hU+iqL;vT~{PEjghii6l{iZyH#y%c<zY>1)=6IpQ$6cLx!?R5K53d?f9NFp7? ztle_f#i-9VkPec22C?-YRUl8ZXrz=xt)w(5S9dcT4u@kM(l4(i=m0_z7#_`xe6_I19~B?ddV##XnYGt- z7=|<&4Xn7wgh2|>nC=c20~vYRK&wE4NV^!&{n$;F7JrmoL(RBF@RNo>^Mo(DDP%hD5wN|G%Gc9z_^>?4ZRo(Tm zds%s;Oy{@I)mWh=qeLo^p4WOlL5{}8i=3QWKv@dU^Ki2^C+A884fvzC{TjZR@qqQWT8zDP7Mk!cAN(&(rQ51Fhimqf9KC-RS)?(3`o-EH{*`AM- zhJCge{UEtf2!Z(B58Q2Z5Hs>H3^6G{u2a0Wp%}b7wwX^_=3dfkds_N<%JsJ`|JAbA zT$Mi1Lrw1#Mjxg)8zn(c)7GAAOtA>Emh2h3L^zia2ptX8z}-Q*y$~I-USfv&K%yw> z)Sn*o8zp8aBbSyK2;`k}>280-sm3~M9iUcO3@|A3F=pFIUBBI&V9=(VyuLwxp+GFt zY=msvx{G7S9;RM3Y}#5N2qLo97&l%w&8;u}HU9IT|AFbpJduLG%;vDl4P&q)Q{nci zBAY34-^?uKMnDsZU-!_iMRTEo<+?ooc`xP-uYV)gU4JEW^CkB0J4(4!$Fe~bTr6c{ z+u2SWaufxvYm{+Ip`jLU8j|UCNi(Mcl>K3p=}|S0_G7IUjg%5?3}G1JHJgaHd|*Xd zNi(bBFB`6so_D^;Ha1(YVSwv4u--dIkr-b34~w|75Is6|s1X>n=K<9pg>zK71HY6xh2^=E&Sh zMmBB5i4^md5;Q!5u)+BFBsV?bNxb}*Ud3~s^E42!ch3wiK0fy&v(N6(o%#|&Tk7n5Xd{(d!avkB8yIkw~7vIxp z>0>!Aei(A%BwTUDPOQ=aUi9C8nuB}q=lqLrByy&yMvCW~+bK-%;H0pb^%Y0!0f&yw zQ1N_5az$)Y#kR6E8V#0~matTYYp%YLSH0@hyyPW6LzI=w&Qv&dVva_`!*MKJ*Txuu z9|lO_JgR{_4b0aKq>r?;k|u4TS2XgLPoq(YjxB|};)Ei~Sa=EiQQH4k*bm+c?*^3kXj9YXu<~Bp=fODw(LJMQbp#8aM z<$jy~>U7Dp=|0vi4XJT4dd2h|WR0d-432H^8!kI{PIK3u!@S@rm*P5kHl8=l#!SSB zcRm|OC7EazOD}<|c(|h3JJ(>|cMy(+)E*+NlXK&1m_4~n7+Fkh*v`|R{&ZgZYp>#Q zkH3~mIbd$4!oqx+a;?hPSdpfQf3NTRof5f@<8;d8Iwr!hGWdR-AoNhuCYR3;h8~_5 z;OUrbNoj%XCILc-E+5k>D4p_hTE^h|fLylY=;cbDL44cInxxzHI(v0m#-a&U%0{R- zg2ihz5&!$6yIayqhA<5K8zabWAWsYGz)7nmk`@)R;y~+S%&YNQY{*(O2mu~04!F`0Gk7LE-^Ry>FljlDF@svxN2Y+ywAPkwD z8l_RIpLHM~v>?+=W@BQlx^0p4MK83OcBEGY@nQF^_gt$Ml`?vbzf+tRkXI`wv7JpA zrMdaWoxJP)pW)4~ei6B>VPbNGQMPm8mI*ew5wf{}79lkxN9#Vvmm54hUm>5*A{7Kd z%X~2wIy4v~DOXQ2KDL?7n|AOMPrQlOz3$aqe)(f4mkdXbEl>-hxGbtLWHK2vhH`ls ztu@(fmYh?-4=Olzo{T#}xq6aPX^DJplnoolSt?gMzKbY|h@z;Q#ak&Beag7D6P(iK z*J&Sp^QT{%KAT5sW0eGuODneSyhao8?oYN-^zF8@Gff^zDN2-9d`zspXp|h#MJGy0 z(RK$cv|(M(`<-!eC|Jp4^|J({>i~Jm^$EE$QTqBG0#3&5q(>(geLFm?UM_)UlPkDn zoGb*AW^@vkMqws5KkZYBh9JWqNuO_wD{JiY#w= z%UgKHGoHo4gU2Woiq!n-55@FcP1_!nwU>+;kHWz~E>dKyfxa4{Pib>%7t2};<2s$J zW&p<(Xr1BEv6EbV{w_v0yWH~Br*QPnI~duy1;1{Xa$GK%n&kY+F-)^UslI?`MQB&@ zz_F0Ufkxaj`sy#ibIF z4p2%lK5;(RU3VQ%eBu*1|NQg0;KE((+O-QI1dEG{EY(A5)dmi zS<00K3{lHRV!EZlC_UjWHH>hLor2a&Hl$g>0*&dE(^V-%HmwYET66X^AQ!|NWS_M1 zk=DvF+aZu z*)&G8Uei*q0^*`?qIX_52{4cbp+z4XUn#~mAbd5+3R=$C?uDlZCWj5W&Qmq5Pc?+r zu?;hGi(I_(GLFp7Fcm@Abjj^r85IW)?P7(0)p1Yygm-_8;=LSxwq zuL0$9353G3UB<>Hxb)J?dG@oO%TN8()7iLfCxxP-QVMx+?{R$JV`{pHF@o9IS;i+P zT9R1QC07PPKon?H)?F84p1mS0rIqZ>q?{*z0zj@$PH2{q)OCU`NWs@m?(A*l`;rTrBdOc2lrDknkV1#bpHGEU&1Z7Jf0mprg?Brg<~fUv31*K7OT~> z%6O9gk3pGvNw57N`K8YnWF#cR&yqmC%Dq_0Htq-T-s*TmyUDE4v_2(9E-c2z9F872 zfi1_0Ooi#`4a`?7-1@Yeuw|KyTSVZ{C{@UsfGf96aoM&picZABv1J0=rf%mrUT?B* z<|O5M6Weic9EW-%z_x9qXonx#I2oHT^r_Y=IM!&3&`FGmE9=$kbr2fYb-D7&o7lPY ze17(4U(EBK|1=D6_gzPrpR2NQ(2iHULzz{= zZjJe&Bpromj9@f0UAph)Feh@Qq6$81I)Nm8>O2>n%Wh&!56FXw(-#r!f zM2bX~bcVJ++x|UTtVlMiEl??kmk0<46z)GIE5le_TULAbPj+Z&7sSz8cR<`}EyU@3 zo=iT&cfPxu+its!yT12jglRG|K20W z=H{E9#KhPrCr+H8T&|-mjg&crjMkJ(aHh2K&OJylY-RQMGfX$IDyzGGcJh6z0eHLW z;~+_FSf=fnN&!EW@Y|)u87{f-LJl8XWW!_*BE_+W$IaJm<)&x6l6!Ce8?qxsa`_RA zfkt^5)u?gF){WeFxc9(u7U~hj$;}Ye<8DM)G@3OU%|#HJ zLSY0YGX#N0KA%TQi$Fa+zK)&7sSpo8(%OnMG9EU=oKrWY~GFRcx{_Icr;(z=LT6#=P zZ6K4)GCDTG`1m-PjLpKrB1=mpLf^yl}9{i*tRQJTv(=BYT$25aN!*(23c3DHc_d|6R%Mz)zd)m@TC+a|nt|DID<1f4F%B0PQ zQw8$1WFAhA7ddw9AbER)@xnOO$YHFxq zN72pls_S>*g$)*}3)Gdt%N04W=<&eO5+z@-add=6qlz{@uA9Z^cIK{+7uB&TcIKWo zF)kz>jU%}{i;Igin@t?Yq1kMrwaty!{UmRC)35W?=RTWC*<*3BM5Wp!iXw!RozTs+ z@VfMbuHo~~tTRsC)@mq_r<-IyWFQYinqD38rEl&xLEv?YW(lEU79_e^Y7DFz*4g+$ z@W|F`NIR01#gdMic1WP@WY9W9w?eBrp+Hiiq>V%qh25>G4DH&_A&#xkQ4G$ROokwc zsMTtKBiHeU+Koc^p1`2dn;=QXeWA7nCPoIG(TRT}6x9qG1)v;bPw z5gC%yvn~x&tT%-_CE-b`bzNWYMwYZ%yPfNUD@V@%dDbuUjnDlfJ1%()3rFuEn=4|J0xQeXi3PG+@UrLJ!e+V5@x9-{aU4`}8~4rm z+;e=1nT*XuCWEMyh#Cztg%KiU)9@oQb_QCR#j9;($&IMp)WC0gaS3d#Ie&Tw@BZue zaqIJLWvSF;_ud2eMvyCxvs|uI94!z89zoM%a$<~XwM^)RY}~k!!-pTn&F9v)fY;y* z?aL-k)SG9$ibAA2iEzDnEHQ$LbxC(hsV{|dB-5ka^xm)90 zuLiGE7s8nW^3|fbdN-3(0dm_>H0mB8u`@0vjPRQca#@?n$w}`2!Ev7T^e5n25#wVS zEZb14HCU=@HcyOWg@T3IBRu1}3%KRdT^!l>Aa!ZsJ7dhwSNP)ILm1a0J5nHPJB0Nn z^=1?0xH!2yCTtD`nPk7nWB@{YjWm`UMEHzPY~rnd@(zCS6+g?-6EzMTm_f*h?8q3i zv$Jg3vMH8oYBjQsOS9Qz%a$$7FPGMdFKd%-&K8ij8Fz2QP7=ub{6eRozpn=5>K9-2 z>%VVI3@CBxr$PwXx0A$Qrq?i3X#;H@)j*!q!P+dmdmMEu(dG5b!KfnE^Kj*d&y`2+t z2Puv@_@T#xb5*iNbLDuJn>N{8J1sGl5=T$??4OCKs0v%QZsp$H_jA?N*Yj8Jejoex zAHmJ!SuT~xI@Z8MsMX@?%^E;%wT?amAJVkEjjKG?c_=AUuVFnvzPes+TIS`#3YKq*BKX=?QvkALh1eBsOA<>>z1WJhxNp+cAl+p!T^vQ)1yJvG5Y z4;^8-5peP4R}s{k==u_yMijX)!^v8OB`L771xz!<)*3r&QP*`WqXuTRCV{*UbmDFx zNFgw;rZ76m{NgO1{+EB|Yj=E?OE0>Jn;v%+GJx;jdp9>;e;tAEaeQWmVzEdzmqQ|A znP%Pik}jc()$Wft1GQSrO5LHs>uL4wX~_+8wMWuoZew&5MTpz)Jk*g^!Z2)USTS?# zVjreu_L_Bup9%e_2l8Q#F4HpKdY^CKfJ&o@QVQ3#6O28UV2l=xWuuIIrfIfna*rs-@bkP6ZSK5YAn(omUF~zLg&npT`KmsaFzTeXYXP=x$0RF=yQQDEeGA{)y@wb6^eyBa z@MNBhsbl9dG#eo@YhjuZwoz2(=eczIG|#@_3Yv5K$=M;MHp0IiJIeR!KEf(87Dx(8 z<2ybJeu*(T-WOnyWQ^@l*wy5L(26i&gllJzMp9Z@Mi`5i{@ly>z-{ltQ}FqJ|0<*7 z)8vaqs;%|nc^;N!wG%7P+9CDe@gGz`?)30uMOKlB0gPLACAgi6tkRy}D~#MCilW%r zc@D@2fYvG<#FLUq`_Yb(^?jc(ig0uJ);Z!@&+Smgb{N*S$tjkXmuWO=Y~8Yv^L9;e z@Zc;T_`q#^@>8FneqtUh2Yb|~xY5V+B4nT#vo=w*xA4lFBa{x24T}f&gnaA!HA?w0 z{LLOmy!$E5I&9gpjc?!iO&&hF$i4UNVQP9a(zfuL0j{<7%`7>|%>d9jB>-RJ{arJs9=KSoht=-(|H*>+?Z8HWfOBMAHu-3+<*h8^7agj;#w+h1Yp zWfyYdp$8c)Orx>^zV8vq3_++EcM5p(vuw-%C$++XZ|NKVNgkD=_snTGOnGWkS)-tRVgo5Ad-w03w-qBpW%kbK8`!@ zx|>i-M#jciER`7_pNt#ZL}$1Ax-!EzTe(ifpm!4ljc7$)_0FB7^|AKMQChxC(UDmi z4KD`rq(&~J)zSNs1%%=+TCd^rqj&Vy#cp@5?!?Nr2Gq7~lw}clen&4i#>8QRZk&(< zkkKL28z!mOt9EQ>8X49fs63{%!lw$6d&?o_aky zcYm6192ns{m5cbsvS!AdWa}1(@`1xt4=>|hc>#BR``i3r?_uUomKhlxYdNKwIF8j- z(sq@dY=Gl#xSVoIK%MgaN^nMj_Edp>EsQG}I(n*`TN)!b#>9S=R`-`Sn8(c^1VJU_ znrpZ5{ttheH@@QM+3}d2loysTO&=={f!73;!Er}v)_hz-+^~xBs@(FpD|pP93)wO5 z{J~Mawf7K#Tfok^1b!7aV-bbjWhdG}4+CTVd&F_p2 zbR?->i?bI|Q%gXIZa+l~Rf_z^|WR=Dy=xwetzQ?eE{i&YkCT@W3(3 zi#5(W?|f!wPcS-`!w>4%DdC05koZAhGqia$>ET~#jAy-!dA-uf8jRb{S{S;a4SY^w z$!O>X(DqfepNpcXlS^P(7I=oj*f`@;E>}JF2I|L;k|~a3ym^8^Vr4)^f*>$)yDDSw zmP_Pai+a%D**9InCE0Pza*b~sKFrqz$*<{uOSx@g~0Z&F`@Df{WR`=RqbmY{Z1YI;Aza zCLr&>KYC#E^Hcu*PC}*b+WeD1o?J_DCbL|-MIgINdUsmAwNt>`Or_Pms;fN}BpL|( zm^1LCN4PWCtqI!(?~#!>W;>tHV~n9(F0;6}$l}rxCrTB3Kcw08Szao0^w<&ZzkfG- ze{dfsP8?;#4Y6&TvC#rMcWl76pxLZZuh+1Yzz!xkcJKfjCnJ90m5=8|H($%r_wV8G zw+}Hpd3VwSXZlE%V&%e=1D$@JrQ$UZPnd;ePA7h&)MA8EjKT`bG$#B?JhQb=YNDxAMP z%L{(~6}COxy%Z#2o|3iwfjrmx8tZM4?Z zn>8FeizBCK)XNBAaBYjI8DJ}mEt@wmHkL;*Q)5&lzSzt zG-=2UZE8`#d0RJf&w(HC^Ur-2mC(aA6_o3susdLzjJ|4{;uY;;S7x|=Yk?O&R-cZh2JnsPfDs=xQZfcqEF z@nH$ILfB-h{B@hL8bPYX)t>jKle*uo57gTzMyRzlU+$Fb2sMpHZ3W0}TeT*@*{!#0 zPGO<;4UjS2i6{fKyVR(IP!WVpien=vyUEOK1(1wSY{aqy7EUZs$c@viHOXWoS6_W0 zN@za+xi9h6uY8@O`}VM~IM2+?amtlNj0wr+Z1VXmnXHQ@u9IT7HWY25mZlz{wWhMr zV0zO=oTAH8xk64As5Tclbl@1HBIFNV@m#LHU@IH!i2Zjzz}|-zSrQw0I2>dDyvM;{ zKh@e2S<4V=pL)5%&PyN9C;s&_9GR;l8ub;Y3u>q|GEhUd(wc9Jfj}NRbz-xAwE|Se z7*eZ>odfdW_a_jzu0y1h#q`w``O9hI?BSX~*xD?MfPfbrBTf<=2H2}Ku> z_txAQR2_BLJUR0~o^IK-tzxC@mb6l9S8$5yeq2=lY!mWy4Rh6j>1BCq{akVwY_Kg! zxw1?yGtR_lmLO=bJU>UR>a(FxU^D|aKmH=-W|w%^JN}fE^*=&|V zA;;wOmbhcNiCPV8Bf_9Hc_M+u4J=;$E3e?IU%8ZPuGqzw?)fg4U3?Xdr8)wKdeeZg(OQyK z_DYASPWfWfirJPeG9ifnGp*-Z*NNy8=edFI9N&d)~uG zKKi#b>T|dmiR)&`*f|Qtkygl|haY$ZfrpU-*R`>2n?^l0L3I!khCbTFl_fJ72Pd0B znGBUi9f?h?zQFvp8UnOcj%SZG#pMzRQR zj$&bqkbv1^Gu-@?=keLkeu_K3br5YNwxfsZ-Rq3wPL`QnsokFJazCW=4qfu#IYvH! zk*6IaGQ<4xGAg4O8{fp}nC9|}E+g`5SoVtPo&5ebLsv=>35X(ttsJC|SUfq)jn`hz zwO3un=RW&M7X4hO`sSd_L@E1&0J?x&$f1lpXhp@?jzy(XV&l{_#~(h*g}W}~f%_id zt^$kENQ54`eHKQY0 zvi3NEU!#z-x$3Izy!T!2=68SRH@W@x&oYv?nVOtn^XAQr7YisE(C`8b5lTs^nDZ+PBQc;_2l%Y)ziGNp$Ovu}Qc zISTBr!?zBfVE3_ysYg|EnSh*XAf-(Z_!wnTtNMKCBmacsjBx1iA{(d12_io>qg&&g z%$gK3J^K<9wf6nNkC^Sy3S-orq3@id!;rckZRUh{WTln0n#`wfQ4X(^C`q5&!;Vq6 zK&iRNSYeun=a;y2*8~slTj0)beU6clDGbr7q(@3g5c!}i>VANm9l;2}+{|&L2sm&1 zRu0cBcVw8s*0S!q=I#;}vd>EHuKsAZs(XS`7Eu^5F+R%CqX#*0{9#`8%fHC&U$~tu zo3|2bNj5h^5QSKdAPhZ}YO!enLJDNp!*n&n9)uaP=XE-)UJQ)?@0STrRV+?n-hExn z#n6X9K+77DLZKr~6o!cZ{7zdVZ#hZiSvDQS8a3EeSovxida@$ku*1_$FcI4~?Vvng zWqxLsCq3y}ez12puY28V*uVE)w(r;qXadhCn{#7nBn-)BvsC=JKu|l`r?>7zv*~x9 zvt{cw*{Y*1Gz*c$HXgNuGyK6Xy^!B{$c6pF_d&@QtOW>G5w9FPnU7FlMz-; zY8eox+tqthp3}(JqmkzjgebIdXht48w@q^V=m~DT_IyT1HelNkQBTR`lQk8LMw54BsZC2J8Sb1Kp_aw#POMHt5C&tx)G%FB$8 z6_}l!<-;HRN1p$}7jnlpzfXR23tlL&TnK|2hzQ5Ay5*G)D7T!Q+8XF&PcrfqIeGPs zJ=yfVtJUOLX5?!*;`<^K2|*3S9d{k>0&;zpYoVmaY4%4__UUi~^uM(Nxlft#k?lOR zXD>T9Z{;VRu#-P|>!0%%@A_kej5zPS?aa?Fl6A9e+_(|H(PU|18LeZJRAu5$@9jyR z%y>)2nFBbgmC>mLkuhi!vM^sJD3$o|AHI?2Ty-^{`Pko64kU+88XlY}^S#PErCJqF zn%GOPHH~^585we!JQHSa^ysXyaH()v@5#Cxzobz424%E&Gvyw zEs;J4tTxg-ft?$r8dy+N7btLajPa#<4M$?3W|jHGBXQW$5ifwUUu4 zk%>)i5D~O`62^M(%h?9eOD8@%Vtz_J;g-L3H83Ak8uFB!ox;Zo2 zDL3KOLtgoc-{mv^`Zu_)VaIvXRH_xmCi9pGj?WxL;@~(rd_Tkl0nKK2t&(KPS|J3g z)w48iuNJ4}2cb{7TBXsfVJZ=S`+NU`D@H6n{lWju!eWI(%^bU{F89v|c&dWTfs8`x z)fz@wIE6gg*pxkk3_Tj9h--f0dM>@_eC~PZ7^6jr*U)4YG)>#Nqr2MGwYSJKk()b= zk$1@~tLfzDj?>;K^0^|FMwN`?V1!HPF9DhxuKx)>arpZPF*^j$BadsX$aZbz0Y6R)*1R}-iwkM3F(SRE-Fg#8rO||eg%^5EOcq#J zEaT=}JTD^SjN>hr*tKgTg+jy`|Yo>d1@1u$PtACWyjKp?K&L?aJ^pdw7>F# zu#2Je)}OF49^+L9n=B_YHjOC24(n9v^DJ97i!XgCN0ut=U9PgX(&WKXg#(Kv%D#tD zl9~*tR4O=*)5Y?A-^X=bP?DLWC;88BeUGuRO*HC0zV9Q2q1kL=JGm~sw#xz%8myGU z{-NoZsw<3Ug;`tnibE?Ide#AUZMsX|_DWz%4lE+nVarB$neMA?AZJ_tTWzCSJ+oDI z!rF#0IwkZeG4fu^X3T=+W(iwm@MIRDAR}`~yTB#83TzxT80p~Vij*o95Sn5xOKE)nLKXM|H>0p^mxYBA6JwK{JTb=wJ1^kKp$FNtagt2d;-{bY9PYn&Hxm;R zxUP#*qSN>oAP9oEWI@7&^nE{0#c#c*oj%C6XXMh*`Ir&~|m{NotU-5)Z}*3@tO*#D9$zEm^AlxmEy>KySZ1 zuh9sjk(eJEpYGB3001BWNkl2u@_ryytC;ur*WLF8je8!2oYp%8%}&;i*Z zY`^qcJYVBDZmgRMLB@^=K_;K0-fX0n^zCKaz07;HvcQ8j-qrkALoJR%fk?xLKJ)>y zuEe$sOG`^^+&E3G)<6i=_lSYGyR%dp+3bE!cWpGo9*sz^&t+-Ys3Uzb?(71*9<@Cw$UToOGzI#@HSS5Fg}+83yKO!#e1aCQO85=Rnw4 zLAA}*|K?p$oH_V7BLte)G_#+tNPQDn{_mF6Z>H`Up{RhAEs%p z6vK}}{YL@PZC7Ghk|1o5%UhTTTuUNMjms|H$UEQp4nFzuk8sfi=d*3=7Ru#n91f+x zvLxAT7Gn(cdYv!~$>;Noj>fv<($W&OS`FX#J0RO;%58?eWM`OY+T=sSgQbI1%T50B zX-{Ws)9~&C-{4CJ4)ML&d5(G^HD#ln49bbimI@Om54Fpfw(Gvwc3j)MR4Q@V)z|UV zpLzz%OI7N%CQ90jjg8?)KDB0}1ttSZrJiE>;545}Zwb!G=or`&?4?~4s0$EvqUmyP z=%VCN0ph)jy;mCeVJz;|Hs8nyEX&0gArbK$Z1^4uc)@>rEk*tTs79eGGZhwVl>L|TSgt%hY;jE#+v$z*6W8qCknw`zzt`fgm3 zO-d=r`8F9hM^o2XIKDk{S#gG zvFf!f{uSol59p_}p*&gueK4atGoYSU7e`1JKazw*1j2xA(ArR2fNL*3k1gk4M5)#w z;d<76F*bO!0Y&>7jh(S z1Y?Ti=yx6aTF*USIQf1P`eqecrvsmo37ILdcnktBEe#dX-5StTo^SrP@4}VO#9E7z zf_A%&F~Jmk7Uo_5ta<*gWKIH`K1-ig>>Y3N|Ho)qmeSjcZw;K?VS93j#vYUsEugg_DM3 z9OOpRN);^0HGXR`8ae`B)PO-AGGJ1ef z6p^MWd7e)w%2k%dl3Y$^<4KZ?0=rU*SHJqz2o$z3I14-d-Uz>MCJhF?{(-j2`$H>YDj18o!Fgih zI=^pbD`lnEQ5Dx!pfd`&FUS4)m?-nIy65L}!#MN85QzrL354?`N|O05nUkEp>mDd6 zYLU_ylar^}sP3{~;5i7ZWj|KOwfa#4L^`3{+h%!Xm5UcI;8Fa^pT3p#^|kVZH3pOg zXBqu_uP({m3(RaheLoERg^H1j4}SU?U-<+Ug+;4q&xf!dkMe4^Q=@IWU{t8sEgCb~ zr4=b1uwgg3-3zLIj@(O%{x(NChd8mm$l0^c@)ck8GH$!`IQ>CNf-AKi#+gc@qftT8 z4u&)u4H}I`;Em_`D0o|IDQX3}ii+nL2f3Z?9{1gMA4O5{^wUoVtG762Fc?f&XU*NZ zn;>P`XeDHWAt=qpl`ZbP`##?H-uLs^6C0EFQA}k^HNEiQMlwwsQ?<|BJ@M+3z3O1C z!z*=}&C&L}CRFChXKvX=IdP_CZbMu5I8$@ix$&D8ajGWmv~K#mR|T2P!ghraIA2Ws zT(!to_f3m~Pv$x_QI~s|StIb1&szyO0gnVILh!(gj_|GD|G)7kzwxu&e&0Qu**ME` z)WjB$78V`N$N6Vn->4tNmG?yYy#v1UyPiY+yHTOP9~EvbumZg3T*eIDB{oEhHP~H%U7B`U2v9R)l_U?)~)l zb~RdV_;YG(Ik9WUH{B6kf6iV^dUiVJLhbG#VE&EfQI5Ze8xPVF5~vqV>UeF1w~n$x z?95`5vzE0(hqV4(k<$=n6C9gIjCSQG^GwJf}YxFc^#} zfm-X)G0#D$)oRh}_1M|j8OP=t*L>E3SAV~9gvqjObZ(s_Jo3mZXf_)ozffy~rp7F~ z-&i=w?U7x%{fjv@O4r=2q?>ObTc<3}sLt%7jNQD~-)wur`m6Bpl`nl6P7AiT`oyKr zfWy;hG;TQTbG2D_o~L+kQBgIAHUt@mv4T|I5SoJiytr zUtsOf3YRZlK}pH#>N1;~o18m$j>AXS_Ju~S7vtWmS?cPGrD9)-{_5Q*8R48kz(mllGK1>R zs{7P>M_~=QDKM@Km?clP`uX}%|4!|8o1L8&ChI5YG8jN?rxjfRyNF%hu z;=}*d7J+I@T^TS}9*b2r9YxXTv#M^;{Z{+JWTR`Ugv=Vv4ljA>BYg3xb2u+1Fu|&G z5-&%NK(lz-du6ASgF@EWDN_Sh1WZ=?-Gh0gaZwQ9BBc0&jZ^Jseqxj$N|KqGWv_l)yssfkpC z5*pMhMl>-;li0O(u@*@{T>QI95-k-oAd|0n~rf` z{|JzC$JYKXXKpULNFHRhy^${^^+>dSrrU@MN61twDQ!98gpO7HW^ajxJ1O_ye~P#L z!Fzb>nUB+KEDWT9fdMoBsUh-||{P|7(3! zkU)itRr0XapG9FY#_h^{Cn##pk8$!65B5&rEl3o{j;``Ae*Wiz0F%qHg~1j`Iob`gu^uw$4$@4r9ZS=K5(Ima@AX~ffz0dQU!g*fy z(yt&(0ofQ&p7PkU5vRJpKHPWf-9Cd()&|IQMh!{^8Co~dkr@V^lEE}Ys?ec1tK~lY zd$t_JjSF=0x|5Q?1@S%@A&aeE+FY)4s?jlkSXDpkScWAX* zNF|6Ob<+d+#J!s3NxR?EQDO0_7S{S4nKxf#Z9dIQp!7ik_>CNZqhRLjOiEjw6*In2 zJHb2vH?nMU_)%bY&T;(6G2ZmMf5N9f{UKV-h*n#1c{8KgZr}_=Ni@MY7{NUV5CP_~ z*5RDp6?g;F#ZOd~opTecmFnjzTs+|95^Mb)PTYQ%_)sN~)JU3q!#92t&z{*piqLYs zC*RkVfozIhFk-W)d8WE*G}RzDvboCD$5o1$ek2qsgg_`pYMB$yW@6A+LA#_M3OTVw zou-4`n2cQQ%TBqPo#H1g?H~XcP=h=-uuX)wWSvz_gn;Vx|Iod`TiE+imbxyD$ zu3?VX$L-i5NbIxBD6F&PF3)3aL1B8tk)+dUbL&EvZhMGMJYO^gMnjQFly4A4ZGP!r z{tDmw_kV!fPu;?^&u$YZix5GQ2>R)ONH(rBKDn#={#SYbCR8s~rP5e8lip1nsH=}w z*o3I{V@Sl_vuAf&fBl2B;(r?J%gozR6qY;>O)uk&+)ZWXMKCxvw#?wmY}by9ea0A8 zR~LB0Z@-=_AF#OCVK~fKS?w?!SlXTDL;$X`{Yo>Xs_It(SnFU6QPCA``LoqgK{NID z;y51ZqyS@DqYd7j^B(x506wEaX{*)ZWiNe%GiT0`re?&lnJCcC%Kn^~`1{_hBRO-h zjkbUjyl*i9w^Rj~@ivdCAU?--t9IO+!l%5>#o&b%pbrdPYR~1ZoYQw4;poxZ!abHA zSuV{tzKHCv`niPNc$qAj6yY81PRz06hq&`l#*0tGLw7muKP|X@{V)yM^tUa`3x|02 znX~-jFa2NKdfQ==B;x3iBjkC`*47s7cKfE^-(3wtT%AP2tn9m*UsdKk`59^g377|O zYUzV(N%+$vM&6xc?cj;dETtz`FE`l*tLM@GO$T0 zX&TGrZl9#HMCJjnkiy~8ArIYu5AS)y@AHule2|61r`Q%5#1?0^Pze~35etv8K`K_2 z>TuQdSZfhVW2~bn#@Kd%Ujmwudq2u2eHpC1ceSoG7xGrY=(|?mW!fffdgTo%RfKSk zLE#yuJ#K&KrKI^bP6}GB2GaVGg{ET`TxY_A_f+nh2s!3DTWe+n*Koq==T=|zMy@cT zCdlPo_}%g%!ujery(pXQ#`kQu8MN55j5M!lWquH`*A;}Tok_KWmodtg8XZ{7>`mO&R55DX+-uLHEapH~+gQ3P|IgyHI zdx=i%SmhizZ`yo(mnTC#7FLPK9`KYLP0(-;?S2`5Ez7Szd8xvuSr=F=QVNukxFWsW~ocMh^#ZRB+Ov=g6mQrHUvFcwdq;fsaC(AMx7FY2_%5ZDQEvpfC-s)M14LXNy z>u?r?a~J_q!%|0a=j{nAYY88FbQ4K~AO7L*=P%#?9u}4~=g)4lxY9iW;$bceJXVm`iGgGW!d*cNtv(Wc5oX1?#LOgrDR091+A*jbG%-lHSA>pfRyfx-jE zqLNmb-G+jqQi|op1ukt|;O+1FQw8ev7Ko%tBoxlVgZDkiAT7!uZ%|_I<>GqB;q>I*#W$Ahxy}1h zw{x4-)HD%TuX81u6{rus+W@zZgN@cP!(m41;DLMZ>u;~4?ImXS?1!U3na~G&mE5}J1jXsXKOw8xM9@T8?q3HT@Z~f3QJK~ zyblGs!m?+U9mxn^7Wl@Ugmw79Obq^A=a?frGXe$*H|0iB1*h^o1RlX)n1Tv)za1>M zA7A4wZ+;W!wtF;_78_dwgfz4|9U5wtSShyCvuNKet&(Oe7!|xS#VwyKJk*&VHR!>G z8(f(?)Z5k%l8H?|tZ;2YH+bOwhv@gS((6?28eG*ovVt)5%{4ccQcM&!r-%G=702gI zz#ElOO`9~21MH2@#%C2BuQgLt2u$JG?m1ra;`~=|qJN)!d{}}(n5C154 z+)qJu@!(x|qN48(9~!imN!t$*?mq6fB7$wv8Jb6yuFw6h4TeurkHHsuNg8|0dZC^sLqv_7<&lh zHMWKr$AL-C@#J|1X-p7|nY&pgdi^H!q94g)(Ni4xLG5jQln z`z#*vaH%p^_(Ljj$76} z%WXrt1)|WjRt(u7q7mgN0ZIs*6v#-R8xEy|vG;a%i4(URrqQrGc;7m2d&}FnaON@( zJbZ-r|K+o+9&OIt*^E2HXYb-h@eHoIci=|uc=!9vdD6k7jJyhDb_VQG6%c|b6%&EH zzEueweX}vfaj~T<06rm36-5XY0g~Zxh#7XdWv#;>zwNE`yE{C1N0Yzx zH8Bs~zrtre4X^**bL8DFy6ISJ9Uf)f71z5ciqYh#8jPwyUe|IN?O0~Q33H$m;SL;E zXUUk}{bl!}RD_ZdnRCQCLFKk~{u}R1vfue8jTQX9L6+xeTHLrmuI2>Rak1`ZK`pc1 zp9jUvdl_p5?|dG1ig2G{@#USbIN^=UfNxviF;X5q<;3o#O*ZM3jcF62FC|Au!6(pdPB1_Y- zC{;3>qVxeQUCX=;TymR{1o>*a3AM~J?wCsSPGKd zW0ag35=F)3-c^1acc?n&P*RQ-%lcwfUqtG~pIrr@3BhoA)mj_Z8<5BR?a9SqQfK{o zUUtvj$$q-K#WggPN;zj|=Vz^#dw+f>QCvDNFwrtZkY+nXafWCbl0xCtB#cX zh;mR=zIp+V7gJq|P-OW;Ag|u9ey-m?3F28U4P%n^P1crP!LR)6Z*uq1OZ-niWEu1n zJ6o3RKE#>faIARMLtWng*(HYSV2fe`|E@6IDm$+SwrP!*=@>E3)@qMZ53XvhonxmZ zP!vVVsbj}jSy`c|?H0nsn-A6O3gUuM@wMLkQ)yl72Mz6s`_J3Deu>i$uLs|JA-oFN z<>Xz5+3qf45a2b1w+x0|mKtqh=O^Tw>z=c-F#D@rq>Tw?&|1X-A~X&u1X4+i$!Ikk zT3Iw6TUR}mkVN3LL?;d%fmej&Pg|sn@xG1Lis7IL%Akbbf9T=6g0q)5EH8D)vW!B6 z@0VLMvP^W&TsK$1@6pgRkBN6R8NJ*OL!UDyCou8=F@(1GL6(P>`P||POJ$%N$MLQ# za^m8I3!au!@QU<7yTg_(^~Ov>CL0LU-*5i-! zqyK1|m#o5tGoH;1E)OM3=Nv~D9N+WRIUo5xB4~A z001BWNklH zIxA`t6ZykbMk$zS#(Yp})%8f29^|#Z)`j42^6PrdTYCK+x`T*VDjt2b!(ecU=E5Q3 z*wP&gM?0!|BVb*a?x5KD-0QazX9X$_J8M&<#4#iF&y@}|lt(*(k{+cY5+EZ;V(`r% zDCIRlw_E`_0@(!Lq0x-Vd!D4B+1$?1@qmXOzJs^E^~1dT-S6h!7yoUZeDZ0E!cka< zvYxovps=Q#KR0gt%xa!Q>^)ER3g$r*>0r=jy>=(1MCR5|IE(S2@HiL@7!1;2ZG0m-oWVJRF?sME z%m?K80BtXjr7bQF&Jjnq@t(K6lW%y{vwZhA39ft?T;XtS(5qqlqqZF{y~T0s(QUT2 zgVbzYy0+dB6h#sBcJ*-(_fy3_R~i-Ak#o`5F@E|Xy1ka)UBOUFiL;i|r%#h43H^S5 z^#3ELAvd||OFxZa%h9z=Ja{!bh|kKp_RF&8b^hKcjQ;s@Dc{Rb__@mZuje>&e38s_ zdC}<(fBoSn=wER}af4>OM()i-!cdo!u0w0H?)O2TZ!n0EWB-6rmvoS-J=B3jdbD?F z89Fyr3`ql`7ih0eWE5_)m^%j&IVhuI zFS|D(1bLn#mEy#S6AXt#hQr~6Ki>pZvpP>5V=ZxgQ4I{~1CvO&xdUQ1gfzQ{U{)vY zmx^=F^1%MaIeR%rG43{@pYUlj-(SWEW5wXO{kd31Wny;#ZlnV&aLg?fRY|smE;sb8(cEU<*&nBbtS^^o%R9=q*}9dp|=yxWu4)p6+GE9rxYErSq3Yi9xlSuB0lAF$j6R#vC3UiJ)xg4N;`< zK4|qPiDI!`Af>|zP>F{ofnJzMoOMAPMp>j(D3W&k9^b?QrXYYOoulc%fCXaP+972U|almpTBnHO27FRbdub@~l8$OxURk}<5;Q-@o zUM8=TNMS8RIzoCdCNC$hDk(Z)nklshU^eB1n7+V*Amv8x@0gY61MH)6;jFt{%A3a>k@103Eq5> zfA|j{V4;19^JlmDvv+Lp=qEnS;UmkV`Bw$8)R8Z zVRBYimua>$B%xC?YJhBki$n75QV+35DUFs3U>C49#^4d&Afyje+_I;_`mn<`){*61 zjvig$t#A8%zUFIQjW-%CBczPTOo7k}Bh0Aye@NnEjCuf~!JnQBj)X<<_TpB%CCCT%g<>h6TmshxWVJEPOOcpeyjlt`9 z)M+;nXvEY*u4{sOQHovpITG}8E?Z%DF<0EwpzilGZn((_|8v>cbTeLBIJCIJU3WG3 zrC0tkL{HG$`8W19iS7Bv4+^ot73)hx))XF@{Ap6 zJrK_`x30swv+lE!`?FSNLMziAa9RgeimI3+qT-kuoX?SQ38e^+lp3i#I`YJ^Kx;u* z^U8u;MRCe3HZ$15BJv#NEZ!J|Dey&xvjyH8ocH8uF|tjof_N2dopTho{Uu8~-;Fx^ zKJI+kB~E|skaO>Aacp%!_eoE)QP54{Lg5k3oI^geg(r*9UV#7c-n0Dt2k+uy@+3zW z1&cfPFc25%rH+=`q7W-H@!!#dsI;G@KsZJ_jq2H2??$E!bsSPvO-PhG6(3xKjP*z_ zab9DrzR`R1TX>XeqoXJoYPbT84U{Yy7E&oiX=pw6*Brq@&X07a$4<<%g0P*r z&6_=;<*vnQdQqxpm)-~W?~3!fUm&g=Nwu7WvP{|etEPD5mBGcB(|mmy`$0^yuWxHE z_RPZfGXU1E#jvx)-tHF6d^%WQ97V$d@FK&zNIZlHBk_C!dCMHvqY ztjqB(1z}49fJa9#G+i=XAasj?X<>$fL#-Zn9C-#^y5gv14T(b;N2~=_#rRGG5w$U1 zV6DJA3tFR{4m#qQ#EXoDb_0_F-l3(y7M5lN)*242Eby-X{0{#1H+&0u+UM}$1-3uG z6(A&IkabZxzuUZB>%9{(DW{}0rk;B;cl=dJ@m~7-e(dBmcR#8KeIRzC_NePc%@8cB ziwc1~Figf1su?9A4Eps@sLpD-|@G5{E`xgaehzHmJJP(2xFdX9j zF!1Lal0+_Jtk^Rvn^p9!zps=UWz6-?RAUSRh?=F8s1F6nNS2HsRpFK~t1D|PFR$|W z=g;E3B`2k+HLX^HvFU*`#%t+9+&{~{xq97oE%@1jMlbA4`C0<`)x3-e9lk;cveY1D z@Se@n9!1gP=*b1zO@&f9kuk)v!rQ z8J>Ld^AxnXaAAXIo<75+OIJwKZSu@e6b@rToM|LYlB7u-X`E}}T}1|nD25uX4O;Zb zGl5MF4KZZ>sNwcoLD>M)%GePlfqp2IMu-@%60BFFni@jlog8&AkJUzfX^&Pm-w-Sq zo%5W&>n?uv*MF5C{GtDziyM#e*~cE`&eIR_^s`UWUTENI!gz>D!xJ&XRQYPyM$cI- zMYvfBNMLFtNiqsJz68cArbGxvvJ5y8Qb8ou2tKJKU7Z6jEY68hAot#niVQ*mO5&-Q z7lFoSt;JYV{=L9^SK1%#Zq8B3VJ@cUIdRhR(1Z7qrGHFo$BEcXP40zsaxb z#h9;qj$NlH(tg)(vz*pKg7cOvFGy4aB?WmgpcQ#m4r%ZyF5klYE|Jdh(qnQ%p60A9 zHW_3o!~PD&Y#~L1JMK)lw+HJ2Uj z(%l?lEW~jXCV*CW5hFy56ba5p zqbifHxl#I(Vr@-mOsxE4L$mGJ$UTl@(saNlKJh54hn6r_(Cc3zijq-0V~VjgX)?b5 z^V>_@Y`-1VjToQPz6cY6Tx(r!Q=?JTugkQKTjurHUrv>`+}GN;l`N$q{bXfTg{s?_ z?o=-%T7(PRvj7*Uks;|cO-}eG_|I|g1CsUiMK;bZ(QIwwBSE1elq!hg@(Wjzyd}L- z3a|>k?&X62{IQ(I;!!sBIab<-*co1Am}{cu-l9puPtt&PsgP;Sw4!8%@mp(Yby|2r zYNKRSYS}mh3Mmqxk9T5J+-)=x@CJmzx*RPVlhtpgd@sG7+pKk?1Ny8sCGGc0jBo3yX@wD+#AhCft78HY=T!?G!`|A_+RR zPQ>6E2-!q=jS#wo7eaRIMcIyyC4%*uP)JbblGw)r3-zyWdIKgN@?aR!+WT(J*qk_=iLxDj9FT~!UGST z#0)b;_GS3w6U56YgP}t=%5k8;72v!eYI&kkH11*-Uj5|>r{W>K;Q+T7V}vJCicEN- ztH`)!afs{m%uxZOe9t+DH*r`^07p3pZE(_dg&>I)g$Y&u<>f`3Gh|tYPBe|AIgw3> z39roE!CUO%C3vIYgB#sABV}1=_hO_G6YzB(G)XM~zkX>YLL;4V=(vMGk!O8YmJP>` zHlWzX6+N8U!rLCE7~+k^S&8t1lgE}B^fR_DKEogz;<2<7iE1eXnxgAzs3tA}YaOPS z(%%}CY$?T3C+2~>Pjc(AWiDUdc!^m;oKrJ>B$q|Og=!itP66b-b%_f;C#&>51#Il#;_Km^FnHj_#;`)8&YWKpg!-Hp0sfqrgQNOdnLT@fcOv|38RWz6H#7+i(k`u5i}PnM z@;kr%M!w_kekY&!)Du`&1bLBKgWq&;4y+S#;AcEbo$|SY_NJ33JsrU77rSfA;Hx53 zX!Ma@PHB@njC0@uc4e){nUc~NJmj!0A631bGbIG$YYi*Ywo8n^xP_(Wfz-!6#SH?E%^kkx99Ii#r!{%s(lP^zVjbN& zk9WyFS*AEphFZ1%*Chai5SYRe=?J7B31TIQKqJYGCuzaf&N)8&xli)d$4>&Vw6qKc zveX4(3MQL~p0A?bSS3!v3#1X~`NqiiW4-JbsP|n6WDYJPN+K);&SosFB&@Dl@Rz_u zxD-ro5XK_~XkjoIyn{$N60J%ifMwXv$g{A`iG?C}4lO-eNxV?x&XZ*sJN*I9LUXl4 zx7(%H+rg95Xf|1BEl?B%S(b5S;~WbM3y3^0TH>}KD^k2W!qW00X|aK`0^=3<2qjhU z(ImoKQ7+!)+{XpubzftL6=OA3gva8rPGF41SWiFQ;rP+J`S?d4=l9?IR=(%I`OcEc zoYHPL1C@6VjNJRH58}_~92`Nq6Yb|EeQxHUs)BgX94j+*Q5Gl-#uOOuumswhD{*ya zO1^d($R!rH#I;LaUAqqWZdNF(Kb=CgA@`i+u%>&{1@r8 zbI87c#1Tmk3X}#FL6Lb>28)TOcOG8yGFV?f%!TcOm6e3D>zX0yq{!UBy(gI23Wk|eYidbC=tAe^5M5DMCzggB0{*0Q>Mnh*Z< zC)w$4A{1mrPG@-qn;DAK5Jl_@oy^1P0-k7Z@L&=*lt@zFwoZzDiLrg)Uf1(HC+^oB zsQ3AQtu3)q$Y#tivsjU{ywYHC+2GAK!YyJ7fk_>RV9n^1z?So{5oxk43p+v$>q%p2%$)t4XlkYg~ApZDH=3&#PP$o(rT=7@$xoS z^yn<**ui-QJ%?8dIJ1NCp_nSloqi-d-T_wCEE3DZO(hL37`VG~M<2S*71nsH^Bg;N zl*d2&I7f~gVPoSGXU<+?{pfLW8{{sMxa?kbt|mt-D|5~R1@h;Vp)x0d+SN?-hj0Ig zhkzjk8CN~Wd4>_NZbtgyX5{o!alZ4+OiakC=vTNPn3eVifzpV@Q(#P9YMlpOYGgZT zEfLa^BpQSxNfMS8SLk-TMBR__-QV>HLOc#!q}_}d^mkZUkPQ3hk?sk+y@V~UK#@Z( zu?6Ir!&(qK;GJUWkmWBwxWae;(@l)Nixc-P@l^34)&>o{2nufADU@tra>&wxG&Ky0 zJ|NLDqScI8U21UbaFe6!39CyDZauk;)|zIsO{>$P)9H{TO_U1QU!HlK6%13u&h~&S zn>%#-8F>MCg>S|5Qo(1waG4+Yp`YROFbjQfewr@IeO9jn0S7oR6loTda(EQ-r3@^ zxxrypAm6n}lM}^$*E(8c9O%eN5B6V-WH+GQVj8~z`Gn{v!MN71o5@P zjOTG+QRv7Zkkr$4_iqZWRa)H5M5X7sRNsysc3S)A%x3^hN)+mZBH2jD# zX1d)zaU65y$`y1RmBM@jtSv^g=b{LU%Ti+*BQ#dU^m0pX3YrZ~qAeyJFvuW^5}b%h zGsiF&6i#EE!WhTEG*Cp?K79NmpXS@Yg3zI!-cE#~<)o5d{bDA&G?@^* zvSvy|y~f}ZpR?v81<7dU)qjbld-b9{Y?^&@T8R%6;N#kq}Q1gm6O zL6+qV`aK4NG%R*fp=1nRqck*II+%F$atc$BXNEXh;Nv#?A$ z=uZ?-r`^Bz^UJIj;=MA#X?>WhE#~-}oD#dzfZErT=J4|;-q;*KBK+@kUoC~He)|uJLg|&>+*QJ$ff6udF zuyZsaYj!@^saMZ6)`Ccf#xp4_Qb42?N!&mRPb_mH=jrygX*D`*Zf?y=ZdCC?2X|M_>aF$lFH&+$ZB3xw1kPz)L#3K@746QH8F>)WqTCw!l98awEZh+Td7k6F zEE{A3ov+{TV~pX{t&1d0N1j6*wNP=V?3Qw<$Rb>h6FEk75VWxBEXXSe?ZA4@T=5(} zCfL}4o`fIyU*IK=2>$(lSm3i~G~41+v>K9?wTNT4G&yx@k)y{wt1F%;cHDFF5t5`y zBW|Jvn0!b&I8Xn=CfoUt%h}=aJ+V+2N0ECl9_cKDbQ>vSkTF6=s0bQ~Coh7?kjXMu zmKN#uQZ8P3mOuJ~*Ymx9|3`3zW_zoPQe!ux&?FQ1_aV67*dRI!=GZsmzE1jK)xo*P zRh3&~KLPp8VikyKHzpxRTk0x^PaAyC%Z}%L|Et+vPuHU6(L?72@c;z~gf}P;No;91 z1d(#!i%|fdF62!vc(wiqS*~Gr%!#l?5g=11khs9)_8wbaN1AVvn>5^G7nkR4(rh+K zVnu2$asI+3jvYI}V~>4~W9zrFxs#H#R_Ldm+!&1YC>0UK8lMdj#KlNs%#TBrSbV#@1fJ{90IC*9v{=YMWm7rmPQuY3WiS)P(R= zWyV~+H(}a5;r`=BTH2L!kSMzv1Lhv6q23KJwm=YLOJ2FPmNXsGY$cpHzJL}(tZ*n1 zfla_!taV7?kWqvcJ)BE0vW>S3IL_e2238JPy$7yrtf6#hYKVrG7u`MN7hgBz{LWUO z0+u%?QVm*-!$>+5sbDzFNH;+Y9ZnZWFEP2qWF1T%mEU!jwUZG zS=z;Vg>@2-B2on|_B6a;*u9LfmOD-y<6ZA~Bd>Yo*K^|7y%^_EBj(SzEx*p}xf*C= zFCO?jt17=w3;gv`5cj?QQQ)54>b#c`wfCV0!)PbN1WRkbEc_tU&bnknh4t2Rx(@mcHhhJMN|w zfb|}&1C$j-L9W&qLlOxZaj2OsE}Wvhcq>V~#LHJ6;3FUYG%L$1yyKnkN2!S0Pv1tK zXF+jQ3yMNvT?>`0qLOu#+F)ThrqS7Ad#g*N3Rafd^rXUC&oE0d&f#5zaUSD?D^Xqq znTx@|pnOEP-(_`mjea`d-~5|j=e6JXYM#mZ{i&FFegw41uTi$UU$N0$->zW4-`_U@9;rUgDflv9sDCU2 zF#o9mgV*k{hrYOb(( z<>L$oIdLQ5&)<8I;V?*53*pI4Mqx5qttKlgOT6|qCwS<=yEu8`c3O?IY;SL)RSSGV zZ>K=V3NOQ4GI+9~V~{!uBd}iKa)tAPMstBnmp8ff)Jgv2Pv6FS-}`>P;$@HU$tTWX zRVnr-1jdzUffS%-CouDZ^g#ppH7P32OLXQ1@`@ridl1Wt=r*ynoXF5+5Ph1?s&;eI zOEDx-nz3qyRHkgn9~Vu%3%;IGOVVLp;_E#uU5*}alf)S~OA<9eBv3>|I>upfLSn7J zxd>>5j7zl>HQqcDZXnF!$`HhNDWl}9Rrj|-eC5KW740_g?ajfL7yWJDAUjZi{R zWGOh0k|2@@;{?u1jIjtj!b=XXtm54eJGjD~x81`hANwml@WFTUE#L7pU1M|{-rM}O zjg5_MH%>NgY};;ZyRmIIwryLDHnwf+-T#O8`<^{#lY8!+XJ(!mAHa<3*qwKw23Ly2 zH9Aj41>!CSawptoGQ)bcwZ?O1M!deuFzLEVh|U?zBWpkz0J^{Us1J`7=ZA}v9$)SV zQPAXh&idDhRc@$UmQIs-!r%@ zH(=_X)PtgNANP2^pMkpyA8B4hF$(`VKdZ6Ce9{0F;qVQF-~9+t!6>O~Gp7{PnCbs? zw;cwMrT2ExPLYWD6!Bdl9-rPV4kIibRfw z3`w|(jN-n#W9MiX`b1R;lD|Np17Q_u_CJ z7?fgcZPj}cntC$&=5bp0bGXuB?UfGaHI^CMcAg-MiW4XLcVcVNO(CFJya5;#2dPwu z-Hx4@a73edSqqxg(qJ@oM-;UU;I!Cb;_p=pG1#pP9wrUkM$Vs1_%06?H+IGk;PJI2 zsq3XHtJz)}p1KpgdfqEEt!k1xm#u{~HdiYKK!-QIy6M4?=gM-3Dl@()n-5U875UDK zy0PA^uMT2+R+O;5r2piFanb$V#roVCPc}~+^wdYznhwLR*O3R6QyQ=m{)-1TGMQ)p z_`%erR6&i)C$4!ZcH;=)r({W^nju9dv9M^GO|Z$6)nXv%9z{&H2@l0`#IZf| zwc9}NmeF}@=YtbnDw)CKT=-ugaX+rG-g50fcS%FoyBUuNp*W0~3)@(9Do~sE3x3O% zM+CC(^~d{)p9j@b_qkP@qer4(MxHaihNtNBCa(NXOWCluUv$ujhcl3>it0akzg@Se zw6ERi7=G`v(NbO#Tp?$>z}~lVC;!DS<4`1CdS`Jmrg@t57C?$DWfe_sau|k>gTa;& z@nB5X+Bc7luQiB`#Ve2r3p`;8&Z8mqPN#8KB(~Q`g`i)<%;J632S=l!fVb#Ba(4Tt zIi`jNuw8=TH@1puGDQ?+3fe?W`mh2FiO8izUda)#9DKu`e6IPD2vBfBUC~Sid#$6- zpxk*`0186TGhgBxnZp_x*-t(_4V`Nnry$TG-v%EaE4kSYsS+uL5}=G?_P1!9A#?2y z2-pB{y&@#jckFP;5eajM*Eon5v_7Z+jW`<|RE!k>X?i`mbdrc7IfY{@;@HVbyVq~e zny%BISFY1zp-$laTkW$r;c+#@OBHpu#j1|1C$5*B)J7d;eRh<6w5;85foJ z2`L!Mb69d&vK>qrkQ`m}Rz$tyr`e&Igq;b{<9z1wz1QDZfTu^1`g`SZT>f`;BiV4) zO;iPrn#k+mPXF@CrsdV#KS$wkk-?op@L1OIy36hmN>;nnNco*nF9BtLQEa+=U_+M*Q)x<@RHs^ z*VY4s6&)DciI~#P*q1>hN=~~gDXO4Zd2?j3^FOt0X&>|*`fzuB<9YLvC_<^G3}^ou z@cVLmIZy2#H`lMzPugZv%-6!pXa>BOk zsbA1B3ms~oGw$U>r|k8OUjS*_wXYgQkwyEs2QWxyF`HBMX%#ESMyIy@DvE)IcB8hA zt!^7#%K7m5oc4R_GJoQtJS6NACmc%3&{eMMp34KEKN8s%G!0}_4A%Xn7gsqT6q04a zS7?w=(m+BM5Hxf559|^rCPYU>T3&r+P1&8mKX*C#NoAggn*0mfjtXVyyVb{7(LYWh zH{rj(Un0w0p_I9T6h)K_tK=`^rBJLSi|9oanV8uz{gW+Y*bTH(g8xCAOk{lI_oB{^ zDVb>An49%GeLWK03RF;SNrdL z3v=r?Z&LPwY%}aT9YqdDLzYDZxV1>#HOP7P7?F^Zwg3TvZOd+oEq&n%A7?jc46I+s zsqix0!31>kuXED5lnFNFy4_YktaUslo*j z#Q<oK-8AYNu(UD~m8^AS+4)G<2M3wHGC6w0c$)IvHTxwYc+fZb|z)cvCzmwq@p1hsH&Q~mg0<3aj5t*;!$_9 z?Pa%4<+w=_bsUrzy1OeiJ>xx}%Qd(2L@)BpqGKOF#2HWXRVLZC$k38Q^R-e_I6JiniZ(0{#Lpg*h)Hb+3BlGD z4+n+&>g`|5+VaOXaGfSM4ave$7WadcX&c6Zqruuidv7hW#oRy)glG;c_9L?#bK6r~ z_4%CUmVx6JW%D3of{fBK1Qkcv0@S$WxY6Lo584E|O`^qkQ*oo`UpwLtxU!8Y?PnMSLHj5udJ zv@@Ah)>~VYF{E=qK`PkH%r*K4o~V)|1m$Uqv>D-JIjhl&+1?1U z>=JnF4iqXEkdvj6n`6Qof+MiQ__4|7llp8^L1e|_hcp+oCVrRw;(KD!hy_%?LowL_ zsk5UiRY@b6+II$m1lrDNC=vuI$=muzg63q6Bl!}-0I6@npfgYN>U$Z+BZxUTlc?3(F0I*ASFy*-NoVeYP2TcpOLYVf{?le%+1SsXsdPM; z!=1a_9;OL>zzl4PWZE=)`eX>f0@=qOCeL_hz{k?wuEx78F;gBKT9N6swN1b?Ztk2d zfi1$*n3>3V)cA@f&wa=YH+us2fbexe+rcEGh(uH=_qN*Dv;_A#wFCCAem{z!UYt;c z?}iNhG=-{yLAyR?QB8e+MzQSn*gz}k2*PZx@tej*9Mq5VZpM7S3dkfx2UBxC0J&e0 z$k$z4AA#N%ZQ43rj}T9nTNIKQE)Qbw)l+Ts7Y!%!BZ28yiE1%3sv6iF?Z&M)-g1`4 z8I*^%@Uhb4=qn0$>(>oT=Px10g;Tra2=DaGO)m^Fi1QeBJ|DE}2)i z_C7y;*!Fbyjo+db+$33CMBY4Zrge4k4Hw|ku!AIv=OfBlN`L=wqzqbL$U$c8lvgg9 z->K05!0ma_?itv69uG?b;`6}W#b)?2P9}4?Zo-Z0^l;LGQqz?@HoG%lRmY=Y?+;svlaW>-KT!{f{i@L4(Vgi`e0ca4 z`sM{ga_syna~BALy4Pk{IGQWS2+{8JuXgRTU1|<~Y~&q)H22qxT6=%OInjdKkqlOa zeF?!xJu*C`>Ss`bU>IEQ;n4z)Oxu{`Q+%6@XcEbJd0%YPbcfVZl~5$3{;|K?xzwW~ z;=sAwE!88)olAao#KDA-2~;FY@-NLWs+7qQAU~j+LjrUxZNUvhd7SWYmiMM%QHBJCgeOe0juo=4H&NP;zOk8 zkzZqfkeLr)bs9I~ak9Yh{ZozHH(z)?I(qlKcBC;w|r2 z4CeZsGuo;4&wX)(96YEA3thLnd``QdrW~>j=j&nEtVEUJs{~O+#eKc%%d0h|6w|fv zHdqGxJ-M=q(Hc5d5+&nmzEu(>$O6T_+gFx1H~oGoVcnP&--EMzFS^R^3tH$W zju)?<>zU^}M(^NMyG>KxGA7KFRA`axq^d5s?7=~c5IVTc2VJYqqm5V;3gj_xn*WDQ z{-?HLUq*Aaa2;asgi_u$LEA6VVEA)9EF)erm;v#thUyJ|sAy`bfTyd?ZT-(-fxRQYOQP$Q8UB$WX>}Z|(AI6c&)=AHZLm~S zwb4Qp@XH(Cd2UWwwr&5I-&|Ze72v(l1_r0NQ5@AZ}KrYT90X=o!(is%eKvDxF_EID^5sk^nL3PogE&s7i(?mV6(h3JS zp$e&qaOb<`7@ISJ?NgWuG3+qvfu;6_6l9ijGSKdgw_#@9tMtajW@VlSgX!h47JE-M;=v>Lp->%yCUn~gMaL8iMn>GGwmVqJS{B_3hSmvIi3l}C)b)7x-oH(y!~V}rLt zW}NVq%R7Zt7t%ZNBP7jcZ`H6)Ze7-2>PyZxW|MtG-UMq+we4@_%3S_*S)qgK} zUrEIn$4!Cu0WnswRzWsZ)GY>yr~*?BFG#SKNPX`GI)|USuSlEQV`4xWxcq_?JPpB= zAugEX|p#1_ys=I%bM?w;7$j4U-{fi{39V#Kw@sE6Zp!K8gzp}15N8U2* z*b=})*!rT0^p8qrU`4>{njLQRP!n^ABD0Ml2^Pl%NKnyzb!NwXlIUya>UPQRbfnee z?2KG7L<+6=?M+1MbCG^OnpriGA)Q>2j%}7(uNR;1QiTv6vw7I?yEMfN{CNFu-W--} z_t@R~($a~5_G%oAdDqbu1){UnlI;bT=sIPcWW{8KRIXS7*Z2dBDbQiXG2G=v*Z9E! zd(PW2-O(f(4ti;jg{SC1J5e_yhAVs5(!!%DopC#LZVNO zr?yO?9czvZPApq|dxW%@jhR*DL(q5DVw?$J#qpf#zw*M}B!HFf=b{MRYx#BtJK zf-4IE|HIHh>d9v{Ty-oFkZu_1D(KGs^d{T!Ef{uy3$L!M8SoVlY(A`vM=J-F|$j3V1&Ohv42+O}iT7KmSrO{?}n#d%U2TVbn|bl{6#P_wYRn-MoH1mqcL9hvF73v%ktbJ2&E#WdzO<=!s6P^wMKdjuX-{)M<_SdJMz|3I( zTyV)UuFsDHa?tah9za@#fx3j)CV(tIv$*qN)zq`@x82)Mx`7Jw7wl$FG^_3?VqUX7 zXe*`T|FR{J{bB6;wGHR6Md9r0ake2Wckv%acYg==74tZ;{Ni+s`Egn2xa9g+%~z?t zH_9^Ptiy_Z?{PD91`gBA-R^m9%iT-N{dD>%;0npZkGIEahemE^M)nQUoOv7cM=ECk zDt#nWRJ&3eL35P#B(yoam3wunT@!0v;WNgyuf)L@YX`%j+|!AFz1_nvra@z!nYvg} z%hSuJ>pv%0lG>dnZ!)G>gr#ByN%wl#FbK(@#uS#Vr{6aIShl+10~0${4dxI{cio!- zxZ#3rt7e68(g2FQxFz2hbaT%BR|zo&3@ut(i1<0@xhM$>%0yVSK42Q0Af{eLI+F0z^!{=JOa;)5v>DhmuM3F;K{CrN>UKg0^ca}7eP3I3*~VMabR z3SX%ei=H}IxP(ijYPf{9@aB7Lb!?3}>AS<8^0(Oah*A0TxVg4E9{6~_Z+WNq-OmWf zGq6e1!Gbyi#>wP;MEw6PU}&flH$4R(muSC7=lVnty;;fEaW6=){*nk(f`++M6)Egj z7|Aan!zxQsDKgtxXhP(bgGIY4QPM8g2t|}6RSvdCQ^&Q|G_(pu`#cJEqVE3%7fgIh zmB566HZEPk@cjTH1vf~rU7Y$%H^{yBpk?rVtf6PJNuB|mSMZK7eh1N`X+-+SEvGG6Jz50Q)<2L(t4iqL@w{)rG|Z1Mm`=me?%|oatQhFx-nJ{ zsW>=BC5?S@Qgbn@Cjt<8<3FX~n3H!9i_vgIA>6`PL<|!5V7r7l(axTW&$Ul)u4%I& zsu0X=ThTcOm~aawp;uPKm0jB>Dj(l}55QM;AFl}m)SVLBr`6||76Yn(iQ@)87JkQi z#I&HcK{_Zrx&AeljzjpF*+GZlVj5>5vyUcK@=JU$`=^JE`}?@@yN5Hn8QgBGxb9J@ zM1rYL@m`iv5-WE}oH-3|vZ82ZO-TjT0y7#7E{mXLACp4Zt3MZ)Hi5~QDElu zR&_jnAj`=}b@v=+-a~+Kx+FOJ?yW2O4=Zu<;LeetX-rh)#@Irt2$|jW}8wUrwti2s@+@fRxLkE2Bd}CrEU3z&jbP&!SJv&c9@108N)MzF zee76y&$tOp-%3G`0F3eLLsnl6i(H`2f{y$;Udl4EjSs?zQ__Zn*}G4ao()SA8?Jwl z0E8C4H9Yvv$x_kDVH3VCX@%q+8<}x4lmN|6Ts?W0S4GQ^z(RqaM9&koJl~6+-ur7L z?@fx;`Gs9wSC?dpDLx@#J)4Fp%g^r!j)07`K)8L)aS^ZTvU!WB1iRF^i|F;4_rJ>1 zE8<~s8y)sUkLQzlP-dy`2h+1i<~Y%L<+i; zT=48?+lCcq{ojZ*ytF?;kOdzK7+Kd`b7Fbs*03^o@dsW^fdJeh{NeHy1qBXW6N2ZF zJmDvsf)VTQ;%nhz^t%%EjT_$Ri#xBJImR|Gu^vY}-I+}f6i7&J*a)8M9WC-1#pYGv zduccB?I_m7Tzd9J36m26nD8aMOCMKkgikGJd(qf;obbBAnC^YQ&R{@%Gm%(A5HVj4 zr#pBA8LL;$@mNJ}ANPMcLZ7mPxg(3j{?if_EJIY)HOMm4ECa&P+^{FJ+N8BJf^e(I zg2HDIh}|e3g%wpHkB45=1YI2bCMA@p)xwiFAQ z_?q(jxO48n$%KZKdioqU*cIO*OT#&| zv0Ou5wXl_s`9a#kN5CsAQIEWmpk6JrRIC2 zq?a@Ii-0Y;5DR0z`+gI=seZ6hEGf-(|3lgg9~2&P7UH6ZLsdi?&pZv=?AolUxA~VE zazo|reMw*@_jBy(n)Pc|{JBfu**M4J5GQ1S#6u74?-*vw{o`zdD;0P|xMxV`fUxOK z_E>Ru-!~6j_QS#6lRUIx$i>6lzlO*521oFL&-bG&lTXjX5tqJ#3q7i5iWSY_EqjoC zE4PkW-_h2Y2=AGcl!9T{<>C^1KU~oDzi?tw=|Q2CKj{USKg^R!M56)x8MDjZvEaC| zHyI7^Ok$ zj!&#uv1xiExaESFvDn7{DgBQr&w}}};FJPg%-$ntxGgxAicoi0jm${(_WIHX9H}fO zDU)Inb(_!>E#B(;ftjft>fA1zg|grxTaxIx$+_7lSB|}BnZ%Z zMUXE7(nL%(cRt=RvfbD)Y>Nw=0sbLHA*(8I1l7Y3aoFBo6T*a}!BMbL3m_|KDWoJa zrK$Pfpn6MI^>g{p2||;2?-57C2H@&5B`xX!DDbN}G%9#`hI1j8TiFau+oV$n(8OVr zA&t*a&dk&0N;bhm%6Pw5<_LHG+QpnKYXbS+ToJ#Lc>=jH_f&e6Q{{>=Z;sV+`2h?t4+Okda&Ss}V;)XQ)+HjuxhT6ihy9c^QYEbVZ z%CKb1(M%+a4K|-AHHXdI^ovTorr%6I2pw$%RdMLH!ckr+0#GG~l-wpK7&nNe5e}SV zfpXXcm2HSH4RaIo@ly zE?kJZ!BAL+mi|q+bOfXkfr$}4?y(J6-xEcoVgrqtK!!HTm3$@Zl6ak#A_^86+iK#= z)ZTQab$ZX_ymB;2@WFbdmb3rx-wo24TI@G*-E3TvXU#=2oa?H0`z>SNp7i#XeE0OP z1wLYXdd&o$5Gzp;Lg@%|lM>`o6jEN&gI^kvp2*ub-Qf5=ScwoDoz4Te$@*mp;}02s z$xhB=_YhPD-T8hdz15S3MZuwzPjwVcT_bcqal_r=Mkd8jJ5pDmXOqV02@4J!V-!bMrNW6=_~*3mee8>;AhJw01*cZuY2(>t=U^TIRLyxomt zbbPr5FTtiNO4arB$a7p@ODF;WZCDg=d0~5LY!`8{@VJUbx;)+2!Hn0+0w1U$6F-_= z??CA{JP)6~JfN9yJnul4H$kns|B5EJaHpS4`mL9_LVex{2$R%o`fOdrDENjHAtEy5 zHycQ2Y-aEeOAaR(R__f$J&0Z%+MIJR?D+6+R~PolId| zB_ensf2BeT@K_OaARgAOu^0FARF^|~0L)40BjjH)UhH8s$&Gk26Ym)jLD z_$p5a#=L-Mo&OlS@7eX-cOcc&)ZA~!sK5b7M<=cwydU@TIz7JGH}2=~+Sh6ha&bqd zzff+scaPf+H}ocR-^YmV?7cF9F^Y;Whw?#o_0zfg#~#jbPP?@YCyhl(-EY%o_G7a~ zHdRH`FrPH0e^|(+L_gC)`dj0#?2nYB?2TfE2mAl~89~~ZCF!c~^)>TbYff@dOa$yUnlekABY~3Kr*QYp&JVr_xc5IKWaQsUZwOqI|HHS1hZqF&fEl*O}wo= zlK4eBo$m4QSU>I0Kn(fRyL?w3$c#PjEc#!sOJIL7F((EzG&K0TWiI}4=dd2ZE$sfY zcI76>@p;tL^E`n}QLFKML$!K#dvW-Db)YgjIHmI4wexXyW+KT=l0hm456uw{qReHb zj>6eX3vGF6N&9;N17k_$v|aS-+(`k{0YF8O8*i+=gHK7c#NV(VwxPCEWH_`T6ISLc zrY`odHtZQ$R_aRpH`+auwe!ZUjWJcEYN?E@$2H&)Wu|p>>?~nPf2;T>q6b%AWr<#^ z0pBFJdrj|v+#!}WRYxP-Y3ePPIxqE z99WrnO#P!|^e#h7gZtxWlaop_<(X?OOmSk_m2=^>ZJ3f#rMjo*^Wfg2i|xQKu(>j5 zj{mYsNa34{rkBRBr2fC?mg700gmP>PHdRg1WD!fEbsZI`Y?CBxZi`7PPTSgbqFcVJ zPut=|Fri_DGa=W_RpLzzM@C>YEp|^b6!) za(TxTEMHQ`@ype}eKl(|KxR`53!8%F{Z*F zb^&$oBuUQ?wv6-V8=TBthBkt%WWO#dV`{3>+s4< zT1?V&>oxZdb7CLZflC}4eSjP`DEQ)CQ-n-O+z)%H}j*NE(^l<0Hw4jrQ10 zt#mxA9RCK?qO&)!^+i%noDC@drwmI^sJ+LGaVVv21vQT1hX6T`JIHj7s+dQx(f!uI= zkj!Gve%_Hzkm7&eA==&@QWZ#Q9EQ)5lN_{trx+inmpMIaAI4ehZc|kZ9XY8JsUo0_ z`NxeU*xU{OL;^?p%>OLF+2B9E07%SQ&A8?k)KnjI;58#T-4emLcB3Mfdf6$rK92o% z>d^PpS?Z*=l=8f>^#&o|d4NOM^GNLxSA9z$)pS%To=c)Y%lgD=kMO@L&(;!sif}kKnnM zn_KCM-br({nG_32l65q?V44IeX~0_IZc%E^(OeP5`2tZ7d4O+^e2S@!;MV5mW2Qvm ztZGnpAQUcSY7#C3hNSwx6P(SL#}W-3YGm|9V`l{M=5{q(o9x)^@>86UB?Z>Znq;e( z^hozR83~M^)Vv$gQg)<=vhQagzPX_PmRA>GxV%1`0Xqml^(m#mAoDz=3h%z_5u+H4 zTMe&}-YzfB=Vv?LD8FZcFGk*FK$=!SWL>knlQ@rqYfK(6FD*AXFLy*(pm`?;T9IgM zG7C$fD_)3UCYV3q7#4N^mLz*~<5PvD z;K40~X;eHpqLcFS!?42j;t*(jkjR#g=5+PnFsw_fzt`2<-eyO0BN&Rlz=9H=lPskf ztAMpwy|FL6{#i=&{)v2d_BBJbyfKXvJ-kh>nmm6}X_T$*c;q3c2ypJu1tT%VB(UvZ zCX1E5OAncb0?bW-)26|%-G*&ydo>p?@BaVFW`eQw42+Ef|M#vPO%rf%aDb^T11G0M zI`!(>`g$Q%Rq&J6ZXpH`wYK345<(H(6kAluL8}$)#tQb1Mhj_aKxvLG`jN%e;G6pgt&z=N}tEvCz*tqa7ic zl}e;#{RW6utu}G3JYU1u=@hF*q1qnKGS{Gp zHU&#T&CbyyFJh%qrzE-b1xHGI@2m*y#qvMUY(B(X6>y-6>g{b3U-DcjwERn-m=`ub z8UmJJ+$p~t!K>9$U3X@Rdgqj-a)H}yesG~|H@t*uYom-A7-t9nF>_*dffsWn&~o}s(W!~SLLzy;~7)ce#9fn_5p$cZhNEy@QT)p|qti%dX@$m50yL~djd3E4Z;QsNj1ZKL7U0jl< zrexLB)mPTm$YPAe=3$M_!6|{pZjGWTNP?D@d&kHj=LF|YAHk_7&Y)!?`QPk}S$dei z>5l-nPA8#T5H@4k3+cH43M%?jzO5%?qHGzkb#IDoCOw6{$->+Lt&GhfA;G2HB>U&a zB-WK&iEz(+(b`FzsYTrK$i1hoC!au}1X@k0Wp~fo1h(^AT6=z$oQD3{-Rabs_knb- zsd2%Kv*WMCDS)^G&vBg69MOHelH=at*?ynoZ2L;^s@7EmLJ=LIPvuDL*Wgn<%Q?$= zOU<-nzC7~DT1QT!Itum`NxR5!i#@R zVBWy|prEdJo<>v?!b(R{6)!G z9<|bavQ6=xHTpG<1*@51|>t1G6Dx+l|<fT zDLBz$^oY>+UOwgR1|A;0)6+k};k}ECs^GS+Fw!gLq+*=;lb{dbt+Ayh5?R(cwgK!3 z=Zr*f#INrR)_dQ7Rt#VmqwNJDVpzNHSL5_kWTxn|(b`&@YJPcS14C6V!~F5-NkdQT zkP561v^8|`Q0eJ3YGMja&bP}kESPOfSM52Ktj-h9c#wuS1eBN0M%R|~`BAX?Iaaa9 z%YnBL=qJFlHodEj_~vr~y}^FE9uR6Wf8yOIV?5zB?VyPyl}K|>-}jvH*oDlsnTX}M z2rMS{TV46{a%n~)2u&c6GT%Hq9gYAG|%YLQ75 zUPt+R!~-xP&=`g8)>q1F^_CeSNtO6RN2lZ@s-*uqjrLaFASDaRTJptqmpi3|;B`9g zarAuD2uyFiW`03Bd>6fe(sWkJnZsFQ9TJ>#D31Cn{NWGmQ$4+Z1CAUv@#RgrOts#9 zc*HtSmL>G^#Jbnc+s{wD5D7xn3a_%{Y2KmpQ?O-qQ*jqt4}vhJz@i+~V`$$BDB< z!Uij3b)!*m&-1WyLrR5esFYzW9JJ!YR%@`xyqyH}sk1~R!xLiIro0CL87cYK=jdg| zmV3Vj3pHa;$i+*MHso?|3MnUENmlgG#KF(_mYJzXbl=~Zx!MVHw!XA>(Qg@zwbZx1 z(r?;?Mq_sgfq|$N841NWbaZ;C-0ArCCvy~+n_UxNg4IRW3Cx-Pk4~GOMnWd!HSqDt z2ICU&OO`km#3p-!^m=}Eo>r_JQkyf>qiL8V=_ZpviruEW8i)3g32kD0`8 z0sCrkoB7@-4?Xv4`h)bEAXd#6rL&_$x@C<*%IFbE42Jx}H>8h9u?~%dLP|0TAYte~ zhb)jy1{!xua|-TM%%lO7owKAzfjJ79yB|OGv<_Hv-^ey^V%%=POMslFFH!chPJ8WYGi- zaDnv`mc1L2wY4>BhUHb)N_u?*Kfm0-Kyc8cA@ITTN7at~=uo8ee_-%|gp3Tnb}qcf zv7WQmTI}Y}9^9|DziFn_H8&4eX}4%-Ym-Gpl@Q_%fIA2O_w3nv-nD+(!|u=`iBo_? zO|k*v;3S0gHmA^wj?DWvALJvz(D%yaoVhKNY<~H+G1$Armt53ugqbJ&LLz3Yjn+{W zP#c8OUHpNzGs09BVpNi2yFqdZvsX_i51wFHRZoA{A}0irlxQe!r6Z+~ObDZwK6ajC zdU;%*YC6DpL~i!@Xv!?K2tr}fIE|Mtz5sXv@xgF>PRTESbiy6)bdGn#CuGkmqJI0N zWNZAb`$;!y*ej=eAWC-Lxf$_&cH3Y|r#Gz}gMrJeHURT3RjC;v3yQnWsS>G(^tG!9 zQ|r|E{cPdv;rQtd+#d+dJL?>IM-m1Pc2kFIsk7QvcW#mUC;s? zSD>}P>Tbf2%zxe|`ry~Z^qaRI=f!sfH1MB+0E@Y(pa=KEAkjpCb22az$PKL~LMfl#d^k8cPab&h z>)YGMH#*$vz!@0r5hwv*y{C|=urBrZsPCHb%o&Vt_Kb<%((LN{_qfXQxa<<`A}-Tg zoIqO^m31#-d(RnYr9_`~J)g5cwflCQZ15R~J~qkFW6ax<$8ko7>I(AZ%+I8mlM_lZ z-(?dT!7VGo0#Jv?uz{!vxsdT#B<5P3KNWtp+opU1Lyth=Kb{UuGwbSk-(aMug+vXLJw87EcvO4a%e~9%wDS`WMeh8% zs6+&{);b0+F7n6F?44kfd^o_(x~I7dd^>xW%wxgGzWkG4ITjfK43|s*7!!DCDuLLi zEefNKpF*RMMx1%T!j(fB?4U-x{Z*eZco_z>k9@}AI}#NccNdb{+nBfBqD(QQLsq`Z z;Lc{49taW5M_dz2rXrwonnp%cFgQMD9f$xIISl+Jk!NuA?Vi& zBw`+Oi&Gqe?zw_)^Lisx%px@v0Z^P1o&O^;p|(K*m8?^r;PKF43RsnWha#{ygOD1< zQCGvB0l~gI(hNBBt@Dc6Xp6@K30216<^prMXf{$HQ!Nmr0UTKTZ1bj_Nnn^~w{%Y<>P-rgZyjX^N+gb@VBqKOFO z7?>9R=<<0TApAP;`{eYvNR}-|k5-PEP9UEVr#G`o6AqqVOlJjHX=-qa+a29hi~Mo1 z_}=(|0h+$ChN-d3Almw)cKnd6YH7CSFK8o6SN9YL+h@z6_57BiM~&4n2q}65J93~g zT(}Be%A}6SA2MnJZ93C+j>(FjWbO3@LIXtmPETpIy*ealB6gyCU8o85yN^ z+KhUd**QaS!Mj9f5fVj@Xpeb?egZpog!gIP$@|&|+2ekeZXLW9W9v31u(d4EGv+Kr zK9^W$Ln7xU;CxrC>39S7_PM@ODK+8hH9B=G5Eyri8e1oM{Ab!{se@01pS^&yM)u@D zIqe~3|BKa*Yh3E(_lbFO*;-##Z2*jL0-SSJuwWNbjRk)9qY;(}K^ncWzzE9s!X@rUtoec(TwlGX7{> zPF`W|3zM2A5XBc&Rni`S7I@|dkDIH;-U*ZI7<<6S4)xyqqajfxsltcApx=MA<+`9{ zQ%w5|%p;T(vEQkS=d-}PkmhUL%5P%wp#On}hX2~$rE<_=SmbO_ z1QC0{_5kcq&>Pmr@iXN1W3wR+gZh1QlJ_k|fkbsfBY|8fNiS#P!gG9SqNa1SLI0D~ z?}ExNf#>OCSV0v-GbMP-E*y;u{iFjOu7*#JEURYmj-yQ+I<@4(gQUSRr+j%kSll5j zq}fS`WT;Fn|Ef~kAn-pMrDU_0w7nma4!D`UP4xcr8Z=ZsKDc)8jjGMKZQ`xP(&_vlD94B$_MO&BKnz!a+!jf*hogFxw7i1Y;8fCZdgqKikbHt=ydEJ=z9(DKg27`yUcA-gjgZ7ye+dpBvmCDJ_t5J$|Nhjnae>a5m4Uf#k)mlYxcB~?{zdpvIo@E}0+8IN4& z;6U&Ptfdyml&5*ZHbiL6gyU3Kt-jTqW&owMbr6m?BfYhz5gC2{S=THXySb${vD>){ zU?X_j=G_Nw&zeuJZG9sBPs9W3v>w;n{(habNTg)qx_DX1-{7BSDC9amk1aaMmjqhk zj?t3xrU|)jAPyry8RW8D%Ue%MrlvF%0dgrU*!Msn_RY!6JM5M3Q-`LW-mZb)>ZgvP zOn3pnM~FlZXej9rlU>EgF9fM>?`aL&!g$V;Q6e+QocS;kTNj4>!u=VGY8 zhgt=#1as#xUZZ359;nq?1WYFT6jP}YgE4}RD-f0AEF0y;u9)kS?=*2S&90gf zj_41?D{&ZKu;louv-@%N<(u<%I{{CcLFrzc9`E5FstE;zpAHZ?iu7imInp%4} zKRzf@VSwm4|MH%)-z#+Ilb0{bj^+6HOk%bQHonlw-%`Gh0{*26(QXUS1Zg<=bNmyu z9`hnOB>O^l2;;g!@gdKphws5`fu&O;Q1ZVyz`IxoKW?F*-C=I>=S(fFW9P3Oll zcGoFO>@fZEYsEmopbCE8b!d1P%2czyvoi{m0sfhU)&vQ~G^zhb(>F#%`u~4_w@sUE z+cr0AbCYe`+}vi@R+DYF+1|X>W=z~{*M0r&bN)}}!JK(eGuH?27g>!CE-w?Wynp{s z+;LLZ8{d+?X-uC9x8H+_DlxBgkl?j2uw8A{`zOuej#PJ)ZeJJMRw5ufAxm98i6+`W zeTQwxMe=9HpHeD0Q{aL7<#I#a^SE#IRFU^+gM#XqGW-Q$23A`K-xSf!_2HCYDN3MJ zQ-~3w4)5}BzJ)f5EH#xm zuTPY=n@0_x5!+QgmQ-OAUd$4gLQ8 z*;);Qzn51VHI{yl{|e=QNy?MSY6~aG{wSYe(~AAC5c4dA?$JFKY<3nV!V6t-C@Gxc zTr9~0Qwnkp%>#8GJ~$srh10360=HOqPY=&|Gb*dQJ69By)b+VziW|suS`EF^*aNM) z(a8`ac5q=|zd#4U1bqG+!rqAV8Hdb72!bD#g+HA*Xp%BTvtrJ=*m98TC9201h<=#U z#mktn%Vl#66+AJqU+Y4V3xNGnPFOI^Z)`}wUT>tY+i+cP z_iH&hIrW{LlV^Iu)6>&`f$?N~VYJw0;_Aw!^An8?99n9)W4K&vfU+>)hpu#=GO26t zHk=)xwMZ*Ub8E7zzrI`E6*!%^;}IvVtE8JGA`d8J8&)Aj0bb&PQ*_U_Aj<*cQf#A%5gHa;ubRckTJ+07#IG}>aOuWWH}QLm`Z2F z4i!4P1_JjTq3FU{fD!3tjfZ4Oamdh1pmji3lfl~-1gtm?45oudZX<5 z=vRJPYU>#eg+tZdkola%<9u8=a(Gis^+V9TGaz}$*j-wO?%ICf>UJ*;v-d`Y{ znm#G2IA13|X_-)1a56OTS3PL7)XKFwgFuV*x$;}^WV4f;^Q|~_H_ccALb87C z{{H@8&glueBKodY{N!cZx=2(~j%?y23#qvM<>Y7Gz>Akchi&+s{2WUyyZ4|u?J+Rk zZmYQ0!y#7I_V4bj!z3!b95A>&C7cwvg?qoh@uz zUT;I4Q=8owR;v~_p2ZC{pI{z%yn-3QnA_|G509rSX79VKy^~tKuZq!WCz!v?Dr~EM zm+p*Fi!juECB=P}Vo5pYeSEO^b>(Zp80#g+>3Y^eP^&`+_F06D+k>(jLYZo1DRejRDaOY%XsFfPCb_nB4YVR(Hr2(Mcm`x+V38NJTU*P>U?p3jh4kwY9_ zzJc?p2qC(X;tGOn)^V58NGNji)L8N>+$2)SOJp;&A3koFAYsLRq-G4sCNZo4Qi zXke5yV4_Gzuw;iW+c{V(4;7AX?|{T5$ygA=qq8X zwW305EU_^-4{*V+`)mKJ;R=D4Bi?L4Ma444^DwS3N^Kk`!w+ctU>m8|X7YZ0WcNB> zCy&K=2u6nehKnK-voJ&q7iT-QFZ#Isx#x08!f|7R{L+Mj-!)N!h!aebTsr4-*K%Ns zGs-SU(4cS5Y}Hk$VKLCcm#y+49ctf&}oS^b9%$LY(R|YwLfNY7|7bCLD3kikStg#Apmr=UsqGMYP`h z-<}BV!A`o_(qG&H9_!MUS$;_y8K~;nvD~c zg(Pw*ePuv`$sMz$#6Kp(P7(AiV8_!lwU20kF*H#f`RRl%;4PsYT#jH5!ie|OpV!Jw zlAP8pYDc+g%wIU;`1x(@x)DV+>6@iG(z$^4wB>qxP{LqF8Gsu`7w(=Iz0hpE?0gYJ zYvJ?DDkUs4Xv2rrDACh+c_UX%tWdLZF=4df`rOPzv0}Yk#Iy#ep78jV; zHlX7+UcVUiqIXTd@j|C$F>Qb83VIcNWBt%DOYCv`dLx|ijj~SV+Q%bAULx7SzU%~# zaMZng!8gn0y))fjhvSqAtBUje67`*1?$nJ(a2KK+G_BS9j$Qa`vI&EBJbPdUR$h1WpY>x5@q1kxj?RAP`2WS@j{i4t6zzgeE?M z1s&t4D9!*S5=Fhp2z;!IN^I)ph_sGQu$US{WLv3AfeNWxAPo^3ec%>-k=*E+gKC3WhL%b)lU@21sVLo8 z3to@B+B274TM|Zq7f%&ELPR^RR(^C!mB0+zW>w~2$nhz)8uSqH&1pen#FHid{mMi3DEbsPh!vCD}Nu~nf%PVdVNd{<(zVUVScX*x^o)KaO}}a z6SoV$fNK$7e?kE((o)$(OQF%C>wsK&z!)^-CPYhVPY8B9_h-O$fCgBjq!IAPNz87( z-Je`iIl$8^8{LXTWz2T=Tm&t!`jyqc{4P*NtPiSS#IW);evo=w8!WCy36yEr`R_Dn zo8QhSegIBV;;`l}K6Ipj`$IX(+_aDcYn+B(bJ#OJFfi3UAW{}nH!X5NHBr}-9!0H zu*y1eQV)}?y5#rF-%W(0Awgrx{ON5h?BxFz@rG?e8(0uq`5XPj)s|o;e4ruiZ(*qz z{!)h4t!)yP3ov?XW(N!OZ##)hda8TT#S8oPAKw8ugUE)aY&2F{@AtH2PR<#oZ}cpy zc8%tG=gW5;oE?||$E}XhvXq3?lS!Ye6Ssii`t{zRJOCFf9OLF9?YY8PI{)nK>pKCE zAwVKA5hFq{&p$P zB1qCQv00rT)UsStT_>{4XPg)v1w#8Fc&FYs9vK-Kzzku|0i<|uzlZ?D-IX^0=>fk~ zRt{(mA+x&We_YIp{lR;!;Sf8533BiSy03^T7UxksdYCNw&N!a(h%9=0blH0#8nn4i zJUh#cI^*(oTp@JLH}FsZ3&y{P7kD$dqOicSgw*M8jM2%fD7QlT9sT>nUfhoK#%dEh zL(e(q$IjwGiX>a^movw?hKf>xtemU@NIeuv75tAyXXruiU?)zaZ^u;hnw?xXrM^9` znRcI*SS-)GI8s-L;=HDwX3s`^UFb@57Z1`P(eeQSoI(#%?Ia^lp!HN;GU4UeC0+G2 zgv+GB@7O?>>)(|h@UJA=aoC0%c$uMB>lLzu&9$>0UqhDC2IuyN3+--Nc$W2o>Zf+D zJ{4UtTi)=44RO^+325X-VVJb7a5sSg*PY%~`DV~nyF&6UT+69RnM z-J$8aYj?5i1`Q=P8hPWh9ThDSEe?^>xID~1Xq9uDr}8&8Hah6b z|A*kb1(Mcy=&?s8Z7C6$AvLZ1UeSyY8L(}hxGE;U&5@Bgf}=7KFF`2#E7{iQa@_9N zs37Pf4h{^`rj0^eJ~~F#6O+|p2y>3mR?RH@XW!SCa71GOg^%`xUT~N~1=fWovrCVL z%z6rdd8k?|PzXAf1omy;x_L)_Au4&Z#10_ZW(dMraQ%=wNjX>~gZt4M!Iqq(l<>42 zN;-c`bH1lmu7Epx*TAo3NDQhl^edO|<*4;L^>{x8K}rvMd&=KH2N#Nl_`I68Ei%!! zS--?kdp%Yb)_eBZN$zZ6C!mA-qmc|0#caZADF4L{=$=uXR*I*=fI#{x2E84Lc*r)p zvB&0r%IFx1NloK0Cx+w__8H2yNY$45Pv68c#$TZsv2AFnqJcRLP%t?=I|CMN+qzt<*V2LPRusa<>{nJK1E-T)O z7r>d-l*KASgz`U~7%T4KC4awH~dERB)`;rsHhh%aegB8J1JL(ph@DAC) z$E|x}j*P`XTMxVZ&3|_ES;`-u`0|FPYuz0&*DjH_dOq;dYw9=#G{IhM1VYCPa(-R@Pp%Sv4Hb<1kzP14FaTlQk}w|z zGQ2*>E^1BqbMe3%LJP=HAXmQ(_LNb;DLb|;wnk=d(H9Rd+IDMs?Y0|9I0VBj=(R~( zrfYV{I%Zh&G3aX7SEHnuGEgQ8A!NhP$@7`dSWG_5r z1np8D#9N4F=D=71iXIJ52s-!>6ZTWjAv!Hk=#C-%X&zIXXzA$p>kKGo3E{e0Jo zA93K&nkqPWQH0(BK|EZ}C!z9=o`5&h~$|FiGP0ss%ffFe_j0XP3~_ zWW)H6Uqqys_mneR@v<9bp($t1Ib+5Cm?vaG-Em`6EIXMkiWf(w?R%AG4SmVp?QL_o zMq69k)9r#XP>*+Zc6RRzh)3)l99n4q9&o`lr+G;jIPw6h%(uY2e&arlnZ6XJ8>Fp= zHEwEn3S8{~mtd}z4n0BA@`ueAkxC}`;$h4PG6YrqsU<(+zdiwO-S$0i6tg_~zqXKL zlw91JZlsTfGVMmKxlBd!Fr|_Z70x_=6xMG{86?`ROx!jx0hp~Ta7Vbm=W!uwm1j0X zTABE1WAU>H`CypH1be=zhPx&;nGXIcKn~0EODIZDMl)VJtr?UkHIe`eZ+*EolcqK! zUR*01>~(cDwv)-(Z@MpocxJ|YMCh;$cGi|k;>4ru7R1@KiIOHrExbNWI^1_XT40<$Fto3Yp$OvySlt@G$+1O%x)Q#jNbS-EkRrFn_OLW|K;xdrqssR?&Sm>Hl3@< za*~gbu~|~V=Ba~tNsy^nQ0-cqoI8Zt6_>LS!`H$N3-qvFkelO*DrMGTfj6Vn2nD*? zHylx4@ocC!iWP{$%qRJ)hEtjHFkvJFjx#HvtAP=SUs&)Ud+U`zb=o z3m7>wr}XRW0rUvCx*i|Xt755QNp)VvOH%@SraZl6lg?CBg)MsQ7LK3lURdCi>ECt!0`?L> zZQB~G3c?0L%>b&I0M5OW-X`uxMWwhFH)wH9goz{Yc`BDtZg`nP z`dgpeqBMu>dR@Cp@sz7Yg-=h|A<;MmKt$OS2xsrw6lM+tVCRo^w3{;=3L76hwn^2^tipZ@NKMVio{0|^u$ z)GlL4zK`rSZ*n;;EQMx5QZPI8ynL=-zZBItC|S8BJ8o436@?wYf3jJH*-XL(-k_9j!A?g?Roq=%;RL>TUAL-{`Q5o9ncs(Q@d*jw zs$J*52$%n*Pg)Ri0CE1C-F`J`vQ_7`%D>`1ANTiv0w!Q)te3aI&Lloosuf@28ctgw zR_p9GRjjMm{Q}I#64jVILUKC^o|OTjLn_RNCL{B}>LBSU({uPut%ONlc+%r9KUjsc zg4Tp4xp~BHf)eRW>WFn8m*cA|k8WGNulMp5U&lC)?#+~xwcw9&4hqY)zu}&4bVy-I z0e>PbgK_rLZR(X$#<1;={^Swj-?rmU0dM3R=8^s&l{C&>jg)(`qf~Epx-SR{wUs<@ z9CGT{g=A+BW0lEsm!I;4MM@V|3Kmv&hhxkbEWQkcJyAenoVq7RNktCM!Mxfv2)pHj z_8kL=7%0j!-j4^kUlv%(Zm1`_#38Eq!NZ47F#*@VIlxRu9$s@3Alf#^GZ+8ejwdM; zsaiTjsS=n8S%&?Bw8$l>t!lJI46vf=BusFGVPbMLw5oh1gLDO&nRr<2)hpJql=jJy zBgYpy2dPqo!gy2;Gtjrk$%kHVnzm34&_chTLKHAgV3BkoCj9QeuBE|OAo4MwF+#To%w&v#IP4_@km zZo6M!-hNRbU`tu(Fj3(tEfxR}te60+;2+YOmdP4`wntHc}#=XoY)8e4TVpDa#`7W zj|UuRU#QC~FZ9g{?=0C55WE8VM%|kFrTH^Yy=p|2A1}!?Ev>3YIjhd<(`U+Fr zYqz7)MXG+n4h|0NBnjXv12B>2RqD|TU^;8w?WHOE#eQUW&{jk$s5Of!^4Mqa0NQC3 ziP^W?-o9TYcfzY%DDsigpn`S<+pW6VO;LO1E^`&~u#IKOyDg%PET#Wfv6d7o<_jzK zeTjN?4{JY!3WKUbCVi&fQYr{9saQlFgvY!-a5TAu!=nT}sJd)n1Dib>AK`R1KHDJi z??85eEv~RU;4JP!7E&?KlspBOcW5E((|Qt7y0_U4M?^x@!0G8|-*K;r@>&nZ(n;TW zAqNopGUYrDJS3iPZ-f=joIkUEbSh=&UfA;@KKb@}G$k6vB~0FPa}$DFaAq>Pyr06l zGTTNK{&FF|NaaVKWQlzgY_ZT_IOvC6-)se`5@h(EfAS5kOh4UN6-P5UMNc&IfL--r zXvS-+EuVlgBRZS58Gtt2rnF^6dmyqvoNSqMxFb3TN}c3LEx4XmIDPf>+@FQ%T%(yr z6HYFpOE07R9s|D;(ZHWP3r#LUm&i{mq4vXTv{Rr^iab4jPG7(TaP}o}Qe?^bJ_1Gd zB`Roc@#X`s^hs)Ydf#qCU1YcT|I-4jk=kX_m6erI$<6;`Ua#mj=E-geA8{Ah_^x13 z%HmvckaZ)`=Yy-YBK%I$_Q(v_u!Nr$_sUw8c z@s@z3qm*T6;$$=qkCD)11hnYB#+}A6)|9;CESXixgcIY7djZI^N3^d^=dKkNxb{!& zC(h4N#LOQjw0gr*p-l8~d(W1tq>~taynY|^N|nH+IUzzV3IFPg2PrJaiIIx2A~ef! z@~xA>8U~oj>+N?+%O)7Pd2+pdZ^J%Y&=R54y5@GgCtmWQMa&E{PR#wESs|sH7e$yr z{GOGr+&f!KVLZ?7Cl~gcx|&-l2LmT&j9^ybWV*e}OKL0H7v_(px3~vHzi{Ub(>DUd zrxVY&AP}VE@N%*pL*lhh&C;see*A0$WusZ0a7DuyF?PD46>1?<3WR4+;2w{Lvz0+; zJ5}m)7-ogOgm5s4WY%{Bm8`T3Zk9jHk3xrMoLj;eGO)CI!8<_@H}Lel=M(l<>TQz{ z5f-C3@@(Z3^4%e5DIF?DAO}1OseKtthn$*K>LFhNEbR|aY$K`vxqxTUsmYu77BWIw zKKCOB+&poc~@6Jewc`4~D${&lAhE z0lwYPpl@=NkJq@p|1H5e{b<1m7B57@W2>BA;)4GacozJJNqp+K(r2r1*22jYW<)!L zPMR!fpz6#A29%CD^0}~If(B06z(Vifwr#TyD}?GSO9%3)s*wz%zN6Y7u`6-GfUJM*V|G z%1K1e#nnH8eMt@wkg28)HE>p6+zN7&SYHbDUtN*+zMpLE9qj>0eVFhIG#k92m_wMe zko96L?n`kuqN$rMFqxF93-DYjg%lN0CKp4Hss}Qul=uY%OlC=wtSn;s1p}Qo^pOU5 z&^M~OdrREE{a1noM7|TD=slY^{p89;7elN5BD)u{_e_z!XIeS&EWYXAYO+0l%nnsW zev1hm(bpyv@O;w>+0sy8={|aezKJpR#>EwVQs|=*xe$L|MLegDaOsT|A5BvItkF`u z#)*>KgfpoiguZMmsvGECgXYX2Zsh2XLJ)JCJupNs6;nwCPfWs;q7=iPp^IKjZ{w8x zw1QQ~4B;<@*c^F59K!P^)Wv>6Cgw|hd*o3X_{?VyT~O&)sZ_B}xE;Sc178L~sl;VFX~ z_*I$k;sv}1c9sLlrl~J98(M_-5S@C*SIm1IX9S!q=?x-^(J<_p`^p0bg=dOXuuU-9 zWCZ`gPCgHC=FP1A$WIm53;sHPBH(l5+HMYvmk@~h{rx#x9`iUSTtn&v=u)a=ZMe4| z5r7qZu6Cue)mQtNk)`Yc2DnqYE3B79XJgPNpAWrV$m<+pFQL5$MhOmcwGUu6l*ZoWa$0D4!szVgmidd_s?unfc}B6}iJ#F}1Dfph{6`wNJAGG`8vU_S$%xAuS+ z9$>!QkX_Q@nv(3&Mz3>ISvJdK(Mz1hwkPQQ`6?Ucfg6x4UEPTP5(&rhn;VHuJM56a zE=^Nb)cY;k$Lt1py%&X!eWfY6Ic$HTC{@GPgRHS|%q|<_LURmf(U<1tr7_HnFmE~r zGwLpuB9ge|3A%E+^sJqkA+a1=r7iHe>oU@1@M}cpFAV3imxkE(8$TewvWep=z(Vwx zGBEvTj>%G4d>$sZwvTS9t1PCy`NZXc16g>2A}ABV5)zz;`o#vv^3${Kez-Ibui_gYw7KY7%^&Oo9CS}ObN_L|#f-Y~jVN_SebdGNQYP$R0-$jgk9}H-k@C6~fY^$_-*tea+ z000cQ-}c6evW+7v%C$|f;v zW7)OQi(+5e=V5M!!`NKQ0NyPdHSjSKUQn!xS`Mozlet1Z4(YSyQ}ov#c9Ch*GvbJB zYRyFMJAUvVzG+#h$z$GOx)`=An`K79TDq?Y-%4gnHt{sUZvBi^D%K1|s!M!9t}f>j zzg!C2zXwm+{pGH~m~lO0D?y!*$-tSBO(v5hP-vfs63Po~CQC;o=|U&7P|G7Rm=V`v zSF`dCjGYS+GWxoWPAd$>I)sp?v|6T%ohc5{`H}|3c1o^nbxy z82DKaU8;_np#MFQKN&4_TFaJc!n*0A1)PN)%*Y9edV&qZE`n(r)KqM7r4BXrML;03 z62>T;$=?+njFT7dHy>a<2#Thb!)Gn6=vmaLkQ5^Vm#hM#^!u@UVhQa&g!$;U#s8v{l z%(mB9qeMjKTIRs^Q?igAN4Ab?rW;paCR0I_b!*#}5vKm!8!#VuM*8?^INn^^gNo-ac& zHIY+p_6?s_(eo(|5H! z@E``0Q>~>-O!^1-hMW$DZ-ib$IC$n}z#3vBoLap*^cuI>F8rAAfYr;mhZkCIYxtLQ zw@CEDtb(oJcyUH%A2KWfPdbUQGx|7SI$5EPv{bOJ-GHNPb+t<(ohqx(fwW{A=Q==B zFsDgb^!LqZ_aM z%*<)J_zI9$A_#1t3kpi4FXklkvl@!*oPN8+-Fopv9L4sLD$AZdcF$SNT7nkS&SM}z zCBI1XDE;DVqqxiR^~;H&B<@e0ld|(WOj|Pt#uEF_TiGAHMs+W9zeZJ|1HY$*B#1m^ zQY^>H46Z(DkoiAN=(CTI4YQV^x~I6LC*mqqmauEAf>_e#2!SO3QmF}o)S90(Q*6x$ z)OIJlYuju>tY4#V$RY*X)ZX{>f+ptX$Tv&|7@CGu<%ztjr*R(DoIl>X@5`H7n$F@4 z=egZ9S8|j^-VzN(&DoH=A10lyMzSC1CjfjVxvmBq-X*sf;v>>SYJ7GukWm#4(y@O8 zr&|1&#}*@M{LNX&1(5iBS*b11xij`07D6QL4})|hqJh81_hRSnaW-nJq=C7%O4BXp ziW*e1_Kzagf1ax*l*TfiRIgfBU`fi~?@ikWpSl6t-C!QA{Yc7n#WBdRgkdx2L-^YN z7-`s6e+e&C)l(hXXIy2Xxv27X#Cc0=IbNKQ!J(qLL?hcMqw=Sly?55hYOaP&r^)Q% zt*YU2>=DgO#&SC;z5Kv`{xkei2tq=ll1mH&d=jHDryM3djEH0zr}cf(_rZ_!t@nh$6!2LR=jebKrEWX!I^T)U zJiTB;<1qf@9n4S%3~#)_0%*B%MrcOAD;ety{bCv{2*A>YUEclv=TH=_t*!s^SA1fA zM4F75Hf-+<^4b>FC{4yZ2-Vf>8kFp^4J|Azw1#v|*zGecH&=BjvFuJ{92)1seNGq= zj*mCG9xo%^@jXJPp)Tj;{HXm6dgB zGyyqH!-S>(1#9o1Df|8gYf#e1d)_N0iIDd!0fbwpFSH+R>w#Yo+_Rg})AN@nPnDCU zBirzFNhv2{pu{Z(x%0GWeAaD znI1j~obf_z68AozvV&f%R;5<+hgX&YQ7L)trQhZz$x^7;Y(tEao#^A{!kS(W5QCOc;9$;!T6iWP#; zT3E0DXd+P{>3@O+Sk(=w&p6VtRo^yk?{oqCa zJK2G80mCC{Vr$za_SAIWVA|`Tdr6ls(wmgQ`9!d)LDL8FjUGu9N}8U18PAW@O)D-U z?_dHfLCUZiix{Gb9wq;}d}ABdJ6Z$-Rf>~uc_dc%M(o@EE_ z;K%Q@Tkp)PEg=Sx21`0@xa!SIxR)O7?|}Bwg(y$Y-MZ;`$BgJ{0NWc)`is2c<6}`? z2#7h`g814-86|3&Bfj%TPiHQi%L-J_`wb0}EKXW!IhW5dLrx(YVG+~*$k?QEDD zvjZO`o7)z%?uj04k2sdl2xoj2_tJ zcWkEx%~_gahUjd;d{mOKt3Bf}pTHE17<$N|^?T=FNNr^CI7y3io5f) z&3~16X=V->uAwEPSG-8B{LfbP+_f0RMI|Cz+-5DD0bN= z$JxEVw7SRCsq)L?7n1_Vi9*`~r5?Y{i+@95%Dwg;XZj?60!hz!QyClYQwiio6>Moo{%)%n=XQALew=&)FC)DcTF$E>8DPwU1Uo_oGB4XE#TPs7V86t~}J& zl!avGLU@f6IQGag)s6JQhn(P-z->+$`eSGgB*Q_@Bn z%#wsx%)~>GJC%LzL&D*_n3EXt)jPkS5mucZfl)=1?VlixT#`i%n>BlOL%>U`otzapmF(`*O6h57t$-;yRSkG)0>SoOKKyRuCp z$7DGzwkU#j4C=SKRnjsv4Wm`tUcGrfXD_EZOuHS5kDYgXouH-~Ulkk{!>ePW8F9qg zZAEsjcK`*Ron(BejJREg5H`~v(TMo9y~O_{LqSJ!rh9@GL)Bgauly?cEntx-rQ23+ zMp<@kpI7LHCyCc~v@A9?@R{5{#QQ(0zx7n2!jyO$qjsrK({1cm&rQY{QG??Y3mlDrLNx4rP4&Jv3s9)sSu;a(@V-aZ340y^oK z;qe9lokAp}!}^=0$_v>STXElhjW=LJ)S5UXNv$TUclH)(7oCDdrPmfk6Nt_Q&)NwskexxzlisKqx88H zqNT!A5bj~{sT#i9Cfk6can?!Ea9wk$+96+uF5#+xQ3^%fSQ7^5XN&E8(t8k4jJT*g zHhbdb^ZNMX=Czh_lPm6NTsi0)!Eo&8+G}>un;(!fC%RwbwYg(2AO?!4du^$^3TN#a zq|FmLSPnd!{9URLz5YkDPU&*tk-r*ZBQ9f{&-C zbh-t=%@BBSr6>2q#4LHAjp3#OjM|uW0@T#ff89)DzwnW{R-Fg4Pr55}yq((hTbHk- zjTHjG)tZbCnbJkEf^l8~#Mg_-3q_Q>e}jfq>P+n3IH1k6z=hc-T1Lk1+&%A`qL1K@ zojf&s@g2%$>Px6FY;6bj)nBnvC*|Q#!4>)C@EY#3BGFy;*ncYhdLc8{nOf<2`F`>7NFVgv zO?q>_+%xh%iF?~Y+;bbgwY~M;8#H7k`hxy(^YOUl;{WId_%1%MA4oQfIEm)2JmCjx z%_bj_yXccR`cvqo8iokgVCl5dXwKb#&K$-@tmS+|h(?Hj5H~iGoq6zQgE1sY0;#@q zldrgroIi>{jn7??i+(&xbR6TTo~BIA9C>vTo%L={MJ7are&@*MJoS7$O+h8UKDvMI z`nzT2XBGKmKWv*6+?dH=*4(0?lM0V0EvCs3hPwmDo{QA4`z>x?jvPI#B~`CunStQ9 zN-JOIA=s=X`M<3M_)xqpL_3;<3hdTG9t{q>lpVONVcUVTZsE#xG+%Z@;sV-w?X%P< zX+~(r+#~ry20heS`TVr1u!h{KGP|ypCoRI51`l-Gnj$TNGUsO9f~w?3hKfpz0_fU* z^-%{~x_q=X`LiMNh=8|)`>q~qLWM4)a)IkSyO<&rhQ0x}@P-M>Obj1F=d)@oELOp7 zF}1Cl$zwSKA7c?Lo=l(DoL!%#{AD<~F319Rro&%1fw=GZ!mQk?)7)FP%->&M ziuH`jGHaq>C2&$Q!rt_>arPFdhfU?2gxrzv3o0gJ$M>T6F8eg?6JSr{MpC6+yzlYQ z@kZ8!uYW@lK5hkHPm7e|6{Am)V;#Bq+AE8z`KRhHk*?N=I8kv)m5}G_P4;gnt_ckisU8MQ*Fs( z67aKWG{}NOfnWD@aBldWdfoE2Ue`YGWk%IIj=yuT(xo#NW2cr#d$WgEs;m|^*R1%* z&mE?#20NP?gn5iuoErs8?&^qv%3Nwu&1NF4kUAQ6>v2qwH0fVs@IdMw&7Hwmgr(mU zVf^M2E1t6DG|9UDb0EfU(1>32pST}P4Y~??bt|N!m`sPx6{I=z8GrNh`l(Ed^b&v* zL#+oPo^PIvBn=$%78+qt?AIeZseB+3kH~{a~EuI_TVbGl}69^}CO4yXgL* zmLI1;u*_YGz+ci>GxKAqG_7AI@O!=-noEjVyZ-z!AA(7*=n#Pznq=5}zJqVqM?Y%2 zpBE7Ke&P1<9uNrJ0UobAjVe>TTCWD{?@3s7YU6(he%_s>MFPCUE|X4YcfMVjJ@%ni z*~_6VDmi+AJ&u(7*xZM{7(XtT;%!F4AqaK%_s$-9h+mh6Tn21gw)bPo)_Xr#%4iY& zjh2EQ7(z$zM*UYaS#hy`2EM#l7MZx!nliKIP_2uv?iQB%hc9=(>&Ny!`FhkuIV2oP zJ8Ae$-PmqIU@7c_KE%@&8$)BiLPF?^-IYS7^I)4*;6M2s?8Dp(_SewYKCup7O5(;Fh8?}-_#s7H4%HU5TnhX%DRmO!fyH5zoVRwqH$QVeyR zsaG^OpA}O0`#z=RJZd{1Y7MR$A|;Ly9a(k z#tx5k9voB~YVT$eAdcEq-KUn<12WGzv3*1!TW@PyZgUD9hFnmeZ{*^bbM zfKKJnrZQIkby4!OI6!7j9efc&6R&L8*d%NWNNvDiKm?s2n~p{~coxxM+cN?!tXFX3*rQu~gvTe>Ta% zc0+yRtQVmD0&|4U5 z*WLa{LKClDGE@7xU{KEnbNYHyD{KcL8GUq75?$QLf!KU#Y}N&T!VQluUA%0HJykL% zO*Glp|DgZI)zZu=fIKYraZU_20!Ut;;|P;J@ek==HjzT#(M~An#$RBvOTdDOa&f&`HtwDV-pjSaDz!LWfONIZU zc~QHj1bhFc_TN91I_YP_Yq8kI;cdj2+h%azOL}#pMiugpWAFQ041I*cA-DtvsxSFa z__BXV+MyD6kI@2Ac1d1|XnPP=_%M%bXET5bY}q?u@t`nQqutEUx&Jn{67^qM7%KV< zL%*S=lQxclSk8KEm7thGk=Cbf3v zsKyKav*^oHnSF*A9&@|lIwk1ntR(=7vNCI=?E>@yeWd^J|7bd^pt!oOTfZa(x8Sag zyE_C3?h-7xySoMn?hqi2dvJFP?oP1A9U6D%?C(_lH{Def7rW`jT62v#<})f)B%X;b zBE#Oq4BKp1LSp<@8~mmAZh%-wrTA1m4nfT)+|t%V}xSDmgHNrOBRLwi&}>pO`_rd z*YwrMib%U!6M;gMU~8a`J(*;TOqfs&Ssw@R5{p%$V4`j4!Q(NPkK^Sfk6%@KLB_2Khzj zNbs|K2hTLHn6A{cnz+nW%c^DmTvgh)>cx1Rs(+6h7Y~omSM!3 zooqoT-`eJyh^%|RlDOlIr=goGlSN?NZtKL$7K&IETMraFB&?_`pq48AoQ{vC#q^fM6?%HS64Z+#+`8ikzn{bleOz1_=sy~`zkYDb(&87X4#F;e-auO!stv-b+@So% zH|3h57Bb^D9W{IhLN#%Um+q-G7-oqOHKQfvk@d(3#+Su{*X5-o$8LbdiDR{*|1-vY ztrL_)lH-4;ZZQ{H@R+jPK(5S*X+N#@2{&K0Fme!IENQq?+7wndWFgmWI(ji!aeeO@i*;GDu|P!J`bz~9?wbe?!dDjBYXq!6IQ5g1kfp)e2P zP-gAa zO7k=XU1am^Ejv0oT3EgrpLdpv1i^C$-;FOGJ+^2FHs|uXAUkk1eTd+`<&j{6jYpP=EgpAda5>7IIjgMUwI zZzn2DdFdg0VbpNs+N$l;E%@s7)3c|6&#jgbGYb>7*xiwQ#=Q!N3<5V1rl-NY&dxNU zRjPNS2?gGTLLk088K}*ko-ZMR5Ahi3J(HDX@&-ch5u$I&?|_g0UrGKMqbF%d{OK05*@-D)6{;<5!-Wao zMJ*32nb+#`%nkj=oGh!PY9>Lhh$$Sy#Z5=TbJRCfBgHdi7`U&@d(!e{fvirqav7v>jod&uMH^L5vqDfc{REJ^5IjaOJgg z?t(5n=lz>wWQJ2*Lei2tzx|wpJwfy~0%x+ep;!pxfQ8($`H$mx@d@jy-Fu_lcyqNfaFa zQF)EWOh-xwfN-apzZkwBkj-ik-8jdwM@{nN?dE+Nw8|E4|3Z|mM2nvlq-8dcGSE)F z?yFgjb2q|Yf_LC|d93C4-Yh~h#=W?B{&0F8*#Ef4Y0%vzK|>(kpncvu^Nj|^QuvDe zv<;0JhjIjtb*kTt?%NC(OdZ$n{k%739Nu#WXIyYwAAe81<$)iN-AB=8?qL;q$EHWoWdw#lc-y$SK(h=8B+-?15*L;md#60 z<@8ZlyrdIE6lXLQnizL1VnV^MQG@yHxT zlO}XTPC;Jtd7TX!l+}y`(iEaHeZ-aSX@zG)Zx~DVZE?LRV!p)jg#k7e32; zu3%c6%kBHxw7?-Muyt09k}s-u)kpS%BYkasL0Q=R!-aVgp5$t5Ox~fonyxP8)@RI& zqrhJ9?Ck8YW2X;Yw4Z`0pe2SEpPxzTa zh>c*JfFF8i$MYS?8;(rW#-ou{RakcT*aWmNTmu3k8+oj#s(HpO0lYMj3;Msz3_Syb z4>j6r&i?M)5f=cQrh!N%E7bF=sz3#|m zVYJ}vTQd2KntA-*;3qC0cIl{7T_qb8H*R0UA~{MO z9Bg*QHNShx_;QDoSOiKwsMzQPWzZrNEUkBnJz>xM(l|{5g1MeMYvvxfRJSlUiamZ%f*6p4)#2Im)E!S}YLO~}jb<5WZ4A75*&fmS?&!bx~sPH0j~{ON{aF{8kpoS zNk~b=DQ966is5ohG}nbc$(j3|Vuam@(5bOhWa6%fRqY?w&@Ep!r{2i14O#SPdDfTs9l`bwvUBUQ|;V={~>0e&zB4Wd%X8>`XH_fsH8gZbt)axF34 z3#W&`yIjTswd2JOUgNaJKpcu0oUUMl2c3Cef&;#qb^{mPXYg+Ad7clC16?zpgM;Dq zjp@)HJmN67cqZ%zbdqeiet|C-udseWC5RjMa4)VGaLPYDymKn_x4s3-24BwNRgx(ei|D7dOor5|9$ zXqZ_~nluhlJRDEpaAY`l+soF|cDx*)(uJx2aM-_(iB`ItcI*0!s^9*7`G9ma zPcpY0I@$D)?bf2p%AY+ot>(m)g&La6rKsc3B(~lopaC}iWvQ<9>fTVuA>&=4iCheb zmFEtRC-qY@Kez5OY~yB$zb`N~*_Mq@BS;_VHZ>W~{Y$AT8k|LtW)yZn4WPm(A`D}t z)<9CV@y#GGbJ&KeFN>xos;lXh!EwxXb!I;49B^Uf&}( z_g{Gi*Fv&HI1AdDAC z^;D?K47?G27cqQ0mM?xx88PFS$2hp=mt;SsNRN7a!7s&WzW3BVw^~Ups}iF-Zpv$1 z%l*jC6QDTP;po)X+3h)8_&RB*a@WaD;a{@>g-*3sKv4IRoe`Nxwf;gPvMtAQsy+P&&+$}9~6mjc9!!YQc zm=&s$(G?0cNPrWeXi0-QV?cOwIW8vR7Gb4XxAFt-s*fGsE=?1JSts>!;2`IEcbgt^ zid%`*1c{2KP5YS91{K)9<~P@IadYG1A{}~5zrVlV^%fakb$~JmHP`xTye;j<-@Bh= z<4jNw(v~#Y^9u?VK-+>!R2PF%1O5Hix;^yJ^F*<4znSO@1tSl>{$Zya;cw~el%(%* z)17W|pQa)tkR=muMVJ49?k6(f5I|(kHk#{RbCIl;mtggo^rwnUDVfk{AND(h@b@|L z_6}TzTGVrfFAHm&&T8jQiRhanNSDg|Vfk|A^UyUFjkh+FcQz23sw!8r7FH*nYVKS3 z!}&s0F2O=f)_L0XNJx&btW45tc#g>nc>%Q-xnUk8Am;V?17jWw-s;)M+Rc*}AqA^a z`nq6G#|>kRX*S0UTvJSodVYvKTQHzI{ms}|U#-`xaMnx!5ol>GzV|sr=~4w(HF;ENr4-gS*{{fpB~?(t08xgIOnjt$YBOV8;rO(crOD}xHM-J zPo%hdG6eI?<}}0(yE9{oGH+Vu_0q~7#xx>(Mtq4?oEbt$F zogf9Pa>Bv_TZTHy5_{V#YlO*#@KC@Ds^ZYhr6~Q48zewtl$LBFr@pZ3Ed~iqUUI3m z=q!8SeSbn|kC!O19!-V+86YbIRe;<=+A*gzLeqEmo|HT(_yaax>hyt1~{ zWfk9~BEmVJX{?jRqv1#Sb7S{ZnzOO#0%eM?w84MjU|I_6P-W5A?-t1^M_hUJ+z8RL z&%jE2{1mFsgF+$3FhevgAEQ~gl0X-mh(v{>3(FFM-D&;g8zFVo!;AKzRlupk%Pujj zT4G_wEr`{hL;11C@THsS%s_P)QOAbOdT`)~K)N1rDo3=$mN1IRvQ-C8E3s*PPLppO zu5lsLkobD){ZW*RK6)(!p*UQ+Ohwh1TE>zSHvD&xz7E7FwVawU`9p38thQr|i?iwkTT5dty!y$xajtKor^6AghfzS9z_!fW0VnkJJ zlfv}Rji9h5heM}%2xdoaX~?|2zUCj&pZRrm!&X!oGrEEmIZgKL0t0`{_?#Kc0YR=% z&ykHr8Ud&Yo<+BAp^oWfIcS4S09&fV_dZS|9Ba~|ehZL`L9*ii<}>v(Ie&+OA08jQ zr%80H;3UE&elPXF_Iku0|BfHBs28)H02}~3JK9o_FaZ^b93n77g_jund}znI@&PxC zfdk8r>~cSoj8dt6UE1PhDb6vux|=VDLYd;e(yLXV-@)J}c< zn-vzWy?3$IZ*{_!d2moNzZWd}9{BcAN`R(x-8@nJ&cKt#O%KXJJX1u=?1CFTU}Qw> zd6JHZBiUo7cES2KAZpsEi=uHiVkQON-_`jWK$N`gUo$E<*RiOJIFw+`PCG*oIXN5+ zFe$>uu1ox`pQ2pUO^K|aap(qqX*&h##mW4VB70A3%u*#xXKB+|5oK-Woom5qeZC9d zi3`4M;;?=Mw*&uUusQ$Y$^RN{a0FDK&4<)H80?-}}?&xX4NO zzFO7(la8s)oq!kZkNc2SSu|Bv={al)!ho9sVBT~#S9OL*EWTeDvxCaahVPr$qPK24 zClx_Ft~710>CNlci0t14oF1YndWD)YmEw<*BWw54J?_NgAySe{knO3RVhkedczD-G z1f&BB4!Sv<>qro%1sU0~ezoQLUAj|9?qNpO&dDm3f9yTyCaLo0QQE>yW;K}#W@mkZ z&4j9t)=rAb5m(H!A!lP6O8uxMmIWUEG!VxX)p}4xC8GNpKu~q|Y(Avu4?Arl+;_+h z-?ubT8?_Jj6gZ&}7B8ej0xtAJ(Ri#roQL#N*}?^73{m;`DC*n$6h$;sv=aHa@+_Ba z@shiP9F3RmgKaxAV3scBLTHJ#K!4&;0$VuL?nHqr)%*_>EUS6}q~;l629;2-Vh?~& z7o2GPv0+-^iB(Y~tS^l~;7;R|4I=S2>2SXs#aYuRy>Pjp_@G-sOMd>W>&G$W$CvtU zV}o6MW+#ycL<^cCdLohM8@w(2J>e-)uQ_YxXrR6GlP?V=*6(7F{bOKBbQT(Lls6&?rwaU*5^{V*ERVuW{#p8SJ?R61ie^DoM(P^OOiX{BVE9E4 z4H8U2*AAlhfEj{M@sVqch2PF-g5Fht$J8NieRT zA<@0Xv^HW;M_=@};iczX(*2&cz@G*}IVrimodQYN_0E))w{4f3H?jY=M(C*Mp1g~N-ckol^+%rp-=fCua;Q)a3Uw5hqIFrS5HlSw&e$_fBzuU2Z|fSG z&v>n>RZNed7-U7bB&k;UAicGiFO&QRHM1{v=`@1Qe}QzE4xQKPNZR$wh;)6VG0a1% zPPS2dYR>zMqtyy-`1u6+Y7of&{_h#{o87n{)K2C0gMN6Mn_?*C8?S|ZViOmtH9^z?Gwyf%cUTD!Z+z}xJq?7{^c0(W0A*IN`mbM7COzF^^q z|DP9t;NYL}BUK!of9;w>xbGa-L=B>}afR0k`baV%e)`NAJKVMN53>8}x0k8+l=^Eb zA?9^>?cJ7x8|`I9`o@p6fBfeS6(*g!N?yW)uEo+P$SUR}+S~6*8UwRj2TV0Cyqv*p z+vf&d{Z@2!#FfFVfU&Zu)Fy`OW%B$5ZSIIm<-Gd|M^P)e*h2YP2=3_6%n`GiY)DwZ4 zz8I_H-tQ^e@M30&tp037p!@c9WB<0C_ppl?Ag60H;Yz6JGU2XnY@Fxum6ahWNpkt~ zDyW3nVpc;cmKZfMh>wox52el6h$}Z{~XZ6$%0{#^;_2%Z)&L`N8uXvVT0>>7yY;#U+GFYLrARXMV zFj1LbkET~Jci8N@s1Uoi=2h{v<+W;RQ0fga!P?oBDZNkW5@Q7I*Z`vS28ed6y88C2ShS3?_ z_AWyy^3lGyfJbNy?_2#uql$uTGG1^7rgJ z@roO82HrhIo>)>hE&1v9JKnCim9smHIvHjd27oGCnm8*nL`8vyQ{-_MFEi87$>TA! z`w^m?PLg9(m#I{!5XU-lU}@JL_k0Rg`Vd*@vIVYaN3%t-;V?F3KAQQ=n}KRZAWpcl z?nXYrIchQ1rk8*V9(0%nN=i3!?lG5;UvYMtPKH&NBUOFXKl^2V62hCFJ2{)Qs2~qE zBLw$UC*bIMg0$6+WJ0NMK2V`Vj!$z8%x(I`y4oufHB)5VkhtX)6CACmd9C|B5^4pr za+mXR+cO_AL{{Q7eRgXsT=yx9Em--YrPDS#r|D4xb7F@jhn_#6iM!|%nk>WU+}Njy z3-QsTUFJzuT&pc*f)JKzs(qJTqc79kp625khNV^O7!Q+{4?e|SC%8aVGec18__w4v zt3gV|ETs$5cgpOg@W=1f!TpY>gnmi`JHQgeGw=vDtJ`{1k3Hw{577y#{+N=$^M@en zyHVtg03G=g4d1iT#TD)r)X4^ujB@uggMSnTl)T_eNTs1^0=9G-pL4i7b(CP?+IFdR zXYO(E^uokHVL9K`CgWBefQ+U}2({FzbNlw^FaQiW*)G3ce-<}duw zNanb~?+lBoD;|MZSSB)GZvys7xIP4LcKd3CFW(}d*a`<%1-``v`1@pDlL0oOMCmy%}vUIvZ0e_dw!MfY{eJokGWMl zErlq4Id5>?pw3SclBRk>8YnM{nN36cf5U_ANafFwFHftfUl5|GFV}1J){}8*y{bbdHPJtBaP{Wh?N;e|Fr}?^_LeZ z-J>2y%aUQ*56h+XsA?VxYCkpU#g7e+YI=~P@o&z6$vkOEH{$|q+@(8L^7O1w!I>NG z>$gsyQzB~N^cX)Li8eShBqd5ksYacol25-4%BwA2{N$`+J9;WEp`~tb}N4=q@sIA5R*1qrJ)gqsW#k zJYQ4Eyp|AV&~=cEt~Bx>l3HALnm>8@A>gz?RVYpymj6Taz5ZPxTdues#kLQXAIMi4 zHOgwxW3dK@k-c4n{}0US2ZS|`TL8csoONG7q63h9d>rmsB#LE(dDmhVxYaWZJuA3D z{f((#2^OMpbm^kFq@fUvIFf2fK&iGbz7pmY0%>yT|@ZEY)a z2SB6@n6PuHiNmR!^Lu#e1HofG9j&5ugQgoxI;-v;!>Qp?duX}>$Jys(IcC^aN$1iT zGVAd&1T=ByHC?_n#(b2==9YwhGNz;gPm{@ea1_kVo>~=}(WFDrC5_awu)3?1UzXqb zn|_s47=PCxg!&YiDVqu_9$5cR2%Q}H5qTD$>btF(MTXK!HaAL^JoF|V!goR(s|&Rj zu&N-E>WHtb?R0H(?kfrFd z8OXo+FtY2-!TZIJ(l%t&iPC#3hzxLZA9hi!r-ry#x9|w|MQC?L2QgMX)1lUCGY!|p zoO%FPZ~x!ZV_lKm2K8$W-uGu~*-=KB_k*xYdF&R-_BCY;O3G8ib-`sQslIZ*dt|Lz zwQphZ9>2^ub)=HEPhEBa^X0(!mTVHrvNuQokOABT%Y9?0P~FG z>cqtND#vvdYzpu3YvP|ie|`DBisYHGK@&};WIBgLHsKl-5B-=}qw@OsDsI{H=-{rj z|{@_OnIy*So{F%Y}<@I{zG~r&QX|ANUJ1*4u#u6JLcSbr}Wu50l)J$YeCrzXF zAB@eKCpLQ_*1Ro~XfUt-VeQ?ebFZecub15m$hxdGN=8{F^;LllZahoVpG1|TZ-Xa2 z8|)(!xreaWZJ0c79)0M_jXoyVqfZB=Zp1#}zY1fPO}#S0x|4hUOr>8E;G?O;+mxvL ziP2#GB?h$e1KqX0Y{9>t?QKnrg<|rbQT{Z%i%{jM6D;3(lV0*Jh3PK=*emTeuh%E; z|K_ZF09^Z*-1*yt$U%4R1s;M8Dtc};s}&ydmO_<>Y-QC&iY55sN>Vu*)h0>@@r{Lo z`h_|@7C=DXIhrex;PCMF=7&A~^GN3V-;OQEU`>1?XM2p$pKybXuK#cQ+g`qQU8y?u z?KXo@Sdwf2qQom?@x9qjWK?U>4ovHa)ZTTpSz)}%NM zig3RkY*i73&s6iOd|ZxyN7|@l(^X50qf~q{RZxW317J$Tp`jtVqKEZ+5kfEn0QzsM z(y3mw_?P+MctDO<UWrm9I(xs_=gRm&MFV4+t#+@K{b* zJE#CccYk|3xZc3TwN>xxBm^&LJfRq<1cRYa+ff&ZB&)OY^ALyTb-afA1>*(~>ulZ@ z!Dsr!xNfX5Jl~X?VYir?{@Plx@n1vOFB1R$w#cBGhb}$#Y{|NurW_cE-z($e@$0NFFyL)5Hq-!DEWM=Rb2|5 zzTp+ftNNZg=Dz8raPaKm<9~gLA^nDb!}hk`6fOqWcZdUACb$&)%C)M~6@s;auZBp4 z88`)$MV=PHRMAd#>!~<_H-Ycp4g8#fuTd4%MUk@5Xje(_{~<<7PE%Mt!!8NH^G&S?)H0Z_A;DZz^OOs zU4E49=5*u}U`d}uGU)UfNTyYW3qJ;u9?+y)n^1cmj^^Y6N1GhE9R27ixL{{aKTX$~ zoUdGvNQgTtq>a}tR*aKeQb?D!?;s|*vdWgH{M-2z3CHcu&JGO6Czv{H+i26}AH~*( zU=P;Z6!X@hB;j$ju+3%L{PU%(GEv2rPVkB;fj7t}W^KqLNG~?bOPM^n+8&;}_u}bk z(V{kF{*P_qXp%*6nSraj`@rdI(w@nfjZU4;qK3INB$TGDo*_Y6KzeZoT^gdj(&SlN zP4aC`g_l`z4y{O75PvyJn)b4p!aiW`hX||-dsFdYI9^CAEDL#VCg!}b|7xL%S==gD z%SW=o^elJ}3!D#aj?d?{Ik5$QJ-4!3;4F#!v?La{^~0}8%~9k8LQmNSU>zaZDEk*` zw|f{Nr{Fvq(lJ>3@2IptHsxE@7he0aQq2XOdruNNPcv6Dvaj&Q)HGGql)IwQ=_?yoIJ zu(5Y|#XUOSzW!3(2ftKV-%v$@(o5CL=msWLHVDPYTW-Z0e3w$Umv+8Blc%x%P-P)7Har{r&tz<*HZMJNM->7)xcI+$6X+t)7ZIhMx}F}FK?TTp zZ4SfN*rnvZ5XbhSfK_v~e=C?R`kcU2ZVhFo87qaNDngt*d}Q^%AzH zrYW4s?MU+md9##S+geG7ksUX>fUqspl#P5k?S(v7VtEERSRoh4$`%5lb8Rip64wOU z^_e7}T$_;+?$MDr{QkbNwRuhlM!jRVHvET;$Uhq zwz5+~A*3t@o(!D(dv5y-c$gCDi~2q(niIM{^ohyI$hQOB#ZRBaZG{F~yDrasE9$-w zERyNG`i@a|pPl0yrolHkBV{7rAa4=)NnVQmH`a*8EP+*KYqzmFxBFXMb;obADx;%b z3}o_i8AVYq2n|HR`b2(qS%)_Nl2{ycEgYeJt2o}^iHDhO;~YQAfkC+VEd>G|d1U|o zdBN=4KTsrTQfbiHIu`;py!BF(eeL?rVtLRcOHpAd5iE?OKI_>C(u7C*-qVv0f`+bb zTNBl##eXm{)wW3>zH|6FMC!gU7V{rp_m@Na3+)!DWx=PB&9VGAvPnjg&C=rng-ag+ z`3i-=d;VV}l!LJR!24pkvaF2t=&8qq9d6sXm3m>aF;V+~O{!+OqUC$#$QA5?`Jq1D z?Vq&6r5I3(F{zJ}&tHLX+J}QPKVuS`LPt6y#{z`T1bAtA(JxDANB4qx0YSJNF&~ew zY`jU@24IJEbrw?g!a5S>6-RtX>YD58>$iq+m$ho=^fWW_=7e&l_`#oovVeN^>S|9u zLFe4Jm6Dxb&1Td_o?VzqQC&$%DU2%hD1%hhTG3XRu93dT>+Xc0q(qE%8vu9#=TWFu zwZUyo5!M3qmiz(B&~o}o3gu?sS$!@>V6%3TSFfO}{HTK@YzUQ7;Q0{w{>#*}O2ixQ zYcsNegOv}OlzPGV%cA)%gOAP%?twrc{!tlgF{Pa`}W;g)bjv$`7KHLX|Q5r zz8#OosRvzq=+>X_@^h_SAgm7xW}{7&MW?F?%pR4#YHzi? zUs2y)EJMUeyX^ME?|lUGLoi!)(K>y^**v_kB5N@YR*cwi45xJ4=lC=xIL0e71!pqln%ui%*x5KEm zZHrF1rL}bnxNn!)Pg@6b5&kMth~I~yIRs70&6@SDod!pjC|{H(HJ>{SE3FIu}ylx{|y(fcuw(K;ZHjnM3<0O`xh!& zu>I};lNq-Yr~>ST$-#j0q6wMD^_xy&(e-qP4s76571YV#j=+C-7nb7h*N5D=Ec?fV zE+#+6+u{$Z)GR2KAz_iO_6Q=i{5&2RWO`i^M*nn_TC370QCL}MUMAw-7~S_Swm+DI zW@YLqX>*7_?TH%m{m$7;&Pu7iK+}!?Ln8IFBC{Wb8Wl=n(3Fd!EB|%-NH4n2Bukn< z#5tiYx5^r{^p(P_dV&LAi_PpNmV|(n%DH#uwzVEU<+NVxpf_?}cbCpoIg6&W*V0*y zGRquHO+4W$qZMI+sCJtKM<{w`?iG)xh(3T4tG;|sTqx(1pZnckA_*rKXMxsD$t3g( zUu3m_A1#{>+~{UA>hevn#rLq}`0UNo58t&A#C5J79@2~Lms2uS&~Y&-Pz6MLkz(0u zmgW`WC&i0xEc`A9@Bk(y*I|++{f6H)s<_8E4S1lATCrHD^F^eIpJFO-(5Ag7oy{EP}ydkiGz#V5$WRh3pIoISCuK|x1PeMz~*s&o)$?=B5#)NYq&sAnqp7S)D4jBolO zp{Egz*i2xk6zzO%T`#t15kb49rNyXz`G0wR!2SWS=pc~q^J&!sW86XUQ;ev zobRXE`o)Vtep!C{aAYnjX3i&@VdMqvEU^{5X%?#`4QZ97U{gai1RBDE$~IhD8yzO~ z%WN5nzo$O3tTvJS;sMc|EL}flns5+tT&9zFeHPfbZj z{tt(U!Wlkx;un`2m zT7%UV9hBp)Yr2SOA$$cf%M(iy7yd%X8MuT_Mdg@&3zjCJ@3( zEGHX-B0XsZ13*~Ger@}o=z7DfFNd>@*QQ1xN87Nf&vMvt2otMC8VOJoZnW}x<5?BA zOl!w+)c>d<8TIWzpOm~oCWcpgtO;tX=@DZqP8HvNp36#-^%92OfdfrxOKY)D9te39 zIcvyFIn^S_7qDljXR?{i+MPT-r;d&Y20_~GhyWtOI_-z}MRv7<^NJ-1t8uLR%G}s1es( zW=vRUN83ZfVqHP^HGxPd_ZkQrT6kSszTMBh+K~JtSjTpFHCnZ})jEs~9|nb_T^QDF zcK`R^P_Vbxu4eh+NGcWvKFYUX5Fuk(;l zWy*o5@i1Y*$)-NaVU-I!2QDY>;{Eu+^(KoW$-k!UiVfi*?%GYwhK)>wp}%O!Mf101 zi{GtPseY?(1>+r>kqRs==w8WQ{^v8ll2z!C1X`^+3yU>YIEeikAyX3}z39wrdqUI} zV)}D`gyPeSKh2Ujf(l0h>V?+dJ4-Y-8X=*S=@q@Af7pU+XyMip=1Fy}02!`MEHYKCO?=cjoc`2!*Q z11rIw?nW^~M3Toadx^sT+OTpp5NhJ}qm6g2#nu#ga4ohYxa6jMBE?8QOJ7IQFx*{Quw$e{=MJt@W!pV zn_TcM3;c{sii)|NNeqA0RyCu;4hyx{$!{Q^as>`=HipCh2KEEMlcl3!I|XyOS*$3- zDkiNhEt~%qn>*i&j>mo&*Ry#qWPpbAUS^t@b%&<|@pVprZsMZ;d7ZY31p}VB87>@w z*g7I>XPLLL= zPac?4l8NyFqS3j@e`s*uhnT*H82#)S5@@dX^}2vx7mgRz9>jZ|+VQa29#ZOZqOe%* zVuhqsqK>=RBMF*vU9p$dg3sDv8Vf@vj#pJxkwy^9@Bh0b0EKGjdF$5eg#XB*i#-o< z3T1HD|1(ElX)SG)>@3_#ht$>T-EOLWE4b~oNJjN-a9gx}a9kK*0sfXC4H{i~1?mcNVS4>7|9L zYv^y<$FidiYJY`~BWKR!CrV*(57uC?`lkIe=|d5*9DmH574(SMtMo8aLi2;85GATk zYyGB%p#dh+>u{-yqcO2rX}J4z-v*?-QyzxkL3gIH=YZ=Qs?Ka44njt-%Vuy-Lo+VL zZiE!{lJF~}kDc0!`h(wUd(iE%KAYFwI@NP4rYdf`T@&)}GT2BoSs%#lnYP1}lX2!3 zGk;dg+}3+aJH>BQoMP-*HM$OA8}w21<=>Y3tT}PZar76Rojt|@>KTB~{^ub9@hG(Z zgJn4b`}JtcZMuoMl!t3#@>1l9gs(f9Uvm@%%3O8cqC~lEcJIE5;vvSvqd}!gpQ;Qj z!zDW&pb-efVPOJAb{KbAV=?hWcu+hfjk(VUT{w}88PNF;qFKAh0qh!O|i3$pD>u zsI_$2UXGrfIw{UgyWM85soR~!l-`*Vy83meC&nw5qqnc^pa`=38NxR;9o{xwP>DaC zzSQlPJ?Q=f-(^Y0JGv^d@bp%^`Jj4xD{2hMl{=(j;biT^R|1J1 z?X5WE6Z@Nv-a|NTj`N(>*Ul6#)WY0k?u8OBTA2ouB%QiKDas?=klD_ttawi|3~RFA z@-1CQB#r+}QQcE2Z&&!)@vSRmuP6`WAmq|e{ct=RNA)PD&LMKQcTr2n6(${*_4`*B ze)&pIsQDcQ+kY}MAi4xK8C*r3&rMV(thwl$@qh3FiV`S6zqwG=^u8pJ!*hNdpPifY zzh9Y5iZ(RcFRgHe-l431##x*3e_p6`y%KudeSc*An39i;@ELAh3PsXwGx2qww($SF z0PWeb!aHXU18xEb`%kHD*(R~XaLEh0T@TxUdy?K0`pu0~Lxwf{M_gIOVI_Y`l6>HQ zI5B;VMc9r;dXFJ-Tz+VHt*2Yp-Pe;3gFY2~#@yT!JXJw%dPFiAW-9M?BE(sgHcqRH&_eA+A__iUpGX%bry z`K^))wr0;e?M*CZl8@odbK0neQ_!aeuDJ_$H?Lg@-)(FCl}%B}w-aTJeTMwa$~7cM zcogq;Ktk@lA<%sLFznx}qQ4qXK!5u;BS&o#xB7$B!a1Y^jGqLQiFIxJc&y>`58DVvFR_)xhWAtQx54hcL zd)0LAHBhdF8D7t&b(I^E-qSyg67yIMt};-%n1OHVep@Q*^|t!NtB4Ivhe|VPxN{P! zgfVo^N@~N}dBvx zJegQV=A}OxH1ssk0n-$QLrQ`}y83Is$gs;4V2BA0SYUyN~}Q@4Zlw@b+I-Yg^m@)TJhS_~ROk zU?B6j>%Q~+GTQLPBppkkWUgn9x`)|ZCpf8Pop^ln%COi|niOY+hY`X)Wu&{aiii@+)AT$FKG?uj)=cZm>)_dn4 zN=@>U1?W^oGFdf24q0cMT{y&Y;Vy$+dXlA5G>2nI1yO+eRypTe=4gIYzo z+`6Y&hx0eC+bi6;Z@_!bJNnBNnJDTpZ{EjWlW@tPEt0I0g!@ljwiuIP5p{=aNu$NL z0&Gqde|PfvCQOB`3Y^u*LoL4Rn$1X?=Kb|a#B>|n@lVF&(n1fbnEs1~F?ufS_!X>v zR;_rTSc8p&^OKIwEqTSi~7gS-?R6^Z57LnaOZc5Bme%P zZalAt`@JaVxC8{mH41AjR?|&~RF5`PP?D&jPsFjG28qt(nrUtu8G-v45#i)eXZi5? zSp!DC7ggB;-A=fcBH)hzEC}Etv~=nb@|P9e2MwcCz=zUMHR&gzGr4Ejg@{3 znMdEZ!Q1D=?4{U}o6IaO{L(a(oC_@;KaUI<=VD!5GOp~%2Sfqm!=82ZbVbAiY2UIv zKR*Zdp&S3H<>lqS%N1o&0GrF9nW&dyrD*`4b90q{KeLNQ%d04(dS{w~)uVoZl3`x= z>`XJooCL>gAeTd)B!nRvhDu#-s|bI6ap+TalxG|-+W({JEZd^&+9<3@cXvw*NcVu0 zbT>%1bT>##BOu+~-Q6J_QX`!sF(5HC@BMsu{{aVcAA9d>U2C0-e6_tjiRIMf8@Ie5 z3DHlH&n&N9P6UT{{BDI*dzw^xhOZ2Lh*nb8&dcg7;Vlu3>cn7E2*C9hL$!~mv$)t+ zOn~rTKcj*-Og+gSrct{#OtLUq9qJ9$KXwjufhtUr!-IL_d%1%RHrIAw?COg`WG`n8 z4EvloiLl7txek@<`FQ3_-*D6+S=Kv3#*lu?Y^{g>m94BdW%zK6p(IIH^9QPtFz!tX z;u_nU0iTCsIDtbxM$s;!M?7OARv0sX?u}?vV%l)s*VGcLD^a1!S_Gk>>y1`KLjOs?B8=ISrZj^ za%3pp{jLif0Tu){U?3x$JV1A{yK8nA2vpDvLEL+cph{;KNGlwX85$dMFIV!+tzd=+ zDJ4pDmcFdoJ#YBEtVWtqC=N9>&J&%G`5;Gy7yc+#-GYRv$WJ_cqa?94L zJ}2u=p0Z}#Cg^fNGAbCxovC>P~L3Vo*|BK!JIlSXSh+5r5P&`|!DJk8HBb8OwO_$7EY z*32B53+f*f=z+FeVy6m5ZqJX8F}-`ZC;M2z?`GL2O6xd$WEg6%N> zeEy(LFk{12UrFsYw)W<9T_NlYyBA@FynA8Gp-WVDiLJTIkf#RKu-SF)d|6zVF7($& zx)r9_;Im4ZN=kFD>j1n#?;<5v*)C((uFW}|LX5uNuA!Ux%og&FIkKU?msr9@0$6+avcbM*A{lYIB6PYJY##w9f1Ux-F z@F&(8cW)o87@I$CYb1$~gkb}E`o+J4$+u}U8PpXqO1bFFBD~P%Mb2_BPm>~^Ge?2X zN@WAH-45UZPi~k1@q!htcDl)rFP1-r(%iGbWvgRSlr&W2mXu_}-4m7{RcJ^=GMff8 zUyjUu0=GQLW1K{ygOjmROwBL$!HAVeP{t(21ZgzExr5@ArKZe-iR@PJ$jk`Vd8}W| z9444Q-AbX)z`WJ&)G^Y|fweW@f*VJ4ci)e_Q5E+{vGkZ*H!CIP@KgWo-3dn{+w7Zw zaT3vgT$s?|;Jl~&-buub1Zmn*pWzoMCb!a-#bQ?Hs7YH_*@*n$`r4W2(5tPINtA$y zzHGG@K8^&ja{i`uYt2i)$X{I;W6A#gRhgvB^XVGi%SPX$7Z8x9P1O8t@l7dN6tL$z zLZK060+?dTjUIY7(Zq*2ou}^5#b@QaAkphd%Lis;5%DzJ{*2zkET`U`rzih%5+%G& z$Tg*{Nk$j7{Ol)3*|OlCcjiJhU&frT@XL-Hr-Bs;rtj9C<3Ag26%3`h*ob!bZagbs zaLA7DRo(6H1#O?yiIy$xD5)qbuR8wMf0HsfNxilOX!u$l&gk;|3>Y8{HRHOKp=o*V zTMJyz#il0izm=4$RKbsHm=x!C$3Ln1)EkrwbK$Lv&5d&}a`x6GIVnNKd)pfg!eDQ% zycbYU!UV@`^8_e$U6gOfC)weQn)KITa*#&Mih0L3lq2_6toQ`^BKlR}tpY&Ix?f*} zL%q7a?k_o3-?-NnobaFWt?zWZc;y|BjGVen+y zHr3!n3O(#jk4HO6cTE>DR#z@dP|SXJ?(`DmV3K0PEP)z}PLeqoE;4=jn1GaYe_@Y~ zQ#>eYq=WV3l|8mjY2F2jAOk%nCssi8{}vYW)5sQ2rW+Qhj_4^ZSTYHscVZP$VC98^ z!DOXP0A&LE^>$C}4y0Z6drq-rHoF)KfhKLwtP@*)pSF_X>x}*z%CY~4_~aW`#zq(U zS5jmo@4pa>dOTU|vpIaLcdNZnz(9gz))SU>l%*V^gpGNkXjP109C&Yenj1QILA@km zU@+mjm;dRgupY{B>R;`Wl3>cwF%~A=?-`m_-vlaks%YL`$qSJ0(sS!fmr0GbY|sVR z(lMq;UG43}@vac>AL&dTKW2ev1xFQKyZBiTVY7DsCRu@<65)(KIu%!f)Gw-X&AF?o zJ_&@+3Z%WIWM3W7gYPg4mLi9mBIAR7U^&oJ9~vry)tA!S>UWa6Z}z4MpWlz%>+Zrh z=f$z#R$vDlvRdxH^|QkfRox1_25%+sRj_kIewCeLT6^7jhHq@{F1NMcfS#?S+l-nF z3>O`A(jAd%Wl;HX8#{kAnfO~`{W2f%H_^I#_K;`%nc~=GjU|>uZSnq68l z%va>{+}O5^Zi%KrmICv+pa3KRoYLS3P5 z9`7CJ+M#v6K+4FJ^H1hKh?bv@esP{&3Mnz(ch*7_SG#f9xN#V670EciKaQpcYH68l zyxq)0yH8;?+r{&LfLQB-HI#n=vYZ^ot9Kfk8(JxJza^-e{rG8zc(Do7Ghtv{dNG6T zr`uE+@62`g-ILC?uT`?Esz~Whcp^f$`ZyC<$x0hS+yp+0C{h-}Es4oisnR%l*&RU> z^?u#pIMuY|h#T6?p`tAqgcI|BGiY{UV`x$%Ngy4YjXLiU;H0X&6NYNU4WW&WTs-8* zpcxH2<^1hnKYq13w+AlWa&o;E4qObt=lx!!jV{TlGK7b-N^NGbufaqDhk?u$;4~nF zHuJ5?|2hXDm1`_h$*?!-3FpII1+44kQ7%e z_P1UD-^vd1=qZ3Bif!dX6_!6C#)!77j3Oo}8>PTv%Gu9uxa{429WdN0i9Wa5D_g4Z zFPGE9pIa_(r=~6U@@B=DGb=5dl~ABgH+Sm(V9eP0a$oRd5_`Yi$VrdYdWc!TqfdR* zhI2z;FeQw-HX={_2I9j1`GEwiwl+7pvZfIoZxbsi zr)|{DJoR}h#$o5qGLBsomU^E}v5}I`#|Vu#Z4ZgTx+%%qh349grg+I%@Vw@k3wOFA zy}6L_R8Lq#OF!qAXQiYKq-uiK#5Jz(KJgqsM(3u}Tdudm>1P}yJ~dpVsE2s1w(dM* zZSG#%i-XT2PC)Lng9Ry{87=Ff*q$*b=f_?v?qG!}N9nC<;2qZK7|CsjOsS1pfM8j{ zj2gcD^_x`jpP~0#zOFRseH1b43MeXj7y^+F_Eg0;>L|^gvh$I%hyJm)kF84HST}Lc zs<(Cnl*W=~eUAUE&CnMGaJIWzp^22SO=^_T+ZVnD-NV>K_CRO@A??RgEiF}T(#1A= zFFWlMvX|q8z(FLcZkaYPrg0EZ)$Q1}_w}M%Ov+*8(Xx?DYAg@{)YI2 zW`d~KJRhxE2)NZ!C?|qM9G^o=i?^Qz1(vH^HngQjRvila7bLb+EdDJeaE92~5T78= z{~wBRz%#v;mc`oW`&7-ZiG}YkFXIgY8I|uFf|4Ic4k@)?=Q$}t==4uqnfmj9sS$8i zr)9GrE@_c??eQKR9sSwdboKNcy}99ST01pKQ$!Sngq9ilwSh4tzk|Wx&;pqY{&uo3 ztf;z7lXP?ZUY7v{nu$HQpG!tcTc$l|=ROeA0jlDkGY#a@9v44Lso?mdr>~X_{zC(2(!^fA4*E!C@x-HLj-{! zUleLTwi{z{0;UJ$k>qi>HY&Zy;Q57BD7Tk@n?hHIbz84>SFdGLuXP(ZBI7epyLyQP z5iX9N04)N~q*De7d2r^x0*%_+KULq(2K+6*{jIlw%q2$ zC%mtxUO~fscWGj#Jso77k3bqMN?OokSn#87^#Z;Gg$?rpL}aTT(J$IwSEyIiwn-k_ zagj&SN<%8l8t<7C2e8o}sP4NRc+`HMHr1s837ssQeEkKuXMk+qjfrIzk=v1^>XxX~ zC{|+-q>n;0Al6X;Kx;eCuR5LCEFd_52~T{1k~6$>C#V2OuQ6Tey4_{3>QY_`PlriIT5+-z$(;4q6j<8jI zdtm+$Vw2*{E^dd@^o!=v+3<{IMmH)cR-9+ z$%LA?`wb!aZZ>L+jrMROGyjHT6C=DiCM(H}y_5e}=u(b3`HVch;8o zzOc}(YvbQD^!ZImnY|YrjdHvG##}m~f`XH0b}pObpobn!ToHJqs4D4k#-+op*=+En ziXho{z_Dj9jp{Y?U>B}LKC^Uhe;*Et04@cN66R%GV^M}g#quh_kdRiCUi79l{2lVq zYaD(ZMF!rg-=IYZtA?C>^%b%nwUqRh9K&y1`oF}+rOfVkFPqHERq=($@76mrLqD!M zU<|IvTBSV1c0E>^n5s@48-%wJ=!cuCF4hiwZ7#>D{q&F|q2i)F@1=SS!6qOI$qMyJ z=KYq&q-PS4a0Qz25ZE#`B&!JueXcu3Shr`uKB_54 z(nbdLE0T0>ijwm9gbwY74}D&aIipZMHP%LnMcRX}N#^G10;NZkhSF=>SO}5`H7yOFt|J!b=gwS6m|>)E?)hG5?-qLX^6rSj zY6~H}qiN-?5#p{*`bcUjT07y=A9S5`Y-n)w8?xCrmo@P5;NDbLlqy{BhmC5wTgmH* z7F4p^cv2+$1~(N@ZVe9ZVb^CM@w*l4#}DiyDkk?7QSV)g~%R(W7BuD{@p zapOL^v4L2@;#lXj`ls*E;*j|v-m)UYPH6{WeZpC#(}b_}OnZF6TzagtLlS>3o#JYd zq$^MX#EiYraMDKXt4Z%NxF{UTz7)*Zfemm8|4SACd+0(Y0YO32mJL(R_DovrVo2^rx(o~ezh{!dta+f{YF`BQYY%kX3qfN%q34gXCrE_qA?E=R0{x`2dK zA%=}AQ{siSTn}@btWP+n?*o|U=7!%{8f>)@FOJwYk=n!}dGpd((x-buLd`V-Q~Xl$ z&ae_(%)h^nRHNj!|Hb)_?vf&(VJdfxx;K<%iUN9zc}9549#NnW6VyuX-ngeCBDxs~ zwJiEjwR(gpD&$Te;&dxT8*LCGEmUFt+{mMD2?$;A%5 zp{F7Dz8NYF6-U>?Y#pkS6GqkV%r&#%B!n_+ycv}=AUUG5B<+&;Y+F-ew@#DuA)xo- z*{?WObl(%}<6&(irJ2xqR=AixTdhu4X0wrlXez z03zjoag;B8fdnQ$IsuornZVDi{shgKgeGea6Vf@|CJKTqhdKYh2Xx5o`Gy=AO zo#lTM<6S*3qK?!90jiT3Yvzspa@PQ|UDH~Aco~yIb87Vpj7F#y;Mbe!T0jbvi8n+~ zJ)qWwg@%uHg<9CbPJ%Vdx{A`!0Sq z65aw4ywEID=nBeVkVdzSbL{ZIoF!v5y+0Bmuw{h*B|~pV6ai6XjtrN8OfU{KL14MRX*rd;HpIk_YMT2XrHov=I zA_z%nM8d#uf4_a8;G!;?4vh=<7g)Z^ukeYTPvmETw1CgbE15^#mu|94*D&?b?O+Qp zoRo&Yc_mPam)vUxNarlW)#2<~6;n;eGi(A-I=|FtXJ==tY70f!9AO_8G}(k`;TF;H z*H2n2?8Pxa4B)1ng;i6<9#5NslWby1P<=ATN~q%=AN^9TkKPI~NB5W-Sr7{zCDK~F zVQM+bNVA-n4SKm^`lOFJRd?B`@B-0MJz1c-l0=)KZWS-NhYsJNt4CNB0)v<>6)r6u%RiWQZn+)e|{7= zDdYVThI01t<~1LAAGO=HdO|hRx-DZ-dg-_1rH848KY@-1x%IUd5Dsp$*fnS+^6k+7 zN--C;wNUYWd-8>oJ#rqqxYr%$KjBqj&sF=4mpRku?wJyn2i<^II`rdt8zd5{ZewK~Z z@*81VD(O6HGs5Fob9wr_9F55`(bulTMM6fBxyy@>e50*EVTQ|@M36mxjq#qff9(yL zZ^7QPmyAl}kR)`G6r`BLM@%?OVT+srURfVHh~=+?#+ zF!MiMAW=C#`g(9E7}Tu{{A$&4FD+wdY_P>OU1bwNj#{AEULQLbmixC@;nB5$`E~wJ zqmXqfu%~e+T-y9-+-o6fY@#?$f)VwZ*N_Zu1t>j}Of9<-iJB0H=uNdy-lG%(tf(f` zy`iS0+@3Z2Q2@OWy7YSb9IBxfFClOeiTJlcZ+*U_Sm2Z`A!7jIT!)KESHEfgd2Bwr z^LHx+(IkDFjjvyw60k zl*Sy%5EFW^oE2m@ZCp0Fj1?sV&25g3mBvpOJCW@}1ezz#%&C%RBD37bStkm@kw#dS z=dvNYJpm^BVpdfmib(5z?8W znJ1SrK4!^_dMa_&g7nZ61NNC*&MYOLfF4N#`m5xlr5J7-zVXKI*r8OYK8@mU(pM1- z@q~m{WQG`VA{V+4aXR`OzzbTLy+p(s=u_F81U%tzz><;97@E`%C8N^dg zshN&;Ir$-~QG@?`0gCN12r?ypEZXdf2%Kv`YU{X;gscnnT=!Rn{3 zEdUBQM7e&t8xuR+OAx~>v$8|{?W3O6+uJ*!FwzC>om{Cik|9J(f-}y;deC~+dcecl))KF)8kLp@E&93_asmnYh&S5iv45$3Q zgUQNx93jW$OEzfl}3coMNDY+!>z$SO^eU1ArX&+o4$PeOQ#EfX7Na z9XAGBB$KkU7aHm%JuK@5PVN1VP<0fN_gU{N9}Hvpwi~ty7$UgCE}GBcH#5qQSunFv z#+JM9!-eih-Hx@77#C z6R6Jr>_Lg5)yuOQ5@Vz$lUGAAj(2AA+K*pkWhno=5w=2`ZaOOSzx=0>S-WQ@T9o~f z!!npfK1HCJ%z4xbg%eM+qvZIZpT@~^KnH%+gH1@n&94f9f`6;0`|+)gs3*_D*u8{E zrFWsNwtvY?uNOPvWlwD|a*)kDcg@#k_u%LX)I{7pi?Coyn1UeTflPf7$$4JG^E``nVlXnxwKpr_QqI0?9++b5l+ z4j^EM5=v~-#`~YNGgkqOmJMt6|5;{r+PoAQg5Rd)Z$5Ww;#5MAJQs6$@$x5LVP!!B zGOveQRH!dstOlqhzG`A>#hFgIPzL*{j&IECQ^QazL2MHO{Nq<+br(YhFS}(yqs^M9 zg*-68rv2Lrgnc=-#H#--i}l13sb4Nli_7m7U}N z9`+N#Ypq>KM$8>?R>b3;O!Ul?a5Vjhzhv-#cFW<@V@71%4`uA_jiLGkE~;Dq=)4Mh z%OEqnwWRI&g#*`1B+3wRKtVAF1zTQq8KonwoeC{kVCvdk4Z^%>lV>*_En%=32+M9Y za0$3dGHe?XP~go|Ps97wSjuYm*H_+9g_%*K5)$jnCo@HOJR&&qFXZnvb8=HzN(`Qb zn#AGIJRfMfmcn^P6mvG|)pO>V(#CE6oVQ*->4E>rF?&d0vi1a`Poyiy9w9U)%X#99 zYFi;cx3HsV0(XWW{P%d>C%I)vcbHdp_F!|4WjcoPgNYw%F_{D_;Q%LO2P?0=4lbkW~!wK@QA zGFfIMq6He6+wW}wfmDesO&iNk*JWZL?2iYjaHCWajZ~|jEtZzalQ>@rrX_3FrwfP# zJ-?Dw;T#;7cuZKe9OeaH!T_i9L+0Kn;aGEbBVeAhuWl-EsJw4Ju+ldPm>AjKj}P7%BRax_-ly+@Lz9zaxk zR3yipQ1WQO81ZEzBl~xJ#}>sR1LYvQAbJs{cbN!ld*C)m?1EjKk}l~8(P+yvKq~fP z{md~q9*Fk!*tYj}ShRGSFWS#Zi!t}O;K<16Q zg_XE^1d;{H*hVb-a{E8B8sn%EpL=%73x2xg_JWQ?~$-r{w?Jd$WV+}dR%fYVR#>P?HcG| zEnFINUr%XdXar=mv4Z{~;gbRfAs{8EN0r3)*=F{DB54)S7g9US;}k1uB88U4Tj>zXz_R=GV3V3~`5?k&O-a5* zkAt4U7)Cr+Wp3W{eUL??YPW8H+;g#&i|F1;-&4xX@92YWD}6#6W*6jYBxc^_A^tY6 zFNQT7Z0$yS^VR&qttXGz6w3|``mSz4p(p&Sjw5F3ZeCqQOezg#Gkq`oL5kKCm6`d` znFmkgD-v#toB$9Zsq|zHu%0Pss!^j&l&%eb=Mp5p$^JHzIglXE9Dc#OsUu*pZTQyc zeF^2$$0SY_u0L|!CU!%kyE((xl)Df0@~D;?Sn69 zP^Q+3V*eV8kRU)i{f)Q7P%|Ev%0BtdoQkZ2@jqjC)-zfwfvsK z{QTllcB>_6r3zk&bpa{vAIlxaQ$wH2d6i|eF=FwgWfMPUm$(D63(3d6j(u1V43?2b z|NIc$MUIA!Y|r@|HuBXF}D=cMoSuEnnk~Zo9WzuG69?T9vh#WAI zeFbf>0oMirYv@lCzPeRjvcFNI_wgfUqn=>ZW0XY**VKX#6TFSXC&!FD7Dq3y_OGK@ zflqbm?DCsFP>0eh68W#dN3I6sJc1rUwY4kht>)_5-oOtny-4cIn0OFo=F3GFaWEeh z6_6ArIA4NUxiAnq(I+Gv6JpLWIozmP-=tMVLcL9#QIFGEQ+93QQP+io$;g~Va zm>yREk)Q*YLer;Hrx=o6ANyX2y3c%$a=ZkD4bUYO6ApS{n`jX{hANyHh#w{y%6XDs zB?fiJ?wpY$+6&qSs!N%osr@`az!ndfbG$ZvA_369;!2aD)5VW6{mTB-H7nvhPMy9l z%zRdP`yv}I*(r?tM!#xQpT%{uB7_s9KSn)0>8^1ZbR$2(* zr=?&&2jn_c$cF|Vs3qy6=eNoab5n7{lRQUm7w zypIj~>H{iveD~Y|0P{b^(kGuz<>fB`1pBDaozgt70}{{Gw@Zn1*m}Rf>+$FZ#No20 zBPJ(x%GVz8h1x4w?9`+uo;N6BAn-e9`EUE1Ufr@Y=zsD5K&SS9@nFgAd?(2^?Z3+c@!lhy36CN64KDg%ROv{*-s3+P-4hBpc6Pdo_-8yCr(xrf@ue8 zIR7=rf|?t#G0T1$W-fuTH?l~a?}*#u@BVmeb2!dt4^QsBBa*tBW1RL59i%pr(l0dB zrNS;CnBx-QHsKgBb~a6ab#*kQ!X858ne75!pq`q1OerCAU%KiY`h8w<`O}u3XXBXQ zvA&GmcYz9V1%iCKmX88L;e=QZ-|Cs^j>MS#y_q>>&wrw4A!9k6eZ;J$#QT#2|btXOwVdQ!yx+H&1xw6W78w7yWbC?}~Z?BogVj*Q)6bZjF04 ze629$W#_4*H3aG7>(L|lX)tK@dt*kMI>y6#JI6Yd-Y zelY(4{zK|(kCOeeDaa4MQd}$c@it~8gyJ{}y`O-g1x`b0Mmgtco z9JL9sya8E-hyL3K&)1Q$n#jcqE@&rKt;^`yOtQmmikMsT-e<&`5moooTw8)K1ZUXo zBKWR&-EtDv>{QO+g!_`9*T=1+kAV+5q1xsRx^uASd^#n@fBo2CCzfUXuqCJKmsypH z`zVf}h@^Wh(Mb6$^>f#BRw>tR3KOB6-JiuLe(SOxif*i8IqFIbNNdHL;fFF0-&$T_ zc`wYbV|}k;_akX5iV7H@C4Fu@URkCT|03ut=g*7$K|;7VQEGK>C{DZNLjfZ?F;NTx z;H?FK#!U3bK%Iz);L+r4-~Qo0gk*J>fSb&=JTY^wihcy0fvT#N?#EjVqae4ao3@7c z9Dwm@!C=e)7@DoRMn{V(VzG!t$-Hj|%sagZYv_R;%_3BH#%?nR>JWH0M5SI8o%JaE z&^kt@qKAK68M3LWO3u1}S*(i^FY&>=AxsK=FpZPI#&{e!{<*eb zt;Xl*o;&3U;f`|Af#VD`Ln3duZO+K^-NH;K9nBXLqm7vMBoXc?R1CYJ3AR~OGu8@{ z7c52%ZIxgN(`GtQ{k6NBNOtRQR02b&TzJc_)*!$_KrIGEfD315%cVRrv(G?3lzZ#n zbm71eBY>H)Kk6~I;Ph|6sFM#xVw}x3p~39-Y3~gVPnV-fIKFiLU};MxbyC9<2)a9# zGW^61ATOwZs-X+2m!a1YKp=Q>dU}}r2!O9pbLzIZ=WkUH3k+;1r}+*i`k1k(gK}Zl z^8D>IrHh}82@H$krox!J!p*SY86 z%ET207L(Cxv*IhYu_O&Ci7kiyg7Qz0r%OEx-X`Iupw{PWQL>FT?h~W5*!`D6E*AK( zczHSdl6m$wbIm>^F|#xG-vN>F#b%dNlP+s}Z|}h&gKCg(m*ongYwvupn14_Z6>gIp z0*eTpdMXo6!p%Cy6ns>HotF*7`v~yI9W(Z+tTf*ZN)P#jlpS6@brZbc(>NmFjIJ>z4(Shstz?RD@^7^)z^`=XU_q&9Ht?-y6EDhDZ)9#--oU0D* z+K&N48UV;lv79jD8zaH{Swi8^WvDt!J<5N#lB-7yczv4mp)ybRnrpqItMTWORIH*!?rkA8XZM zd{p}1^Oz8hBThOQ0CE+0F%Juw&)~k^NS*$hSqfm4l`G^a)l!9h0Q-pdvaj+I*7uy1hf$q;b{k)r zE%J>k#yhUW9?METK^)U(XGW#}J|ZV%X z5*q6s*@~gYONLp=7c??`qT_#k?#7zCVWps_ z^E6NOjFT)kqVl>sd!Ms)?~t3F+hEWJ+yLs+rA#I5eSKxsi~|By$RcK7X!xfEpKN4T z|Bn(9?QZd#;oILUS?`bAHg~pOCa8eQaV~V$6m|O*JH-|5oavDJ=^vVD{;(ORa{&{Y zv`jzfyOn!nI}7xduJZUQ|4J#|yi_;>#yb^r0 z=JN^F2fu3)FZJL1+fWHhwq(6&Upt_r)hBlQ@4#*IG~ZVQMTS%^vWSqO9yPpmR=b&lAL#J67agxc2xO4?~K-wf5{^?mC^EW;Yv`;;8!rwGoeY7 zoT*8|B}TQPTgl2R<`!&)_qehu{q0I;LWl_QQ(YQ$mdU+K=CflCwT_EB|K`(P->@Oh z@U-aO&Z8@5`EIKz&!F8Gv8=V_96^IA8^o zj&eZ$m##-eFGGmHXRIFQ#(gVyebjh#8 zb78O;TK99%_wM1OPS6hqJ2t9gQUEligOka$?&qhr<8vLSb||fGoXEm4!j*tvB4>)a zE=|LFm`PM~s1G#bFDAq<+H7>Xr@w-`I`Qf6RbOFcU+K>aAYoT}maa*YcO~{(_ByN* z2+cEZi+DUqt*djamuS2N8Enn3ME~}b4lZ)Q?7=Nw;yg8#*IO>1QTK_o69RS&CdaFp zAxB$}Y%jlGpZc15jd%RsjV?I0DxRQ}#n5kf%Ft*f_9;+w2R*9d1GvIZ8S0I2b!(@- zzkHQJIg2d}stehlY>6nfeTz|t8uKqx@f$IpoIaHQvfbZB)rMhMm(A9HURcegjI319 zo+kWYYAwWsA9tn}j%oZJRI6!k2w2{FHNUHeCJBhEdZ57d8W1AaIKyS;^sm8*$F-3r zNI`H5LO!;C!a6Mp3r@9^E8xKmW>@DY1;xctssC2MFd`s^Gg|e+XvaJgmKSQa`$Syq z8oXE?&>vF-6&&226s)Q#I0Jd`#%azII_SGMjno>y4;RkgAc)?rg$W(zYp zfAjuiQq`vRjp4zx1cei&fHXg=`YG)YETDFy*cY^(*pd!>J<)Yw^E!#|@)(+aPOSoC z)Ya*9{~bD6ZoVGeqjN7D`bA0aM{1>8^8-&sFzvXpUpU-36*63;8OcpKoh0#d`}~`Z z&00|f?TN|juMO^Zyc*lF{qB_3@Plc{#=AAc?zv`_@9I{&=5io#b@JJB<7V-mgb?%+ z?fKM}{4?^x?76%87jbp1WN}bU%V)S`R|!3o;zphg!zIa2dQ-OG_+Gc;uQR?Y8dFxM zUlKC4?Wf{%Z0i?jq{W*~m}5}9M?4pI?K!$xVo+dbXo3Igf`&U^Ghu=C`}>9aH^1$Q z)pdo=`A^=K<*G31+UYs9$x=LPUm$OpJCIokO3+9L*W-eP9G#qybcVb8Pi#sIS9mQ+ zO#aB}(SWX%6tf7V7eUB~*z*BqY_MyWb}ejiUK37NIKW*%b4;cTs#a>dse<2B2@b zVnH(ySMe@1z80sR8$tja_;iaE)W7w7YTn9VWW)IBd{HJzF7CUPkb2Cj9@708z|p(- z<{44RqFV>eVEZsLbMyo>@~T9@CuXBj3Wc>-Sx47Df3w=UDGgR8RS)0G2j!z5;yOXO zgSJ`GG%&J#)>tYvnlU|7m?;$uGUYR;w^?)g`}OmfT(n$<8}GamfkDv z9g~Wx_q7^Xw&|mUO*o0m3YG3(+TLWRt5q(|;rEprh%7m-b2Xrc>&7J$d1XQnkY1kMSf9B0^+=* z#MrpZH}g{l!MiVxAQ24@Lk$%xrUG$5Jg17_0%wZMQ|)=KY%xjnMemcll+S_kHm zGWC#2C!>phlg4hMd8(QOK(Fo;1FzxAqvLub$4j~#pX8X zMzX||_teTDa4NA&;M#^WzA%2YxQm_fvzD?%wfR&^ zSJ)hzs!&H8i!&GDu@mf2S**~OO<(e(U#v^IXm`k@DJ4%eqItAtV$R9MLLcYS-p(vX zg!=w50N~hv5_DtA$qw-cOHW6BAI#)H_Rw4CBKLR4#osR(>kQnUKB5Hs(2yWjb<}^& z@5!M z#wrMSxzx2oOfesbZ)F-l*4~ zB$ozK@e8GLZgrC;ryu3YN`3J?T)hj=o(WFk*A)T(0dEosx5r!w*;Ksgt>=GK$C(t# zG2Gu}(iv59>wAqG)@qOnK{J@yla1^)1V|PEc5GP=L$0{!_F<@!-wn6IMrWGg-H^1C8 zbC|s6 z*yG`bB2SdhBOo{@MjRQG|9b(@e|SeH!sR68rNo9I__+s~cT0{sqy9u(y6nxrC7V_? z88NMQV_6ccf$D}Nezz0g6}Ej&&V`nOj=2o4+li|h7C#?u3`x8YXZ`XMn?vExQab+C z1`gJ5|H9tU-GP~ztVorJG)h361O}~$1U(eY2GV;oM>2z^# zW*pR%1>JcN2Qs)%MgT`Zrrk&#UQxI6lY;vWY;Wvh80{mXcuJG$6``R_6+ul3{`wq# zNGE}fsdyL4ijoj)kK-fs%&p9et7#dMTl1R*9Q-FYnZORA8NKnTvJ#W8h-c}y+K5k3 zkcyTTAW6fUqXS3w5Nuh0@zz0g1(g?F$jvlAB}u1_T@9BohMBLj=Y(bIJo}DsVAaWL zo&N$lMyzlCw&ZeI-NfhScU_0?4Z)RM9Cs?wN250b2d6+)(-%X-OIXk=EOet9_aF6x z{nVkX@U^Nyk&0vzGy?woo5RND=D%dIr-01>SU|QDW~}?a4YoX^G7B7{G3KR26OuF@sVuBAkfG078NXca4XVGEU?IrcS4C&k)M6n5FT_KFQ9lj@?wpA zmyNMpF=J(qSZ`#~BT%17;l=*0$F<+lLgX)WNSbo*LbQ};noVpdo7Q`N8&E`E)ox3B zS{)z(D^5I3dK-=^L0w;T)+!p!$D+(+3uUQs>A&;m6Qj`3h`v+r{q!k%nBRF5G1&W^ z(Om`!o6q`TDwI35@|&=VQ z?Oa}HjbFY#kFF`GU~^a`%gP|MK8bX&jqFyr%4u!ETH`_f5xo-c^oH}7qC82oFY7`M zNk>%a%7TJR|4TYoQfX5Ha!~OJZ;uS~ep>WKAv-lD<NvDhTi!p@-6Su^r4!uJ5v`Z}3b6v53yW6F-PQIA99 zPj!NB(tyZ*;Lqt>Lbhu){rSX+3SO=c$DM35XBfGaUt?M*d~(lR`imu_cE6hhI^B9( zi(ShJCoHd-&XG8o7_P9UP3}C77(Nh>@l9iCfu2kmvDOBr6Ls7LeUJ|shbHo{Vv#KG(ppE|Z+u|+< zcYvq*xZEx7i{yJ@5FrWRscnj*&0g)kH(Di7*#h3!CS5fR%ji-1i=RJ&HYl?Y`oL)s zYBUM62WAb#q#buo;4@EePawHjZ(EXkblI$?^&dwVV8wJdNLHqKyd2kyEvIhy4y73f z4#Z%Il6vpTD=3~JiLVHM`sWONcKHyQ{zLd+eG)R#xH<0`Y^T4UsSBZsEP^0|iyr7R z?#hZ&MEw1#Buxo?4UQbE_V9#xS~7ibWJ(B##p@E8i&l)Xp^r#Jlnqv@;~qH5PL ztkR82cZhU%m!u#iDc#+j(kU(7-Q6jSGz{PXLw66|&0gQZ{snU|Gi$x?^W67!omul{ zPLxGRDKM|VW4Z_&@5_2tWjfv^9x(e%3(<>0jp;78Yk<_f*dG9awclG20W@pwTb#{q&yJTj5=1dvaOZ2NwH# zm0DcdRjabym;qv9TlGgfCKyzv6LQ{kknCvSu?8;pe zMoUFhGma$!Pg+MOr@-VyzzGrZjZ0Bd4+?6Q^)oR3sHTpa>vyvtd(KRQHCJ0moWi#X zPa+tJOsU*^;qbgGYMTY3SRf2O=QOp@rXQLeBfs2Qd+p^DRQH59IXR77901UGAC9+8 zxIoU+>+w*X;4@Kl#zef1N;0R$z`Fw)b0}3j;F6N3sV^z4;5B8Sh7f`!X9-qy^|o{- zee2hkcs09j&wZXOUf0Rv>A#k9U+S_??wMBf-U|#7MW2&pr0n zE+o~HI0)(#m@`j=rm8Y-UdDt5Vtp$xCiYt_?3^rQ;A`AyL%dYE1TM54k=fEN{9KXm zt(>?8b1^151+0VZha=(^AalkgtKJp9uCVyi_RRJkzF0YJCD!>p+rI_pf!CXWr{3k> zYUO*>tIwvv9ftBWQn4Pfb1hm%j`Hwoew5hqNDjCKof`3f7*SLizvChHMEt>v|FAd$ z$51RmpIyhn@d!m_oy&Kfu*9b^Fqpkr=Z zNkq@Rq$mkYCIr7i5pKZ?w%?Wn&Va22H{aW!LT)2AE1j=uggE?C^%4;z7MxLDL+0K2 z6(nX(@+wRR9Vsn8l77dUH=40CmU#$r6w^1vlq#{bclYeR?1lkBqI)EAoacuOFU^@zj<m?3)XlyLR9t80ri7}ucZiKJL6j{i4Ps!NaeHHOk8c#4S3K*+p%H6&Dd zoR2@f-fr=&Xsn>m-%%bsHYo4<>$n zvob35Kd34BZ+5-*|AwM}mX^o#eN3hmMYn%k5L3ZH(x2UsC0E^l?-Qk85LRO6Q+x(i zJ|qp@cQiw*0r6nisX&@=Rmoa&S3Leam*2g0sWO3DJl&qk8aew++AmCU0R+y_bJO3e z!LF+u14E^HdUqM@{Nke^qw)i$)##j6V)J){O`s>lKSZKswJ`7%+;C9AINfL#WGAY` zEe)8p5+&wSt9=c#Vj|lV549C?Bk$yOf{Z_^?NIzY+M+AOgMSO~iSM%JtB&0}<2_Sw zWmfRjxXayQl|-Ih)6#7#!xT^}ItCSK?)>`!SmK^{Pk*1YDC8eIJnj~|Ubx1)E^)a& zO#}aLD%+lG%3urNjb?5qnPOv0TmphE362f~f%)74g)nSGi#Tqv{t{h(2VMNF6I*?p z-zYY+Jx{AF2GA`vYSy`qj~Hq}q`XygHF;0~7rc4fQc1t(BD>xA-aQgc3C5nVM&LrR znVzvUghmh@Ak-j}M(HUPf}olbEv_7|vmkwKJL@jIT=ZyCaXMSZ!A2L0?nPEmMOtjS zA%hvF#`wd@G3F!ngD%r;?{Ywb~b*<&ALGv0no9N(!XQL45=7cp^XGhw>hl)frA4HJ4*yGTFy^`85D7XYW|YfK zB#fXmhQY>8R$DdDnwY*m;o2#NjIbw;uTJ3`nyl|`(?8SpqibBfGrUwbR{SPKkh7D7 z<0Qu9=oams?~OLNgxvq|kr}K`P5V~?B@6eID>g}@=aNv-&rB6vgh#gC3!(!kRJ5x# z;J9?uaqpS-MS!);96)tC0Rl0=!pph+FV~8tfBe6&;$*(+Gu5*~@@Fow=xBaei3ty@ zl|rbTwz@uvn4=ThbBzQGV#eu9I;3APq*ZHcUqNygK9uXo{l}b#1AVjP7{yF|P2qxl z0xhHeh7URQubti9usI!9_Px#XkM7s@e+IS;solF1>H?OrjN&SJ6+za`oA;M{J^`j% zXLG8%oTep@Zw5en?hs|-OuocCUtD-pg)2*X)m zJUBVYD$Lpm)?xbnvbgH=Pw;&RTiMTEohbq0E-f;m!y}&v zo67SWh5FpadvSg6``;^9ZVKIeEG&~Bf+^*oTt{v|+&%X6cQ$Is z(V0H^K<_R6UW;aORDP#>a0n>w8!nQkd+&RN)AP2pA@Pnc(Vn?F5A$>(OZd*LgT8hE z1t9&D-Od5K;Oo8%!yTjIF6Kdrafe}Lf>{RBN6IWIX|qCeZr1w;n8OHXu#56G4ec1h zX|E@El0~WQ;bK<#?y#jVx_hN585P>@fyoueUM~$x^_YxoF!dzn?MXAKNCx!LbwEuC z=AFmInmT3}(Y%o7lcELT0+CQ~?=VF1YbRVbioU{EZA{-2E@=vWFJW))!^DGZ1>Vdr z-gYX1AvOh^G?r2UO`N1|-DdR+z}_Y|kaxaD3P0aceIix{e{Wg0+sF@?SZl5+v+U|J zeQWDkQ=L6VrivKg=(xzv%3AlnZI+da(sLmwnW5uHS_d{YV`E=CYK$y&P$}cV81;Jo zo0-BwZ$=UXnipbRD}?0UCvXr94~3FMd5CQOElI99m=X08qgqzQK>(Ie8^`WblBf*< zXB6_=K69bUk^;kg1oyJ|Ec?QBl7aEvmh=ErF;toF-O?A0p_jEC3L;cCjXM=2tYLV> z3~vpYZ}xTV>U<{b*C{$bmHEM6eVc=BayFYlZn*t|U7R@X;v!g7+~LR@pZu*=KZ~6R zwy>l8q4LJ9bbLpDVYE-og$TL2i033e3y7o=mF^vZ@ykl)1ZiyH`}$6tw>K7Q zpME?2=Mw87k=(!fl!z8vB}1p@xkw4}=k@T?@Rh z6aDL`eRPu_F~`Hs6NN*2PoZ(EdrL~aZ(9RSgpJhHlWy+~UDj7g(`kziYe&ulU79j# zVBXj_Qf4ixeZ8M0xav1z99NEynOSp0$lt@2eAjgd);on7^zLR(_N*`5_Qb(R)FFmT zh_jWoeWZ=$L)y35Amt%4(KSex2}#Ns-G-CvHpkXPD{Fcxs*wbKb>o@sDUVIcW#X*y zNNFdAsx^;#uv65f%%s)fql%1?j{)u}!X?MuV+l^KNqf3iO}nov*j6J1t&018YA5<_ zP=sx4vPtJs^&?9sb&~Zq0vWxON(pgXW_hJy^32d=+=|yx8U&N(T4?gp7n}I6RSP?F zH8+k~i&DCZb#fWU#PIT-qe#^ol0@+joluq3M3PSL?0|;-=eJECe%$%VoP@Dnig@?m zC1Aih>mHTq{+7jK!HI3EnX^s!(S0gg*E3jC$v{u{H2#4kVYYD@a)`EUON!Nr?+H4x;>_7+9?ZZLoa~vGl>{4<+EG1Oaj2b3@A3RfKRkc;`Qz zE3$JrIVb-f@r8bRYlVqmC4)k;WO30am1YKW=NX?>`mzWd1s~Q#_nY(&)q(jg5F~-? ze6ttV;eqL>nFvYWyN@3u%stjq!UPOGBq`y zHprhuCVPR2PH2e@-1xzAushtF(OzO56p<(UpQwf0!7VM4p3yPi^Sr(#d_6g>nP#A) z=>~SHm-?f65g%H4BHW zK+eM&TbT8`PB*lx*4H=;9Q@!wFKlNVq*RvCa5}9aCQr2z>53@gI;TFv zHqKq@==wg5VR0B`bQ{v0pJnKJ_6yb4_mVSCFc|y+Qbuuxf;xpsL#o4AWo7C9!`A(4 z3Vj3B&_~0Bsx;~bA@sE_;_>m472~TFFXSJX`4dExiyK!Tt4P29!)cN{(uI0w@z4<` zH$~uStxHYyqO!(uYCSX?og=|@YDJW8toqE-U}fkJQ2W{PEb^HCmX6ErIIin2d?Hwi zEzPHtD>FEhmobVZuFc)(cu=9lmxw?3P|gH)YpYR2O&BB!yvVrkD&n@A+;%e61{~_* z$bCCI{BCOXOLodTiHiijue$2$k{aXEGk*@)Jb!k44rGM$^Oi8mwnwZNn>26iBVZKi z)J{p53~Ha7ot>p{&YB$CSXi@f4NkHSF@q3FFw%@A(SSkZujk|!rvOjlAOF`SqLlWM z<8dQzwTnvU3qgfu?`FHRtic;9TGH?!hOswF31;i)v*y3talK2t@$0b`Y)=-JPw&Qh zFBpB#7fOLe75t*kQoU|Y{un~dQi#!SRW0I)&0{bj7hrD=9rjPjtY3 z=bmI!{Yp+f-FdkN=YAn=tAT6Dz%h2}RO2-<&OTx8q#vz+%qM@@UkLYLf*Y5=U~9dnCMg(7!l1ZnQJk!TeJ2I zGL6l131;a`^LyT3(5$wL&{yYcfzRg1a4xPUZ&q@2w(s@NJ}*QsHC2098W=6M${O9j z+|vX+y*{H%9COnuf$KiU@Ap1keC5gXSq-=$Gw{1)zCVfq`b4#ipQ55=5bQds$7Yme z;Yg+%Ry5!+rU^k%g8*TInJ-J@3%2jaE2EJuW$3xvp-s)j4a|+&;w+yeD)WW3 zu{121f?67deJDYUQi62D==#XMIn*)6Dp~LvfI8bc>@r8sEWY9kgLj}RcOoW|TbWc@ zR@b=Gsv0-*T<}rh(dd1UgMN3vx6%qx@~9T`w?7jS@s$(vO`RL?%ANWssr2xuAK@aU zs47nm?58_E5Ys94FNyViSq~lR#5_QcdWTJyFNWjut=-KNjg#ge26U@`+~*-#&?IJ! z;^*nW*5mBgCOfW)JC%Xd&(&YcOlXQ~gn>rW?sv^k9&koB7X9(Cg9h3cqOgsC9O*_> zo;nUhMx$D~hcpsvRQH7n%PnkMZX=AP`N!B4Kb92pgcn$&82Ba+}8T>0Hdo_V%H|CtGI^sk89t4Wh;}SlCM$s()#q)fHK=Z zHblmbc$uZkqU!53@J6vjM2wr;(7*s;rrX%_O-|CRi2%bQp1zRJUogX}zTMq^FxGn( z@~mealb}#>tPM9k!^i`Lx|Nj#{EQX*uk}I}dc<8hMj@pJ9D@S`DL7H-U|;wZ$do9T7Yp%XUop;Ta(?_Ic`IY3J=6f zutbTYuy>YwvwR2?uiy8JgQVcjT2#+)tXh%kgPC@UDMv}Qhii}ISHTdn`DA{I6;gZCND$zY4iiHVp9)kt{!=?8;99FJ3Cet@G z6xmf4(#D#^rps8U@M!lgV%5}mtC;iU7B-o;GbCJ-)~@*u*w*ap4jmlf{Kicy8BC7> z#@J`O$IP89^DQhIUs+gL&&hzQUHPJ2z{iehiAePL{coQiR`BvFDmJuAlS$4S3X2SE zex-zmX*x|0{-VWvr`L-@(Ab)TaS}kXvoHM$)YQV>szwD%%@0O*r&%h)XaJpxpyVi= z=!a8b0f@{RNNdMK*Vb8#kc3%h(i64qc0IO*;U&T#{Li(nA+KjWJkv5p5MwTS4$fho zV_e;Z$j`p?I>Nu2?K;e!Kh#0-;7s-t^0>+pH&2s;LsUr1I>tZZCYuClYV|oum+qL= zMKQf=qArPwXW>XPj>mTl@&2M)jwlLvP*BzIuyUC{%X(Iy)klFpC8EdJXc=!*8k zGf9+3sg9jquNztgh&XvvedezOJmx5T7PFk(|7Pasd@2tj{TY6Q_A~4F1fKstG%#}N|E{hSpd?U%eRG?2wjqGcn%Ev z?#Kv&rAWlHZSjRuUu`CI!yuXCE~X_3mLbdGF(Iwwg6`aB{kNk6aeuM+dd~9M&`$q& z6xM}POz^H>iO8ruzF%SMzEzdijkp!Z9Nm82J^1K^LZ_T0u{x;{W|Y~8JZpoC*h>~0 zP3-P+C!|7Wx^%4VyKWt!sc!^5aJ(HGCQRl6l;e(gM zJE|be&%g2TkOB1k$%KWC8ohqeNW#J+(N}${oKCN{rqkt#hTHnQt`0bcyvA%P`G4#@ z?LTBxRA{lJa!n{23_s4qB|)%5w+Ckg%O!3B)p0m{jG^nNq=Cc)z`rD@TT}x>ysQ#? z+iFVXxiEsl#jXxkOeZ-PZ>}LlwI0Qm^<&)(S9)SAnHs<;%wPZ+Q^v(w9^8rya^F&; zrV4H%F!wa3p*hhFd!<&c8ZBq$wtYUKEKS1>@c@Of4~Hkk?;)>{5cf;x)ZD(a!T82d zwXY0zcK836Ta!{4Xv;JjOjU0euZ=yoPGs9ytZz_wjtn)7AzD6Eg`=HDqI9jKky2sH zourSxS6&CzYZx;nR^fH5m8n|GuDxsCb%REiH566nIoS$(DEA z>5_{1eP{Ks?KbXI_p~vwE}trt*KP6Y{Q489kG_kx_{;5hji=76>MttH-`_tH9n23B zdLVZe!Hvl7eUzwMIf@TSs!|Q)Qc+jW+j|H%>Mgfc`zDJrWZACPb6;N|VjU53u~?#NRV^>;=_v9=L0mu9o?>@{!4y9qAiT<7R1Iqp*F-? zY$Ut}j1SVEZ5U^?B;&-1* zQc7gV_C0-Q&X@H#&)SP0zPu~Xg~(mCn!ka`__)UorP`c>!(C6!}g4 z9Ojv#sex5B(%!UINb?-E;I@_faVHLl{!78^JeAvD0{%o%!3oZ?im-dz7N|g8+5~FT zlr2x@)DeGpy}ju((S{0akTdjv zULy%5g8q?Xi?JV+BRAXl7b;%~x8;FlC-X3(NuCu0hhF?%hEN=)Kd#qF5P6@W%c$66 zG`SR>h$zE2fHsP9o_YHhOpS?Wtng#GJT`q}i2BgbWJ!`^I;rj8cPX8mLnUycN!-kx zj3V2$l9>lo1^lGa1DW`7F;;JwUs35<{uGksxR7mb%^L_WYlk$>8fJ(di~X}?u2%0oW6ZLO?~i9xO7}7+ z#Oa^DB5}11c3@EGF0>&MfLuvd@awq*S$WLcN1m19=umJ(;!wJpDi5M~@6-GP0Oy(c z4{u9b@oE+L%CAW8C5JpHgD$v^|M*Q3e2^hiH~{^DcuBkb?yyk_f#DIs4I_4j3v&_1 z_00LW_STmu4y^m+!jt`I9U4Bs64v_XH6_b001V$p8dLozfsAJF8u~)ZU`yb3 z{0<03uiW-$jp`k{-}9@$D=9{eW6byZjh@?50UX%%@teXyMe4;hJnh(|K8O$)E-b9J zRxcPO_e!=J@po%-qBoSvqWc`0Af*5Hc{kBE{##6lXP+{^&{)4s)+GUKI$Apr>|Axr zXHc&PwN$@}wHBZLo}4()u)S^CcViE7ZZ~aRIzuB5$W3ZgtEpYR3D8WyT~MC+!b+SX zfq~@&fj79ce9%`{SDH#iS}{%@!Hkv*x_1AoOz3F2Cxd30@#VvFvWt4`Q*XE8Kjp=g zg^{e1bD3({Ef9OCWC`jN{r4nuOn*(1)H}@E#yb8l5s{QqL${lil-#=!=_$8l>4sP3 zyi!Gy3GlCE51J&#K0F)YBn>14c^Sig{+1EVnnE0&A%aT@HY3jZ&K){VK=r1HISg}y zsE)g4X?oV?aD}C+8gH=#k$ihgg(77ykx5OK8MFUma^f&$wOms4n_?{sI95HukV`DG zaB>n|;q~u?s4w%gZ2uIIcv8+Z_0ABF_g2Y%LO9iB~4a zpH=2RF^^*vLu1y9$il2MVpqH&v?n2^_h9$|j}p$T=$evu>G)XQrR32Bz7d_G*~}QB zE2Qq{2e*J0m;BqVdNYi8lnw6jVvO~E)!@mjW$F0L`=*gY7+s?E2j@%(wAKJ?RYgO) zYl-YSkbEXz6)Wh=o^ToUp*?#Kz65d+i*rRbmFXCM zZO?j7$JXXFzxv0bu9{{py=W2bvzCR1k0~_MWi!880llFS1A zGz+|UN1j{am$HV_89Ui=<)>uF6i{0nh)})6SFBo&iH3fpn1x+a8zxK+P`DTh>(Uw&c*J1tb-uJy1gy#I4Vuh-s|P{o(1UD;%#@ zxuJMLT{e|{Qqzz$9e^4T$!|>e?E02Fxhq0WJRgn-Yis6asu8mrSHI6RzfIqo8txKH zMYA>up2u?JdD6d0{@Y>|_L;_wN|E#{+%KNG99@gE!7z-r*FOLvi?XTUK)^Ktsrg|9 z1vWtnCRW(fs+HWA!)ARjYV&n=A6(?l%qFY@(gp|?$>g59iGyxZdqK6)NF$)Tb2k*K_O?&8TvhjLk zy}Zvi>0zD3_N)48y9jaQqGl>!%M2ER3R=k-oaopgadf#uWva}fIMwQ{1P*n*u#h-+ zE?gy}G*1cHI2Zb4s^TxsbfjcP(2FT^m%{^JTQO>XO!CdNgR4u|6Y4mu^EanUov)6^6|2?R8;C8jsP$RkP zrjfFh>{P2)*v1Sv5C2HDO<9U4y74mt|N8a{K%?(RC`x{E!VQ9l_o#;)yvnoR) zJn`$Bul*s_A=&mlR;f1Slze`OG`;ZpRq&XR12ikcmRk{Y$c2T@K8;W+W6>Y(HWFy( z;P;-xn~=jhJBb>>S=Qi!nr?e9|NS??>${$&DeANf%K|m$pl^i28z!O(Ig@}YWDT<& zMO7Y%wEblGf)bEo26xT3O&MZjo%0{M8Y3eE+u9CEXJb{uYZ5HSEEb!+ycKCIuso{= zWoMNKE`XxNDETz^Q3rU(^iSz_QDp&YrirK@scOZyj* z<+9x62lDPNp+il%L})qo^y|#8Vc5N-fgPK}Ybqd!u0Iwqv3DmKN1+X#@VSq|RoCx@ zw*Gp%<{&0vWE*j*Dp7c8`=?3u^QdLr!HT%iH+*^DTu8{dYw(54@;mZ|QeU?pPbIs(~SsT2&cjUWp&;x=GS)Nl>9W zr0AJ41#BC2{RrJbsN3+hVnZjm>j1cPVs00_ ztc-^Kx{mK(zFCH2P4SnnQZ<~r10)=MRcT3;S+%_{4}DxQ>$ykR5^?{vf=Ic#mgL>T82BL%dp2(oD?1SM!Y2+6>vLC-o zhYB9t^{**_E@gZVsJOM$gQ}LB2d_tNR~jn3k6+77H?%FU`U<2`6@$Uyoj&>|V}pUo2iu z)}FsUt%tv|$K^V-wRanfuxe#zIRbwlAZuQ^g8=Y@^;(xWrDE52Q3dx&(xwbb&25Ji z`bud3Ud<4odhuw%hXi%r#zbm8HkHXtrzHcONzBBZq0+gk+Z8!y&dA2{cQiOTet7@Y z=!ik)-I8p0I0zj@)Us4FW$~q%&)uyQt=YLIvkG+^9!a6sQ#36&|VuR5k#lwvBA^UYXuNid;|i#EpT zGi6rYrPiXs5d0=3a?XdlQE>OBh~&aGJ_GOZ0DC9x?OeUEz>7iTu3jZkg`Oy#yz1{wNE+L_i%|+K=Io{29ABVUc5!EQY2g4srq-JsGqhoLJ5v#Fy-&BvXc{p;=>4n0t zg%Y9~4Q^M7#@7u&KW664$A4+#z^ux~Sn`1N4YSU)cpI14{iJNYcmw5^GKnUZ0+ zgk4$wkdlmXuxUWAtp>L7ZlHh^-`#Y%h*U*>OFsL3=}ak3kle~bNvID4**$o;G*X#P zmv@#NbXzwXKM)x}ix_#@$nHaOIv+-bt$L;iW$5GZVEO~?D}@@ z(mW@mlf9X>^|YPL!OGXkw+B(u-&7d8KS&&OeP$P02Ij3+i+C;p_)S=ZGm1mzKQPKK z3f6SLmrMzqel%P(%H~pR3LH)tRU`g7tKGGqHnAt#eBD*@zX(5S$>@D< zeMMBt^&fY431;v6oVRNCzF4A6_$%YFxfIo*TxPUuFew!%tItPRSyRnc=whUCoE(Rt z9JT6N_{(RcD80LQ3LPO6J;|#kjqW^pu~h#VVHv#i1F?!aae76ENU_tsoc!NkkY!dv z95IVIcrsg;*X-h{K<#>y^Y7s_;s};-NG?e;@H}3{{;B%nl{)UdDQ#k2T?$+*f3OJ1 zV;AI)a*nyS`DuI2SIODWd0>9*duATx=?-8GwhwXJi>S--Z4May(vbtxUHlJYv$pU6MtC#N9U{JGo`<8Lt6%M9mzxUPm>06Df* zh_$-60HMvw&OKWw6)mi2HT8--fRl(SSRYBE1vcB1@=CY}Wa3MN6(#xB)^khD9v&XL z1_mzv{-e(PGFE2<7ZOg+0)=!mcKE75iUS~97LB&`c!A7aCKnEqqahZ)*A2Vm&xLE7 zt^Tmy!L+Q|ix`LA=ak25<~Xw4UlQF*JdVYMtTOwHLDELKfmSzU!r#!v2hTgSmqOD9 z;E9!TOPc__T7xKCuPPG5h*e+Av?Kj8ZYS8Uu>N&byqh^Jt!?VMGAD{Q9K*D;ysh)c ztp=${m&oenOzmg8o|2+Kz^r82!NYG=q4kpm1i0vPI6*kcY<~AgjSZ^xbH7Xk8Ky6)NtDjq32Zb;$*DZw_JCk*=A(x$x+E zeR&Li`?#~SQ-|Hiv;`cSA0HJ7DBN3=N+wk}h`$Kd%MSDt3;I{PP3pu4_uJ@$J%L|{ zYTvH^FV67KKY(JQ+L~pHS@pnt4c3VA2!$jjXaW%N&X;hh+RGcrQzqQG7*j^Q%fr!- z3vZ>r5yd1G@%>XG(+wB8y23T4XzlZp^MDe!!{Qr^xUp*)SM76;;>#fp3c#|1RJ3tU8sF?XSSYA2Z=aI%7LI z3!QT9#qW)q3{%mI$!+`titIa~r7Dio2<#ktSuRKJf_~;sLqHZqHnU`xn+w%M$08=*vQcSrzMo(>JH?{a&5lJb_MIe0Hm zkqnwc4E>D%j@dcc63$~z9T`2nj?OBfpGu0jpx8G0l6kdx+i!f~XK=Lt&wp6bUwf-k}o&tmMvnuac9lkUwiAcHXMQTA4oemoyA=ed#AWns94_b zk{Y7q83Gv4xJVc75!;WMmFs()Tq~_PO=JCbKNhe9y(jnI%Pmldz6z5l|C7f~=0Nj- z)R0V9bP~7CADh+mXQlv*ZX`k935Xjc(UPC_$%vXdJy2E)=j-|nZm}1qWapaES#X~)Y%Cm&w#h>X}8H4+8b}oL8X3(?Bg$a)_3;(DhtRT%uYQR_f zpF1M+S6#Hw@%iPII-PAMjg0GEJlNsSTeQBofTvR3?)KuvW&+>gvlPS7KbSFD^^3fr zm=JS{oDZrxrrwL)Ys=Facv}J?@5-fKD?hPv`r=bv&A|k}X)=y-6yb;RNlV!=$)>TU zc6qrBT;iYBS6bK9*n3`FA?R2&fi0H+u%?Ld(6(1>J-37f!6$xTan|}Yv36(kv^JGuU+^yAbVJH<8YXWss8#sKc^BsbQ|W$(pSL5BmIw6$kV;X$ zdq6$~ys;d?=erZcO>==}>tO$3%bJ1TUGgkMFwOoH z?L3VZT!bc%uXpIqcN~v-q#uVa2>Ir(L`;J87%OOh>xg_T*pU&i66;qK3-Uv9579SMOU_g&EaFrvW|>Pas6DP+ z^%gr?G@^7Sdf;6(x9I(dQd?KomvTpR@0TZj5bv znq)=@;J)E%;8om7`xPoHjO)=2e&8XrVBm8l@z15@aI}$O$UxB4q1*!nB)E_COk#16 zAxbm!8p}oZKW`xYxnYJ14!(B_Cd2TjSf;O5KQCu;jSt{5ZF2T%Tu`X}#0m`u{8d<-U1c_)Sn} z=8q_*(w102y8w8(?*U1R=jASjI9`sWxU^(jkOsvYb~V*edLNV9p+tO-oj=J z`MWDTlgB5B<|OClG6~GV?1)CG2-?<`mkm4YKUK#`<{k5tDXPUZd#LA(Dmx?g`sZy{7nPj-2JlawV#>4|+R zVy-6WYtZ`oC@G{Ovi`QgBEM@)j|Dwwb)v$Fp=ip7^88Bw>bV11CE(^K8D3{qNkw_9 z;MEAdj;y1&y`Rfo%h@>S|jErtJme<~U~H+3T>^ z-QMTYHuJHyXP;M0rQF_07%yvrFrJT}pJD>*L!YqUYT+NPXeWvyOjj9)NAdix{f$04 zWvPXaCs`nE>~CT@7^JQHgoHeZ6%pN^sTfD6Nh}W2$$3W4D(9Tjytdn=8TrvgC6&GD zJ_(GesNPEau|LxW-h^7zh}X8G1*qQzMN!4P_LGIL%lSXs%kNp!uXqWpbDOiGN9i;4 zJ<`-|HDx%pcJBb!6iE#W5`XCmmn`Ct&&<@5je*LPfAvA{bJJ(|z8YfrK36wypx|IK zH=KU|SqgXBVh4xYU`5pPbfi|*{9kt;ja-xz)q@|+I1j+x0DF&bP@SlDAz3)3Bw1rb zi=`GxWy__OZuR4yG6EAz%erT=Mwp}-BzA!SWZsAZ7fyvUI&W9X%TavA{oFgm>yVgl zc0$OL{yivn5qi?Tv-0-Z!uFCOZ0l*i>^@d}kp2A>djt*hHslip{Wct;__O56jpNkD zEiSd_xu52z&+e^5O6Y;RbiHt~?7?}K@rAVClIe#61QHyUQYxVip03XFJ@IWqWrDo7 zHZ7SLQGOqioAn~-l0TG#1}iuh)Rvb6v4&P1mW{i&Goifun;}V;v|a7pn-&JXgW=@e z;clq47kM2?L1VP6e8PfT!2lBd_?j5Nx86^azoO{0qhJ&8r;v3M0H-b(+)qJ+}oD|cb z6?BdZ!*j&8g$goohCUu`?0L7fKaJAWQ8cZ;L zzGyF~?6TKrcIr9*YggI_H<&zfx`gA|GfEcimc3f)LAdn(9VFKZLo)e?yne*^?`X)5 z;Wj?+I+o~DJg}8>?;P+FM3=Oi%yF(cf;vpx9~5A*E@Z|7ycgR~Z?8^5)tbbw_|c=b zs+z7$36ttKe*zL1MDZ!$aROJ~jXBeI?+bo@NMY*T2JVP~7|P9Xp-kDxrOw_a=p=cIVSV>tIvG^P z2anb9_ZT<-iV_K{QaV6iBL?>I^m+U0{dx#I5-$9%WWadq+`l<)MZK*(<~&75Cx2 zm~os_A1$${KrCM-IX`)n<~b^kU*f=!a?&>8vhOyx!PB+x`UW_G+qQ6<*q}AshxVx^A=#KX zoj%y)z>vODI)^dPVXcl&n3N*fl?R772RVHp_oLOQ1ab#i|H9)q305>;Nw247*dIws zrlF<}62sy<%pry%2I!~%g|>@LJ6BXwXuNW;8pThA0o~*GYv5SOuC-E<(yE;j`l;L~ zhcaA31U}I4Hgx%91s&AL$QDtksP*KMf*Ty(d%70|KnxAHH608fT)1&$!u^YO1oAid z8$dTo^r29cD9ZD1r*T3we^z-GK5&hMKLr`O)@xz#-ue5*B@&jrc66PFz*bij=tE)4 z;yi{=+W#sGz0!g!b)g9sgz4y*7QoHd7_k_~+&M$G^VSf~P=;hhD?W}UIR+h;wDs-5 z&1o;oc>VN3oj<1LLonBEr)mh(P2Qv2b1HcO^FxUGB@5WQY04K0n}3aQ(i$M!n?Wi~ ziO5{4DXe7VXfI+yJzSh##5)j2RkGMJ)C+UO*b8@DBf!TihLn#BuGU(x<}?Zj7W0s{ z!oqT&?n{MyPTynRO)L5THMe>henW#w)=1o*aqX-Q+5?A&&Xor2e%f9!`;$PIt%A7t3+m*Hn;68V@Z| z_e4r!8cA@qm20NW?uP)BrsvXL*-?go?PAF!2?xzH1o=zco;+bT=Mo&I$9EnLYu>CN zRq++??ql{%bQ{6%Daf1g!ppRAsz#*)zKd?9pvkuUFQKWK%03hGq89@LAB zi%GkQhwcq{Ugp_<+B{x5PU)}?|K0)w?p%SL+4Az);VffL_broFhdU`ih7vy%%Dn`< z!z|(~QOuN|dx7GerrIHYk7DyHw><7PGXxckG`nrh)@^12$0voi4|e+v~Eg1{pP4sC^OTX_0^ za|s_`0#uxP{Q4i>Fn03~PMYhzydN>Zr#5&gf#nhdkYEIcM8HR+CK_=4E{H_4cYBH> zqn+>njHBMRW5luxBs-pL!1&$I9mPRM^t}QF=NEMcSAh##Z!AccyxS;&$3jzZ^C9t@ z)=@JKWRH%^W0|m|IyV?iLh-b7T4^1G4|W9ILd(h33xBgZn!A=Ilf3zMlAW&OL{8a} z{a9_^OaN?qrTZ=f&Z6i-1BTwaFvX+B((Avky-@Q4C2J);9*J9)`y}#GO6}RZ%jWZd zasCI9F(1Jlkkumab}b5wic~QnCvFqPk_lr?asOql=EvchnA9(I1xH8Tj^y8)5!JfW z+cmInFMogIA+Gh0ObkS-mY=rC<9N$f?==3UjV7h<^!!4Ov=t!LX^>o=eD%5AMVGOZ zo5yd-bc`m+-=xNh|AV?Z&S2J(-<3Rqn*MAhg6l^XV?7Q6^uD)3x;Z`p0U9J2FxZr) zPR_@xD$DH(^cW-@n8b6C4=Rh~*GH#((MS|y2H7x_)sMSOH4v)U$wWk-M_D(T_Ho3F zsI4ZZLr1}?@h3ux;CyiqI;@T&lg8D@Fzf_o{bVwmSxz0>7ynU<4LW)iEj2~e6AT(A zD!k-U3~4th)LI*KacONNeP8EUIuYB&ZysyYKgsSk=)@Wqc%(ySt#k1jikvv?|H_1S ziqKqL)_s5Ma1f4}H+K`!_!hRla%dg4UgTOetKB{BV-H80*w#NpBrTLFAvttb;LBwe zN4^lkB&Vf`Csr|bhmL_6W)eE|m;YcnsqVI@>@ow=Sc(iPf;=m$kpUXkd+hBtH!|S| z7Y-FeG^|L!Nuv{{CQV3H(U=Sg4l(+^`C*h*5{dlR8ux=1j2J4vF&pYJ5KeTE$qOq- zwdOr)s6zeozNF%^9S42_;<6n)XyL2CBuI{t;a^VRt6=a#oSQy!G{NAF>BoA3Z^rm> zIS~FXx$b>N9R6-PFE5NL2*ft2+}Qy_Wi zrt0piw`9*AI^kLj`kk6roS0-fbmaOm*SYx)-)^CFs4jc&{CoXc_qUw}Y8nLQFC%mCRt&{`b{Aaw0l@6*&hdGhEiOS{hj@vwqGb*jSZ3-7L z(yA6GK36^iW{kyS5MEV7l3(y?o|Db8C|V7}J+%51+-#g3ic|@td>^c;Vk|;^)YJ z!slX6nhlNLFgv3+!JPa*WnetmQNeEpOuRYgRMEP0MFd^UGnVoYKJi2<8do>)Vx1TZ+nDg~lpuhjCKWRgI3%F-K@R%Nb)Oio! z9BBYfn8Bx?z!neKVg#;qveVP0KCnmxsi7Fyyl!t7&glc=nAC}m>C@Ggqsij*hnfq*X1QT*0lqPQ4elD7i-uDJ*!;_z=y1)V1)>tCjZJbwZ`OZ3*6&ze zqGs|yYLJ2XqsguPQ@VMe@e6fUec9V{-*s&F-8I40de`W9e;8ottc*-O-mzsmtN0rm zoEimG6lOGgh5{Ab97PLXH0$)Z3pY+=!iGbtHblV*%WlHdJEQ9;xWD}`h;6H3JRMsV zISe@x2ns+I4ti)Egc=( zU%pQaDdQz4*1Yv|;&;8>4f$8qzTgK&OjbeP?HA$z(E%N%o*ox>^souwVPR*qC;)m{ zx(sT@_-(7@u5P|RoZPgmgh5?K(^y6#)$E=ZFA4e6W-~FP*6-z>nv&AfGa>-+r2 zpPNI`PIvb381WOZ{O^~gN#KUbMjfrh?!2{O!$*cpezs7+?ug{+>U4Oq7a;Oo6t8FB z3~*96&;GJz^>s2QOU9Mo+(VSN+dlJ@Q@AT~8Dwh3IyGu&ZtT9QbNKiz__?g0Vuf~dQT+P6S|%68WymBe`5>Fj z*@6)81yozi-g=q&U|8YXwegrL@Oy(31Wd_qhcgs^b!)LjuARShqA04$pg@5=xFs6k zH*??^`ae_m{hJKT=Y6_VIe@Buz{MF7Qy$BML7^Id@H>p6FC&x9^WXOK7>_MCbY|oJ zIhLzfi~#Y{9|eQ7Wznd2yZbzgz}9T}AXm6uFh7 zJvwJ%(XwH(8fWhYtgW<*v2^t;dBOdM<5r+H9(&&j(=?y7E z23v0{eJ}ysr%N$47Z^f4boG?lSB}_E{R`_haaE0H50s0a3+=vk_8no_4A|tKN~X&m`FJVg^thhnSZA% zcOymDNzVPpySpI(g5c9?4caLbG(&&-75EuIFL;yP<#~DYxOe5m%?~&ZKAclWMWrmj z3>gpjc*|>>{cy3TyE~(`Sa99-5}Ef5Yg5sE*@Jr`JNzXRvci7Dc!R};fJ$a}wUI>+U4{}Pb>a6rw?zO;}DwH8?*~{1T51>0Ct7O*M4;c_nR7R_FD>Pc&PW zvUOa2H@hZ}M50x{VuMG4fyBt13+Si!2n>70Ki}gqUoWU$ikh`szO11B`lNsn=GC=T zDB>4`fl;klCsMSHX&TTPw{jU8zNaqm4;Xps!}@9dyMJ6iz};m4rtex-PtO4GC_eR$ zr_BRYp?Ho8jF!M7dB24k?z?oF^-N$RQPwQPaUpVZaUTLVlAn4JZU6o@Vp|9cEzS_c zi?kRKMyP>Yn>On?VRD!Qtomt;5=}&8B(M!1p3`9NdI>6*?6{8bcdhxP zHGe|T?;tk|8mS{#we(Wg-j5 z#7>$yPQ5`7iS+uet>u@C`I!tVph#J89kb#;{_5gIN%o7ZX?pDO6q*zT74}1n-=adD%gnfej^5Joy2awa@-aW-T}6E z#?tZl@F(Y1v*%~&ydM%T5B}!4d%;2s-eaZXoSJuNb0UyBJnOaA6ye&LA#wicJ$mq# zzS+_I-Xx_$L{EH4Qnfc~AD8K@iCiL6O{fH-3?8LVe8rkHsTs}V} zV#vvZrV~y{6cgA<<>Z$B*nI!2T1Dj2s`|pQKsw3}VN+U`-67QK> z)Doctb9oS{YWK;oHPCze*$X6+U!@JC47&M_CK=1ZewNbFRt*@%{az-xdnWhJN={2m z%bwR_oBu@|U7?`n0zDX=Lq4o5f3#Hbd*>HkBi#_A{oCw=Y%%~>!bb%(8NBU3wP9!*aJum4kB3^goF zf^&qRuC_?J`I~mWNz<|t%MFb9 z(j?ITUv&LEKTH`I7*0Xq6%QnOmHSQlr!0f=@i3ua>gp=!A-tZKPV7BE92W~teAZ%U zvN7WTKb3>qm-#k8v=2%o$kqSqMmQ>SM9ZUoSTW zp%KpH6_lr_T1SYud3cBrL=k@sl!^2h(Am41=RWA!q0o;D= zu~7|Ho1H4<#7!puNKa3XDQC*-dRv%(+3mfds6vT`?1%5vF6?09UpuNXB{*~r%T7K@ zRw!dZ;zeA23$fsmF&b3os9Fj1rqKfnQ3fapIJ26DpG58CIW)y31JFby(p9c1d9GeQ zV%Fa@W4Vn{O#wO3$$i>4Gwr$it2JRRIJAixF)U1dty_6%{BPLzlyq3s-tOY{_1Fjz zVmnbyi9sezapN(z2=Hc6!pdst6R=@14J1U2-_)&f-GZrQ<doy;A^p)YCUC*&g4v{ug$}W^RI?GH?IWm1R72@At0<_o zqB%k)UV1H|ibTdxf4W#+lnP0e)7nE~qp!-)6jOlAx@9k95cdepeHHzIM0xMSUxU8> z%N5I-oHCLU!B;e9fG8@lNKzY8O5&KQ1UbU+sAA!j2`xqC=2BSnQ~KCqC( zK_5>P#v7;EYdPj>a1Ic~mB^9T&sgw%-i913X2++A6*FhVLea#G-=SKQJ0q)>X{&~J z8rkSvYjJ*wFD3wh#zmXC)Q`dBhqY3#gZjP__~in>oVAR<^T#`K|JQ*TZ0V39;QlL;Hq{4_a*O%td4 zMBrqpn<0n}yYU?4d2U*RH(R=mG*;h-H&&!ecNLK8RC9A-s~*I-v=(uqVk@hlM;uiB zuCWX|;3mdZKD6VYEz4Ny_VXW~thNQv3vu(zdY5@Q)qTu7^~^Uk z*KK9K5<*^W_Q+-hh8x|)x$1i+FEvJ^eZCcHwo*m-WDK!fZ2Qb zK;WOoQqw8NMwDP|LLK5${CWG{`GSRUz*_&(jH|uA#HB(GT)DV|-Qw?VzV(ML!Vhui z&|q8Z@mhF8bn(p^@7CsUHRts00Q2Ce=O`U!tc2K1JL{wj z={MNY#Q9$%p8a4Km@%!p5r>{nXR9REYi-GAyuOJMSof26>&(-&JB3@0h0!w9G}K;C z8=gRpicQlE3=)BpxAzJ%_~2%G(0-B~!&p7QtpQFTDy&U~TQoBm>`|(Pd^qTAM3j>$ zQCpZw^zgy2fdw@W>%ItE7bBCUbb>?8TSgl*s&L9K$A= z|Mq5-@NU!h>gHy&zzE@6$7ZoOfndNok?!S2*Ak>uF9&|a|m8}w* z44H^Uu*B=)jvRQ&H<{0Vm)r571Zf}#rFn*Ly0HtUb8E|*Tby_Ntdtav4pt><>cfR? zp11sM5n4*>zH?vf^}5<4Y+z~}0{?L|);QWOJdO}o_QWSEUT~P`WIDfJAVU1jfoiU) zebD-Y_^`TF&k)|}n+YW>R2D0t@6f7qbA6xs-}2cwelZQcNC;(=I668fzb7e1405XM zF?bUfb})zvQR?d)m}G<0XKh* zO#y7aq^s@iFFz}?Rv|7o`V>2Lc=;>Lf*Kekp3`T$u6nynm6ygKm-=jb3^+}6KY)Zh zDmU?Lc#fRbI~ELw?~GVD16GuGcJyVd6uBCBw`|39q*cPwIFeGj#xd*~SW4+y`o=?; zNf2ut7-H@tCye*I4^W;83dc{c05@5{>&o9px&YYZ#q`~32ACf81N9m^_5~C@vk%a( z_y~A4(|k;a8+lPm8#oKS*Zz!h0OqdEJ6cf@-wqr#mb&I)600uDU(tSj7kX>ymdZQM zsBLjAa2W5S@nFUJbbb4YP7|)8%&KN>xp%R(IECp^enzhrwf_Dom~y^8F-_sHXK$T* z>FB5X4XL*_kcNkAZ!NHABi7rI6n6cKS6_BfDysgmg+Ejr^hp@4pihsQd z)$D3|j827-W&0?!u{GH}L{tT|f70`mfS(%Q^L&rsUX*C4@%%lghb{PX6S#+_^La{_ zxqje>KB%AbvvilCl8mCBCU4j2M`@C)K_5n2f~GKHja5IbyT4)#%j zzxwOG3{u}6*cs3lPepuB82zu8AxPjB$Y;ayb9NTSAC;p>Ii&E_C8LzstEeRqD>zcf zb6~?&PSst1(%2Ga>*?dTT;J=RY$}oZo+U|Y6H7jNhpYjL{mb0CYVMH1aqj4|c3CBh zf14;;(D-~hzzXOQ4MeqWBV+m;>RUP(bF39Nw(i+K%Lp&F=Rt^Af38 z?XR9lYmN|WR9)zRR+BBWA80I@4V!gp@q+1M>q1kyqc<+$ncTJ7E;lb(2)lR$<E-uDVSt1#VaI6M7>%fhXW6I6 z0UXFrS+Voj3${}<3fweD)!_ntmj z#E2b6z&K~2i~pj}-D<5bT)O^K9Xgw-B{OI>Q(IYT%BI!WqvyAdXg!vxoRqSeQ88X^ zn*A3}PKaMEympE!RjB@kUEjC6F5)kPXB|i{LX&lDfferC4OYQsq6g>#ey*Nk>$WTS zFq!vtWXtt4cXiQE_q}C<;!apo1||ojWzn4V`oUz>=wY8q1)C$_qcLOV*K`=z&e`!i zz4zq(e0%UCEb0^2mfk#_H*G=%WUH-e-RypwL@c8v#O}LgC9EzJ7A_*gLaf~RI}Cc! zbulM-8k`9s8JcpdPHrC{JLPPaMDpk58E9 zw*M}Eo`a7=Z+fsTmqyUe!dltX$Kmt09c{G_V+-ww+MCAe#VVAu)eQM`2~Nt=K-deY z)iUv`!NInTptk`>M%Yh+RlF|yx;c!Ct#Zk^2fX$2zFW(A(ycjJl&;#e`Z*w6nsxLd|x!QCu8jSEvub=@6#gz z@4rag)^mG6b`(u=JbcNe*J z%W6w$YsJ`n(na*0iyCfr8KnV*osO$pqCp);I|acV!eX|zmTq}qI0U;Cgr%oz?Y;$T9A`nM3gu0@)2R8o_oQ$uutA`C@0X3^~@jV zsTbk3ZP1_4ytfv8Rp9(h2O9xep6Keat!oJc;y-;nS;KJTU3fCQsvm40O(wI(k68_M z)gNR?Q;EM*R7Q_?@WCJL_IqyPt^wjalx2Wt9kS!t0}eO)ThmgD_S({#gZICOIRjGp zv+&y7kd*MvDvHx47cJ+rh@JJ%`ViJ=4b9GaIs+WqwR(nuVf_+VCMOXiidU_q(yEm^`_e5Hp@qS9?wRK7{TL?}Uc)NtV0!Bo%8U`tFeWb?ZJg2t3Pd_S5( zW{ntbP%oKoju0tYXR%bblp$uuW0_Wuhu~u@3m`7TcGDKE7A&}~T-;6y46PsuRO+zW zS@VcRsIrO5m=+C^wRB#6<+npuk2$uBZ|2>_hIdz+-I*7Y5wN+oobx8);Xj9xjaLf8 z#lFtEuh`U(LK};QDZ^HyXgEF$=^`*2(?v6rjUZc#8bQs=G=PC59;*HJWRaCH752JY zs3oumHZyBtDzS@E_R~^ytz_dvx(=IiQA}{M!-UDBE<%{HSor2@?&DM}Q#%1z0wa3@ z_b5_JZFzub0$!VYA>wz(Czg5id^T)_RAZBfYEl}GxVmvTp434pc|C{OLAHEv2^)?u zofI^&vmntaH9Fp5^H(|Q!c*4|7Sms;RPMiBipLoOM>ax(nwA@=WkBK)N=l2Uh^tz+ z-H>=_kuX*%iKXdP=&&L&FaG0H6sJhc945UL9ld}-tTR2QGDnfNcAInd{!cNfDI+GM zRvn@e3of^hlplJf9)}9LebUW?0tAStw|4S{_+nhLoI}b|sFGU6Nkt+wlRm7ZKYYog z#qhsLEoF643L%Sid)>q}&F<%PW7bW;k{*QR*9dDsTeHpc?3Bmku9t-I!v&8>#ls3i z5tR_bLP;~Or@bCO;UGrJpMj<-RhsO83ZjC6=a%Kdg+o*+wd7j!>#+7!GIM~XKy#>v zmk8BI#%12sH96p$Y_1#y&^5;~zulJ$9stu20;Q=L_FuS>2rk6&JM`MTB;UWW$iYQ_ zL#S{}E9P7*Lg8s7;gvBY(zVoulu)JO8_3nT#j|)|h<9cgy)6?Iok10uf{RnK9AlE_!l+&klkI;kv+}T>pD?gU42+`r)`5j ziU18!M70Y%N&Iq}Ae_I^#nUTqf3-iVXZgj(c?aF(h_e-8arJxa#`$c)a&OC%eT2VD zRlw;5>(issLM2u<-bHX5;;=yNp}*4aJUVH=R{^g(!`Ra|$91Dm3AqKwdh1JYtzWDN zr@goZqhv(`$!X+A8CVFHx!0h6YG)Q^MC7nIzw${Tpa2h3%J|XNIwQG zmoBn`GORCX2wo-@)pT2x`w00iS1k`lup6ekR3^TNZ8X^ohty^2xBJgaM77e|l-lge zS_&Lo)hCAx4w{xN)w#3aDoANA(bbg;NvTig#LP~5c0Yi0<%PCbY*yw}Z?9z)o7N}? zjqMiY%2zFp(pP=kne{x?(^B0_u_eWl#KsAP*F`a&r~O8)QD1PqPm@3n6B0Lqh^y0y!hhm@O%l;e zSJ9L@;WW2Lt%GXu$?47AVs`v8KtiNQrtJI0(~5zjdDc~p{uYq> zHgIfe_V#qltnvMb?dr)x|NCih8ILQOR%u%BlA1T_| zRW_bp=hUDO&#l17-A^jqo6Nz%!PP(Pj(P#WY-E~n*la~@&T1E>w*I@R%_YyjXw|cE z1Lh%1T3ubLc0**-E_){o%g~Wf?4qWNf8Y9vtG4x+-zDFHNcEh{)Up3bS4~`Zs5~!N zmb!8EoIJ%XQc)jDv|Rk-fp7}iNcM5LiYQyK+0KtKT`%h8`rpgd6KrnVxV!dY`@}OK z>^W)HvP+~gOX3jyeHIJVtUY3^!i_3ZoMNv8?pC|EzC2@W>*=!AQKw}NCmNm#tqghr z4;Io2#>6H4S+bhMZ_gV1?tY{mo=hx_+NiA!WU`JlGX{b6BBD`aN-v00r)zMbGlRE~ek7eCaVf-}0TY%+l^6k5_h*>LB_DjMk`_c7rf=kN z{+y-Qn2SCM^N{f$i`M{AO(fX1Tus(VIMbZk?tA1bnOAL zrFM3T1k`(gII2?0D*X@7AXX+B^7(?)7Sd7ZSMs2yx z-mNBVJp1?eEy29L!E{@kS3E}Ux4`TsYtwAfsN>{!)Y2dO8VO`P zja(|+t^Jt*aFr{8`oVd`)Q@1bkxR3k4eGY5E_;p~iB_lb#o5!m)}3Je@hKu$&qCD= z)t(E^a~_Vir-zfu4FX1_ja&N+0}bVbPW=t;)EHEop0jY4y?{r2Wif*F9qh*TK|To1U0Z* z3bkk@PIs(YNyd(7S^hPaznEbFJ~_eO3i`1tJ}I4vvRyfS0MhyM5m8cdvna z6LlEBE_>+FwC+Ez*m6u_i07NgkDIv+_1{EISZTzztlSZVRJ2k|0)`kJ?V%bT0C3snRc|yUFZ62foy2Q)MMw4(O3ELFCFLOn`^Yk%!4heuWP7#N3|>(v~K;P zKg1c?IU3FI@G#UesxlqZ3dU$T5_ST5y@8-(X629C(88Q_+-tN0nlDEOYaat|eKCG`TQUWuD&^y=Tbk|*2{ zP68b)76ohioxvL&(No7`BcP3>BCiqtArCwZy7n9b-`Xwi1z3X{=w^)Hx6pr?Oxk5H=;4V6 z7W{U~r#xXRg5WFhG13TZEjJ(67t?5wVLy-I$rC7H{3NQ#;HM}WMonGyG}V>+A&$!I zr_+G;um5ON;{B3ZF@RR7Gg-iw4y)l}B(`;&bwn$rU1bfh=O?l_ zY->?8I)yHYeE}^;TqHzXt=Gc~RPo>y@+k9YIVC_FnjUQ5bTION4_=VR0fE#668pTK z%|qwDBS!w$8?D%7DwL<1OQRw>BqHb)R(nK(`})!PJK6K9J5CD7V~wnDB5$OR*_X8l zW1kyEt<_?ddlEmXM~aO=}rCM*Yn6zrn3f{rtceRT6Dx zg2&&7b{e$Fn;reZvL_G}@@M{51*a*(Soy4}R#Oth6hD4Xl_z!{vnov0$A z#R#sGa$Oo=h}F;(mI)buf5I`K*REATM5I&`S6G(i>hVlq6!@G+2{S9WYhKdJ?b*L6 zj`VwYKEnV0ojK3I$;Bmzyqt}C#&G83TLiGzk2HfLWvH|K!OVl*IsUqvOLpn%=NHL@ z&6GDi&dHsc&N7*JldhqQ=^(1n3hffeVp996S02-dKIAM?x^z5%0`@W&b@J9d&1MJj zy#>@Yrt1bKt`X8og~wJy&)9wvNz#kKhL4DcLL^vQhPj3cTjGo)geyx$Hq!B7O++v9 zY}A^zf>0t3CSwPt0NWx)or!lx4fO?W~>w_QpWF>7?l$cA9x z66f}nz|w%9Dfp_JJB+Ex)X-3~^FF$51e|e<#pdC!n`@*u#YD*?Ai#=%l^QP>T<@QN ztHMFcph@-Hn4%bmDG{eFlFcKJf%o_f1LPp2&yTHb!q1e?;HoiifD82=P|$xIL^Wk& zcVAX{$VUQPuX32E!^~A%k`FJC?{G~^fH6}M&7ACT{|!p>FoLNumjIbOYg6}-PJe^T zN5kMvl*;eeYHDwCCFcTpiw*(aqjJJ`0<0MUlV#ZxNiZ4h8cZWmO>r+_g}r=Nba66e z5p*#s43k<1x?S*8R;an;321EH!jSyI@UNW5s4QY*zrV|LibTXT{n4hYPpUHGI)w<~ zqlNV$9)T@!YQi&5Qnr>w7HjQFbO1Fu3U+{`c8HRSC?wKw^-INQh>s=JMv}``$Kg}C zQ^v=h&q0Sny|vm01KLOOmx)KX`xEM&!9s9U?o+nNEvUabTg}_}x5`2`h1sQVWgL+p zn$zyA22m`Vp|o{^oX`3u@=lF9wTsQh7k86C`ZIxwzv=a-8Osv8HZd&)su6TMCrM~r z``?y)=k0Bs*eNE2WwP=%M6cYvz2ExHD{EZ_iydp|1n-y8Rnv`7Ftybe2u$6SrJ99T zEO6BkBZSVe%6WX6_*QNS>?nw;>SR9p%BEDAuc+UXPf`KqP;xD&9EAhPT5O)i9YC2A zN|AngeJ}faZ7%7X0^vZ^km>5<^2dseWRk_A+B}qU<}P;>>9T!-xw)7aKf;)_s?&28 z6hd<7t-u(kZ#Zsipmct3>WH^~VcXw=!r*Aax+x*+m=Wzb?Qua*g|vtHukRqiL-*jQ zlBl;1Ui&B_pG8bs3K@oB)tX5>x)OovU-{>P;Ev;a?PunJ&GcDDJwC5jvjtbaQBiHC zdUjd-VHh$hH3s9fArp3j(RZdidT;kuA!xXABmx(gCv;(vlEMiPHsqxCIK>oP2r`D4 z+>eA`nFhC~w=pW3W@#f6i4Qi@&CMCPpXaWanlrGa*`oaIYqT%Z>KmG6Nm()g^;6`f|Vu&p#$B=V3M9XaFx^+UCHNYubv6JZA zIs&Aj#l@ug{_ayiRM!X~{Q{C4|8pe;EC^OsRut%N*!&D@Umu-FA1N=Enk%2ips&t< z{V=goS5FNWgYG)lDmd4+g)3V))0y1OtX?4}aenCs=*&RH0WzWe69DckK(zjScQliO zI%C-+ovf5Pt;z~70^I{iZsfsk-Yl&w!h{o_O|WLhke@$2h5G1! z2c}%Pes$rD(z1>AF~!XJ7CIM2XP8_rd-o8LAjkqA-g<6LC<-He8$B+)#15Hu?{mw)4bBv?zO+Gn{O!`02?U&oBd(-^!#9uV$ zDW4u;-B5JlQ2q^`s@R?hF9Ez8%G$QIN^fL)!7D@_M>KRBn1jbK{{l8UPAX5BoUt`` z+D?d>oU9s&H{SFlPo%yAO42QE^bqWyxywq}S_%mOD*gx=6B2lD_~svQ)*cXha{nJ^ z5)mmuS>|SUkz06Q@1)v2SdCa(kR*;>xvARJ`N&|}r+L>a@3tR?5IF+wOno|q((nf0 zy&LEOk_BmDb2{lhMMtI*L2PHAt6o;iI_mq3W^Qq1V<>d(iMLw}EXMqzp=>UXrV<9? z=!Vu!H*>lkt5_a5orq=FH5N%L^WuSTNdAYb-wwOpeHMbnbZ+$$j}#c#V<1@amMqpi z81Gh~W;TfSAw2K8!YM0Sj-<~K0{nH0=_PkU%QFVAml#VIwmf?CPDic-3AxYZH;eS8 zOneJoiO!7U^sR2z5;k{I5{`iXnUV&MFwyf{tRl{Xq*|$PR5C!zyncB&lh8YRd&>pf zD}l8pWuzo$6<)!5+tW<#VhvMQK3E%RJ|zugK*Syr)ofZJ-MPUDQjkz(Lom_<44g4? zvmOIZ!YI&A0CGJbjDCB2J19ZmC93a^^Mm4Z*YJY_OH=ih#j;h0orM3Am})=?ggcr3 z>^Hvnm-=VCq$K(ZYVbM=9qO2l&Eh3H-enbZ+pvoR$+!JliAH;>Z2`+vhu@dGwok3! z9bBWX(tmE`-wBvSMZ$e_p^gO-qz&b8czjQr@G11Xx(}PWO~#tZzXkR1zCH9k65bkq zYJQT(4u_O07O;B+PadF}0wzvCY#=-d41B#Zue!F%bN?@7^fZdo2dNiQa2!-9I2Fk5 z*GJvAm-=^j>w}?+{2ngTMm=W3+F!jqM~joJ(~Jxqua}HW1d6!^64^<08FW~#m{^Rk z_7g5CBzp8ybtsLeya*iRn6d@%Xs^y}h* zLT4^!Tp)ygje697=nt^%ey3Q>L$%mY7juqZAxk^MMl9oA}6dq6~5j%tV2}x zdc6BoI4u{=ymkOo|J0)y!&yQq!~_Za?~2I6LR2OIP&73@o;YVURIOQ`Ib{*wbT&Q? z2l!W8aP+K3!`O4!X{U!Jz4-_U`Oe_YZDV|&UZ49XZ@;I36U)KnRkX>T{iFgpf-O1c z8CS_JJtOa3!0#)OOa=%Y0om_hM8zFoMkjbw|0x+*i$n5agbzx&2T*{#o5lsCnLN>` z)MP-3j)?e!OF+QF=dvNoIaLYWfmKansmif7rK1_lh82=`8D}1up-`z^ulzG~I<6wJlWVkEJi=@;~S9?V)^L1U_v6?zEd*hfjf@PjeJTT-k-KhY!!CXm5l(^;%&AQD08w zG))^>!U}&m?K`Ka*Bj)U3O-W@ zUKa;mG)eD`S%J%@S(=?Be;J(X4+Dze(MgBi6}H8_51e;4C)3o#Qvvz6A9}F9p)Z^2 z&udGV>ykfCnhLsHX;shM*J~2@Yx%D@@EtTg`p=2_gGNSb{q>Epo22ic$!5nyb=Uqt zcS@ylq69hoX?bj6U85%z6r9sps5ci~9p5e#+yxpc;}rR5G++$2-Q5iHQ&mY*sQ2T^ z;{f-w&UW$g8Uq*+969VVsUNeqJx{e~sn0sxmYUwx--jk1d(si1g8P@N1S)I`AiBhH z*dwE7#(D(xN$+s&-2JY$`ev@)rmwC6nwfJz!1U`?-^{^*IfO9$USWiKc&d)+WK4JZ zrkaS8PL84$sn!%$x7QGOteTFrGy}^934&ZcOe8`|aEJ zK6WL0wD8sPR>C3=cKpudmiC9Q?L&xn7OO8yW<77Z(_^*hychJ8r)IW{(-Nq=x@a+P zqa6jv@RODWZ*iUk1b2#`E1zTa?+1Njj-Ok7u?Qw2l|m6(q)NsECTUFu1q)YC|4H?Z zu$Ex=Sb1XA!Bn7X?dJNBq%)}odI@W=YGQLUgKEa8W0FzFDQFXo6JD=+CCN!Q{jb0P zJO>I;vr)n#Y<-4bx%hbr<=0hKh3q)VG2%Eg>tEk4a#y}2VKZ@ zy&q|WcIi8VEGRnd)L4kmr3n5CE6q0jSzA=usze`7-`}T4-@unBlCmh@ zy}crzxswoCw~4>Lsvnb0Ud5zk)L8EeEFgS8mIMq3GJygY@SG8t^`Ete&BQwJFa42_ zFt;GvMB=X9j*BXW(zE%+8q(ar$;s*W`|Fc-ZElxaAtdE!BpJUj{sZh_CLiso5j~!8 zo=HzP%AYl`CC8ABZG~oGc-2kV0sFFYp>xPnkE|tzv(=DiUl{LpdLiG}hFQbv$?0>> zOWw~lY?qJjCHI_3W!HMQalnXpg7I^k|KsTYXu8U%sM;<{GsM714&5mtAl)G#-AGD@ zba!_QB?w3(jdVyi3?bc}B3&X~-+h04{F}8HW)}C}=bW?8j=<}LyJy_aL8e^)h(o1C z&GDZnkEZg_h;fjvHKV)H-aJuYo%eH+HF>c8k zTBJXaV48NAN*34!>ok3#$adZX)z9H#gGSGdM)|~OVe&2l9l&bS$%)_c-7oQfA3mlE z$XLC7YFC>ss9M0rg{w|7krN5@aF zgiMM4`Qwmy1-)LgQ8-TAb&xV}AB%T9#Ul3exmbMiRj`${B_;A&*!zja*bFALWE1Ky zI;ojIg}6O-T+YQDF+pYM~cfQX1aw$$>&`XEN+pP3EHi#bVFfvD1f#W!h1tUTeYlRm#1+~4QfV`FII zxo~!D_ThH@+B5p}_x`GcoSa#PPN!Pq@8g%P$-mDJB|ywB4HTunAZT|+H*V~7>I^Ia zEhetc{;HO@NFbnM#J{f`E*<{L`Agzg7H=);_tBgo<~pxoMaqMDvw6K?yEf8lPhG1W zx(STB8I1q3#zs5WJQH|s$}=jeSXyP*sMUx+Soed%P#%LMR;d#qfr!pMsDUUnr!7*X zdEB9Sb8~Ap#jo2^4QT1;goXW{wDrf~1G>lQ{(oNSDkT&b)9tFughjRmUT0tC+z6l5 zTeA^aH5;AQ@be=v^xok>tP1o`ZD6s^26-`=*5mkskBP*j*uYY@&6*HWC70zId4)XG zE>zG+Ak$Vzq=VLjH6#6RFTYHQkGnVa2A0S(vEU{~=oC z1EyQeIU~9O!SWMH5_JuvX57dC4`PGI^d4Cf%pOz&dA*)8Uq3Fq>;}dM z-Wxq?z)H;gE>1i-LJ$>uM=-BEU~;EljxCmg^pLb#_qbo<7~7yPa31!*RhLhvcA-I$ z=XhK0WU}1Tsx>!K#^;Wvn?~LLoz;`0jRK~wF+7BTja7+bZph|uob#pU(hg^V)nIi?k{Eo1~ zFNCNdAkHApV#n#6O`7#lIG-E^Wki)5lRA+(hLfLAb^3PY9r}&>B@BomRY( zu!1WT;*OhPUR|Y~KxN)y&cq|_7qHd)QwXONO^G1hSRh}k)3KFM? zkjmW6T&m~ufB`PHNijA~37Xh*tvFqOztB^MBzk)u$@~LzXZRKS`sxmq-?J=WmC@X? zwza)Y%OwQg!HD_Zz0%}J6V`oK@NOT?m%qM%{%h$GUh=_^h?@l+?oYzg#g5k+LE1=F z{J$N!!t_hC zRH=3?va$Zr{W<=whvvOQ%~I9H^@;7QQuND3;O*J@uoaaQN!+ia*W6#jhPa%-zh|eO zBCw;E_hhnAYk8+qh7Irh(MmL(lS^Wzhsvp?$;^}J5yEe{Ddf?@H@$=-h{he!SCr_{ zQSgiMY8M@va?lptsg7UkJ~WNZgD^`8yw40wt=~j^Xb-6m*53>u&PF3EIpV^0}Qz-|5a>6JaA9qHUXDQqw)l%zT! zK=Q|=Oj(hoR%x4|O;=(G8Qs8F4aE+}=VaxT8Coi*3%6}b`hgSEnls8yVUD~5Nz9YR ze}*sDH^B<0%%;3J=ArhdH{qw>R5|ntsuVuxO4;VIE$|B%Zi?M9y-+^)y&Q|dJ?eX0 zyd#TUB*}3wb>}%odUdYjX>r~f9IRXGc~uT5Xxw=V8YGu@*xc-lko&tYo6xEL;qQe< z@}rdbA3BOKbzMj%fkwn!mnbx;>vsENUJ4NXVcPWLzrP3E0o&KtL`MEsgv!dwrmWubQlxR@ z_2NwPM zfbNU(7~rr)Z6rtnDT)ZjWtk5!3Mg9KowW5k>)Ioo(M5#Bj#)<5xqZ5N*;jdf^_=-~ z-PL>aL!rH+qsQYTVoESR&Ybmrc7(lRN$lyK6y1)q(O>sZM`T4U=NvVJO&v1v4lAkExmg4K>QZ9cSh+^^Q z=}80!7q{U2Kd}N}(yEq0McQ`WIE}_u$#Nh;@o3J?CbRxi=zJ`+?Q=5_o%R=yeGY5~ z1_mYoGq49vCx;IBh4+5w^52Bc9@@0hzrzjTElIk~QQ;k*YQhY8$@%ioq{tUOco2Gq zs+QJ}47;?T8-Y>a6AvIy{x41j7z6=QA>My+85dnI^)L80H#fKEeYiaWgEoyeS~+sH z*ldXeRlsvkfxF|;=ke4Zx}~wKR?-*OV0=^Nda!+f8x~<_A+ z=j^9(7_AjK43oQ#G)#LtqkNb0VX#Biq4GrY-6ra~#~Hz0PT`}3<6VCc#;Drz`_l|c zNstU3I(`-4DfcGeddZ5y!EFuEk)$xNc#D}PoY`I0E@PSa=jcw= zmTt{Wu~;}#b}PZPz;W4~l&{f}hUiaVz^8o(x=@Wae3UH(bm+bzeJFLfX z6n@dQ&Ay)=EZFs4SGxXNW)U`R{f`(Ye$62=d(~7lcjxM80eBBYaucu$Xzu7306@k%!u>$xU5Ugdtp6qwf^_iBk(B)(z1yO^Ky=5YhKsNZ-|-1$dKF4*^=I(q z{I7Y=N=a?0W-a-HMFLpJ>jP&qDnb1@Tg76Mbpyey{oI$>Kq8~=yE}o-hf^WItN{-#IX($5Q7HQ7 z8cB0XYanybjau!c$E$F#;uzcESkNoZiOYk{5G4exdyH9XlEFXSqhWO-UO#>6xHHdwH;ejL!#Gj>F047EhP@o)`f1)Rz zzwiDa6c+zKA&Gh zzE07dZbg8CO{b8&WQ+Z`M1{eR)M2Ev2-5fQ&NxZ!jNMC~t~cN1j?*V5{^(R!i6hv} zFYt?e+g_@7g~_5cH7z)EbuCp<7xgdQVX%KP@~9Ha*J%xdoZ{sbU}c;}IjN7zKH#%a z^tz3OFH+7gyp1tIn5I%J?hOuz%<=FzGsVOP^E?F1kvK2tnEh)LkzMcEdR|}!kver_ zVI4gX{A*R`(B3q54q-|V3$uZyxaD;0I3w1x=aZt^bF&pB>gC(n=wO=9aQ^e*yL}!w zYESdJ3D=i6r-_cYeG6hzH}FWg#CcpuxGBiG&(cdfDkT%s=M)XbbhwP1O%JL?t3K@x z0maEf_aj3@zQKg5-*CV7PyQL%9^BeA>+d-k|BjMG83B`EndZzLUCi_hfl9e$nXkar zch*CPLF#N*s!w#>yL~rIGk1UIG;*{D*H4&okfy|z7L(gzZkS97J!$6x+U4y_s1^dG zC!n}Dp6&00x*jjPdhU{CZ+mb9AZ^!dzX0j?`Sr<)S4{(~1TExGHoS(xjC!j%6A|RD zGhEpyx60g+7SJ2_aU=<2nVKxk4 z`vE4JDTpd+JyJ%?yFy$jLald_(JLVL>(B=bCIofDkfFk3tbhYkC%Rdhn2G$&XDMLmYAszfl|h5$fn4Ybqs~H(&TVtuiLVe6xo7+*Sj`45X`lCishtX z*23oO67Yv~W|*KA=}%wwQgzVszwJY$DHTD+zl~TcDWmJ9@1Byk>a$XrB ze@W?2Em+^EH5w|R)`4=UiO>~;*|P2vTABhX6k?qlYE0j!tTjnU4Gvbt)6+c%ngyzm z@D$Rvxoo;y4fJ4uKab?ja8aN8gbi#(Hw#`dCP%jwS7?`(W3suH>@-8oKH565*L-s1 zpcE=75EsM7qTW;~v#=PQLRr~q$N6RmHtax7XruGKI#}2``nQCAAVqGP|K9Fx+{)oD zi-$4U5471NfbmxO*8^#qvTz2A04Uld1}F+kVeW>0ePd;<;B<^|=>tAW}0G&XDj*1=FBtEp6W3lEf!ans~ZJ zXJ%%Crr6Sc-ByGweGIYz0ssp?fh{pb(9oS@^bJJf8wQ!b1~RL)O^*7lF-ZM(+ND-w8Wn>m3?3iSwpEDNyBNKwuCM@3pIZaW)5jO&x6=k3|BBPgC zG{2a=WW-xg^GS*DmMe3M{r}Gem`yAX!ELY9^SMBxb6^#dHLRWG~?1zd~ohpOc#^cxvEkf{hpr zs?EROHaANtFsGp2PEAGs`ZkMTMuHF{b{i_z?a~7H+4Q&x4gj0V)L#sLE?X|mFESY^ zC|QeC`G^J<1tNBrKr1J_IP65REgH_+b;+$Akv$B&)xqm?R9@F>keM;bH>eia^NaEM ze(C!+p)?U81`h+p6CMYiM^6(fOO##JQe#~_5e}Pw--7klyU;3V^0Mg2D8$Y2Ip7k; zJrxSxCETIm0I-eii6`okJ207RR4DwrrdDci{oXfu+?SHT2XR7s_FWn11mr1+$e9|d ziX)H0oIhR_#0+hY5~(zBc6!;U;?zN70H>6rX??5BY%Kl-$)5#NVW1Ps?MU5ZX=QE=3|BPlOMQ0$EFi2Xa@g-rvD19g(&2JFfqG!Y`pU;KjwJMi1N7Ov_hb%tI4hR8v$o8k{fm z2q0t=a%%R4WFaj*v`R9k)GdX#_gh&zOk#H!fa#d(0uMkO0K~DuVs|Rf&g93`EY{vR zW}GAWjWJB+yoOsrSh5Vx)=A|l+coblUXRE4Rb#2BG-_g!nbm>NcDqd836ZD#6vgR4 zz>xGR3F?ZaTqI@(f3toSvhjNN&&!Jm^TjrSC!t67*S-;^WR|*P1Vu%0Ycx|sry{yk zRcPPjzNKUGwZ9dmPZb=>mX@i^x54?I4h4-p-?C}NeUZi8uz*cL5r-H@77I%+`BlDn(k!uKHz>HWM zgr20Dvp0^E&rIt^Jnv9yKd%R3?G_izNZrRW!>G6l18)mwt@=0-NTH9Bb~pQ>$&}q# zO(9r}hswN5+Zf>oy{ge}`EQ7#=yLxkWg9~Eay!`E(h@vRIn%Ax@D}dEd_~xfaoN{Vmm(<4wMWVCn_<%|bg?3ME?VI%N znpQxS;gXOAs@8@nXrRnsUKld3YbN}ka3454X&fbbxtH)#MoIzM)CEL?-Y2tdJ5{B@ zP%-F)kmn}(^`urU0`p`0eCAUk9t6pLHHaUDJ~GrKD)=u%Xt?&Rj;zS?f{$CCjIH2h zDFBpgzt}t@%{U`gT9l|EF^o^f=1FZGt*G40t>YGfbZw`s!z=QJE|KalP%;m3!Vn8M zr3&Wr^tJ&=2C(J5J#h>q8@ts0q1Av2dbmA29C5!kcwZ^buXt}-&-}g+W!Xv^TV!XJ zHVlG=x&FSwJyFX-r$shmjjPtKxr43*>+&(vtXWO$bw2qX@iPuVHh}!bClx89Nm^tFh z-o#{c{|D88{fV?Hxi&lHRff(^s>Kq^_SO-Y0llbXA40jF#vggwX=q0;moB>}cy)tl z89mWAO;4^(hmS1{Tq83Gt1&1zf4)`(7CeWRSe1;iK4t>G;Yf{C(RwFPQ z;jRd3YtyBAr<9>5Tv)6-ILI_*IQ8_ci{&=1%lk*Qcmc4Bx*N(exKqK8t%d}N2#*N!OsJloYxuRy zN)qRRr|a>7SAuR$f(*SSKO*t{!6N=;VSRNs3Dvf7ld3G5ZK;{@tN6NAQ?9Y3T_Sh? z$XaSnA1?7Olf=8oz}v{%8L_9CQd02uw?EtzF-hZOURBADEo{I0Kn|{K_tHI;a?=@kGBS#hplK9%GV>`koMyF1hSQ#TwOz#?9j}x0bTpic&y*V?7GQm z2$WJW&9R}S+7+?0F8ROU)$<)g{)8=>sZ5``C^T!+$tM}1brQ<>2u>!5!(7)&bu zG`+T|alvmuQ2d$*36eByDnV??)yah*>R;~%C+K$HMoMOXlAU?^D8FUwOimV>vV@oO zbQRZzh)J_uj1{WJ!jSSYKu@x5(Sc)J{d8Kwbo^TzvuwB}Lw=!3)YhuIDm+}&32xj# zZthly%0%FTE~Lxx2eYNPY{r=QwaS2)y`FMjt@{p+hPOX+SXqMVM)7y#C2IGV_vlT^ z`I-6Si%?|C&unl#AS3Xy*>Tk_F0OC&-$dY%S|&to0x++4wF~?<8>#nFK>PBlpc-K-h+yH6v`9aR=vCl=7Ht#Fh@++s=ue}cXQs+o8G9B(3 z>s2WvV{X)7aYneY;w|cS9jU+sb&<>rGo-hBY3QzaWgcZzDX${|W?2&!8jT%hK|Pdp z!=G~br0gUY)Z06}80Q|N@P-FAA2gR2T`I1BbUW_F|ENQTyv|`RAH;%V356p4WHXV& zZxgWv!R*DO5QrNHZFW(9oKQ5Z84II{lZrzWmB%?n1LKFGL+MDh4*VZrucsToB+3l@ z@b;SM1v3|~&I*;zt(v@9V)#}bKr)O z1=nI!j3rsP5}2dRqP%})ch*$O$5UEt{S$ns6xUisZ4tWW5L;X(!4j;F_iI-KAhHzC zkT52*#F+jTZooj@Lkd&<7u6ck9+hp_#2N<`aSV$)MFJ0T0EJ*|lDbbD zS>H^&!8L?lCgc!}gfo4YPDifi1Vv9CTBJW8deuaiP^~Z8t4x{_7mOC!(A`>5Q%M-b zyq!<7D2j9HWUFZ#U0h~dIrAQ+`CUgaskKh|YUEY1a$GRaEUH>E=DazFW!QJ<&czH1 z_0QA28P`#ncbY;Nb2{8bXj4R)b41!2Q0an0p$?XChZTzBQ>i&ZC|lGNGm31BZfH-4 zLa2>zLjB-7gLR|43YHwvJE@9lkc&_>d(4&-a615;#~6qLDEU7i7(fBBCD=B%ENfOy zoZQ?{iZr>GT7d?dx3#}4@@v&Wk>9NBaH=W*$LS=#XO{E*DSW@Dt29o#e{Wy@zPxM!u*k-#l=hrhGH*BHj=w`i9ojvMHKQ>@cH;oQ984$2Uq( zl-*-cPV=E{xGuG72ZG9_#@_`&&}M;57~-08*%~I+B^MG8)v?L9tOZN##8po~K+>$t z8B!OxHl0ppAc$%PHDO-Pa~6~MTPd0~6AB`d&_>)J5kjfBG4E@$YLQZzRVyVx?mnn9 zjak$w;v=mEJ)p1r6aenfu-4ojClAU*Z{c9ZCh@z`z37j9eTq)elj0 zH8*$L@dEBW5fG%zF(8dhSVBvSUyuBK6sx#Q@ZEHi7ij-u;3*`7IJsF@&ur(hXZY4# zbM#t{kb?-VU8>r{&B`-#M_nEe_>u$fw>S{S1}1o5`c1MR`P3BMmeGYTRpF6Hh`kSH<3y0_)kjxs zrDPr1*qZ<&WDw|=aii=QD~iwK$skLM!mYWZW9wXXGT0kbeJ+#_UGcT-btC4g2Ht;F zx2DaM4vHGB)*u!J)Mj*{tdm+|K-Qk!&-j~6D>Lr((|HymMBCXsE9F9}FQce(w{c>b zV;tWUO`Q!Y=dCjsBXH1f*(uUXh#+tLlDS;(wQ-}nAdc^Zg>&U#JNAv#xey| zHtA+#V{-K}v$z(0X606jPuk3uvL7mCKhAX9B*$W<^X;<D8uhn65a_tD= ztol5sw{v=mk6BTYw9v@-k%5l=crbbUw16CM9)jW}a6J?r>@r zJdO$X9~F)M%-MX+ZJRS?9woV!a+*kl5~cx>l7Qg?EVW1P{{D>O|03nt-&U(?fpbLt zV*qX~NbKcqf|E3kBiE8MT~j{VRNL4#yQKfgA$Bl)>{R@imhBrFwnUNNugTAv5mHqB}WSAkZiFF*RRS}SGQcNiXGkM6D;8!1+qD>IE zy?_(o?`M(}b-$}Q$BV(h$H5`4y?2z40YA!n69WFxJ#K6~c1`N-^x=y2cRgkrwV+O? z3|+pG5iOGfP01ZKmhd~*^b z`eeK^4jarDJ$P$E{XW=7A8DC-M*v!{IxQ}bzca6h7e&5E39BzX#){A|F>DM5kuLpX zL)(oQ=dwnqXq+k#ghJKM-coSkpQSauvcWJEG1E2w)nCZk+iGCK*O|EMzHO{h8WgE{`N4CC1m(;_S=TmRydV2 znkz8v`uw3o9nVtrp0syCoyC8)jTx^YEJ$WJo&2{kLM%Yk^}ATuFcuU*$|s6Y)tRjk zjS`qZ1z8PoAxd&OWlHR+-ie}wOoCKLzE5eNv*2p}u1Q5AAU1AEBqBOg#l#}BN5fBv zpgq1v{{t+q#)>aS3BQVKEqm^wz;&P#KCY$FNZrO2A+@U)zqio(I8f%HkZ!`iI~VjJ zPr%6@O}=UzR+!QYpj8V-f#9-Lxqq^O|736LyKWU=vcfpbnrnJ7O%hB~pu{a67tKAazx=K{G6r9aAD1rzt+&GvJGV=})9Y zij?PTSb1{Qv{6lmOO*Nmd(|(wZo20|Ei)ox=fG^r>UI+RWQ=Cs=TE+7vL^a!4KGL| z*LY_g8Q$M%w@mDE$k$<~IY`%9b)+-eINz)rK-Tsv|J&=RCoCep~@p`tPZo98juRQDB_2(Gb(HAE#CB)6?GgxX5soJw%*vDeK{7? z-u8`aO54I;p{eSU<)re6VMs`ng28AEq;`3k$`>xAgv}^umJ`$6gnY}jefu@diQS6P z`!=A#gp}3aH&vF+SCI47nVFeX40T6?KJnE`!M7;P$WgV{8JMFRL+W}?UD23gfd5GH zG(xE3gqJ}co5Hb&{%>z0UDp3-KGxj5fJ`h$#5aP^ah<+dFhLvFq^3o$GRsjTXV5`- z(Z6tF_MX}Uo{kmpfuN#(3ENvcB+prNXB|2b&WZoxU6okUWIJe37o^28+ikr=%{P&X z#NFIST=LA_I^eN~LM*Y?0)U+W6Ab`6O?Wf6=H9+g0oGvvGXUDQhJ&6EKXn^UsdyJ^ zUCQ=rNE!4!D+Q7}4R+_oFtu*zjUHqOJuEM01(+@}JcbR~)F>%ort1_g5kKrlexMq> zvZ9{M-{B*g-nZ_Yz3Hpz4wVskQkwhd;-P0?x*-(X5TCu~-HTYRhZ; zM1Dr%agCcf-grfk(&tg&QWJ%)ky|c`);?nz6Da#L_}{AS7VikqegIe0q$!^+5Qq@w z9T{xQM|<277eFtC^KG;vm|+7K5NA^g5p3vXxB#@L&;(0p+}`4e_Js`8LD$51BC6{h+yaTa{^St-y0WYv^nk02|jnJmnDrYY*=$noiviCl(=Q#;MQ}a#Cj0o*>VR8;9>n90% zhkKrkGVkH4#J2esJNA@p{KMkR=*Y;pxb|G%j5|92VT~HM>6;0D+W}A>pvw0E=fTz% z4R0p+zok7)rhq?XvFc~KGRb&+{5FJn;!=6UJ)`i;Cy5mG$!BydT0}F&N8w%XqjH;e z!D___?okG(MSn)QWs-=had%$3L{13B4cfl16r;#fm+i*;8I}>;3&X$#nmyIM(*|mK zQ+r&(?VBgAvz<7miNepMzq5ihVv4_TFiNSxc6{yqBZ+e2xGDG61--tfDwSj^b@VmP zdtL7nxQn3gkppbIdA92~LfxT=}cPV(xyiW7^Pt6G(aq|%mm?}&7I-Y}G zKMC^{Nc5U>1n8)U3!i1E&zpE~E6wPc(;r$bj84WITMs!h7m*duqa*&sxI9kXsgn3Y z22gkOexazl^uhlLe6H*X7uWrW;POG2j!H@JaG#)c--ofRc z9;m_n#+Yy&woR2>(E-m5e_~XLU%Onq=mk^ERdWDk$j4_nc)Gm&Zw2*3Uc5L6vB&kp zJe&{>P0tV4pDFEB@Q5xI+2u6l3?)XDW6KrxlAZe``{Li&)^~Dc+kSulnp{*cd>&6X zXKQQ)D=Uj~>xW}!|6PGb#rzHb5aw^`_`sLkNBl>XmtQZ(S%3Z_C9@6M)B_F6pdD}Q zB7PC~@_I4LNOK;dt=i`pbymN}1FKKhBB)y^1)(grr3iaO-Z?aHxj0TEY-#s6 z2uiiUhbnFb+0wyZ2=q81px;aVCT?)?d*m=x%w+xpizQHslPW9Ty$OUyE(lANT^t&T zNZlC0MU;o6Xl@J-;lNR05596FD8k0>XX5lW7$x1Hz!$@?$b0V{tFtF`DwvZ9lj^R} za1VwI9yG#hZTygcFjT>wlOKxZ*vbVR%RNtXvHS3zUr&kQ{8B}cOA$)Ul2xE5shzE!Y;2@0yxGq%2 zT;KYGf)Ctc226uZQ$k&XIFTg@%5A{%Zw`y!&uCWB6$kN-6C0V6v+WrJp3w53^an6P z$dom#4l#vBl{9fg@^iNirah>z&e$woPcB6X+)Lt>W1|0+`G|DqfS|ZGKAGx7!O*K= ziYNsGs{Xx}RLHQ03oFOf+O~&Z6_$aqFQGXk&VJ9PM_M`rGgh$Su`m*v_`segv`i=F6MO-#(*ME_Im(CJ7MC6oFt&O?eI~8msITTfNJw<0Ly91W^is!pPZb{ zDIfr_U_l)xnLi@*XnO-dCJ39r%B_`hePct2bk{E8%7t*jXtJii$00R1B)@_cNR8KQ zUKl3nsbD?_l8)hgP5S&&Ry#=jWT-RNI%e6BsJlH=E$%6oPr~chI-GoO`PTVkRVNjL z0x$RiV`(}$=l3(zSZYzLQ?SSonD9&gpGFf%jYVH!-ga*n*2%3r)}bO@?S4kpVI zeBDjJ4+wq|*BAA_U8iX@4o`XM4^AFT+GDGTs}w?G_&1{K&*lsR#oAX<8*$ur`={6= zm(Ol?ZLa-=rXNQjL`MenNgT%4&exqG^X~cN1#Af+$@@mzTF%mH)O(C*9$f)Xg5##! zagO?1#9ginfHS++Il(#Ap;+NP;iRQ<9yIm6M zAqgrk?*$@E*VZUxE|K?&*#E|3a)Fjo2t)tP3>h#VL5=b9!t)%~9h#t1Y+U`!&hlN> zU=#4)cJWj~)#6oOqp#{Xrbyo6_O|$fS!ROWzi>Wm+g3HgT%%@BYJ`ps)%$eph|Cu1sjBMV!ST(t`ujMyIcLBK0L(L#0HnV=God|*Mx}XJ#4G3 zxjE`G?dZsM);(^?j>wT9SadB=xr~=_G(<3Ew*S-0Hw;EWQZZR117@@f^N3lW9-d;8 z37`F8E*&BXopU4qi?n8cp@DSd48efkQ$2_c^FX8nIS@e<;MCG*&NblB6o-_nI%GI_ z$h+?+IOrw3j_>e~sclWtK_qSrEB5iC9^@me?#a~_`A5i~LO9slMM+~= z>JaDsO!qtulpe<#eR}LBoaYRY%a3ti3No&GaU7GNm_TAi>l)sUo@hrLX6)>L{5!bPD*z}H==`lNZO@#-{xq=%} zlop$m~s2gFdm}YD;1K1XwQfqc5 z4P-H#>qLKHW(bE0b&9^Xbvy*A&7lIujlt--5ru_bZp+kH(gOaDsiF_kQRIykeu*s? zeZ8{dFAo9eIW5S_WLP8mp=?53hQ?{ z#+NkZ=H~}%a;&D~<^`~ff~38cOge|3zIR=pLlu&jqOT%L{yv|lsMjb4=}~o#F@uUG z$MKiH{R$6V^jvvEp({lOmJHYUq!0dq0V@j1-~91_WzgO}$V3$gN@`(wvaCm>>F(+2 zEpbVt){^}{7XW=#RTefZx2}7f)rYLlo<^Z(VoZSI4CwrJHxDRVLH6e4GL1UsE~Lq) z(I?xpekLXRsCd-dji2Ghxr3C?q81F;-r{0~=a1Rvj`c>G=-wUu!Up{s@;luNT%VK9 zJf~BRy@g6xN5_NE`xe_d(F|0X3ydpcfpU#Hmg+uNOU3gkl?saQ%^Tr_15iOxEwhcT3B&P)~+VZ!rd z6Q>8PF_KO=8Kzg1G6XWmFmTOHP@skB#BB3DZ z0fVuS3b79Jn)qUsis}jif7CdfrgW`I+k-ia3e+T!wq^N6@B!?+|4{vu52s$!0Qz>7 zoMr%osx}IaBY#rS4P{eRj|;xKh?e=$Lu0qEP`*pw>X4|>-Q z)ULbLT}FV9vj3VeOvcmGvzEOG{^{UEn`0eg)EMTG6RiPWD79W7leZ;)KQk?#G~1c_ z)e3A}RvkVWq|E^fajoyQ^p1A%MaglM{c%Ci6B~=RsKf~vRF zgLGd7YRTV{*F*RWLeJx#^YyFl*C? z8iqDZBdq#bz=CVb>82daL(5s!9GZY}Ksm9u1dxiTIYM~t_Ji1<>+Rm54-XIN)jolN zRH%e}zm&obQ`CW9tW8IIJq?+Y21RFko)3UBH9)UU4Eq=>%Q0g({+p4Khq1MhSG#_0 zCZ;9ewm$P5RLI&oC7aYQNfXPAQ;>y1A`aYO?iviAIo5@QoQLWoLZ`4(Kp#{Fcw`V# zq>(EFf+_0+oe(!I6A#H+ec_s68MK#DN6Ja^{wnuQeTpX6$4IQ&lNlMwD0DyMp=h_<{5?O11OkG@c)*0895{6N0c{H4Iu#$U zY`T-77xn(G>m$5aYCdIPwqt71>qEqZtMIiAuBgiw|DecfsNwsq@Q_|eoDXE*96T=MnD{@f<(NP~e8v;m4w7TZ z%x7U8BqB^I-XxjaaGnn=ap~9QTs=S4D$@tT;+C#xY(m zI5?f7&`7`zHmHzB$ZtBTW?;HAuiQj5hrry>(vNa{2(|wWI%*;* ztDH`C#ZeeGM#h8d9_V2jxpsWoDM%2tLH_(DlcIvG;R}6XKJJQJ^A5}dr&M$`*(a1( z8qsz&pQ`o3cz06%`G=R3+h_-mOo5srdU-i!<`^7(#H!SDm$KmtW@(D%u))Ao_Do+r zGko!cS6OWxYh=l4t#LwK4*%<_!y5m7gf21^^?6@hJdv~9CpKAD<$Oh7R>FXd2#~gH zZzHuClJJ@DyQqsLpGy%)zw*aIaujCkuYrU(`)X-XVE8A-+EylMG$m?y3tt2vr+Co3 zN)?_&D0y!SPzJcs;AlB-SIAss4m#foXU(kl&Au5-R)^L|Xgol~N1uP93OlvuN1|tK zgi=}$C-NyQ`26g;ec=6ZO@XYuvxjwH5bPR%*Z;!{y&}Ax4f&U=Vo5xh!$&lsSPD2Z z>lAz69P@QOkxt}@T=F-@Ift6$;N>NW>%vG84+Kx{Oi6{VCbgtl3ynMvz;7p9M=k65 z^EPI2{w_Hvl*$Z(2cWK_>6U@TNxj}}hS3LZn35O`T-G*e*ixJ32g3L{8fP}I&f9*m5D;-!a$ZWrdBfR4#@tBVmp*k<8HrhsiTs*c$27!GSYd zS#5#mznJm=DEBGq?fwr$6S-o5z$6+&LtP$Nu)|kYPfjYa2vokW-}AoGv*p+#9IrdT zcFru8;1oQ3j|~rQ%}?r^V7}pj38B`}7;8%3$jP%{b3V`SxEf6){9*Q7XzuI+n8*L< zN)tpS8`rk(?*(Ic{(}p?5>8SehFzy??{|9c0=3M%rCtoYY6d}0s!iYhRt}Hwqg*8$ zx>nxpm^2e(;oX{0%)~~q`OcreF(&q#PdUoV%1VTwiICTKgLwOaRX`&)A6e-)@lk} zyie_BAbAo@<)0KLq|u?1qWBCo!rP)BYR+gFEQaFzq8jn;u6~LP{VIpo?@^hE=9;-a z@h%g;-evoiT@8dxZii;w=ffrm781}gtklZLM(Yn-J<#2gb`B3QfmlQ47^JsGoiJff z+sep=3~SCh19spNJ2*O;1+{7U;F2EFqcB8U9=vOSR}ylnSO$VH
    8S4B0exZ8)OxpnJVLG_DIloL+9zTEbf!ATQ`g@8w1$I%^xs`l9r*MbSdI}S zP*LnO8FfY>bTYeWevKouXwwg^2R=AN4Y7cn%14_ZsD#%3w2Jy`#2ioY4$`kHqLu04 zip=63AJ@`5GakWd3jWwx3obpK~;jl~)Y`KbNx;>IG_p@x-Vxr8v^ z>M2-b#c+X@wr@ct5YWbo6}u+VBPV^}a=%$KUOcl-4>F;=R~3A=1D2-G2L0ZB{bM_A z`E|2UCE`*yRH@(#zhHRlIBweL`a*njR zEQht!lg-JPeymE`#iqty>X-1PMX&26FKc7hIfe6qo(}fpyo&kvOpptmscy5q5k#vrq{DPX`DD0 zpW~H7J@2$rpFL}h6K&?N4G(U!MNJ2p)Hrx)<2x@}TB#zoii&)I=eDUMf}+T8nPh=> zM?d)FkD>8^JTaRd&mekd4r^;-TGV29u@}rXZZR<76$+apIn_t62AgV` z?d(u8;3MqOpW;PoV<%tYq;rp7P}%oPUh81hsWURJ%C(!$Sd(7eUH0U+iMV|m#_@@2 z%}OmgdhdD9`}r1^Vhqln1$wuhe7aMp&Yj}WCXB>Uas3tsaB-*iYw;@VWX-A(=vAlP zs0(3Opq}gue)F_1n?XY+N=}MYpNOA={U0bN`4>RQ9S}WJg0n+t!>I&@NEB=mafbW2 zR_XplR6PHnl55T^Ose+tEVXd@_%F#w@(KZ@k1yzAw}{UJFBgOWQC-twFu+WBq({@1 zYU-@J?|(F%RX|j2y!GjBiJ`j(q+4PDX=y1@y1S9Cp;H8u?vNN78IW$IyN3|z76gQE zzu!6M#w#y|nZ2LqA8Y;AWR5Wg9%rqtu*f1?9&b?Ed-OI|7hE_)36a@jdowrw0pI*K5sQ@BI`$JZ{3-pyheH>#8ymf zWg3x;yGs{`C-T#Nu84gtz9^*YDH5}-F;J~l-iWTc70hLO6`bU#@%CL3GpAUSpRG)5meUw5z`E0j7CE@zxaGzLSo$ zR2dqHZNHtKlIq+KcZ=#E(97;+ED{qCb75j+vr&^hU7XWV-J%c2?@isE;{K0o=WYcU zRqi1gO*T5D`qmrEc4E{>tL_$fw5R*|Aq2cnqMIrn`8UP|RaENiNIP!`XKcS+Gt^u=vX6!IPh_03?dr$B%Jk_HF_2Uciy*?%@$WV1Y0l z48&2%^JnJ^CAQVX)-oKGy{es=wTm~dx?`xCVKu_cgfZ;r-|GtG405_QhEUz&??1d- zf<4{S%#(gQU0wfCNA&cKW0w#+eB-mp(i6Dps3Q8z;CiPA^I@VdN(+DIz{_7mE+g^X z^ehQEhR(e_pth@#z@`7{-2j^H|1`J2h^K%`kVpQRL-x==iU=~5-s3*ug%X(itLRll zUn8FUty!Yn>_nLR@wn{&($+-;^(q=^OsR({e^AtS7&O%@^w0kg_Q z0y|A>>#b@eCydgyNjoQ0!}?ZC2}c& zE(wz9UiGr)2Zp}vdYmDA`|2v3-)^=oTX5Z1K*K&*{;KlY+lonES6fH}ozq{cfX}n; zD1uNrhB&3r{qZ6>B;h|JvNze`xDPy0v=dm!0agybDS6f!xk0;%*UV!$-F{*%90jF7 zha@H=*>53znNnowp~A_JGq0o#nnA95RY@6=-~Hnq^^ILi-483A0S0ovVXFsv`R0q2{u+wjRzAT*YKN3D{^p@ zS}@qRc^D5V0MRr_r9?(79mTr>Gsn}bz0~WJ0@v^G)(Hdyy!yNlrHh- zA^KfVk#l+KBhxaIGm9CJz+(`kBaa`0X^fw%Y`77-sfEvu22vMP2cCz3e$5XeCt)8+y?R{DQN>}z^3awYUHCqm zm9cvCL(>i0YFGhkJQ~!ZDIqIV!$`siZYQTY8+uVq!2ytsxw*}bc+$PR~^|SW=xMCF5~ZpUd$zRo{S$u*+boQ=xO-_?Dz%^p>rwKzF^h`ENOYt1jfPLDo4Z z7Gkzq2` z;pG(xD8p7)O`;86k^{4V={~77F_d~HA@T`jm;7$?Evf0rH@0G89#j0l@JJe>PrU1o z*ix=7j+r#1{ujzo$eXLu%3EKVD?p(juZ10k0c2KqOQK1=3WBb#9)Ui#FFUQ_=FpnK z*M06jM}9oqQf8POcpn}F;wnQ){OzqynLe}hmX#nmIVBNiE?CZeLM~xl%>p}Gd8?bC zQc-t17`z4}tQyq$68xMJ!+xqoaqSzLNGL}qkJAz@rMbPYlo2jBB%hcyp&vXP*B!+t z6X>UfbY5l**##x<6RmlZPEkp{K>GNerQ|`1vXNE{>~*NhsjNTLpWS_>u``RbHS-}1 z^`%%xMw$J)4K~jydC?#f0+D%=U9~%;)j*b~j>QI^pO$n>nLf3xR?}Jz2}7mw!|T z-;pnqvk==7$hR(^AK#mv%QsRP$bRF%VT#-W^hP1)pXj&G?Vu-Ra%_9euCy`- zk5qLqXpo2|%&O5ZN{IHTX8^Cdx}o}Oyc}GPodQ+%Q|~)KG)Kf)ucxBQ;GshEY&e*vb8&mRRF6 zTRQRC@_IfbuWdWJp#tpG+FPjvoF2Rq;^ewHh#GLbS* zri5afqGIdi5-XU_$knW!VYX*yg#gosR@((t8+VkBu4M*mz6}l3d6Co+#Ff;&kElij81o4s^T^-y z)?G$aW5-qNzLVcee#*h`6|b?DZ=7>MA#{=Im;uG>wvYaa?`tJcr2|$K8hZMnRkJA> zH2T{g62dfYoS!A6026?a)X9`BRc1D8wZoIluZv57TFh~qZe9-Dhm~mBi-nk zS`r|Lr5~tI3kHJr?}H}ul@vtG1U`Q;v3~tJ5-!tqw&vM&g-^5=x=b~w2OEd*M~yB3 zYcEy(#0gp9z7MF@Wa;{t{{3EG_tM-;1Rx}e$`-MiFF$;24E88hOC$Y{=~2s@4^-vL}mmJV9r)ucLO z(?1pR1*0~h*^)eSHy;y$U{p*Up^?oKA45?&qNW0QwP?4Xs40~X>?%Jawc7`rW{~@p z4tG;Dh}xBO$bXB()Lpqn5}0Bf46nDR#EkDObW*;LF`MVBrDwNXAZF;kxZP z0qyL)-p4^Ft<-MC)Xd^yJJrLb&h|D1)#7dJeLuP0P2%l}yD~l@HjSSrevZ*DG*a<5 zw!NL?1L48m@c<_H!^ea#YECjCUU53en@^{{=X>#W=SqMvLM;1@djMRP#R7{CF;a}H z4rQLRj*^p(B%KIgQt<%okSMfRN39@b7ePqb4S5!|UITng1oh^3NFD(nQtol-~+$Zl+a*v*N%vQrHxhLLyc0ae1)krNeJ6#7~trI@)^Sor?6= zHMw4(9C?#&0c5wZEXA#sk=Knle8Sb7Jz8=e-F6tIWYyl{iQ$seYK~wrmJ;Vj!)gr7 z=q;RZLB6-WUvae4TXeMBhdf6fqGY`uDHg0bjc2t^@uG!M#s|$r!W+oRQ98_lWck9x z@P%5`shqyhzVM!cf3`mJw#Vf;S8phhHY zXv2a&!vdY}_Bmm~yXpZoqtv=)ayTSTA5i)z?%nkz^f|Df#}=dI;O-}Y)NU!=a4Gp^ z?La2o4LD2-OLIxIeHO^2WKEpiOt=GFr0vkDYF4Wv-K6yT+gkE9&OBD%Y1cJl<-r~> z5v#wa!_L-P{b*AQkrX83*A!cL3b7R_a>id$hAxB=0pF1N^dM7`uF@x=&>0MU^nQ1O z2}`@5+WO>1BCn08=7eGE$LD_DXg$cBpehecUR}@*DI%6=Ydlm9s$+l7(&PH? zmyB! z`~o}UEq!>D`phjweJ|#J*4ToHEu-2ufwD`A8Ug5duKv2@=k z&h5K7J!lQMEYzKmJnM+af84bNrh$cEg7c z@UY(ii6}}V(kRLc4gW=W?+yyS4iJH8Vop}bP&}D?4oX_E#hV`(HhGV^PPCE~_Q;Ri z&EFL-E%lEPOj?6_d{2j=y2)l!VE*Oe`RwWY+5YONPRmfA_kRRC6jP#^4WP18hKxQb4j_QZ*{VVY_mY%XwXl^9vXIv&|KNB=<0}p{5!e~;nn-<7=gWQbFNzT* z*uZbDlyIZ@#UFR`WbBXa_K5X~AK%6$e?j(xqp^bDOT`rV!6@AVvaarsB-h|Hm!}Of z_|ad7-sex_X_GQ*U=l$@z<9PeWCVr}c%^nWBrcat)~L0efe_cnsnlBR zze%4iWCq+d%5`_Yj}gBDOk`$!=b{dN0(i8<2ftX$6^%FDX)O6beo+kTbE?9gg-eK) zW{deHH~|H1oSsJVT`$7|?=hb?SHXqR zzr;N)HGa461%BDxDQEr+r$eoQP5EGM2+^DH?)&ZMwgNWjq??a>(bcL3HHGGjMglY< zzDC^U#j=7irL^$b~X`e}CD^P;H>E zkHkkbW4=q!;uF>JO}0G5@k_ovyD&^OqEFT%!qDT~x(BA+-2$9&z!$AeiVi$`!20sP zN}rLFqVWH;05aZXQ!xm)n6r@Qhpn6);2Z(a(0^P3bFKe=J<-CFl3LGZ8-nN)#|nmYJOvQS*GQ3P@9kI+W_vSXDc#a}k@e*}(v7Wl-p~IK# z!ZN+zvg@JZ>~1=LGuq;e9#3a5rnu>%tI?=%`b zqvXv)jw{2*fMe12yCQ&)k|)QrdeIS304OEX{VnG5*0_F!;P22}CSwcsHP3+E(M8yt za>Ifu8HV)of(~ckkER4pa(%oxtC&C0k`UXz&LG$An{Ad2UNOUAkaoIIpN>$yo=esu z4+a92)>o}p;9#e;7q*d1f47?uBy zq>@3)Ru#2L%gqPy^n=HY%kdplfj{7k3VX;qqgd8ih^xk!UC5SsnD_!qdzXgfU*dX& zS`A_g{F(+oWp6gZPtelKb;0Jhkq0|`qy@g8Vm?QPq|GDt)-H(*CgNpS{Fba`6`1Dl zT3Q)}8-J!FKg_O-tcy65%Y3^s@X!~q!I{8K&p?8c2@D|+l)@Ag6nQc~48bX7oWNz$ znd_0sN(vc7U{?~Ni&-JWsIko^nOl`~?AxPgRzfL7yWi|!`P0ZxP{?WzR2*WBmT9f> zG=L+BXn@B*v`Iz z2bW#3xls3)PJ@LIJQ3`xXEzqKuSOfjTIQkA=n=miRHD3yeld$b`LX)dtCSxxy*VllW+neAUAaHHg7E{6&2XzQNqT1J$57&B`y~D zl;Y?4YZS3e+L5C1t_FBEKK?-iw$6PN9|BL>ZI{XEi8nN`-=WPz+1sXC`to5l;$oCD z#td0C0miFNA~8El=#ir7Dwoj1fDp#l!I?$v)Z{N&ea~i3iz)sc@u$jn__|3M}I>1h7bbvY5l3;^o^ z!81eNxp{f_+a1O=QZ;q8jxvm=TrDk<>_M+&WNwcmT;7<`Q*ZG`S?7nAY3fZ4bkn04 z(C9X;v(ibln9xhM|B02(aZd|k&U-K&+WK+&@BMsb%9gs11W&o4)WS$q<;^;Ej^7?y zKwF35FWpcMzAss5z!3fWyY2aJ2AKA`{&^1sa1I2sxVV6-{B54xq2~Vip>779#mi0Jjtlw<#xDM=Q)eL z7cA(SFO8w*TR{aW^>rURn_-*tjz#d@D&CCDa@Vz|>ohr0R}kY-a?B-6OW#)=VOedWwu`e#UpqOW?a)zzz-fZC*9-6SG_gHTIh})kAk%_ z?uOQQ?aDY)8}p%di)UGx>Bx561YSy7|13y=m}U~8#3}jGjh2zK~ zHgXwMaRaX(nIAV~o?qp>(M)CGZ>lt_hNKNF9Xl9KFqU-N3CVtC4b@k+2os8hy_?8p zx&E9zhq|P1k|Ra6U7Wo6y53#tw=$cu2L^A=&UqPSi82FNo+a|=yc&6*+!*$iBesAx1V7UBhb`vB$aKL7w& zEl^7#Pm%|vhZhNuLAwDS5*C#lO@ER8!0&?=&4WJ!W3S@5V>sl}@VgZvO$%Ym`b(!= zZeJLFLQ}MH##nq5@u5@$AEPYb1FL79xRzvDXlX*>0%S=0Jg&%drM)hl5lBjS$c?(8 zH9a+9Xr8H#D=MO5?>Hj(U1AOjJP7(&g+S?K6=cyuQWhP=q+a_~PZDqYBiV&ZKtQ$`t7a&wz5l(Uew z0-F;NQ|&HJ!Oq;|Ndku7P+Z;?(Pm@!kJi6wEg-{WfEoYfr?COXL_h$HV81&?4Twb) zq(H)tDK;BpL10Oi&eikf;xuMxyiu%`f#W(-C_`hvie{5v>INU`i1ueF}x>Z9uwUmu!-Z3&b{ZaZlmCie&w*@3D(%pa=qop zU3>2OH}tjlvTSsgPugYjQ;kX9@+fsxp?Iz}535B?rsqVbX~hCn@ibN+f@tB?h|1`z zq~O1wgX?06I)VUe`IK*bHO0p0mnnWFGy4kD7pG|(rK%q{AAfxgRY^liD6CjN(o91; z(w{#Pomouvm|!d#MpvH`9&LB9V)_Q)dHgkJo~f5T!4qKr5iB`k8!Oluvoe9H33 zdIT&42RA=Iw!8J2dKuLSTe0xd5CGLBfcN2}`Q`W5B1ukK&XikuVQoJ=Ai!y2Roipu z3HOTzDMESXzOhj-@M3@hP>I*)N2f@2)jGa=|9%@-%J%<<#`(LSA8@n3yi6HhNa(|ATK%&Kdn&x}cu0cP6u&{yJ6~><> z`_oXp0;$RW8c@1q6M1YL)>6||T8*{TsP>kdkN8M_&;M?r-4HqZ>pQM z7TWBpC-{E^G<6cn92dW&!;QxOmv!s(IS31Rdg7^yhA8Cy-zQUQ@G4;EZXf~>C7tf91B@0*i^J> z7rL(Y@+6F|uP!?0w03ct|K8>HcILpL*%$%5BWFJzTz0IPj6DL3B^j$d)bojENGpH! zyB~kiDcS7+jOc(x3Xs7AOEO@~6DWQAo^KA6@S6Ggi)*WiOrvMZ`sfQ8$a6WL<^sj# zFWVRoB zkTLUsSSuNmSeO44 zhxU(RZHU9B()IHg=|xKBF>D%>Kritm2>mgvE+OY>?Lh$3Yv8niM_m#VkXNl94#U@Z zSiih@I*B`8*_1lES=lrbYGVpqH;#91z9pEvTAKw`K0FhvDb`-| z@}B6kp3%bj29@TfvM%Qah3eF{VY4x?21XR)7jX8(oPC1bOZE0elx@u@%|vrS8l-l> zC=~o)rXjcpPLU-G8HS6l(&@AMOQ8=X<;6uGXkrY8iXt0E=Z&LA9&b~p? ztb!70Z)UQ6yqJ7&;uD*ES`QUMXQ?SF=Z%LRt2|576_K*ooL5Y)MN9+Q*a>;@0ouGz z()`CTcFjCLX=v`d?Pu*^?Rl3lD-}H6+!rf8@IK%z@3xMd{BcKR>^LM( z(a~&{gpbSP+DGHO$0)&7r?u^Xx<~OHtziSjkK&b9lhnJp!aeYjt<9r;FZao9gQj7K z^3d6PX33Pt2kPy-d>Or-Q#cPFeyMsLDm~eWo7UXPS|UH+%AGm0cOTM_o7f;w682WV z(&yX#qiep=(XlbqqLRt1GH1BLVdthILrw1EXzE$N$^#71`SR3L%IpO(>w|;b9T{08 z(%bb70dWZt@r+Qkh}#J7>jzzMy>%}NFUZxNkpmRrc}L`7dwXmH3NN1md;E~*LvsIN zE@c(5b#7l$&< z9$Su|`U956p)XE|k`wB$y~M}b8L8>o@%BVI-RU|=o6(l+v7Up)mID06kW}U0KkO5F zJicGcsGVb1LK302`qPdpN>j}zuA?ju}Vm zRqvQr?AWJTu1+k~<<#-L5+H10M;Es;3x?Dg=WdoTtS?> z3=LirMaA{h?wj%mw=3f41++nzQbWMMGeQG)LYD|8BtX7W4^-brj5UQ)lYnTG`#+aU z_3(ipt*G5aUCBpZ4MxDHNV2!`C@| zyAeXK_+2sQcvfVEZloxR)`tRZdBJ1Cgx^et@b&lwEU|=;*_A7I)*m)lq~rGNd)|d| z=CN?|Xe0LP)f1bTc)*r)O!1sNrzt&g5tt-D$0@ya)p;zS6mEZ8 z8F3|bOKaAuhA&9BzDcO)jQENZg1L_Bp3ba+p`3=N(_f<@d`);}!cACM{zscyUX|&U z(udKv^yTn}j;4_rzz>zkmu(6F67nC!RI2a`KYm(Jp%)enB&ed-lOM+8Q6U-M_XL1x zTR@X$mH^z1O~PHcwjn}ixcrx}+2oxiOGISdr_b0mG9Nox7(5OAu`L}9^JtgJ2bNi(bttLjXP~n=pL1T`LIW9{FScKcZ>6?mi5~HT`L?$ z5bw*E7eEHZf4YAVK{QWw6|iq+`!p!*9tAY;A)YD5jX*i{;e$M9REJ8{kM?#4Y>xZg zgP?(CP4W4+fnNfmvwSI~ZoEmN(epO{!k?-l*iZEjU&WMOUJ2Tt3gR>S47;>m<#FzY zQ&wU0QGb#aZ5O8*FEUP`FqQ#qG{ANMI6?sVJH5A3F)?s%03U}Rn8DH||J&k@d=FU` z<~LBbrWvYtRfw@wr@8ten^sHF#t-n#W6RZM9tb4gIuZma_x1#CBE1A3yXP<@=_oW1 zTZhpL#~(@ROIvC9{F6?KGPwR*O~Xt$6;RMkWSMXlTvu0jv0&ng=)B!<#KwfbUo)k@ zl&(>1BaX}o9tv&%9!Ed+NB?gJ<=b(_QM}^v}=qIk>smoEb*SU{@Mp1&9k6NAKI7L?D`un@I{3a zxQMZ3`B1-^lElsEGpqd~0wa6j=nnCDhbw!=P{B%}HMz`G=&o~RE;*M|ZF$;6au4@@ z{$e@d;~XcNSX)Kdlv`VG!|kz)Ner`*hs_KAVN{TrRe{^~^Yh}8^9EdL;|<2c_Qz)kM6HG%@Xw0*!(1Huzro3MpV#k`0; zTINolClJ^MI^n|?X;tl^{KN~AiDJ}=+!_V32J#qo(w|1fpikOQz9CX%>TMy|hlNAe%B zf82JS0W=H7#1~RO+WLX2GL;4Uea9V6@ddMMDQ6^7GWCR&X<;?@Ih$0=49+Ohq>LXS zkVK+<2~ySf9X)~f{rpk87ut&Rz%X$;IZM3x`Il$)*a1X-{j3mS{d^`sYgg{9d(Id4 zg#g4BJ$vD@Z}S};H;V(8}XM|Bz)K?T-Sdj9Wd1^slL zUP#lUX0Mo7+OL=7xc{vTfClsZh(9m|1m@)aJFPGiI)dnpbDr4S6oTd5UlDV@zFvU@ z8lNDIyx~Njk$tKnV}we6RV0R+_k1OgG@yDd(8j`O!wBB1lb}#EM0E={DZzDtrLO9Q z*UlS}HA-TvN3Y;?^jPg>wYO)R{3YUn(7QZwcU_L%{o8yF0&Wzu<`qVb^^QWY!)^qr zG4s}{C!dOnYA^rJwARsyo$B2nZf3fqMZ3i zNH&fLB3j^G6?&KB34+rPLWS&V@JOj7U+~!#o3M9E|Ndqjua4kWw1;sIzfU(enDe_o zUNc{X6ma=0VdF!w6s<1+7yW;12S7NhZ0TEKSW7M@^QtG{tP?=kh4Zs69N{-{b@y}| z;i2P_tIYkx=YxOm+1q2z$<5yZkolz8YbEq=*G3r6Aas~Ho=v3<>&)k-cUyfp;`j`a z&na2v(n5C?2-2ye^5F4T^+A1hFLAJOed-eHfWj!PmQs8 z)vQt+IJ^`-U1O;YJr$J-mm7|87NP<^`P1fsc(0{oX&G=n{6}v9KCodO?d%@VzT5;; z36&f1W&(TmtHoxpT0XxCU=RTa6(2=zn2I^J=`it^#mwijh*0nrcA8@okmw>jV?BP@ zMe>|L-ZamFP`_)2tcLs=Ph=9`H-n&vMAcKGO=_(+h=1n_`M1VzdTk7*r+(Zl|MENH zb9;K1v`K>Ht-Bq*bIk+z`M&OvTZgqg`tv>NT+ z?#!{$XDa`SsgBdf$N#` zXfzUqr7TN^LMPIU9p^M=yT8cR94-tlDP7?0$9oaF{e(_AAr12z3L(c&xc~W0i-%$P zyIrB)s0e^^4nv8g23?)Vn~>EHV#UW{agBAqZ$Ao67TAe#@eB&y=Yl!xXw#SfYNv47JKkDB z6-0-fM6S%o0iFo3Istl_kc8}P>Pcz>RBk)`Pi7G~Qk_5M9p;N@eFSA!Rc;m@2Axnv z2i(})#v%UsFDsMC<;Q3TV&r7wNK?m&N9Nq)ktgxsV-yvd6<*`lm35Q{62^36sBM$= zjRDUyw~F<+wr|_}?WE34!T5y9{#?_>%u&4droS7RjTsN{Y2Md#a%D+e@bx6LZ%*k( zE$}ZNK*!5rf@j9Kvt7|w8NB~m9&XQly&K=c3B|?yF`2ljR*jOBbGEk+BYxCID;U-3Mp1U;Dgx{%1)t)v|}}!Ms4MuFya@kpsuA)ma$4p4ksxU z-~$iDFFW?zhr5Q{N@mq%3^$+&kW4j0a&~z#R5#xQ8-%}#4F_lSEmq$=?J_3+EyO)N zEk?YjUH^PR4;N30`fwc|J(boiv%BKCa%hLVOFdMM4lsJjVZh6y@;r4 zCijN$?V0KWoJ|34dSFg1P|HM)BFD}sX+f{O5S#>r-yz(7|GRDk%crprNqK}*3=#{w zK=msN9A@LlOK#;vrPpDy3vt!OXIJH^4bZU0j+he3Qn!Hu@A--VqcMUWdG0@1Yr&hT z*l20N3Pe(hUlR&PNd}$1COuC5<(tFVN(w9A$%X$-jtV#?lTMUa`5p1VB6Qh4saFdh z{1@6piSjZ7h&Q9%ew-$)`_R>E#^(iLKuxz!+Dun3a+u)h)p*QXo9w2fkJCwR8jI{4C}%-xcv>!^5&MWaeD74DF*b>)s>!LXMd6 z*yXW$s1$Q0MZ7DaLpW#rnina^Tf9l_FFtf>mWAXq{36=<0cSot@=5mY3;q5HeQLkv z$;Obq>*`}v`F8uIJ?L`YF7MK+{N z1ak+F$6_GuABuyTlG^$ZQ}o&@d##y$N_oqW=?|uxDZE|^)EJ7R+8%E=1J1|`YFQ7% zm=;&eVE9-i%G-=-EYU>M$e)VqB+q=NOf|aYA5Y=@4ng3w=q1xg$I#mRbXo1%i$vGJ zn9Q)YZvi-1XG1AP>U=c*tFyN+lo;pt{!a_w0p!&HGDF}yKdQo)>Wd`JF4O{p*P4FV zc>-IyzL4ui(_f}_1Im~NXT~BlNA2WY< zpO@iAvWsMKC*;Pc;kLj{?gy}?{*xcLDqvk}LT`#U*vJzOHdU-aKa=1cz)z z9%$f-1HQ?y{L`Uf@01)XlMnkuTSQ7V!Sd~&G*0@DnjUHdOY0hs+9`$(3n*fG$2G(|g!5-jGWnaQ>OtLyY4 zbbBtZ?B;46Wg}?nzQ|&t@tQ`(BaTH}@oOFvea_b9A?J^)+%pDEK~gxri;br;oBPFY z{--U%CnRsvo$c*jl}ze+(t65t&O*JY_S$Z9#>n`til$y012gz)m|D^pI|UzXYesR1 zCvz+U;zob$z8GpP!xHHEc&AbJX9)WF_QE^ad$(|Q-L$U^z9ivWC7y^=n+=g9c!{Oi z(&3w>3dx;B0(JzebP`gP)yind=dbYvfb1xUD*IWK-s zGh;Ejd3#44cpX~L_ao=2v(*%-(F%3)wv&4mr@@$|n zwtTY5@l@&YE_!_9cjT0_%{^-I>Oe=Gnt^IqGH;&w{hg^*d9wBx_y3e2UEXxI9RPfBNnVej7^t?rPx#7L0dTAS;$d0 zIafuQfQ5x1NAkw)XD8fgRqy-ucGQoH+I^DpMT&q|(`t7E4|uhAX~yzHPVorZ=iroK zya>y7PlXIQsyh}J-*?r8-uRrfUF)EEvxVw`AXjk?kJasiQ*#1rPD{N(6oGIu5@Ab@ zny77>6cni>Gex{UbUccu2Rw?Y1o$&91`o)ONo`09KMT7op!oOiP5nQpFoercjO&nuw{yS!cjK$+W5ZmASL+# zj_~5rAquNQ$NRNj<)oS_*z$&~a#SD@vU)Mt6x8D<<)dwWgCZL?tr8cw1;%KxMxG;w z7a_G`RBpwvL_=R&I~ux}TR;Vnec&YCHH8UL4YD%d+ikX}&}9u5tM z+JqudMsf7YTz=S?iFwXRJO>Tp8n+k8ID+(?yV1It<45eFJt;d~PqxpTEdxAYF247u zE3y!XVW=an>7v;n(}a#8FR(c7K<96jZRUm<)dF+j4X5F8!E7XkG2LUF{TGTlLB;{Q zWhy-qfEm74`z>|CAZmZCf<6V&3?!RGzcb3|7lS&^xnA#Ul+Tsj2?JuP#C!7pksq@7 ztZYy#-&Xi|f=cVxxhkr{=c&g3E<*Il4jUqC9c`J)a12e`KRP--hj5~!TJq1dU2s%l zM?Ul$-y!9^dv*io|Q}0NcnKqT+W(v!ETj@Z!Pu z_|0v9sE}Gu^$&K#woSUmb>!82c;64rlVw^l>85ybXuTktu~0W0qv)ag-RY~@)kS6c zrI-!hDt|XFq7{**9Mqy>pBrjg$LuKYzCgwF>tE$MzH(>tYBSUc>#K;%VfxSV312Y^ z{8?VbvyKUbl$24YgZNao%{m$y@&;syKL{ak#}oKsHQc5#SZlqx5EgA`R_ z2e3tF?zObl6c_LQeP8goE1|zrvn3?|`6B4@=0POI%$&1%=_Iv%6fKOp6->iUoEg|ElbKmLu7Wf5mN9sN=QE3$yUbOrqb~%EA><_T` zOx{EzBvV8-n=Ar@vx1+>U_NAx)9%={K7^u8k6yuhQLCx!KU^l)|a-A&i+ zty{2r(qz}8Q~p5vG9;Ty=T!4ZFROL6CciNoHLn|q81Dy$i@Dcc7ia8^@^^+P2f zZDY@!%72wZ>%Gj1zzh8)aQzXY>><+z*49U_s**K2eat^NGuEG~3ZE9P*5n-*d`pvmk6v{MkL!$HW5{?>C}bX9vn718G`$UKyERSk5xsz6;r^wQA*~6K zq%)Mm9ezcC|E47WZWiGkU(vmqAaE?U1ly6kn-QFBRm;H?+UsDsSCe;Y~sA-r5{A!Y70!wUvqfhbw z=UCv)9Cvqc9?K@9d!N;zOT5-k1h0bn(=fA3-Nu=@k+^$c$^6C0#=bF6DTp1@_Y%=i z=M$6=11bYMoYzN8kB#Xh;p{LdV-l_I8~c6MOOvh}dWJZ0p8*V2gBZ*GmG<{9wKEhO z!%mwq=-?AG>w`=Vug(<&5Rrtb0<^X8_YlZiN9GkJgq|R?KNQSk`r3;>uenGWE;CZ5Jkrvgc zT~3}lti5xPF!&s`hIC22eVYs?4!q^01w^$XK)IHFd= z&QdKr?>wM#hbhiTdv2qECw*boZOm-)Bh%e$$3&pR?)dj-^#{C;3(ycrgb-2{=<7$d zR}~~gk*E4zCs<-&pw=9rcJ`P;-PYN{NcKA87FFHI<8<|9z7Nx% zXwi(YBaulmE@ch^%+7?9nQ^yxKa(L{9{< zONx&e$5+)d%(6gCQFYqbC$4A)CU|xUr61Y0y^to*CNw8urW+rfhTB@EY&X6atAs0h zA2HX*jjBM$+Iw3#dLpkU+(;2*+bjNg^4v5u-~Z5Jb?J_8xoBOyRy^gs?UPPLB@2@W ze>{r{Tns7XV90rd6B^Md@7gQ>#;uYiqM>z>-hSU!(kX`GPC$dc(MTko?Li2I6eI9RG%n@ZIM4yJ-g(Lme99J}IzrH8m%zR}Iy&_c~s+xccPa z+?j_mdiF!_PxP;!B0cDsUxy2x;xMTZE1{OCAa}yW4I2yJ{&&+8${K>Aa( z-{m!B8VjU`yLwSA|AeZY5QkCfsIEHx?jePJ5k~rtG11oqe2SDF*YJ3v^HA!xa)sfypygIGmC~nuHLqI zb${dNYN<*sAPm++vWsBAVIo5pBFLK%SQO$b!cVi{sL!MCrf*_fZ$Ef%wJ}A+3d-CP z5I-#SIKJxA91Y3wo7!mFBt4WW8`4^VD90X*7Bw0#^_K$kdP1wX_$1wDCv@t6qGKh5%0tA z<-h&IvE$isZ`XZZ=lMDRyPaMFm=YcS=!2PW<&LC;coc7_OrseL^k^^qh!zWN>a=2M z5k7$RIdBb#J3!h3C5~Fxg%Un2pCR2ma#y9pk@opSE1ikirr)Ry;Sjk22UPVO+JgSF z2F)ZFk6$f;;TsYgCS=%PBn-m=w$u6FG&3`^xkfxPwH|~_-9&wmIE7POTsuoK`*;wC zRtpBUa<)XRxW>-UGrR8LruF~Kawe6LVhekI8PE~TT9N!;2Rean5j!693qOB<^+Rv; zW4igE1n;p?+JqRT_^KDIOpOb?5kw6umK{(q{oY$pZpkAEIdZa7ZbZIEbmvzS9C{eM zdE9V&jb8^mZ&}Yd2>47ey7RL{(OL<*vs|#*HOvef0Cjn9= zV{?=J%rPkLI(&HfTcG*hv?(YA=z`i`s|&`~9nQC1fA)1@+01y=?8u*|~G zxkU4p?_1}s@zu*)p!Si)7Ssn$u`EjVmUA>*vyo_TyZYFM`h0b++E-0=Q^9t{@aFzA z3$k8U(M|`nV)mPOY6BN`WXF&R%rtb$|DG_n4KPf+iyMsb;4`#nY3z}8QRrHW(Tu$Z zi$!rU*d{(8;-um!QiLU4N_^L1;~=9KIM$P)}G-;3AhCXE^$mFpc0o zX=X3TXf0tmKD{iaUoy7XvJ8>9r>42FE52H$^vd+0-7*%5Z;^~RBvgQ)-Cw~m1mR>b zEW})b8iK(2!PK2}f~*oCNXY98eV^LJ1f=~So#~*O&I=pSz{xX2fL(h(;Uw}}e4|-a zn#RcGWh4`Sh8U@#eYpa@cD*R{=qdNkamOJm&l3@Vd7u#qBTAN4*bE4$W{$M^Kr;EZ#Jp`|PHhdzL*sh=7f^{^XdVaP1fSpkv0)V4?x_dVu{LD4aRj+m5sv8_1$A6wwcP{kXdjDQk-yr zSd>UqO+^k_3@-wO6UH#U<+enIXx-E8d6wh(TgrPST-j}1#-KppO_@VOms`VN7WygP zbVwBwz3agj$x+NAo;o!QOb$0~^A4v>M98)Uyv}e9Z|o7@LMqasfOU+4c%cRwVqy$t z%`M3)!^QKV)p51C7`5#{tetRonqM7Y&rd}H@Y=3sf~amcZm+lkZf4*32KXWU3v;$` z?FHd!^|<(%=J8{M(?$&NkPgKu9@ebSoNT0(^G<;C(KYaz>9_$#d?zvm2JUjmHu5$^ z>P|7~W#+vgoCB$U%71|gl&1sLjJ^o#V2|Mhm*Et+dW&~V_$>9fqu)y5lN){%ZA2^+ zit=n#gJO>;z8MP)md~$4jHZMIK?wJ7fKgXfQ5|KYFAaJFW{-5)GaPrB z^Z3F3N0@0DE}XEaBeCPqbnE@n2RQ%pOQ-4itTE249099=DeB7;V%L8ScD#7D=Dzd% z%*CNEegHE?0$J}FRxhE+i}Du&&lG5s&%f{&&;k;h^d=CsPSd$tIs%!ayOuEkV356e z$9?pbJ2eWHb}d-hcwKWS7@kP~l;AVe+-lYHiM=26WWhS-y8X+$=wr@V4odQ(cn z#<0P2ZW=Jh*^oBn*@gtzwdY*z=*8!c+I^-_%wi#i7@{dt7oB9>GVyr;(jjI*Bzsk^`+inVqJUdz9?qHb071* z9yk9LSWb^M{b=tA`O4c^*5eG8Y`LI&UAfj7nORw@pRZJJ!NIp|S4`EJ060pa7ud;f zpgt)d(Dx*Uznb_vIk?rYxUH&idB-IJiiiU6Rv?cT6$5H!&;L!gD5z6DJ;Po36+SVs zfQr})^ls5vzJCx66UE_<;1)eI_NmwY?XDRSqCIA_hQHpNjX1( zW2U|vz|@mqwE_fTz`Wc4f%g}`cr>R%a*nG(9y-Z-79Kj-TP;h07qy$!`5Co3OF{MD z!c@}PMajZUho{RI=Z?L1*Kp!xcz~Jp=_#IxsgZW@%;?;AJHKu#@I$L!DH{JkA?F6C zrj{g1gjDPSPP>QC-{+K{9LM6c58*%(5~!~LP)n>8UnT2+tg2Z>i)iE#%)SOpR@b=- zIO^bnCJ%qhHja9U1Ox-{h{*6O(?5Z_mVdk(eZ1x=s0$>eN*3~R+28+V{0;jQu{nf& zmO{1=!9^WBr`x4c*y=@jgAF{Hwm$PbJM-G^Sl^+}=(MPs%`2sgZfx(rzz^PBx;4C7 zyFF)HFp@I5;G% zPl_CofPpnc3;?LdajOG!ukN0AB2^ewXBA~_gbi*b1S5@{9NMAJ1YBcUdc_0BkIY;A zL(i6i+5EEe%N<>k4O0u&-ZH%_+&tIw?R+Hsv!(NMo0b@b$c@;C{Jp##W!gaMjnRZl zh96dC$XFYf&{G23sjNa0XTOQG-GWt}JnbiS4$itWw)JE(TJH9yN37)Hk`7LK+ur`< zEDw>cBrJ0Exp?EudJRQs(_V3aYGR+poluBVD2Dm=(7sRoKbkRWb$p3*tsGrn43XD= z9Oe+$9r|CH(4zK?2P*~J5WBK}&$}AS?@V9mT9u9#Ox6Rh^CR_AC2MERKkOwAw$#~; z&=iUiwQPns8bw<3TMSz|5$9)Z>8UA#Nvu-_d2Fk5%hTzP!~JAR?1EF{mRhSea_W5) zZY#qmGU8iLa+~&q-mQO8H2+o>szsChO~_X;k?fw4po`v1I_M2D;V@?DTJmad|3>)c zeCdiPb?|?cz}`XQnUVUXJ{~}P{w~pGgV^3?25cOF_75!QD%ye=?Ko@ApH140Zqn1+ zH%d*4c?@USxo_HF9h!PXhk(xsC|*2h)vicj7^RyIeHwun}bR_hr0`kDvSr-8hQ=U%6T#wt0n|<@F2yy_2zt(7|n+j+w4Kk>}A~ zhDnyHd$Hf+Ck99}6T6v?MlG~edrjp0tY6tZYER;J8&uBKR3PQu@hUUvZLf?OHQ^d0 zWMw-WsM~0;ueXmqTokO*{DV$nBL)FB(90Qsk{T8$8*HDKjNH=aoppYs1b#oeDI~Se z+b#%KEeYt|rHhg;EUzvV&B|7MJAHmqQ(++pGy%w3h<5^A&U(cqJqaJhWkN(j(#m$+upoUusTMC`U8 z4lLBZQZ!XeO;gvW)pBXwF_-1h4YRY}Q3{Dp62fF5=Sw5tMXT=l|5 zkGUav{%ne*cU%HepBVT)#>N^P`kgKM90GN_O&yuU&l-8p>P5%DC8!30coi39>*eTA z4j#Dn!&*PmODwK)K$Of$nkrkLEReZ^kvJ!rcPT9kHR1t=ShVib{OK(-eg>NAYdgCb z2ri-lC!ZEK>8Hr+JUnp>JA;Q6ds$ZdlWlrNnO7FIf7HCxVeRDs>8%MePVb*jSWzgz zj-VW47+`FW_C0TnqJk;mdDb`soyAhjpV!p0=q&d<6%xxs8#yksDczIwmEFfyzoPgj z5}}M5HL%RA4V;yz%{0C;m*c(ieKqoqbWJ4(tDlxt6h?oaCZd-i)-5k!e=pm^%LEkm zTgwA``%HRnIo{tk6*aFo243z!X8tp`dRYpr(9#E$glO}8K^XC??ci(G^P|C$s#l9v zqJ4)xw=Hd9&!89dtO`M~@T$X_L?B68(RxV?7)1ew1dxI~Q34`WC6X?js~F(;$nCLs zcdN)x#YNp$iu5c~qfq)KVkt)Mwl4}TpO5p&KW!YM-M31KiZ#i4lfB8xHg3W-V$fZM zPsEp^KRV6QR*($*egnhR-9Ikg20#_S$zuyVp=!l0?)%50h#Sz~4g2;xdnjHKDws6y zAJhM3M%*;tB6YkM$+!f61eU&U%G+$LsEJ`jExuzAJV>+@WhwiM!SkgtV>g8pmBm>< zH7Xmd=Snsok~*Qc0oeERn_(KMz{ z*ChI3)ZB_Ot+afjH%ZXi;8KxY%^S67DJSCka$H$uZH;I?v($yfhJTjcuit#UKOcpI zmnx{g?hafbmwbeM50-I&DhI$!leyIw1bc#5 zo+LG)0_neugo8jN2I?wG&kfI79qSzfoeb=-2}Ba0V%oH6-Ndv)0?z4vTRb0_&QGSt z##fr{3GyhT?PzC-)nk;1$)LtC0;eKDkVF^%kP-udEl$0l zXah?aC8EOuq{M(|Uxy2S6j&HBD1C%eEP;3t*-pY(NUbY?XHzt-M#%{vIEC+_FVan5 zQIs;INupt%4U;)c;K;*G3z_glf>fM){zN~;L;CQkaSzl&0gavKPfrwyUj%2)kMrFL zce_u&JJDmL%L9W3$tuFrx?cT6EQQ6u!4UrDXT&*#`Caf@r zuk1PBWm)XX#{POIbvw}_)i0`qV}Nq`ax!t&gxus#SLyDlsT4fC>8dGCm+il+HR)+z z89XW23GRuw*LH#3Ae_#;Mw;;fPTjBH$3#aJ;^?{B8H+5SZ|XBN1=i*8K6c{ZXgow1 znz4(}){8$+l@Q7KK(5waIsB+rR-Tj)Fw~lXG&oGZZt#gS<;^&UZfa_|xKySM--T>+ zn(lJ-|65-Eqh2&)&e9=ag4deT;_PNDl8}b0>0&|>Iifff9TfXpT56o^Pnt$|5}r(B z44U%%-PkbH*3RjmDQv?|$^*A7efy1r5Jbq`)bxvb z#apv?3QCz&CNyFfyoAAho54$kM#jjjM5O7f7BdRHwEB(@LZqkoR%40D)CZj;sed77 zk5=S#SNVV_wR?-3Cb~8@)wwPvWqGfG_#tJgQ#SCTs|yAc$9@}~vk-Ny@c7<0*gHdG z1~NIO^M7f3^nH5Sd&wUc*TiFLVdh0?(Anv~r%{Yg=HI3M453kG##zDF?M`=S8H`%h z_Uw6}S)@2=VO*!u@FGaG&kUN}E`dwT&N{~e;t&NFt*Zk==# z$a>hne=P%sR@Q*p6_6K`-O}+Lk=~{J!yc#sA7iZ4yOkilml`+-mr2$FTEst2SSsU5 zwOOHBial94J8-#`mVew{^Je5=-{m$UNThS{<;?PL(3Y)CmxFw7hZ0-c)saECWjN~1 z{rcvBC}16una!F%;{qi8@t3Zy9Wyg)L5n~Y8>PyVWsMLHe51eH-yYWfVo_|;79Ev~ zZ;jchZ)G@{_Qpt|zB{Qx&W`VjALM7i!JIPW}Z|3hOw_xaJ-iTRc)C)u7PPfYS>UE+#1jSs@sJzJuqBS zUwP8OVFc1^?4CuwT|znb7F|BIN|-z#@k`>``S&UbuqEr-HbrQ5iJZ+ty_dJz%&}OA z!6}*kzt8+?Twv`1+D>Xo>{-f*5nQ`c7ixxQk_w#@rJ0JO5#j^e5ok#aR6HE`jm;08 z6b?i^seqJBr&dQPxbkkvcuk3Cj7xZFJyr%cwm3h|90q27_HfrOk9KZ9g3#IX!ik3) z$B*y&wz6~_)5}wFtjW;H?`=)esFe6E9lkkn8Bn{F&TnA<$z!j*IKxBue*}{2SFm;1 zSo%v(yKp+AC=p>*Ap1{wl++2VtqFY5Zl}u};|;kJS0|4rP3bsyg4mj{i>P4LmUxyiWmtNptaI4R?3{7-?A z0rR-CySJ5DgS+?j=RFpr!rfsSvj;l4Q(u1Fr#MgUaLSmN*3PS1+1Y;MEchT#WAX`n z%=w7*$8m?icN?z0uAj_BWiyz~98;TBfyaT^pYT_-($E&&?9X0x!sI+Wq=!& zcf_N+%mx)4AEy7Zc)ml8g-prRFB5h=|fSjWTAo(Qg`~KUa111SqX?zZRz;z7#?nrJ#I~u2+ zNjWt;%Xa^FBV@1r9KBns0$yZry+kNDJ!_1ez7a_qP6f`G9a_t5)q)oHRa1XJ<13D6 zE3Lvukc0?3w2AN0I?>+OI%zhR{JvD*^FNS}A2Dm8#}M;?i^r^T(irob%Qpchhp1&M zB)~6}uMUWlhCUs)=YSuXjE&C~-FrB%6?}+-4cXOg9Q@ISecW&>o1?2Ts5IDg7_57* zC*VXq5+`4JcFDY(`(X9I^sJ%$k29Sd&6tNyoJa7;MNC)9Ue}&<>GSIdj<}f_iSK!4 z+uem#v#F@{ya;!p!g=CocOmnfM?9w>-AEZ;D43Hn5AvURdR26l8~O}V z(l#{WX3aO7Q}#lt<~w`x!z%7@6;S)}jvlrCc$_PJO;wlMlmPz&NvP_LBYV1~M#uT_ zBzB$DWTK9^)R&oBnWjh#qexdqCy%G4My6%->94O`1Z5}LG@~_O2}e?$$Hwko-1Stj zh(*tXfR-yj>I72RAfR+{(}Xuw+^%?Pnr|q*n4lY7T;B)(d7L4rR3iE6+2CBkA7>~u z2Ld*XWZ+PyR@RJX2U8I|NXi5;kSFBObu3aC2-fgGWn?f4Hy329FT(Ts+$6J?u`||J zD+$5M0y6FXS*tzAE{8pvpI6t{@prvR{yIcB^Wv%*&9C4wh46pCV;rXp|3l`2k`a2g zYlzs@>L+jq) z?JvPqGyS?+d3QxviiFtj_!+Z3G|lkOmAvE4Uu!iS#AX7Mr7I))2YFkM-p!0uE7VR$ z@EDc?-%LLej}9mob=dSZP_04+-Nca#>}AV53C-Jtxe^lDN_w;$Z_#mHD#ME#mI04T zPNU%gdbCQZ%%fvtdfJui28UM@sx|QEfvq8!*O(n>RC8M-%W`hhvHimW$^m@s5S7G6 z>Yr(G(Xed`lC3fwqoEhk6t(=RX_C&z;R@`Mc)y$ouAGb?V@rJnytpCf`UR1RdK*xZ z?I(F(Jlz9m>>f#c4t^{sr=Xx(H{bKW>;|X+Cpyoy9QC4U)Va>h$EQvbr*GI)P_*)l xa}$D7u-D){bh72yr9F@ve7$?@Xjs8`3%Fxv@Y>(8S%ZK-^(Q(i<;oU_{{vu8O9TJ_ literal 0 HcmV?d00001 diff --git a/examples/elements/bokeh/Bounds.ipynb b/examples/elements/bokeh/Bounds.ipynb index 4d9d7329da..1916876d24 100644 --- a/examples/elements/bokeh/Bounds.ipynb +++ b/examples/elements/bokeh/Bounds.ipynb @@ -42,7 +42,7 @@ "outputs": [], "source": [ "%%opts Bounds (color='orange' line_width=6)\n", - "penguins = hv.RGB.load_image('../../../doc/assets/penguins.png')\n", + "penguins = hv.RGB.load_image('../assets/penguins.png')\n", "penguins * hv.Bounds((-0.15, -0.4, 0.2, 0))" ] }, diff --git a/examples/elements/bokeh/Path.ipynb b/examples/elements/bokeh/Path.ipynb index 2677a11977..d39b731456 100644 --- a/examples/elements/bokeh/Path.ipynb +++ b/examples/elements/bokeh/Path.ipynb @@ -74,7 +74,7 @@ "\n", "adultR = [(0.25, 0.45), (0.35,0.35), (0.25, 0.25), (0.15, 0.35), (0.25, 0.45)]\n", "adultL = [(-0.3, 0.4), (-0.3, 0.3), (-0.2, 0.3), (-0.2, 0.4),(-0.3, 0.4)]\n", - "scene = hv.RGB.load_image('../../../doc/assets/penguins.png')\n", + "scene = hv.RGB.load_image('../assets/penguins.png')\n", "\n", "scene * hv.Path([adultL, adultR, baby]) * hv.Path([baby])" ] diff --git a/examples/elements/bokeh/RGB.ipynb b/examples/elements/bokeh/RGB.ipynb index d2e2d7752d..e4be8c0efd 100644 --- a/examples/elements/bokeh/RGB.ipynb +++ b/examples/elements/bokeh/RGB.ipynb @@ -41,7 +41,7 @@ }, "outputs": [], "source": [ - "hv.RGB.load_image('../../../doc/assets/penguins.png')" + "hv.RGB.load_image('../assets/penguins.png')" ] }, { diff --git a/examples/elements/matplotlib/Bounds.ipynb b/examples/elements/matplotlib/Bounds.ipynb index cd0e4af774..2e225f2363 100644 --- a/examples/elements/matplotlib/Bounds.ipynb +++ b/examples/elements/matplotlib/Bounds.ipynb @@ -42,7 +42,7 @@ "outputs": [], "source": [ "%%opts Bounds (color='orange' linewidth=6)\n", - "penguins = hv.RGB.load_image('../../../doc/assets/penguins.png')\n", + "penguins = hv.RGB.load_image('../assets/penguins.png')\n", "penguins * hv.Bounds((-0.15, -0.4, 0.2, 0))" ] }, diff --git a/examples/elements/matplotlib/Path.ipynb b/examples/elements/matplotlib/Path.ipynb index d2bed428a3..ce9e42f11c 100644 --- a/examples/elements/matplotlib/Path.ipynb +++ b/examples/elements/matplotlib/Path.ipynb @@ -74,7 +74,7 @@ "\n", "adultR = [(0.25, 0.45), (0.35,0.35), (0.25, 0.25), (0.15, 0.35), (0.25, 0.45)]\n", "adultL = [(-0.3, 0.4), (-0.3, 0.3), (-0.2, 0.3), (-0.2, 0.4),(-0.3, 0.4)]\n", - "scene = hv.RGB.load_image('../../../doc/assets/penguins.png')\n", + "scene = hv.RGB.load_image('../assets/penguins.png')\n", "\n", "scene * hv.Path([adultL, adultR, baby]) * hv.Path([baby])" ] diff --git a/examples/elements/matplotlib/RGB.ipynb b/examples/elements/matplotlib/RGB.ipynb index 6a7dd933af..dc9bcb459c 100644 --- a/examples/elements/matplotlib/RGB.ipynb +++ b/examples/elements/matplotlib/RGB.ipynb @@ -41,7 +41,7 @@ }, "outputs": [], "source": [ - "hv.RGB.load_image('../../../doc/assets/penguins.png')" + "hv.RGB.load_image('../assets/penguins.png')" ] }, { From 3bfc1c327254ecdb440e540df81cd1a8d6334c84 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 22:32:15 +0100 Subject: [PATCH 36/99] Added symbolic link to penguins.png in guides/datasets --- guides/datasets/penguins.png | 1 + guides/user_guide/Building_Composite_Objects.ipynb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 120000 guides/datasets/penguins.png diff --git a/guides/datasets/penguins.png b/guides/datasets/penguins.png new file mode 120000 index 0000000000..23d0a156b8 --- /dev/null +++ b/guides/datasets/penguins.png @@ -0,0 +1 @@ +../../examples/elements/assets/penguins.png \ No newline at end of file diff --git a/guides/user_guide/Building_Composite_Objects.ipynb b/guides/user_guide/Building_Composite_Objects.ipynb index f1200b59df..8eb99bfea9 100644 --- a/guides/user_guide/Building_Composite_Objects.ipynb +++ b/guides/user_guide/Building_Composite_Objects.ipynb @@ -54,7 +54,7 @@ " holomap[frequency] = overlay\n", " gridspace[amplitude, power] = holomap\n", "\n", - "penguins = hv.RGB.load_image('../assets/penguins.png').relabel(group=\"Family\", label=\"Penguin\")\n", + "penguins = hv.RGB.load_image('../datasets/penguins.png').relabel(group=\"Family\", label=\"Penguin\")\n", "\n", "layout = gridspace + penguins" ] From 6437421035c5ec8ac7a97da75740739d1b8e717b Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 22:43:07 +0100 Subject: [PATCH 37/99] Updated Exporting and Archiving user guide to use penguins.png --- guides/user_guide/Exporting_and_Archiving.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/guides/user_guide/Exporting_and_Archiving.ipynb index bc422bf554..0a65d43fe5 100644 --- a/guides/user_guide/Exporting_and_Archiving.ipynb +++ b/guides/user_guide/Exporting_and_Archiving.ipynb @@ -51,9 +51,9 @@ "metadata": {}, "outputs": [], "source": [ - "%%output filename=\"macaw_plot\" fig=\"png\" holomap=\"gif\"\n", - "parrot = hv.RGB.load_image('../assets/macaw.png')\n", - "parrot" + "%%output filename=\"penguin_plot\" fig=\"png\" holomap=\"gif\"\n", + "penguins = hv.RGB.load_image('../datasets/penguins.png')\n", + "penguins" ] }, { @@ -69,7 +69,7 @@ "metadata": {}, "outputs": [], "source": [ - "hv.RGB.load_image('macaw_plot.png')" + "hv.RGB.load_image('penguin_plot.png')" ] }, { @@ -142,7 +142,7 @@ "metadata": {}, "outputs": [], "source": [ - "parrot[:,:,'R'].relabel(\"Red\") + parrot[:,:,'G'].relabel(\"Green\") + parrot[:,:,'B'].relabel(\"Blue\")" + "penguins[:,:,'R'].relabel(\"Red\") + penguins[:,:,'G'].relabel(\"Green\") + penguins[:,:,'B'].relabel(\"Blue\")" ] }, { @@ -151,7 +151,7 @@ "metadata": {}, "outputs": [], "source": [ - "parrot * hv.Arrow(-0.1, 0.2, 'Polly', '>')" + "penguins * hv.Arrow(0.15, 0.3, 'Penguin', '>')" ] }, { @@ -161,7 +161,7 @@ "outputs": [], "source": [ "%%opts Contours (linewidth=1.3) Image (cmap=\"gray\")\n", - "cs = contours(parrot[:,:,'R'], levels=[0.10,0.80])\n", + "cs = contours(penguins[:,:,'R'], levels=[0.10,0.80])\n", "cs" ] }, From b71a497ebd8e78d236a3070fabcb685e1b1e5599 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 22:52:08 +0100 Subject: [PATCH 38/99] Added guides/datasets/spike_train.csv.gz --- guides/datasets/spike_train.csv.gz | Bin 0 -> 2118 bytes guides/getting_started/2-Customization.ipynb | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 guides/datasets/spike_train.csv.gz diff --git a/guides/datasets/spike_train.csv.gz b/guides/datasets/spike_train.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..e42c418781e45e03f2659f726c673fecc3c74118 GIT binary patch literal 2118 zcmV-M2)XwkiwFnc_6gMv1H@S@Yz8H3d|Y zthI~CiVkEtK`ryKGiKhSmb`}*&3f)$_OT1QCf-z&Z0u+Atm!x=zA`t{Tvuk2GKwXy zOKX69W(qyp4AP=_+N0wpIFGc*T{P*=A}+h$BC(>__#-RX8587|mq$|Mj-1z%XU&o= z=q)Y^@7@?VVV6flMQ4=W!F*vWxxa?TleB)73Bm~V{p!^V``yssSpD?}kDb5r965r+ zZIAW_ap}qaJLnnIz5gCWC02_RwkH3cVp{X9a&Ga zvk?k&QX?jtt92udl~jPc5{e@hIgu(nZEq+X?9DT1V=Kho5~Za&@HG7*?a2(dkl!2+ zaJF>9)N57la>Rx_>M|=iR^s-(GZ4wyu`;%!WLa?I_~y@(#?ns~_Np|FCri@2Wi-*M zjLjXDrLd)wfe}Xc;LYu40oc;0Yy0W)0qPgDET2AQRY?CUH3Nmsp6)HRsSt)r+%2V1 zdn3Z$=(NJ=VQiRJ`oUqHlXw~p^V)9YQaA&qzLl2}Pon}OeiLy!m?zAaD5G&T!X!sq z!C;+Zu==gDPs*b)%$FDuRR}w98;TFi$8jZk>*a9a+vY8rDOD`}mdKPEVn+sMkO^Ix zrxA9LjTz+Lq8_$mqgJNXg#>sSW4&*Y5;v5T3Y-$Bpz?k&Bv4%U$Yf0&@s5m7JL!~s5LQ1I)`WmoWkOe|QK6ufg1jDL*qq$h z3ab@XD{M&@u8G+3B0L&bqd}K9P!1j;0*rEy!&HID51!#GKdhVh6IV+YhOLOGltxlW zDYf)e0$B^M4UX8`>Xj|HaNW13L`0NVnb8QV@7dDTy4R9VVZ*)~nafciJ@DIRf`ax8 zYCt5hMWe#g_r8E(omAMZ8}Fm3unkCvJ~}3JFPOVX$V3RdrX>%L??>6xREps-dW zmUEN&e0UneL-XlIfTuKKCugwHsD(VB%L}?3zDViD8tx0xv(9}FDumVV`%j`^Z!Fvh zx3EAm)!n(;kv6o}3r5mZu z2)?jBWY&q)7>B_+r&`!I6_Daryi*if)mYC7bz&U_IBSM|vwcce>*DzDfvbe0U|u#T zNIiHDtwOa&w_0wtPqYf~{jz;xZGKPWs6DC7=U7&EG)PZfsrHnGVYprGi5uyjUmk4K z$c1Y_cg@|1Mcxa2O80fiAZ~FLGJsv%Lq_u;*^94CDFvG#b!NVsC;7-`5$t z`T2FfHVaTDP|-5mcF;W=P`G#WMBngx!o7jNClF}~J^2<{kr$>UH}Y%JMYesi+pBuh z9JC_$`O>?KP^&f`x_6yy_q{|X#`0fN?`GJCJm6-&sXaS^@Gb8uhnw49Ox$R|11~be znDpQI#zim7k z4^WW-Op&Id)AEoy6ME#2Mu7q{w<800Wg!}Pi=lzH7`mzQJZapKIi+a+jyRu*QJv-K zYV|p3*nrfkGfA(faup`}sdVqiiL0ecf#|r>j2igny=k?un#?pKiSU!6??CsuoKohN zqOW~>Dupf8(b&VRb>r|pT%#`0wB~3$K)hr-!WXL@uuh#8TIf;Gy)M57|80&WhJEL2 z=Z{K3bnnQCD{~p`-M=IM`9-x-6m5p8r==t<^1vx_m)ZMn;JZq~M;VH1a4OP-kQgY9 z5fU@8K94-&EArw~1exdh_YEs Date: Mon, 19 Jun 2017 23:13:54 +0100 Subject: [PATCH 39/99] Updated image links to S3 gif files --- examples/streams/bokeh/bounds_selection.ipynb | 2 +- examples/streams/bokeh/heatMap_tap.ipynb | 2 +- examples/streams/bokeh/linked_pointer_crosssection.ipynb | 2 +- examples/streams/bokeh/multiple_selection.ipynb | 2 +- examples/streams/bokeh/point_selection1D.ipynb | 2 +- examples/streams/bokeh/pointer_crosshair.ipynb | 2 +- examples/streams/bokeh/range_histogram.ipynb | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/streams/bokeh/bounds_selection.ipynb b/examples/streams/bokeh/bounds_selection.ipynb index 1eff1d0243..b512c302b8 100644 --- a/examples/streams/bokeh/bounds_selection.ipynb +++ b/examples/streams/bokeh/bounds_selection.ipynb @@ -65,7 +65,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], diff --git a/examples/streams/bokeh/heatMap_tap.ipynb b/examples/streams/bokeh/heatMap_tap.ipynb index 5344a332fb..9a0abc8652 100644 --- a/examples/streams/bokeh/heatMap_tap.ipynb +++ b/examples/streams/bokeh/heatMap_tap.ipynb @@ -60,7 +60,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], diff --git a/examples/streams/bokeh/linked_pointer_crosssection.ipynb b/examples/streams/bokeh/linked_pointer_crosssection.ipynb index bc47ed93f8..da7c3c6feb 100644 --- a/examples/streams/bokeh/linked_pointer_crosssection.ipynb +++ b/examples/streams/bokeh/linked_pointer_crosssection.ipynb @@ -55,7 +55,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], diff --git a/examples/streams/bokeh/multiple_selection.ipynb b/examples/streams/bokeh/multiple_selection.ipynb index 4fda718a1a..15d23aac64 100644 --- a/examples/streams/bokeh/multiple_selection.ipynb +++ b/examples/streams/bokeh/multiple_selection.ipynb @@ -58,7 +58,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], diff --git a/examples/streams/bokeh/point_selection1D.ipynb b/examples/streams/bokeh/point_selection1D.ipynb index 97858e869a..0d95c7c590 100644 --- a/examples/streams/bokeh/point_selection1D.ipynb +++ b/examples/streams/bokeh/point_selection1D.ipynb @@ -57,7 +57,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], diff --git a/examples/streams/bokeh/pointer_crosshair.ipynb b/examples/streams/bokeh/pointer_crosshair.ipynb index 02e1339600..51d9a9590f 100644 --- a/examples/streams/bokeh/pointer_crosshair.ipynb +++ b/examples/streams/bokeh/pointer_crosshair.ipynb @@ -53,7 +53,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], diff --git a/examples/streams/bokeh/range_histogram.ipynb b/examples/streams/bokeh/range_histogram.ipynb index d41cb1f4b7..cd73905599 100644 --- a/examples/streams/bokeh/range_histogram.ipynb +++ b/examples/streams/bokeh/range_histogram.ipynb @@ -54,7 +54,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "
    " + "
    " ] } ], From 781c5aebe2221ed5da37d0091b0b9e6e9d903ea7 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 19 Jun 2017 23:34:22 +0100 Subject: [PATCH 40/99] Skipping stream dependent output in Live Data notebook --- doc/getting_started/Live_Data.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/getting_started/Live_Data.rst b/doc/getting_started/Live_Data.rst index 75300835df..982473e73b 100644 --- a/doc/getting_started/Live_Data.rst +++ b/doc/getting_started/Live_Data.rst @@ -1,2 +1,3 @@ .. notebook:: holoviews ../../guides/getting_started/5-Live_Data.ipynb + :skip_output: When run live, this cell's output should match the behavior of the GIF below From 668e17da05b16b9999aa1611396428d7af64ae95 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Mon, 19 Jun 2017 23:36:11 +0100 Subject: [PATCH 41/99] Added vaccination dataset --- guides/datasets/diseases.csv.gz | Bin 0 -> 978004 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 guides/datasets/diseases.csv.gz diff --git a/guides/datasets/diseases.csv.gz b/guides/datasets/diseases.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..67e0950a5ca607890ae7f70ee5fb2e057455d008 GIT binary patch literal 978004 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

    v=> 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 z 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

    _r3 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 )m-wv}_ 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 z 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 @d{DT$TjqVynaNPdVhVj)>@ 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�bD8nGoQ^Z6t2s_?*!OV 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

    *qb>$%6Bgp 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�MA2FF^&R1Fp05#B?tXp!uB} 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 Qb%Oy}WiQ2epn2#20R+|Tl>h($ literal 0 HcmV?d00001 From 57f77da52ba07c6def37c7e8ef299dcfc76a31cd Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 20 Jun 2017 00:00:44 +0100 Subject: [PATCH 42/99] Added rst titles using notebook directive offset option --- doc/getting_started/Customization.rst | 3 ++ doc/getting_started/Gridded_Datasets.rst | 3 ++ doc/getting_started/Introduction.rst | 3 ++ doc/getting_started/Live_Data.rst | 3 ++ doc/getting_started/Tabular_Datasets.rst | 3 ++ guides/getting_started/1-Introduction.ipynb | 11 +++++-- .../getting_started/3-Tabular_Datasets.ipynb | 7 +++++ .../getting_started/4-Gridded_Datasets.ipynb | 7 +++++ guides/getting_started/5-Live_Data.ipynb | 30 ++++++++++++++----- 9 files changed, 60 insertions(+), 10 deletions(-) diff --git a/doc/getting_started/Customization.rst b/doc/getting_started/Customization.rst index e4871f3bda..45e7648679 100644 --- a/doc/getting_started/Customization.rst +++ b/doc/getting_started/Customization.rst @@ -1,2 +1,5 @@ +Customization +_____________ .. notebook:: holoviews ../../guides/getting_started/2-Customization.ipynb + :offset: 1 diff --git a/doc/getting_started/Gridded_Datasets.rst b/doc/getting_started/Gridded_Datasets.rst index 4a2c51a6ff..eda079d055 100644 --- a/doc/getting_started/Gridded_Datasets.rst +++ b/doc/getting_started/Gridded_Datasets.rst @@ -1,2 +1,5 @@ +Gridded Datasets +________________ .. notebook:: holoviews ../../guides/getting_started/4-Gridded_Datasets.ipynb + :offset: 1 diff --git a/doc/getting_started/Introduction.rst b/doc/getting_started/Introduction.rst index c055ec83c0..c10c82af2c 100644 --- a/doc/getting_started/Introduction.rst +++ b/doc/getting_started/Introduction.rst @@ -1,2 +1,5 @@ +Introduction +____________ .. notebook:: holoviews ../../guides/getting_started/1-Introduction.ipynb + :offset: 1 diff --git a/doc/getting_started/Live_Data.rst b/doc/getting_started/Live_Data.rst index 982473e73b..c7048d01c2 100644 --- a/doc/getting_started/Live_Data.rst +++ b/doc/getting_started/Live_Data.rst @@ -1,3 +1,6 @@ +Live Data +_________ .. notebook:: holoviews ../../guides/getting_started/5-Live_Data.ipynb :skip_output: When run live, this cell's output should match the behavior of the GIF below + :offset: 1 diff --git a/doc/getting_started/Tabular_Datasets.rst b/doc/getting_started/Tabular_Datasets.rst index 9accc4d1f6..5cb12b2d84 100644 --- a/doc/getting_started/Tabular_Datasets.rst +++ b/doc/getting_started/Tabular_Datasets.rst @@ -1,2 +1,5 @@ +Tabular Datasets +________________ .. notebook:: holoviews ../../guides/getting_started/3-Tabular_Datasets.ipynb + :offset: 1 diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index 08f5a7d8e1..25f8abddd9 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -1,13 +1,20 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", - "# Why HoloViews?\n", + "## Why HoloViews?\n", "\n", - "HoloViews is a BSD licensed package used for data analysis and visualization for Python 2 and 3. There are plenty of excellent tools available for Python already such as numpy, pandas and xarray for raw data processing as well as some excellent plotting libraries such as matplotlib, bokeh and plotly. So why is there a need for another plotting library?\n", + "HoloViews is a BSD licensed package used for data analysis and visualization for Python 2 and 3. There are plenty of excellent tools available for Python already such as numpy, pandas and xarray for raw data processing as well as some excellent plotting libraries such as bokeh, matplotlib and plotly. So why is there a need for another plotting library?\n", "\n", "As will be made clear over the course of this guide, HoloViews takes a distinct approach to visualization which is quite distinct from the traditional plotting paradigm. Instead of building plots and writing plotting code, you describe your data with a small amount of semantic information. This then enables immediate, automatic visualization that can be effortlessly requested at any time as your data evolves. Without requiring any traditional plotting code, HoloViews brings your data to life with your favorite plotting library, whether it is matplotlib, bokeh or plotly.\n", "\n", diff --git a/guides/getting_started/3-Tabular_Datasets.ipynb b/guides/getting_started/3-Tabular_Datasets.ipynb index 0b58a727e3..d23620f545 100644 --- a/guides/getting_started/3-Tabular_Datasets.ipynb +++ b/guides/getting_started/3-Tabular_Datasets.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tabular Datasets" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/guides/getting_started/4-Gridded_Datasets.ipynb b/guides/getting_started/4-Gridded_Datasets.ipynb index ff65343c21..6231a871f8 100644 --- a/guides/getting_started/4-Gridded_Datasets.ipynb +++ b/guides/getting_started/4-Gridded_Datasets.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Gridded Datasets" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/guides/getting_started/5-Live_Data.ipynb b/guides/getting_started/5-Live_Data.ipynb index 134fa6b2d8..6ac65dd49b 100644 --- a/guides/getting_started/5-Live_Data.ipynb +++ b/guides/getting_started/5-Live_Data.ipynb @@ -4,9 +4,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", - "# Live Data\n", - "\n", + "# Live Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "The 'Getting Started' Guide has up until this point demonstrate how HoloViews objects can wrap your data and be given a rich, useful representation. This has assumed that the data was available in memory so that it could be used to construct the appropriate object.\n", "\n", "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exist yet: it may be the result of some computation yet to be performed or the outcome of some live process with the corresponding measurement not yet made.\n", @@ -33,7 +37,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import holoviews as hv\n", @@ -109,7 +115,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve (line_width=0.03 color='red')\n", @@ -140,7 +148,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap = hv.DynamicMap(clifford_attractor, kdims=['a','b','c','d'])\n", @@ -157,7 +167,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve (line_width=0.03 color='green')\n", @@ -235,7 +247,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve (line_width=0.03 color='blue') Points (color='red' size=10) Curve.Init (color='red' line_width=2)\n", From 16d7272c7ebffc3275f01d0f08e4ccc3cee7d1f4 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 20 Jun 2017 00:28:39 +0100 Subject: [PATCH 43/99] Fixed the titles in the user guide --- doc/user_guide/Applying_Transformations.rst | 6 +- doc/user_guide/Building_Composite_Objects.rst | 6 +- doc/user_guide/Continuous_Coordinates.rst | 6 +- doc/user_guide/Custom_Interactivity.rst | 6 +- doc/user_guide/Customizing_Plots.rst | 6 +- doc/user_guide/Deploying_Bokeh_Apps.rst | 4 + doc/user_guide/Exporting_and_Archiving.rst | 6 +- doc/user_guide/Gridded_Datasets.rst | 6 +- .../Indexing_and_Selecting_Data.rst | 6 +- doc/user_guide/Large_Data.rst | 5 + doc/user_guide/Live_Data.rst | 6 +- doc/user_guide/Plotting_with_Bokeh.rst | 6 +- doc/user_guide/Responding_to_Events.rst | 6 +- doc/user_guide/Tabular_Datasets.rst | 6 +- .../user_guide/Applying_Transformations.ipynb | 41 ++++-- .../Building_Composite_Objects.ipynb | 73 ++++++++--- .../user_guide/Continuous_Coordinates.ipynb | 64 ++++----- guides/user_guide/Custom_Interactivity.ipynb | 49 +++++-- guides/user_guide/Customizing_Plots.ipynb | 98 ++++++++++---- guides/user_guide/Deploying_Bokeh_Apps.ipynb | 11 +- .../user_guide/Exporting_and_Archiving.ipynb | 73 ++++++++--- guides/user_guide/Gridded_Datasets.ipynb | 85 +++++++++--- .../Indexing_and_Selecting_Data.ipynb | 78 ++++++++--- guides/user_guide/Large_Data.ipynb | 36 +++++- guides/user_guide/Live_Data.ipynb | 81 +++++++++--- guides/user_guide/Plotting_with_Bokeh.ipynb | 38 +++++- guides/user_guide/Responding_to_Events.ipynb | 121 +++++++++++++----- guides/user_guide/Tabular_Datasets.ipynb | 109 ++++++++++++---- 28 files changed, 782 insertions(+), 256 deletions(-) create mode 100644 doc/user_guide/Large_Data.rst diff --git a/doc/user_guide/Applying_Transformations.rst b/doc/user_guide/Applying_Transformations.rst index ee3a086e60..be5d0f097f 100644 --- a/doc/user_guide/Applying_Transformations.rst +++ b/doc/user_guide/Applying_Transformations.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb \ No newline at end of file +Applying Transformations +________________________ + +.. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb + :offset: 1 diff --git a/doc/user_guide/Building_Composite_Objects.rst b/doc/user_guide/Building_Composite_Objects.rst index 6469e98fb0..a06a7f0c86 100644 --- a/doc/user_guide/Building_Composite_Objects.rst +++ b/doc/user_guide/Building_Composite_Objects.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Building_Composite_Objects.ipynb \ No newline at end of file +Building Composite Objects +__________________________ + +.. notebook:: holoviews ../../guides/user_guide/Building_Composite_Objects.ipynb + :offset: 1 diff --git a/doc/user_guide/Continuous_Coordinates.rst b/doc/user_guide/Continuous_Coordinates.rst index 9e1ee8cf73..6ed6f598a0 100644 --- a/doc/user_guide/Continuous_Coordinates.rst +++ b/doc/user_guide/Continuous_Coordinates.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Continuous_Coordinates.ipynb \ No newline at end of file +Continuous Coordinates +______________________ + +.. notebook:: holoviews ../../guides/user_guide/Continuous_Coordinates.ipynb + :offset: 1 diff --git a/doc/user_guide/Custom_Interactivity.rst b/doc/user_guide/Custom_Interactivity.rst index bc39f35a8a..b08b458ac5 100644 --- a/doc/user_guide/Custom_Interactivity.rst +++ b/doc/user_guide/Custom_Interactivity.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Custom_Interactivity.ipynb \ No newline at end of file +Custom Interactivity +____________________ + +.. notebook:: holoviews ../../guides/user_guide/Custom_Interactivity.ipynb + :offset: 1 diff --git a/doc/user_guide/Customizing_Plots.rst b/doc/user_guide/Customizing_Plots.rst index 22a3e18286..c7b6a5e3ee 100644 --- a/doc/user_guide/Customizing_Plots.rst +++ b/doc/user_guide/Customizing_Plots.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Customizing_Plots.ipynb \ No newline at end of file +Customizing Plots +_________________ + +.. notebook:: holoviews ../../guides/user_guide/Customizing_Plots.ipynb + :offset: 1 diff --git a/doc/user_guide/Deploying_Bokeh_Apps.rst b/doc/user_guide/Deploying_Bokeh_Apps.rst index e3a6de28f2..d7efbc3838 100644 --- a/doc/user_guide/Deploying_Bokeh_Apps.rst +++ b/doc/user_guide/Deploying_Bokeh_Apps.rst @@ -1,2 +1,6 @@ +Deploying Bokeh Apps +____________________ + .. notebook:: holoviews ../../guides/user_guide/Deploying_Bokeh_Apps.ipynb :skip execute: True + :offset: 1 diff --git a/doc/user_guide/Exporting_and_Archiving.rst b/doc/user_guide/Exporting_and_Archiving.rst index 654f860f5d..0d4b8a8a5e 100644 --- a/doc/user_guide/Exporting_and_Archiving.rst +++ b/doc/user_guide/Exporting_and_Archiving.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Exporting_and_Archiving.ipynb \ No newline at end of file +Exporting and Archiving +_______________________ + +.. notebook:: holoviews ../../guides/user_guide/Exporting_and_Archiving.ipynb + :offset: 1 diff --git a/doc/user_guide/Gridded_Datasets.rst b/doc/user_guide/Gridded_Datasets.rst index 5c4bbbcc7e..2f6cf0f419 100644 --- a/doc/user_guide/Gridded_Datasets.rst +++ b/doc/user_guide/Gridded_Datasets.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Gridded_Datasets.ipynb \ No newline at end of file +Gridded Datasets +________________ + +.. notebook:: holoviews ../../guides/user_guide/Gridded_Datasets.ipynb + :offset: 1 diff --git a/doc/user_guide/Indexing_and_Selecting_Data.rst b/doc/user_guide/Indexing_and_Selecting_Data.rst index 012f8e56dc..34fcf6b02f 100644 --- a/doc/user_guide/Indexing_and_Selecting_Data.rst +++ b/doc/user_guide/Indexing_and_Selecting_Data.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Indexing_and_Selecting_Data.ipynb \ No newline at end of file +Indexing and Selecting Data +___________________________ + +.. notebook:: holoviews ../../guides/user_guide/Indexing_and_Selecting_Data.ipynb + :offset: 1 diff --git a/doc/user_guide/Large_Data.rst b/doc/user_guide/Large_Data.rst new file mode 100644 index 0000000000..8ba61b4575 --- /dev/null +++ b/doc/user_guide/Large_Data.rst @@ -0,0 +1,5 @@ +Working with large data using datashader +________________________________________ + +.. notebook:: holoviews ../../guides/user_guide/Large_Data.ipynb + :offset: 1 diff --git a/doc/user_guide/Live_Data.rst b/doc/user_guide/Live_Data.rst index 48102e7cb1..470d2705ba 100644 --- a/doc/user_guide/Live_Data.rst +++ b/doc/user_guide/Live_Data.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Live_Data.ipynb \ No newline at end of file +Live Data +_________ + +.. notebook:: holoviews ../../guides/user_guide/Live_Data.ipynb + :offset: 1 diff --git a/doc/user_guide/Plotting_with_Bokeh.rst b/doc/user_guide/Plotting_with_Bokeh.rst index 596218e3da..e4d5499ee2 100644 --- a/doc/user_guide/Plotting_with_Bokeh.rst +++ b/doc/user_guide/Plotting_with_Bokeh.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Plotting_with_Bokeh.ipynb \ No newline at end of file +Plotting with Bokeh +___________________ + +.. notebook:: holoviews ../../guides/user_guide/Plotting_with_Bokeh.ipynb + :offset: 1 diff --git a/doc/user_guide/Responding_to_Events.rst b/doc/user_guide/Responding_to_Events.rst index b808705fd2..dd9ae47842 100644 --- a/doc/user_guide/Responding_to_Events.rst +++ b/doc/user_guide/Responding_to_Events.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Responding_to_Events.ipynb \ No newline at end of file +Responding to Events +____________________ + +.. notebook:: holoviews ../../guides/user_guide/Responding_to_Events.ipynb + :offset: 1 diff --git a/doc/user_guide/Tabular_Datasets.rst b/doc/user_guide/Tabular_Datasets.rst index bb3540c66b..70f3c51ba8 100644 --- a/doc/user_guide/Tabular_Datasets.rst +++ b/doc/user_guide/Tabular_Datasets.rst @@ -1 +1,5 @@ -.. notebook:: holoviews ../../guides/user_guide/Tabular_Datasets.ipynb \ No newline at end of file +Tabular Datasets +________________ + +.. notebook:: holoviews ../../guides/user_guide/Tabular_Datasets.ipynb + :offset: 1 diff --git a/guides/user_guide/Applying_Transformations.ipynb b/guides/user_guide/Applying_Transformations.ipynb index cf069526a3..3e5930f436 100644 --- a/guides/user_guide/Applying_Transformations.ipynb +++ b/guides/user_guide/Applying_Transformations.ipynb @@ -1,9 +1,18 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Applying Transformations" + ] + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import param\n", @@ -33,7 +42,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from holoviews.operation import histogram\n", @@ -57,7 +68,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "boxw = hv.BoxWhisker(np.random.randn(10000))\n", @@ -92,7 +105,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "holomap = hv.HoloMap({(i*0.1+0.1): hv.BoxWhisker(np.random.randn(10000)*(i*0.1+0.1)) for i in range(5)},\n", @@ -156,7 +171,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Scatter [width=600] (color='black')\n", @@ -230,7 +247,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve [width=600] Overlay [xaxis=None]\n", @@ -261,7 +280,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "rolled = hv.HoloMap({(w, str(wt)): timeseries.rolling(curve, rolling_window=w, window_type=wt)\n", @@ -282,7 +303,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve [width=600] Overlay [legend_position='top_left']\n", @@ -319,7 +342,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Building_Composite_Objects.ipynb b/guides/user_guide/Building_Composite_Objects.ipynb index 8eb99bfea9..de3291783b 100644 --- a/guides/user_guide/Building_Composite_Objects.ipynb +++ b/guides/user_guide/Building_Composite_Objects.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Building Composite Objects" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -14,7 +21,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -25,7 +34,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "np.random.seed(10)\n", @@ -69,7 +80,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout" @@ -85,7 +98,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(layout)" @@ -146,7 +161,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(layout)" @@ -171,7 +188,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout.Parameters.Sines" @@ -194,7 +213,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1]" @@ -224,7 +245,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1][1.0]" @@ -247,7 +270,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "(layout.Parameters.Sines[0.5, 1][1].Phases.Sines +\n", @@ -271,7 +296,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "l=layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0]\n", @@ -281,7 +308,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(l)" @@ -304,7 +333,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "type(layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0].data)" @@ -320,7 +351,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.2]" @@ -336,7 +369,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.23], layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.27]" @@ -373,7 +408,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "o1 = layout.Parameters.Sines.select(Amplitude=0.5, Power=1.0).select(Frequency=1.0)\n", @@ -391,7 +428,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout.Parameters.Sines.select(Amplitude=0.5,Power=1.0, \n", @@ -419,7 +458,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Continuous_Coordinates.ipynb b/guides/user_guide/Continuous_Coordinates.ipynb index 020b558ae5..94f0ab4915 100644 --- a/guides/user_guide/Continuous_Coordinates.ipynb +++ b/guides/user_guide/Continuous_Coordinates.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Continuous Coordinates" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -24,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -55,9 +60,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "def f(x,y): \n", @@ -82,9 +85,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "f5=f(*coords(region,5))\n", @@ -101,9 +102,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "r5 = hv.Raster(f5, label=\"R5\")\n", @@ -124,9 +123,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "\"r5[0,1]=%0.2f r5.data[0,1]=%0.2f i5[-0.2,0.4]=%0.2f i5[-0.24,0.37]=%0.2f i5.data[0,1]=%0.2f\" % \\\n", @@ -168,9 +165,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "f10=f(*coords(region,10))\n", @@ -180,9 +175,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "r10 = hv.Raster(f10, label=\"R10\")\n", @@ -223,9 +216,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "\"r10[0,1]=%0.2f r10.data[0,1]=%0.2f i10[-0.2,0.4]=%0.2f i10[-0.24,0.37]=%0.2f i10.data[0,1]=%0.2f\" % \\\n", @@ -260,9 +251,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "sl10=i10[-0.275:0.025,-0.0125:0.2885]\n", @@ -272,9 +261,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "sl10" @@ -313,9 +300,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "r5[0:3,1:3] + r5[0:3,1:2]" @@ -365,9 +350,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "e10=i10.sample(x=-0.275, y=0.2885)\n", @@ -384,9 +367,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "r10=i10.sample(y=0.2885)\n", @@ -395,8 +376,7 @@ }, { "cell_type": "markdown", - "metadata": { - }, + "metadata": {}, "source": [ "The same sampling syntax can be used on HoloViews objects with any number of continuous-coordinate dimensions, in each case returning a HoloViews object of the correct dimensionality. This support for working in continuous spaces makes it much more natural to work with HoloViews objects than directly with the underlying raw Numpy arrays, but the raw data always remains available when needed." ] @@ -422,5 +402,5 @@ } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/guides/user_guide/Custom_Interactivity.ipynb b/guides/user_guide/Custom_Interactivity.ipynb index 08266aadc4..598a0fe3e9 100644 --- a/guides/user_guide/Custom_Interactivity.ipynb +++ b/guides/user_guide/Custom_Interactivity.ipynb @@ -1,9 +1,18 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Custom Interactivity" + ] + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import param\n", @@ -39,7 +48,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from holoviews import streams\n", @@ -72,7 +83,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "pointer = streams.PointerXY()\n", @@ -89,7 +102,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print('The %s stream has contents %r' % (pointer, pointer.contents))" @@ -112,7 +127,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "pointer_dmap = hv.DynamicMap(lambda x, y: hv.Points([(x, y)]), streams=[pointer])\n", @@ -129,7 +146,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "pointer_dmap(style={\"Points\": dict(size=10)})" @@ -145,7 +164,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "pointer.contents" @@ -161,7 +182,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Area (color='#fff8dc' line_width=2) Curve (color='black') VLine (color='red')\n", @@ -224,7 +247,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "img + pointer_dmap(style={\"Points\": dict(size=10)})" @@ -242,7 +267,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve {+framewise}\n", @@ -411,7 +438,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Customizing_Plots.ipynb b/guides/user_guide/Customizing_Plots.ipynb index 3adbc40549..f89fb8b694 100644 --- a/guides/user_guide/Customizing_Plots.ipynb +++ b/guides/user_guide/Customizing_Plots.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Customizing Plots" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -28,7 +35,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -66,7 +75,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "renderer = hv.Store.renderers['matplotlib'].instance(fig='svg', holomap='gif')" @@ -82,7 +93,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "renderer.save(layout, 'example_I')" @@ -98,7 +111,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from IPython.display import SVG\n", @@ -199,7 +214,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.help(image, visualization=False)" @@ -220,6 +237,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "scrolled": false }, "outputs": [], @@ -253,7 +271,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.Store.add_style_opts(hv.Image, ['filternorm'])\n", @@ -279,7 +299,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "RasterPlot.colorbar=True\n", @@ -318,7 +340,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "renderer.save(layout, 'example_II', style=dict(Image={'cmap':'Blues'}),\n", @@ -340,7 +364,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "options={'Image.Function.Sine': {'plot':dict(fig_size=50), 'style':dict(cmap='jet')}}\n", @@ -362,7 +388,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "green_sine = image(style={'cmap':'Greens'})" @@ -378,7 +406,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "green_sine" @@ -394,7 +424,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "(image + curve)(style={'Image.Function.Sine': dict(cmap='Reds'), 'Curve': dict(color='indianred')})" @@ -416,7 +448,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "cosine = hv.Image(np.cos(x**2+y**2), group=\"Function\", label=\"Cosine\")" @@ -425,7 +459,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with hv.StoreOptions.options(cosine, options={'Image':{'style':{'cmap':'Reds'}}}):\n", @@ -444,7 +480,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "cosine" @@ -460,7 +498,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with hv.StoreOptions.options(green_sine, options={'Image.Function.Sine':{'style':{'cmap':'Purples'}}}):\n", @@ -493,7 +533,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve style(linewidth=8) Image style(interpolation='bilinear') plot[yaxis=None] norm{+framewise}\n", @@ -524,7 +566,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Curve (color='r') [fontsize={'xlabel':15, 'ticks':8}] \n", @@ -543,7 +587,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout()" @@ -563,7 +609,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from holoviews.util.parser import OptsSpec\n", @@ -581,7 +629,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%output info=True\n", @@ -607,7 +657,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Image [xrotation=90 yticks=[-0.5, 0., 0.5]]\n", @@ -631,7 +683,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Deploying_Bokeh_Apps.ipynb b/guides/user_guide/Deploying_Bokeh_Apps.ipynb index f0164bb825..02d38b4488 100644 --- a/guides/user_guide/Deploying_Bokeh_Apps.ipynb +++ b/guides/user_guide/Deploying_Bokeh_Apps.ipynb @@ -1,9 +1,18 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Deploying Bokeh Apps" + ] + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/guides/user_guide/Exporting_and_Archiving.ipynb index 0a65d43fe5..94f73fb8d7 100644 --- a/guides/user_guide/Exporting_and_Archiving.ipynb +++ b/guides/user_guide/Exporting_and_Archiving.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exporting and Archiving" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -22,7 +29,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -48,7 +57,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%output filename=\"penguin_plot\" fig=\"png\" holomap=\"gif\"\n", @@ -66,7 +77,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.RGB.load_image('penguin_plot.png')" @@ -107,7 +120,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.auto()" @@ -139,7 +154,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "penguins[:,:,'R'].relabel(\"Red\") + penguins[:,:,'G'].relabel(\"Green\") + penguins[:,:,'B'].relabel(\"Blue\")" @@ -148,7 +165,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "penguins * hv.Arrow(0.15, 0.3, 'Penguin', '>')" @@ -157,7 +176,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Contours (linewidth=1.3) Image (cmap=\"gray\")\n", @@ -175,7 +196,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.contents()" @@ -203,7 +226,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.filename_formatter=\"{SHA:.8}\"\n", @@ -213,7 +238,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.contents()" @@ -263,7 +290,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import json\n", @@ -282,7 +311,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.contents()" @@ -340,7 +371,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.export()" @@ -356,7 +389,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import os\n", @@ -381,7 +416,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.archive.last_export_status()" @@ -404,7 +441,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import os\n", @@ -452,7 +491,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Gridded_Datasets.ipynb b/guides/user_guide/Gridded_Datasets.ipynb index 43741e3ff4..c6330c6fa8 100644 --- a/guides/user_guide/Gridded_Datasets.ipynb +++ b/guides/user_guide/Gridded_Datasets.ipynb @@ -1,9 +1,18 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Gridded Datasets" + ] + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import xarray as xr\n", @@ -43,7 +52,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "img = hv.Image((range(10), range(5), np.random.rand(5, 10)), datatype=['grid'])\n", @@ -60,7 +71,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "img.data" @@ -76,7 +89,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xr_img = img.clone(datatype=['xarray'])\n", @@ -98,7 +113,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(\"Array type: %s with bounds %s\" % (type(arr_img.data), arr_img.bounds))" @@ -134,7 +151,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dataset3d = hv.Dataset((range(3), range(5), range(7), np.random.randn(7, 5, 3)),\n", @@ -152,7 +171,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.Scatter3D(dataset3d)" @@ -175,7 +196,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dataset3d.select(x=1).to(hv.Image, ['y', 'z']) + hv.Scatter3D(dataset3d.select(x=1))" @@ -193,7 +216,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "(dataset3d.to(hv.Image, ['y', 'z'], 'Value', ['x']) +\n", @@ -217,7 +242,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.Image(dataset3d.aggregate(['x', 'y'], np.mean)) + hv.Image(dataset3d.reduce(z=np.mean))" @@ -233,7 +260,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.Spread(dataset3d.aggregate('z', np.mean, np.std)) * hv.Curve(dataset3d.aggregate('z', np.mean))" @@ -249,7 +278,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dataset3d.to(hv.BoxWhisker, 'x', 'Value', groupby=[])" @@ -265,7 +296,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dataset3d.to(hv.Distribution, [], 'Value', groupby='x').overlay()" @@ -288,7 +321,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "heatmap = hv.HeatMap((['A', 'B', 'C'], ['a', 'b', 'c', 'd', 'e'], np.random.rand(5, 3)))\n", @@ -323,7 +358,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "heatmap.dimension_values('x')" @@ -339,7 +376,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "heatmap.dimension_values('x', expanded=False)" @@ -355,7 +394,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "heatmap.dimension_values('x', flat=False)" @@ -378,7 +419,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "heatmap.dimension_values('z')" @@ -394,7 +437,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "heatmap.dimension_values('z', flat=False)" @@ -404,7 +449,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Indexing_and_Selecting_Data.ipynb b/guides/user_guide/Indexing_and_Selecting_Data.ipynb index 4ae99c39a6..393a8ba824 100644 --- a/guides/user_guide/Indexing_and_Selecting_Data.ipynb +++ b/guides/user_guide/Indexing_and_Selecting_Data.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Indexing and Selecting data" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -39,7 +46,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -66,7 +75,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "np.random.seed(42)\n", @@ -86,7 +97,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hist[0.25], hist[0.5], hist[0.55]" @@ -102,7 +115,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*2, 21)\n", @@ -122,6 +137,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "scrolled": true }, "outputs": [], @@ -139,7 +155,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "curve[4:4.5]" @@ -162,7 +180,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "r = np.arange(0, 1, 0.005)\n", @@ -183,7 +203,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*8, 201)\n", @@ -214,7 +236,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "np.random.seed(0)\n", @@ -228,7 +252,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "img[4.2,4.2], img[4.3,4.2], img[5.0,4.2]" @@ -252,7 +278,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "img_coords = hv.Points(img.table(), extents=extents)\n", @@ -263,7 +291,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "img[5.1,4.9]" @@ -282,7 +312,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sampled = img.sample(y=5)\n", @@ -300,7 +332,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xs = np.arange(10)\n", @@ -341,7 +375,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sample_style = dict(edgecolors='k', alpha=1)\n", @@ -361,7 +397,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sampled = obs_hmap.sample((3,3), bounds=(2,5,5,10))\n", @@ -383,7 +421,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xs = np.arange(10)\n", @@ -407,7 +447,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sampled = curve.table().select(Observation=(0, 1.1), x={0, 2, 4, 6, 8})\n", @@ -425,7 +467,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Large_Data.ipynb b/guides/user_guide/Large_Data.ipynb index d65548de84..67ab55a133 100644 --- a/guides/user_guide/Large_Data.ipynb +++ b/guides/user_guide/Large_Data.ipynb @@ -4,8 +4,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Working with large data using datashader\n", - "\n", + "# Working with large data using datashader" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "The various plotting backends supported by HoloViews (such as Matplotlib and Bokeh) each have limitations on the amount of data that is practical to work with, for a variety of reasons. For instance, Bokeh mirrors your data directly into an HTML page viewable in your browser, which can cause problems when data sizes approach the limited memory available for each web page in your browser.\n", "\n", "Luckily, a visualization of even the largest dataset will be constrained by the resolution of your display device, and so one approach to handling such data is to pre-render or rasterize the data into a fixed-size array or image before sending it to the backend. The [Datashader package](https://github.com/bokeh/datashader) provides a high-performance big-data rasterization pipeline that works seamlessly with HoloViews to support datasets that are orders of magnitude larger than those supported natively by the plotting backends." @@ -15,6 +20,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -95,6 +101,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -175,6 +182,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -224,6 +232,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -255,7 +264,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "datashade(paths) + dynspread(datashade(paths))" @@ -290,6 +301,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -336,7 +348,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts RGB [width=600]\n", @@ -359,6 +373,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -430,6 +445,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "extensions": { "jupyter_dashboards": { "version": 1, @@ -464,7 +480,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Overlay [finalize_hooks=[apply_formatter] width=800] \n", @@ -479,7 +497,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "rolling.function" @@ -499,7 +519,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts QuadMesh [tools=['hover']] (alpha=0 hover_alpha=0.2)\n", diff --git a/guides/user_guide/Live_Data.ipynb b/guides/user_guide/Live_Data.ipynb index e5cade0127..61325a4c35 100644 --- a/guides/user_guide/Live_Data.ipynb +++ b/guides/user_guide/Live_Data.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Live Data" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -58,7 +65,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import holoviews as hv\n", @@ -76,7 +85,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xvals = np.linspace(-4,0,202)\n", @@ -113,7 +124,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap = hv.DynamicMap(waves_image, kdims=['alpha', 'beta'])\n", @@ -141,7 +154,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap[0,1] + dmap.select(alpha=1, beta=2)" @@ -166,7 +181,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.redim.range(alpha=(0,5.0), beta=(1,5.0))" @@ -191,7 +208,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.redim.values(alpha=[0,1,2], beta=[0.1, 1.0, 2.5])" @@ -257,7 +276,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Path (linewidth=1.5)\n", @@ -314,7 +335,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dtype = type(dmap.data).__name__\n", @@ -339,7 +362,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.HoloMap(dmap)" @@ -357,7 +382,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.HoloMap(dmap[{(2,0.3), (2,0.6), (3,0.3), (3,0.6)}])" @@ -375,7 +402,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "samples = hv.HoloMap(dmap[{2,3},{0.5,1.0}])\n", @@ -385,7 +414,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "samples.data.keys()" @@ -417,7 +448,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from holoviews.util import Dynamic\n", @@ -470,7 +503,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sliced = dmap[4:8, :]\n", @@ -488,7 +523,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sliced[:, 0.8:1.0]" @@ -546,7 +583,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts GridSpace [show_legend=True fig_size=200]\n", @@ -596,7 +635,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts GridSpace [xaxis=None yaxis=None] Path [bgcolor='w' xaxis=None yaxis=None]\n", @@ -627,7 +668,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Image {+axiswise}\n", @@ -666,7 +709,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Plotting_with_Bokeh.ipynb b/guides/user_guide/Plotting_with_Bokeh.ipynb index 059a1a8215..4956b27500 100644 --- a/guides/user_guide/Plotting_with_Bokeh.ipynb +++ b/guides/user_guide/Plotting_with_Bokeh.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting with Bokeh" + ] + }, { "cell_type": "markdown", "metadata": { @@ -31,7 +38,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -43,6 +52,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "735ed729-9f22-44c3-8b29-323e8a453960" }, @@ -82,6 +92,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "d19a49d0-b715-4175-a56b-10f33c179927" }, @@ -107,6 +118,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "1ec75e9b-5625-4108-b393-6f6fddcfa1fb" }, @@ -154,6 +166,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "31636ffa-4c06-4156-9415-167a837da843", "scrolled": false @@ -188,6 +201,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "6eb1e3f1-6a5d-4800-a75e-b13fa09e268f" }, @@ -226,6 +240,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "5e40a09f-98ec-40a0-b2a6-15c7d1e64c64" }, @@ -259,7 +274,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Points [size_index='z' tools=['hover']] HeatMap [toolbar='above' tools=['hover']]\n", @@ -280,7 +297,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Overlay [show_legend=False height=400 width=600] ErrorBars (line_width=5) Scatter(alpha=0.2 size=6)\n", @@ -330,6 +349,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "caf6fe45-30fe-4053-b242-b4a6241d9e30" }, @@ -376,6 +396,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "b87c3c95-e073-427a-b84d-7f370f4f7023" }, @@ -399,6 +420,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "bd398ce3-991b-4985-9b3e-32faad7e0af2" }, @@ -429,6 +451,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "91d49de6-7ed6-43ff-bf06-e6d8bb439a90" }, @@ -470,6 +493,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "f9d2df76-be40-498a-afe1-730790603088" }, @@ -505,6 +529,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "fc473384-8f85-4560-a656-5d6c2929ae30", "scrolled": true @@ -555,7 +580,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Scatter [tools=['box_select', 'lasso_select']] Layout [shared_axes=True shared_datasource=True]\n", @@ -577,6 +604,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "collapsed": true, "focus": false, "id": "3494a694-f7e1-4c26-a58e-5fc0969fac08", "scrolled": false @@ -599,7 +627,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Responding_to_Events.ipynb b/guides/user_guide/Responding_to_Events.ipynb index 836df76275..e2cd8e2b84 100644 --- a/guides/user_guide/Responding_to_Events.ipynb +++ b/guides/user_guide/Responding_to_Events.ipynb @@ -1,9 +1,18 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Responding to Events" + ] + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -27,7 +36,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# Styles and plot options used in this tutorial\n", @@ -55,7 +66,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "lin = np.linspace(-np.pi,np.pi,300)\n", @@ -97,7 +110,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from holoviews.streams import Stream, param\n", @@ -114,7 +129,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.help(Time)" @@ -130,7 +147,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "Time = Stream.define('Time', t=param.Number(default=0.0, doc='A time parameter'))\n", @@ -147,7 +166,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "time_dflt = Time()\n", @@ -164,7 +185,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "time = Time(t=np.pi/4)\n", @@ -195,7 +218,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap = hv.DynamicMap(lissajous_curve, streams=[time])\n", @@ -214,7 +239,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.event( t=0.2)" @@ -232,7 +259,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "time.event(t=-0.2)" @@ -264,7 +293,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "ls = np.linspace(0, 10, 200)\n", @@ -289,7 +320,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.event(x=-0.2, y=0.1)" @@ -327,7 +360,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%opts Curve (linestyle='-')\n", @@ -360,7 +395,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.event(time=8)" @@ -399,7 +436,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def integral2(lim, t): \n", @@ -427,7 +466,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap=hv.DynamicMap(integral, kdims=['time','limit'], streams=[Time()]).redim.range(limit=(-3.,3.))\n", @@ -446,7 +487,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap[1,0] + dmap.select(time=3,limit=1.5) + dmap[None,1.5]" @@ -464,7 +507,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.reset() # Reset the cache, we don't want the values from the cell above\n", @@ -503,7 +548,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def sample_distributions(samples=10, tol=0.04):\n", @@ -530,7 +577,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.DynamicMap(sample_generator)" @@ -546,7 +595,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap = hv.DynamicMap(sample_generator, streams=[Stream.define('Next')()])\n", @@ -570,7 +621,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "for i in range(40):\n", @@ -587,7 +640,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dmap.periodic(0.1, 1000, timeout=3)" @@ -619,7 +674,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.HoloMap({i:next(dmap) for i in range(10)}, kdims=['Iteration'])" @@ -717,7 +774,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xy.update(x=4,y=50)\n", @@ -750,7 +809,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xy = XY()\n", @@ -768,7 +829,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def subscriber(xpos,ypos):\n", @@ -811,7 +874,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Tabular_Datasets.ipynb b/guides/user_guide/Tabular_Datasets.ipynb index e705a60001..dfbf0a3967 100644 --- a/guides/user_guide/Tabular_Datasets.ipynb +++ b/guides/user_guide/Tabular_Datasets.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tabular Datasets" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -17,7 +24,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -44,7 +53,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xs = range(10)\n", @@ -64,7 +75,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.Scatter(table) + hv.Curve(table) + hv.Bars(table)" @@ -114,7 +127,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(hv.Scatter({'x': xs, 'y': ys}) +\n", @@ -134,7 +149,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(hv.Scatter(ys) + hv.Scatter((xs, ys)) + hv.Scatter(zip(xs, ys)))" @@ -150,7 +167,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "df = pd.DataFrame({'x': xs, 'y': ys, 'z': ys*2})\n", @@ -167,7 +186,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hv.Dataset.datatype" @@ -183,7 +204,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(type(hv.Scatter((xs, ys), datatype=['array']).data))\n", @@ -208,7 +231,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "overlay = hv.Scatter(df, kdims='x', vdims='y') * hv.Scatter(df, kdims='x', vdims='z')\n", @@ -225,7 +250,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "overlay.Scatter.I.data is overlay.Scatter.II.data" @@ -257,7 +284,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "table.array()" @@ -273,7 +302,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "HTML(table.dframe().head().to_html())" @@ -289,7 +320,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "table.columns()" @@ -311,7 +344,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "xs = np.arange(10)\n", @@ -329,7 +364,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "HTML(curve.dframe().to_html())" @@ -345,7 +382,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Points (s=200) [size_index=None]\n", @@ -374,7 +413,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "obs_hmap = hv.HoloMap({i: hv.Image(np.random.randn(10, 10), bounds=(0,0,3,3))\n", @@ -392,7 +433,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Layout [fig_size=150] Scatter3D [color_index=3 size_index=None] (cmap='hot' edgecolor='k' s=50)\n", @@ -409,7 +452,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from itertools import product\n", @@ -431,7 +476,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Table [fig_size=150]\n", @@ -462,7 +509,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "bars = hv.Bars((['C', 'A', 'B', 'D'], [2, 7, 3, 4]))\n", @@ -486,7 +535,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n = np.arange(1000)\n", @@ -507,7 +558,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts BoxWhisker [aspect=2 fig_size=200 bgcolor='w']\n", @@ -531,7 +584,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Bars [show_legend=False] {+axiswise}\n", @@ -562,7 +617,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hmap = hv.HoloMap({i: hv.Curve(np.arange(10)*i) for i in range(10)})\n", @@ -574,7 +631,7 @@ "metadata": { "hide_input": false, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, From 267d4d05ea25ec61a094fd8441b866957635bcfb Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 20 Jun 2017 01:24:34 +0100 Subject: [PATCH 44/99] Updated HeatMap streams example and added Curve selection example --- examples/streams/bokeh/curve_selection.ipynb | 66 ++++++++++++++++++++ examples/streams/bokeh/heatMap_tap.ipynb | 30 +++++---- 2 files changed, 85 insertions(+), 11 deletions(-) create mode 100644 examples/streams/bokeh/curve_selection.ipynb diff --git a/examples/streams/bokeh/curve_selection.ipynb b/examples/streams/bokeh/curve_selection.ipynb new file mode 100644 index 0000000000..bb9dc5dfef --- /dev/null +++ b/examples/streams/bokeh/curve_selection.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "from holoviews import streams\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts NdOverlay [legend_limit=0] Curve [tools=['tap']] (line_width=10)\n", + "ndoverlay = hv.NdOverlay({i: hv.Curve(np.arange(10)*i) for i in range(5)})\n", + "\n", + "selection = streams.Selection1D(source=ndoverlay)\n", + "dmap = hv.DynamicMap(lambda index: ndoverlay[index] if index else ndoverlay.clone(),\n", + " kdims=[], streams=[selection])\n", + "ndoverlay + dmap" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/streams/bokeh/heatMap_tap.ipynb b/examples/streams/bokeh/heatMap_tap.ipynb index 9a0abc8652..29802be65b 100644 --- a/examples/streams/bokeh/heatMap_tap.ipynb +++ b/examples/streams/bokeh/heatMap_tap.ipynb @@ -17,41 +17,44 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import holoviews as hv\n", "from holoviews import streams\n", - "hv.extension('bokeh')" + "hv.extension('bokeh', width=90)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "%opts HeatMap [width=600 height=500 logz=True tools=['hover'] xrotation=90] (cmap='fire') \n", - "%opts Histogram [width=375 height=500] (line_color='white' fill_color='grey') {+framewise}\n", + "%opts HeatMap [width=700 height=500 logz=True fontsize={'xticks': '6pt'}, tools=['hover'] xrotation=90] (cmap='RdBu_r') \n", + "%opts Curve [width=375 height=500 yaxis='right'] (line_color='black') {+framewise}\n", "\n", "# Declare dataset\n", - "df = pd.read_csv('../../../guides/datasets/diseases.csv.gz')\n", - "dataset = hv.Dataset(df, vdims=['Measles Incidence'])\n", + "df = pd.read_csv('http://assets.holoviews.org/data/diseases.csv.gz', compression='gzip')\n", + "dataset = hv.Dataset(df, vdims=[('measles','Measles Incidence')])\n", "\n", "# Declare HeatMap\n", "heatmap = hv.HeatMap(dataset.aggregate(['Year', 'State'], np.mean),\n", - " label='Measles Incidence')\n", + " label='Measles Incidence').select(Year=(1928, 2002))\n", "\n", "# Declare Tap stream with heatmap as source and initial values\n", "posxy = hv.streams.Tap(source=heatmap, x=1951, y='New York')\n", "\n", "# Define function to compute histogram based on tap location\n", "def tap_histogram(x, y):\n", - " hist = hv.operation.histogram(dataset.select(State=y, Year=int(x)), normed=False)\n", - " label = 'Year: %s, State: %s' % (x, y)\n", - " return hist.relabel(group='Histogram', label=label)\n", + " return hv.Curve(dataset.select(State=y, Year=int(x)), kdims=['Week'],\n", + " label='Year: %s, State: %s' % (x, y))\n", "\n", "heatmap + hv.DynamicMap(tap_histogram, kdims=[], streams=[posxy])" ] @@ -65,6 +68,11 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, "language_info": { "codemirror_mode": { "name": "ipython", From e4bbbc7437e664da257b8a7dcf8b8e58e25b2700 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 20 Jun 2017 15:49:24 +0100 Subject: [PATCH 45/99] Updated Exporting_and_Archiving user guide and made it more robust --- .../user_guide/Exporting_and_Archiving.ipynb | 102 ++++++++---------- 1 file changed, 45 insertions(+), 57 deletions(-) diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/guides/user_guide/Exporting_and_Archiving.ipynb index 94f73fb8d7..56ff0b0f9f 100644 --- a/guides/user_guide/Exporting_and_Archiving.ipynb +++ b/guides/user_guide/Exporting_and_Archiving.ipynb @@ -29,9 +29,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -57,9 +55,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%output filename=\"penguin_plot\" fig=\"png\" holomap=\"gif\"\n", @@ -77,9 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.RGB.load_image('penguin_plot.png')" @@ -120,9 +114,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.auto()" @@ -154,9 +146,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "penguins[:,:,'R'].relabel(\"Red\") + penguins[:,:,'G'].relabel(\"Green\") + penguins[:,:,'B'].relabel(\"Blue\")" @@ -165,9 +155,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "penguins * hv.Arrow(0.15, 0.3, 'Penguin', '>')" @@ -176,9 +164,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Contours (linewidth=1.3) Image (cmap=\"gray\")\n", @@ -196,9 +182,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.contents()" @@ -226,9 +210,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.filename_formatter=\"{SHA:.8}\"\n", @@ -238,9 +220,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.contents()" @@ -311,14 +291,29 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.contents()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can get a more direct list of filenames using the ``listing`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "listing = hv.archive.listing()\n", + "listing" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -371,9 +366,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.export()" @@ -389,15 +382,13 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import os\n", "os.getcwd()\n", - "if os.path.exists(\"Exporting\"):\n", - " print(sorted(os.listdir(\"Exporting\")))" + "if os.path.exists(\"Exporting_and_Archiving\"):\n", + " print(sorted(os.listdir(\"Exporting_and_Archiving\")))" ] }, { @@ -416,9 +407,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.archive.last_export_status()" @@ -441,20 +430,19 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import os\n", "from holoviews.core.io import Unpickler\n", "c, a = None,None\n", - "path = \"Exporting/Overlay,Image,Level.hvz\"\n", + "hvz_file = [f for f in listing if f.endswith('hvz')][0]\n", + "print('Unpickling {filename}'.format(filename=hvz_file))\n", + "path = os.path.join(\"Exporting_and_Archiving\", hvz_file)\n", "\n", "if os.path.isfile(path):\n", - " o = Unpickler.load(open(path,\"rb\"))\n", - " c = o.Image\n", - "print(c)" + " obj = Unpickler.load(open(path,\"rb\"))\n", + "print(obj)" ] }, { @@ -476,7 +464,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Using HoloViews (and Lancet) to do reproducible research" + "## Using HoloViews to do reproducible research" ] }, { @@ -491,21 +479,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.1" } }, "nbformat": 4, From 25acf6ef401e021a15af2279cfb1abaf866ec192 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 21 Jun 2017 01:47:10 +0100 Subject: [PATCH 46/99] Fixes for toc trees and rst directives --- doc/getting_started/Customization.rst | 2 +- doc/getting_started/Gridded_Datasets.rst | 2 +- doc/getting_started/Introduction.rst | 2 +- doc/getting_started/Live_Data.rst | 4 +- doc/getting_started/Tabular_Datasets.rst | 2 +- doc/getting_started/index.rst | 21 ++++++-- doc/index.rst | 2 + doc/user_guide/Applying_Transformations.rst | 2 +- doc/user_guide/Building_Composite_Objects.rst | 2 +- doc/user_guide/Continuous_Coordinates.rst | 2 +- doc/user_guide/Custom_Interactivity.rst | 2 +- doc/user_guide/Customizing_Plots.rst | 2 +- doc/user_guide/Exporting_and_Archiving.rst | 2 +- doc/user_guide/Gridded_Datasets.rst | 2 +- .../Indexing_and_Selecting_Data.rst | 2 +- doc/user_guide/Large_Data.rst | 2 +- doc/user_guide/Live_Data.rst | 2 +- doc/user_guide/Plotting_with_Bokeh.rst | 2 +- doc/user_guide/Responding_to_Events.rst | 2 +- doc/user_guide/Tabular_Datasets.rst | 2 +- doc/user_guide/index.rst | 49 +++++++++++++------ 21 files changed, 72 insertions(+), 38 deletions(-) diff --git a/doc/getting_started/Customization.rst b/doc/getting_started/Customization.rst index 45e7648679..5c2752b727 100644 --- a/doc/getting_started/Customization.rst +++ b/doc/getting_started/Customization.rst @@ -2,4 +2,4 @@ Customization _____________ .. notebook:: holoviews ../../guides/getting_started/2-Customization.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/getting_started/Gridded_Datasets.rst b/doc/getting_started/Gridded_Datasets.rst index eda079d055..bac6367762 100644 --- a/doc/getting_started/Gridded_Datasets.rst +++ b/doc/getting_started/Gridded_Datasets.rst @@ -2,4 +2,4 @@ Gridded Datasets ________________ .. notebook:: holoviews ../../guides/getting_started/4-Gridded_Datasets.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/getting_started/Introduction.rst b/doc/getting_started/Introduction.rst index c10c82af2c..9ede9c8e32 100644 --- a/doc/getting_started/Introduction.rst +++ b/doc/getting_started/Introduction.rst @@ -2,4 +2,4 @@ Introduction ____________ .. notebook:: holoviews ../../guides/getting_started/1-Introduction.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/getting_started/Live_Data.rst b/doc/getting_started/Live_Data.rst index c7048d01c2..b99b2adc5e 100644 --- a/doc/getting_started/Live_Data.rst +++ b/doc/getting_started/Live_Data.rst @@ -2,5 +2,5 @@ Live Data _________ .. notebook:: holoviews ../../guides/getting_started/5-Live_Data.ipynb - :skip_output: When run live, this cell's output should match the behavior of the GIF below - :offset: 1 + :skip_output: When run live, this cell's output should match the behavior of the GIF below + :offset: 1 diff --git a/doc/getting_started/Tabular_Datasets.rst b/doc/getting_started/Tabular_Datasets.rst index 5cb12b2d84..387dbbb135 100644 --- a/doc/getting_started/Tabular_Datasets.rst +++ b/doc/getting_started/Tabular_Datasets.rst @@ -2,4 +2,4 @@ Tabular Datasets ________________ .. notebook:: holoviews ../../guides/getting_started/3-Tabular_Datasets.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/getting_started/index.rst b/doc/getting_started/index.rst index 22be5c3b65..7682526194 100644 --- a/doc/getting_started/index.rst +++ b/doc/getting_started/index.rst @@ -3,8 +3,19 @@ _____________________ This 'Getting Started' guide aims to get you using HoloViews productively as quickly as possible. It is designed as an entrypoint for new users that will introduce the core concepts necessary to get you working productively with your own data. We recommend reading this guide in order if you wish to get an overview of what is offered by HoloViews. For detailed documentation, please consult our `User Guide <../user_guide/index.html>`_ which we will link to from the appropriate sections of this guide. -`Introduction `_ -`Customization `_ -`Tabular Datasets `_ -`Gridded Datasets `_ -`Live Data `_ +* `Introduction `_ +* `Customization `_ +* `Tabular Datasets `_ +* `Gridded Datasets `_ +* `Live Data `_ + +.. toctree:: + :titlesonly: + :hidden: + :maxdepth: 2 + + Introduction + Customization + Tabular Datasets + Gridded Datasets + Live Data diff --git a/doc/index.rst b/doc/index.rst index 8a4b196388..d431bb7378 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -139,6 +139,8 @@ showing how to fix the bug or implement the feature! :maxdepth: 2 Home + Getting Started + User Guide Features Tutorials Examples diff --git a/doc/user_guide/Applying_Transformations.rst b/doc/user_guide/Applying_Transformations.rst index be5d0f097f..0449a0ba31 100644 --- a/doc/user_guide/Applying_Transformations.rst +++ b/doc/user_guide/Applying_Transformations.rst @@ -2,4 +2,4 @@ Applying Transformations ________________________ .. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Building_Composite_Objects.rst b/doc/user_guide/Building_Composite_Objects.rst index a06a7f0c86..4e0f2e6ac4 100644 --- a/doc/user_guide/Building_Composite_Objects.rst +++ b/doc/user_guide/Building_Composite_Objects.rst @@ -2,4 +2,4 @@ Building Composite Objects __________________________ .. notebook:: holoviews ../../guides/user_guide/Building_Composite_Objects.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Continuous_Coordinates.rst b/doc/user_guide/Continuous_Coordinates.rst index 6ed6f598a0..a2c3a70569 100644 --- a/doc/user_guide/Continuous_Coordinates.rst +++ b/doc/user_guide/Continuous_Coordinates.rst @@ -2,4 +2,4 @@ Continuous Coordinates ______________________ .. notebook:: holoviews ../../guides/user_guide/Continuous_Coordinates.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Custom_Interactivity.rst b/doc/user_guide/Custom_Interactivity.rst index b08b458ac5..0599bac379 100644 --- a/doc/user_guide/Custom_Interactivity.rst +++ b/doc/user_guide/Custom_Interactivity.rst @@ -2,4 +2,4 @@ Custom Interactivity ____________________ .. notebook:: holoviews ../../guides/user_guide/Custom_Interactivity.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Customizing_Plots.rst b/doc/user_guide/Customizing_Plots.rst index c7b6a5e3ee..83b38f6c11 100644 --- a/doc/user_guide/Customizing_Plots.rst +++ b/doc/user_guide/Customizing_Plots.rst @@ -2,4 +2,4 @@ Customizing Plots _________________ .. notebook:: holoviews ../../guides/user_guide/Customizing_Plots.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Exporting_and_Archiving.rst b/doc/user_guide/Exporting_and_Archiving.rst index 0d4b8a8a5e..3c9d05fdf7 100644 --- a/doc/user_guide/Exporting_and_Archiving.rst +++ b/doc/user_guide/Exporting_and_Archiving.rst @@ -2,4 +2,4 @@ Exporting and Archiving _______________________ .. notebook:: holoviews ../../guides/user_guide/Exporting_and_Archiving.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Gridded_Datasets.rst b/doc/user_guide/Gridded_Datasets.rst index 2f6cf0f419..0a0531f231 100644 --- a/doc/user_guide/Gridded_Datasets.rst +++ b/doc/user_guide/Gridded_Datasets.rst @@ -2,4 +2,4 @@ Gridded Datasets ________________ .. notebook:: holoviews ../../guides/user_guide/Gridded_Datasets.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Indexing_and_Selecting_Data.rst b/doc/user_guide/Indexing_and_Selecting_Data.rst index 34fcf6b02f..5dc6c1d183 100644 --- a/doc/user_guide/Indexing_and_Selecting_Data.rst +++ b/doc/user_guide/Indexing_and_Selecting_Data.rst @@ -2,4 +2,4 @@ Indexing and Selecting Data ___________________________ .. notebook:: holoviews ../../guides/user_guide/Indexing_and_Selecting_Data.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Large_Data.rst b/doc/user_guide/Large_Data.rst index 8ba61b4575..0296ac00b4 100644 --- a/doc/user_guide/Large_Data.rst +++ b/doc/user_guide/Large_Data.rst @@ -2,4 +2,4 @@ Working with large data using datashader ________________________________________ .. notebook:: holoviews ../../guides/user_guide/Large_Data.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Live_Data.rst b/doc/user_guide/Live_Data.rst index 470d2705ba..93a3d8a8a3 100644 --- a/doc/user_guide/Live_Data.rst +++ b/doc/user_guide/Live_Data.rst @@ -2,4 +2,4 @@ Live Data _________ .. notebook:: holoviews ../../guides/user_guide/Live_Data.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Plotting_with_Bokeh.rst b/doc/user_guide/Plotting_with_Bokeh.rst index e4d5499ee2..ac819474ab 100644 --- a/doc/user_guide/Plotting_with_Bokeh.rst +++ b/doc/user_guide/Plotting_with_Bokeh.rst @@ -2,4 +2,4 @@ Plotting with Bokeh ___________________ .. notebook:: holoviews ../../guides/user_guide/Plotting_with_Bokeh.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Responding_to_Events.rst b/doc/user_guide/Responding_to_Events.rst index dd9ae47842..7b0fcf047e 100644 --- a/doc/user_guide/Responding_to_Events.rst +++ b/doc/user_guide/Responding_to_Events.rst @@ -2,4 +2,4 @@ Responding to Events ____________________ .. notebook:: holoviews ../../guides/user_guide/Responding_to_Events.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/Tabular_Datasets.rst b/doc/user_guide/Tabular_Datasets.rst index 70f3c51ba8..c74ef772cd 100644 --- a/doc/user_guide/Tabular_Datasets.rst +++ b/doc/user_guide/Tabular_Datasets.rst @@ -2,4 +2,4 @@ Tabular Datasets ________________ .. notebook:: holoviews ../../guides/user_guide/Tabular_Datasets.ipynb - :offset: 1 + :offset: 1 diff --git a/doc/user_guide/index.rst b/doc/user_guide/index.rst index 5fc272f3a1..e9b161972d 100644 --- a/doc/user_guide/index.rst +++ b/doc/user_guide/index.rst @@ -1,17 +1,38 @@ - User Guide __________ -`Applying Transformations `_ -`Building Composite Objects `_ -`Continuous Coordinates `_ -`Custom Interactivity `_ -`Customizing Plots `_ -`Deploying Bokeh Apps `_ -`Exporting and Archiving `_ -`Gridded Datasets `_ -`Indexing and Selecting Data `_ -`Live Data `_ -`Plotting with Bokeh `_ -`Responding to Events `_ -`Tabular Datasets `_ +* `Applying Transformations `_ +* `Building Composite Objects `_ +* `Continuous Coordinates `_ +* `Custom Interactivity `_ +* `Customizing Plots `_ +* `Deploying Bokeh Apps `_ +* `Exporting and Archiving `_ +* `Gridded Datasets `_ +* `Indexing and Selecting Data `_ +* `Live Data `_ +* `Plotting with Bokeh `_ +* `Responding to Events `_ +* `Tabular Datasets `_ +* `Working with large data `_ + + +.. toctree:: + :titlesonly: + :hidden: + :maxdepth: 2 + + Applying Transformations + Building Composite Objects + Continuous Coordinates + Custom Interactivity + Customizing Plots + Deploying Bokeh Apps + Exporting and Archiving + Gridded Datasets + Indexing and Selecting Data + Live Data + Plotting with Bokeh + Responding to Events + Tabular Datasets + Working with large data From 3b92f13bbb42c6649cd00152faf7013cb8db7ffb Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 21 Jun 2017 01:19:48 +0100 Subject: [PATCH 47/99] Adjusted linewidth and size of matplotlib square limit example --- examples/demos/bokeh/square_limit.ipynb | 4 ++-- examples/demos/matplotlib/square_limit.ipynb | 8 ++++---- examples/topics/geometry/square_limit.ipynb | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/demos/bokeh/square_limit.ipynb b/examples/demos/bokeh/square_limit.ipynb index c10948a1a4..80ac44848c 100644 --- a/examples/demos/bokeh/square_limit.ipynb +++ b/examples/demos/bokeh/square_limit.ipynb @@ -76,13 +76,13 @@ " den = float(n + m)\n", " t1 = Affine2D().scale(n / den, 1)\n", " t2 = Affine2D().scale(m / den, 1).translate(n / den, 0)\n", - " return T(spline1, t1) * T(spline2, t2)\n", + " return combine(T(spline1, t1) * T(spline2, t2))\n", "\n", "def above(spline1, spline2, n=1, m=1):\n", " den = float(n + m)\n", " t1 = Affine2D().scale(1, n / den).translate(0, m / den)\n", " t2 = Affine2D().scale(1, m / den)\n", - " return T(spline1, t1) * T(spline2, t2)\n", + " return combine(T(spline1, t1) * T(spline2, t2))\n", "\n", "def nonet(p, q, r, s, t, u, v, w, x):\n", " return above(beside(p, beside(q, r), 1, 2),\n", diff --git a/examples/demos/matplotlib/square_limit.ipynb b/examples/demos/matplotlib/square_limit.ipynb index 2a09de4d1b..8bf530dee0 100644 --- a/examples/demos/matplotlib/square_limit.ipynb +++ b/examples/demos/matplotlib/square_limit.ipynb @@ -74,13 +74,13 @@ " den = float(n + m)\n", " t1 = Affine2D().scale(n / den, 1)\n", " t2 = Affine2D().scale(m / den, 1).translate(n / den, 0)\n", - " return T(spline1, t1) * T(spline2, t2)\n", + " return combine(T(spline1, t1) * T(spline2, t2))\n", "\n", "def above(spline1, spline2, n=1, m=1):\n", " den = float(n + m)\n", " t1 = Affine2D().scale(1, n / den).translate(0, m / den)\n", " t2 = Affine2D().scale(1, m / den)\n", - " return T(spline1, t1) * T(spline2, t2)\n", + " return combine(T(spline1, t1) * T(spline2, t2))\n", "\n", "def nonet(p, q, r, s, t, u, v, w, x):\n", " return above(beside(p, beside(q, r), 1, 2),\n", @@ -125,8 +125,8 @@ "metadata": {}, "outputs": [], "source": [ - "%%opts Spline [xaxis=None yaxis=None aspect='equal' bgcolor='white']\n", - "%%output size=300\n", + "%%opts Spline [xaxis=None yaxis=None aspect='equal' bgcolor='white'] (linewidth=0.8)\n", + "%%output size=250\n", "\n", "fish = hv.Spline((spline, [1,4,4,4]*34)) # Cubic splines\n", "smallfish = flip(rot45(fish))\n", diff --git a/examples/topics/geometry/square_limit.ipynb b/examples/topics/geometry/square_limit.ipynb index c4224141c6..7ccf3f28d6 100644 --- a/examples/topics/geometry/square_limit.ipynb +++ b/examples/topics/geometry/square_limit.ipynb @@ -43,7 +43,7 @@ "metadata": {}, "outputs": [], "source": [ - "%opts Spline [xaxis=None yaxis=None aspect='equal' bgcolor='white']" + "%opts Spline [xaxis=None yaxis=None aspect='equal' bgcolor='white'] (linewidth=0.8)" ] }, { @@ -157,13 +157,13 @@ " den = n + m\n", " t1 = Affine2D().scale(n / den, 1)\n", " t2 = Affine2D().scale(m / den, 1).translate(n / den, 0)\n", - " return T(spline1, t1) * T(spline2, t2)\n", + " return combine(T(spline1, t1) * T(spline2, t2))\n", "\n", "def above(spline1, spline2, n=1, m=1):\n", " den = n + m\n", " t1 = Affine2D().scale(1, n / den).translate(0, m / den)\n", " t2 = Affine2D().scale(1, m / den)\n", - " return T(spline1, t1) * T(spline2, t2)\n", + " return combine(T(spline1, t1) * T(spline2, t2))\n", "\n", "beside(fish, fish)* unitsquare + above(fish,fish) * unitsquare" ] @@ -272,7 +272,7 @@ "metadata": {}, "outputs": [], "source": [ - "%%output size=300\n", + "%%output size=250\n", "def squarelimit(n):\n", " return nonet(corner(n), side(n), rot(rot(rot(corner(n)))),\n", " rot(side(n)), u, rot(rot(rot(side(n)))), \n", From d890ecd79018ffb745c95dd5f3d492a253685d5c Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 21 Jun 2017 02:04:17 +0100 Subject: [PATCH 48/99] Fixed Deploying Bokeh Apps rst --- doc/user_guide/Deploying_Bokeh_Apps.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user_guide/Deploying_Bokeh_Apps.rst b/doc/user_guide/Deploying_Bokeh_Apps.rst index d7efbc3838..c62749115c 100644 --- a/doc/user_guide/Deploying_Bokeh_Apps.rst +++ b/doc/user_guide/Deploying_Bokeh_Apps.rst @@ -2,5 +2,5 @@ Deploying Bokeh Apps ____________________ .. notebook:: holoviews ../../guides/user_guide/Deploying_Bokeh_Apps.ipynb - :skip execute: True + :skip_execute: True :offset: 1 From bd8e0ea328a0fbd295240476f42d2c0a46dc7fe0 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 21 Jun 2017 02:11:56 +0100 Subject: [PATCH 49/99] Further improvements to the robustness of Exporting_and_Archiving --- guides/user_guide/Exporting_and_Archiving.ipynb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/guides/user_guide/Exporting_and_Archiving.ipynb index 56ff0b0f9f..4aa585f66c 100644 --- a/guides/user_guide/Exporting_and_Archiving.ipynb +++ b/guides/user_guide/Exporting_and_Archiving.ipynb @@ -387,8 +387,8 @@ "source": [ "import os\n", "os.getcwd()\n", - "if os.path.exists(\"Exporting_and_Archiving\"):\n", - " print(sorted(os.listdir(\"Exporting_and_Archiving\")))" + "if os.path.exists(hv.archive.notebook_name):\n", + " print('\\n'.join(sorted(os.listdir(hv.archive.notebook_name))))" ] }, { @@ -437,12 +437,16 @@ "from holoviews.core.io import Unpickler\n", "c, a = None,None\n", "hvz_file = [f for f in listing if f.endswith('hvz')][0]\n", - "print('Unpickling {filename}'.format(filename=hvz_file))\n", - "path = os.path.join(\"Exporting_and_Archiving\", hvz_file)\n", + "path = os.path.join(hv.archive.notebook_name, hvz_file)\n", "\n", "if os.path.isfile(path):\n", + " print('Unpickling {filename}'.format(filename=hvz_file))\n", " obj = Unpickler.load(open(path,\"rb\"))\n", - "print(obj)" + " print(obj)\n", + "else:\n", + " print('Could not find file {path}'.format(path=path))\n", + " print('Current directory is {cwd}'.format(cwd=os.getcwd()))\n", + " print('Containing files and directories: {listing}'.format(listing=os.listdir(os.getcwd())))" ] }, { From d92ac093824362d970d2279e1ecbf705b7efe6cb Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 21 Jun 2017 04:16:34 +0100 Subject: [PATCH 50/99] Added regression_tap bokeh streams example --- examples/streams/bokeh/regression_tap.ipynb | 101 ++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 examples/streams/bokeh/regression_tap.ipynb diff --git a/examples/streams/bokeh/regression_tap.ipynb b/examples/streams/bokeh/regression_tap.ipynb new file mode 100644 index 0000000000..78833a1eee --- /dev/null +++ b/examples/streams/bokeh/regression_tap.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Regression selection
    \n", + "
    Description
    A linked streams example demonstrating how to the Selection1D stream to tap on a datapoint and reveal a regression plot. Highlights how custom interactivity can be used to reveal more information about a dataset.
    \n", + "
    Backends
    Bokeh
    \n", + "
    Tags
    streams, linked, tap selection
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "from holoviews.streams import Selection1D\n", + "from scipy import stats\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter [color_index=2 tools=['tap', 'hover'] width=600] {+framewise} (marker='triangle' cmap='Set1' size=10)\n", + "%%opts Overlay [toolbar='above' legend_position='right'] Curve (line_color='black') {+framewise}\n", + "\n", + "def gen_samples(N, corr=0.8):\n", + " xx = np.array([-0.51, 51.2])\n", + " yy = np.array([0.33, 51.6])\n", + " means = [xx.mean(), yy.mean()] \n", + " stds = [xx.std() / 3, yy.std() / 3]\n", + " covs = [[stds[0]**2 , stds[0]*stds[1]*corr], \n", + " [stds[0]*stds[1]*corr, stds[1]**2]] \n", + "\n", + " return np.random.multivariate_normal(means, covs, N)\n", + "\n", + "data = [('Week %d' % (i%10), np.random.rand(), chr(65+np.random.randint(5)), i) for i in range(100)]\n", + "sample_data = hv.NdOverlay({i: hv.Points(gen_samples(np.random.randint(1000, 5000), r2))\n", + " for _, r2, _, i in data})\n", + "points = hv.Scatter(data, kdims=['Date', 'r2'], vdims=['block', 'id']).redim.range(r2=(0., 1))\n", + "stream = Selection1D(source=points)\n", + "empty = (hv.Points(np.random.rand(0, 2)) * hv.Curve(np.random.rand(0, 2))).relabel('No selection')\n", + "\n", + "def regression(index):\n", + " if not index:\n", + " return empty\n", + " scatter = sample_data[index[0]]\n", + " xs, ys = scatter['x'], scatter['y']\n", + " slope, intercep, rval, pval, std = stats.linregress(xs, ys)\n", + " xs = np.linspace(*scatter.range(0)+(2,))\n", + " reg = slope*xs+intercep\n", + " return (scatter * hv.Curve((xs, reg))).relabel('r2: %.3f' % slope)\n", + "\n", + "reg = hv.DynamicMap(regression, kdims=[], streams=[stream])\n", + "\n", + "average = hv.Curve(points, kdims=['Date'], vdims=['r2']).aggregate(function=np.mean)\n", + "points * average + reg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From cf1ce6e2383ad6c31ed4ef9b0defa95183769120 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 21 Jun 2017 20:14:52 +0100 Subject: [PATCH 51/99] Structured user guide and added rst files for missing guides --- doc/User_Guide/Annotating_Data.rst | 2 + doc/User_Guide/Data_Pipelines.rst | 2 + doc/User_Guide/Dimensioned_Containers.rst | 2 + doc/User_Guide/IPython_Magics.rst | 2 + doc/User_Guide/Plots_and_Renderers.rst | 2 + doc/User_Guide/Plotting_with_Matplotlib.rst | 2 + doc/user_guide/index.rst | 149 +++++++++++++++++--- 7 files changed, 139 insertions(+), 22 deletions(-) create mode 100644 doc/User_Guide/Annotating_Data.rst create mode 100644 doc/User_Guide/Data_Pipelines.rst create mode 100644 doc/User_Guide/Dimensioned_Containers.rst create mode 100644 doc/User_Guide/IPython_Magics.rst create mode 100644 doc/User_Guide/Plots_and_Renderers.rst create mode 100644 doc/User_Guide/Plotting_with_Matplotlib.rst diff --git a/doc/User_Guide/Annotating_Data.rst b/doc/User_Guide/Annotating_Data.rst new file mode 100644 index 0000000000..b9ca5c3f68 --- /dev/null +++ b/doc/User_Guide/Annotating_Data.rst @@ -0,0 +1,2 @@ +Annotating your Data +____________________ diff --git a/doc/User_Guide/Data_Pipelines.rst b/doc/User_Guide/Data_Pipelines.rst new file mode 100644 index 0000000000..6235855982 --- /dev/null +++ b/doc/User_Guide/Data_Pipelines.rst @@ -0,0 +1,2 @@ +Data Transformation Pipelines +_____________________________ diff --git a/doc/User_Guide/Dimensioned_Containers.rst b/doc/User_Guide/Dimensioned_Containers.rst new file mode 100644 index 0000000000..146f053e10 --- /dev/null +++ b/doc/User_Guide/Dimensioned_Containers.rst @@ -0,0 +1,2 @@ +Dimensioned Containers +______________________ diff --git a/doc/User_Guide/IPython_Magics.rst b/doc/User_Guide/IPython_Magics.rst new file mode 100644 index 0000000000..727092de95 --- /dev/null +++ b/doc/User_Guide/IPython_Magics.rst @@ -0,0 +1,2 @@ +IPython Magics +______________ diff --git a/doc/User_Guide/Plots_and_Renderers.rst b/doc/User_Guide/Plots_and_Renderers.rst new file mode 100644 index 0000000000..846bbb8ea5 --- /dev/null +++ b/doc/User_Guide/Plots_and_Renderers.rst @@ -0,0 +1,2 @@ +Working with Plot and Renderers +_______________________________ diff --git a/doc/User_Guide/Plotting_with_Matplotlib.rst b/doc/User_Guide/Plotting_with_Matplotlib.rst new file mode 100644 index 0000000000..6d0de34d70 --- /dev/null +++ b/doc/User_Guide/Plotting_with_Matplotlib.rst @@ -0,0 +1,2 @@ +Plotting with Matplotlib +________________________ diff --git a/doc/user_guide/index.rst b/doc/user_guide/index.rst index e9b161972d..616e62e860 100644 --- a/doc/user_guide/index.rst +++ b/doc/user_guide/index.rst @@ -1,20 +1,118 @@ User Guide __________ -* `Applying Transformations `_ -* `Building Composite Objects `_ -* `Continuous Coordinates `_ -* `Custom Interactivity `_ + +Core guides +----------- + +These user guides provide detailed explanation of some of the core +concepts in HoloViews: + +* `Annotating your Data `_ + How to wrap your data in Element and annotate it with additional + metadata to explore and visualize it effectively. + +* `Composition of Elements `_ + Composing your wrapped data into ``Overlay`` and ``Layout`` + collections with the ``+`` and ``*`` operators. + * `Customizing Plots `_ -* `Deploying Bokeh Apps `_ -* `Exporting and Archiving `_ + Applying plot, style and normalization options to control the look + and feel of the plotting. + +* `Dimensioned Containers `_ + Declaring multi-dimensional containers to animate and facet your + data flexibly. Learn about ``HoloMap``, ``NdOverlay``, ``GridSpace`` + and ``NdLayout`` types and how to use them effectively with the + corresponding ``.layout``, ``.overlay`` and ``.grid`` method``. + +* `Building Composite Objects `_ + How to build and work with complex composite objects. + +* `Live Data `_ + Introducing ``DynamicMap`` to lazily declare data and generate + complex interactive visualizations. + +* `Tabular Datasets `_ + Loading and wrapping tabular datasets in HoloViews using NumPy, + pandas and dask and flexibly exploring the dataset using selection, + grouping and aggregation. + * `Gridded Datasets `_ + Loading and wrapping gridded dataset in HoloViews using NumPy and + XArray to flexibly explore and visualize labelled n-dimensional + arrays. + * `Indexing and Selecting Data `_ -* `Live Data `_ -* `Plotting with Bokeh `_ + Effectively indexing and selecting subsets of the data on the + different HoloViews datastructures. + +* `Transforming Elements `_ + Applying and declaring ``Operations`` that transform your allowing + you to define the building blocks of a data analysis pipeline and + quickly explore and visualize the effect of different parameters on + your data. + * `Responding to Events `_ -* `Tabular Datasets `_ + Effectively using ``Streams`` to dynamically control and drive your + visualizations by responding to user defined events such as custom + widgets or from the commandline or notebook. + +* `Custom Interactivity `_ + Using linked ``Streams`` to respond to events generated by + interacting with a bokeh plot, e.g. by responding to mouse position, + mouse taps, selections or the current axis range. + +* `Data Transformation Pipelines `_ + Chaining different operations to build complex and lazy data + analysis pipelines, which can drive interactive plots in a notebook + or in a deployed dashboard. + * `Working with large data `_ + Leveraging datashader support in HoloViews to effectively and + interactively explore and visualize millions or even billions of + datapoints. + + +Supplementary guides +-------------------- + +These guides provide detail about specific additional features in HoloViews: + + +* `Plotting with Bokeh `_ + The basics of plotting with bokeh including details about plot tools + and backend specific styling options and working with bokeh models + more directly. + +* `Deploying Bokeh Apps `_ + Instructions on how to declare and deploy bokeh apps using HoloViews + in various scenarios, e.g. from scripts, from the commandline and + within the notebook. + +* `Plotting with matplotlib `_ + The basics of plotting with matplotlib highlighting core differences + in styling and controlling the layout of matplotlib figures. + +* `Plotting with plotly `_ + The basics of plotting with plotly focusing on 3D plotting, one of + the main strengths of plotly. + +* `IPython Magics `_ + Using the ``%opts`` and ``%output`` magics to quickly control + display output in the notebook. + +* `Working with renderers and plots `_ + Using HoloViews Renderer and Plot classes directly to access and + manipulate your visualizations directly. + +* `Exporting and Archiving `_ + Using HoloViews to archive both your data and visualization from the + notebook. + +* `Continuous Coordinates `_ Details on + how continuous coordinates are handled in HoloViews specifically + focusing on the difference between ``Image`` and other ``Raster`` types. .. toctree:: @@ -22,17 +120,24 @@ __________ :hidden: :maxdepth: 2 - Applying Transformations - Building Composite Objects - Continuous Coordinates - Custom Interactivity - Customizing Plots - Deploying Bokeh Apps - Exporting and Archiving - Gridded Datasets - Indexing and Selecting Data - Live Data - Plotting with Bokeh - Responding to Events - Tabular Datasets + Annotating your Data + Composition of Elements + Customizing Plots + Dimensioned Containers + Building Composite Objects + Live Data + Tabular Datasets + Gridded Datasets + Indexing and Selecting Data + Transforming Elements + Responding to Events + Custom Interactivity Working with large data + Plotting with Bokeh + Deploying Bokeh Apps + Plotting with matplotlib + Plotting with plotly + IPython Magics + Working with Plot and Renderers + Exporting and Archiving + Continuous Coordinates From 0ca7a8e1d307b804ba6dc13a5fffba885f3eb978 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 21 Jun 2017 20:30:08 +0100 Subject: [PATCH 52/99] Small markup fix in user guide index --- doc/user_guide/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user_guide/index.rst b/doc/user_guide/index.rst index 616e62e860..61cfaacf7b 100644 --- a/doc/user_guide/index.rst +++ b/doc/user_guide/index.rst @@ -24,7 +24,7 @@ concepts in HoloViews: Declaring multi-dimensional containers to animate and facet your data flexibly. Learn about ``HoloMap``, ``NdOverlay``, ``GridSpace`` and ``NdLayout`` types and how to use them effectively with the - corresponding ``.layout``, ``.overlay`` and ``.grid`` method``. + corresponding ``.layout``, ``.overlay`` and ``.grid`` method. * `Building Composite Objects `_ How to build and work with complex composite objects. From bab9f2b9a9ece449b2b38cf045866c68da81bea9 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Thu, 22 Jun 2017 01:27:58 +0100 Subject: [PATCH 53/99] Fixed use of print statement in Gridded Datasets notebooks --- guides/getting_started/4-Gridded_Datasets.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/getting_started/4-Gridded_Datasets.ipynb b/guides/getting_started/4-Gridded_Datasets.ipynb index 6231a871f8..07eee8fa03 100644 --- a/guides/getting_started/4-Gridded_Datasets.ipynb +++ b/guides/getting_started/4-Gridded_Datasets.ipynb @@ -160,7 +160,7 @@ "source": [ "ROIs = data['ROIs']\n", "roi_bounds = hv.NdOverlay({i: hv.Bounds(tuple(roi)) for i, roi in enumerate(ROIs)})\n", - "print ROIs.shape" + "print(ROIs.shape)" ] }, { From b32d90628951fddb5c4431f8d608f9d627719aaf Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Thu, 22 Jun 2017 02:25:50 +0100 Subject: [PATCH 54/99] Added user guide skeletons and cleaned out outdated materials --- doc/user_guide/index.rst | 58 +- guides/user_guide/01-Annotating_Data.ipynb | 160 ++++ guides/user_guide/02-Composing_Elements.ipynb | 92 +++ guides/user_guide/03-Customizing_Plots.ipynb | 208 ++++++ .../04-Dimensioned_Containers.ipynb | 83 +++ ...nb => 05-Building_Composite_Objects.ipynb} | 104 +-- .../{Live_Data.ipynb => 06-Live_Data.ipynb} | 0 ...tasets.ipynb => 07-Tabular_Datasets.ipynb} | 0 ...tasets.ipynb => 08-Gridded_Datasets.ipynb} | 0 ...b => 09-Indexing_and_Selecting_Data.ipynb} | 181 +++-- ...s.ipynb => 10-Transforming_Elements.ipynb} | 0 ...ts.ipynb => 11-Responding_to_Events.ipynb} | 0 ...ty.ipynb => 12-Custom_Interactivity.ipynb} | 0 .../{Large_Data.ipynb => 14-Large_Data.ipynb} | 0 guides/user_guide/Customizing_Plots.ipynb | 705 ------------------ 15 files changed, 734 insertions(+), 857 deletions(-) create mode 100644 guides/user_guide/01-Annotating_Data.ipynb create mode 100644 guides/user_guide/02-Composing_Elements.ipynb create mode 100644 guides/user_guide/03-Customizing_Plots.ipynb create mode 100644 guides/user_guide/04-Dimensioned_Containers.ipynb rename guides/user_guide/{Building_Composite_Objects.ipynb => 05-Building_Composite_Objects.ipynb} (94%) rename guides/user_guide/{Live_Data.ipynb => 06-Live_Data.ipynb} (100%) rename guides/user_guide/{Tabular_Datasets.ipynb => 07-Tabular_Datasets.ipynb} (100%) rename guides/user_guide/{Gridded_Datasets.ipynb => 08-Gridded_Datasets.ipynb} (100%) rename guides/user_guide/{Indexing_and_Selecting_Data.ipynb => 09-Indexing_and_Selecting_Data.ipynb} (82%) rename guides/user_guide/{Applying_Transformations.ipynb => 10-Transforming_Elements.ipynb} (100%) rename guides/user_guide/{Responding_to_Events.ipynb => 11-Responding_to_Events.ipynb} (100%) rename guides/user_guide/{Custom_Interactivity.ipynb => 12-Custom_Interactivity.ipynb} (100%) rename guides/user_guide/{Large_Data.ipynb => 14-Large_Data.ipynb} (100%) delete mode 100644 guides/user_guide/Customizing_Plots.ipynb diff --git a/doc/user_guide/index.rst b/doc/user_guide/index.rst index 61cfaacf7b..26e6db404a 100644 --- a/doc/user_guide/index.rst +++ b/doc/user_guide/index.rst @@ -8,57 +8,57 @@ Core guides These user guides provide detailed explanation of some of the core concepts in HoloViews: -* `Annotating your Data `_ +* `Annotating your Data <01-Annotating_Data.html>`_ How to wrap your data in Element and annotate it with additional metadata to explore and visualize it effectively. -* `Composition of Elements `_ +* `Composition of Elements <02-Composing_Elements.html>`_ Composing your wrapped data into ``Overlay`` and ``Layout`` collections with the ``+`` and ``*`` operators. -* `Customizing Plots `_ +* `Customizing Plots <03-Customizing_Plots.html>`_ Applying plot, style and normalization options to control the look and feel of the plotting. -* `Dimensioned Containers `_ +* `Dimensioned Containers <04-Dimensioned_Containers.html>`_ Declaring multi-dimensional containers to animate and facet your data flexibly. Learn about ``HoloMap``, ``NdOverlay``, ``GridSpace`` and ``NdLayout`` types and how to use them effectively with the corresponding ``.layout``, ``.overlay`` and ``.grid`` method. -* `Building Composite Objects `_ +* `Building Composite Objects <05-Building_Composite_Objects.html>`_ How to build and work with complex composite objects. -* `Live Data `_ +* `Live Data <06-Live_Data.html>`_ Introducing ``DynamicMap`` to lazily declare data and generate complex interactive visualizations. -* `Tabular Datasets `_ +* `Tabular Datasets <07-Tabular_Datasets.html>`_ Loading and wrapping tabular datasets in HoloViews using NumPy, pandas and dask and flexibly exploring the dataset using selection, grouping and aggregation. -* `Gridded Datasets `_ +* `Gridded Datasets <08-Gridded_Datasets.html>`_ Loading and wrapping gridded dataset in HoloViews using NumPy and XArray to flexibly explore and visualize labelled n-dimensional arrays. -* `Indexing and Selecting Data `_ +* `Indexing and Selecting Data <09-Indexing_and_Selecting_Data.html>`_ Effectively indexing and selecting subsets of the data on the different HoloViews datastructures. -* `Transforming Elements `_ +* `Transforming Elements <10-Transforming_Elements.html>`_ Applying and declaring ``Operations`` that transform your allowing you to define the building blocks of a data analysis pipeline and quickly explore and visualize the effect of different parameters on your data. -* `Responding to Events `_ +* `Responding to Events <11-Responding_to_Events.html>`_ Effectively using ``Streams`` to dynamically control and drive your visualizations by responding to user defined events such as custom widgets or from the commandline or notebook. -* `Custom Interactivity `_ +* `Custom Interactivity <12-Custom_Interactivity.html>`_ Using linked ``Streams`` to respond to events generated by interacting with a bokeh plot, e.g. by responding to mouse position, mouse taps, selections or the current axis range. @@ -68,7 +68,7 @@ concepts in HoloViews: analysis pipelines, which can drive interactive plots in a notebook or in a deployed dashboard. -* `Working with large data `_ +* `Working with large data <14-Large_Data.html>`_ Leveraging datashader support in HoloViews to effectively and interactively explore and visualize millions or even billions of datapoints. @@ -79,7 +79,6 @@ Supplementary guides These guides provide detail about specific additional features in HoloViews: - * `Plotting with Bokeh `_ The basics of plotting with bokeh including details about plot tools and backend specific styling options and working with bokeh models @@ -98,10 +97,6 @@ These guides provide detail about specific additional features in HoloViews: The basics of plotting with plotly focusing on 3D plotting, one of the main strengths of plotly. -* `IPython Magics `_ - Using the ``%opts`` and ``%output`` magics to quickly control - display output in the notebook. - * `Working with renderers and plots `_ Using HoloViews Renderer and Plot classes directly to access and manipulate your visualizations directly. @@ -120,24 +115,23 @@ These guides provide detail about specific additional features in HoloViews: :hidden: :maxdepth: 2 - Annotating your Data - Composition of Elements - Customizing Plots - Dimensioned Containers - Building Composite Objects - Live Data - Tabular Datasets - Gridded Datasets - Indexing and Selecting Data - Transforming Elements - Responding to Events - Custom Interactivity - Working with large data + Annotating your Data <1-Annotating_Data> + Composition of Elements <2-Composing_Elements> + Customizing Plots <3-Customizing_Plots> + Dimensioned Containers <4-Dimensioned_Containers> + Building Composite Objects <5-Building_Composite_Objects> + Live Data <6-Live_Data> + Tabular Datasets <7-Tabular_Datasets> + Gridded Datasets <8-Gridded_Datasets> + Indexing and Selecting Data <9-Indexing_and_Selecting_Data> + Transforming Elements <10-Applying_Transformations> + Responding to Events <11-Responding_to_Events> + Custom Interactivity <12-Custom_Interactivity> + Working with large data <14-Large_Data> Plotting with Bokeh Deploying Bokeh Apps Plotting with matplotlib Plotting with plotly - IPython Magics Working with Plot and Renderers Exporting and Archiving Continuous Coordinates diff --git a/guides/user_guide/01-Annotating_Data.ipynb b/guides/user_guide/01-Annotating_Data.ipynb new file mode 100644 index 0000000000..e7999e9aee --- /dev/null +++ b/guides/user_guide/01-Annotating_Data.ipynb @@ -0,0 +1,160 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Annotating your Data\n", + "\n", + "One of the key features that HoloViews lets you express about your data is its dimensionality. The ``Elements`` allow you to annotate your with metadata expressing its visual and conceptual representation and expressing its dimensionality." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import holoviews.util\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Specifying dimensionality\n", + "\n", + "Dimension objects are always present in the ``kdims`` and ``vdims`` of a HoloViews object, whether or not they are declared:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "np.random.seed(10)\n", + "points1 = hv.Points(np.random.rand(500,4))\n", + "points2 = hv.Points(np.random.rand(500,4), kdims=['atm_pressure','temperature'])\n", + "points1 + points2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print('Key dimensions of points1: %s' % points1.kdims)\n", + "print('Key dimensions of points2: %s' % points2.kdims)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, the ``kdims`` always contains ``Dimension`` objects. These may be default dimensions, as in the declaration of ``points1``, or created from a string names, as in the declaration of ``points2``. You can also pass in your own ``Dimension`` objects explicitly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hv.Points(np.random.rand(500,4), kdims=[hv.Dimension('atm_pressure'), hv.Dimension('temperature')])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Mention mapping from dims to labels, explain that it is used in methods such as select as keywords (can link to getting started introduction).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dimension properties\n", + "\n", + "* Description list of what parameters dimensions have. label, unit, range etc.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setting properties with redim\n", + "\n", + "* Example of redim to change dimension name.\n", + "* Example of redim.label and redim.range. Explain the other parameters can be set this way too.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Declaring Dimension objects\n", + "\n", + "* Can explicitly supply rich dimension objects.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dimension formatters\n", + "\n", + "* Show example of formatters.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Organizing your elements\n", + "\n", + "* Intro paragraph to group/label system.\n", + "\n", + "### Element group and label\n", + "\n", + "* Declare two elements with group and label.\n", + "* Use them with + and point forward to next guide (composition).\n", + "* Use them with * and customize with opts and point forward to composition/customizing plots.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/guides/user_guide/02-Composing_Elements.ipynb b/guides/user_guide/02-Composing_Elements.ipynb new file mode 100644 index 0000000000..05bfbb0d3a --- /dev/null +++ b/guides/user_guide/02-Composing_Elements.ipynb @@ -0,0 +1,92 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Composing Elements\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Composing collections of data\n", + "\n", + "* Composition is about putting heterogeneous data into a collection with both a visual representation and a way to group and access your data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Composition operators (+ and *)\n", + "\n", + "* Introduce * and + (maybe <<) as ways of quickly composing Elements into Overlays and Layouts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accessing and naming your data\n", + "\n", + "* Accessing data on collections and giving them names by defining group, label\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Working with Overlays\n", + "\n", + "* Overview of Overlay API: creating from list, using .get to get layer\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Working with Layouts\n", + "\n", + "* Overview of Layout API: construct from list, introduce .cols\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/guides/user_guide/03-Customizing_Plots.ipynb b/guides/user_guide/03-Customizing_Plots.ipynb new file mode 100644 index 0000000000..15d1826cae --- /dev/null +++ b/guides/user_guide/03-Customizing_Plots.ipynb @@ -0,0 +1,208 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Customizing Plots\n", + "\n", + "* Intro paragraph. Separation of presentation/content. Option trees.\n", + "* Renderers control output. utilities to control settings described shortly.\n", + "\n", + "HoloViews is designed to be both highly customizable, allowing you to control how your visualizations appear, but also to enforce a strong separation between your data (with any semantically associated metadata, like type, dimension names, and description) and all options related purely to visualization. This separation allows HoloViews objects to be generated easily by external programs, without giving them a dependency on any plotting or windowing libraries. It also helps make it completely clear which parts of your code deal with the actual data, and which are just about displaying it nicely, which becomes very important for complex visualizations that become more complicated than your data itself.\n", + "\n", + "To achieve this separation, HoloViews stores visualization options independently from your data, and applies the options only when rendering the data to a file on disk, a GUI window, or an IPython notebook cell.\n", + "\n", + "This tutorial gives an overview of the different types of options available, how to find out more about them, and how to set them in both regular Python and using the IPython magic interface that is shown elsewhere in the tutorials.\n", + "\n", + "Notes:\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Visual options and styling\n", + "\n", + "* Intro paragraph explaining 3 types of option.\n", + " + plot options\n", + " + style options\n", + " + normalization options\n", + "\n", + "HoloViews provides three categories of visualization options that can be set by the user. In this section we will first describe the different kinds of options, then later sections show you how to list the supported options of each type for a given HoloViews object or class, and how to change them in Python or IPython.\n", + "\n", + "#### ``style`` options:\n", + "\n", + "``style`` options are passed directly to the underlying rendering backend that actually draws the plots, allowing you to control the details of how it behaves. The default backend is matplotlib, but there are other backends either using matplotlib's options (e.g. ``mpld3``), or their own sets of options (e.g. [``bokeh``](Bokeh_Backend) ).\n", + "\n", + "For whichever backend has been selected, HoloViews can tell you which options are supported, but you will need to see the plotting library's own documentation (e.g. [matplotlib](http://matplotlib.org/contents.html), [bokeh](http://bokeh.pydata.org)) for the details of their use.\n", + "\n", + "HoloViews has been designed to be easily extensible to additional backends in the future, such as [Plotly](https://github.com/ioam/holoviews/pull/398), Cairo, VTK, or D3.js, and if one of those backends were selected then the supported style options would differ.\n", + "\n", + "#### ``plot`` options:\n", + "\n", + "Each of the various HoloViews plotting classes declares various [Parameters](http://ioam.github.io/param) that control how HoloViews builds the visualization for that type of object, such as plot sizes and labels. HoloViews uses these options internally; they are not simply passed to the underlying backend. HoloViews documents these options fully in its online help and in the [Reference Manual](http://holoviews.org/Reference_Manual). These options may vary for different backends in some cases, depending on the support available both in that library and in the HoloViews interface to it, but we try to keep any options that are meaningful for a variety of backends the same for all of them.\n", + "\n", + "#### ``norm`` options:\n", + "\n", + "``norm`` options are a special type of plot option that are applied orthogonally to the above two types, to control normalization. Normalization refers to adjusting the properties of one plot relative to those of another. For instance, two images normalized together would appear with relative brightness levels, with the brightest image using the full range black to white, while the other image is scaled proportionally. Two images normalized independently would both cover the full range from black to white. Similarly, two axis ranges normalized together will expand to fit the largest range of either axis, while those normalized separately would cover different ranges.\n", + "\n", + "There are currently only two ``norm`` options supported, ``axiswise`` and ``framewise``, but they can be applied to any of the various object types in HoloViews to specify a huge range of different normalization options.\n", + "\n", + "For a given category or group of HoloViews objects, if ``axiswise`` is True, normalization will be computed independently for all items in that category that have their own axes, such as different ``Image`` plots or ``Curve`` plots. If ``axiswise`` is False, all such objects are normalized together.\n", + "\n", + "For a given category or group of HoloViews objects, if ``framewise`` is True, normalization of any ``HoloMap`` objects included is done independently per frame rendered -- each frame will appear as it would if it were extracted from the ``HoloMap`` and plotted separately. If ``framewise`` is False (the default), all frames in a given ``HoloMap`` are normalized together, so that you can see strength differences over the course of the animation.\n", + "\n", + "As described below, these options can be controlled precisely and in any combination to make sure that HoloViews displays the data of most interest, ignoring irrelevant differences and highlighting important ones." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Option specification syntax\n", + "\n", + "* Intro to idea of two formats and group/label specificity.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Dictionary format" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### String format" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### %opts\n", + "\n", + "* %opts as a way of specifying things globally.\n", + "* Simple example\n", + "\n", + "The ``%opts`` \"line\" magic (with one ``%``) works just the same as the ``%%opts`` \"cell\" magic, but it changes the global default options for all future cells, allowing you to choose a new default colormap, line width, etc.\n", + "\n", + "Apart from its brevity, a big benefit of using the IPython magic syntax ``%%opts`` or ``%opts`` is that it is fully tab-completable. Each of the options that is currently available will be listed if you press ```` when you are ready to write it, which makes it much easier to find the right parameter. Of course, you will still need to consult the full ``holoviews.help`` documentation (described above) to see the type, allowable values, and documentation for each option, but the tab completion should at least get you started and is great for helping you remember the list of options and see which options are available.\n", + "\n", + "You can even use the succinct IPython-style specification directly in your Python code if you wish, but it requires the external [pyparsing](https://pypi.python.org/pypi/pyparsing) library (which is already available if you are using matplotlib):" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### %%opts\n", + "\n", + "* Simple example with group/label. Show that 1. styling local to that cell display 2. changes persist.\n", + "\n", + "The ``%%opts`` magic works like the pure-Python option for associating options with an object, except that it works on the item in the IPython cell, and it affects the item directly rather than making a copy or applying only in scope. Specifically, it assigns a new ID number to the object returned from this cell, and makes a new ``OptionTree`` containing the options for that ID number.\n", + "\n", + "If the same ``layout`` object is used later in the notebook, even within a complicated container object, it will retain the options set on it.\n", + "\n", + "The options accepted are just the same as for the Python version, but specified more succinctly:\n", + "\n", + "``%%opts`` *target-specification* ``style(``*styleoption*``=``*val* ...``) plot[``*plotoption*``=``*val* ...``] norm{+``*normoption* ``-``*normoption*...``}``\n", + "\n", + "Here *key* lets you specify the object type (e.g. ``Image``), and optionally its ``group`` (e.g. ``Image.Function``) or even both ``group`` and ``label`` (e.g. ``Image.Function.Sine``), if you want to control options very precisely. There is also an even further abbreviated syntax, because the special bracket types alone are enough to indicate which category of option is specified:\n", + "\n", + "``%%opts`` *target-specification* ``(``*styleoption*``=``*val* ...``) [``*plotoption*``=``*val* ...``] {+``*normoption* ``-``*normoption* ...``}``\n", + "\n", + "Here parentheses indicate style options, square brackets indicate plot options, and curly brackets indicate norm options (with ``+axiswise`` and ``+framewise`` indicating True for those values, and ``-axiswise`` and ``-framewise`` indicating False). Additional *target-specification*s and associated options of each type for that *target-specification* can be supplied at the end of this line. This ultra-concise syntax is used throughout the other tutorials, because it helps minimize the code needed to specify the plotting options, and helps make it very clear that these options are handled separately from the actual data.\n", + "\n", + "Here we demonstrate the concise syntax by customizing the style and plot options of the ``Curve`` in the layout:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### hv.opts\n", + "\n", + "* string format or dict format.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Option trees\n", + "\n", + "* All these mechanisms affect option trees which can be used directly typically at the library level.\n", + "* Explain inheritance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Customizing output\n", + "\n", + "Plot sizes, backends, output formats and saving to file. There are multiple ways to control these things.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### hv.extension" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### %output\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### %%output\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### hv.output\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/guides/user_guide/04-Dimensioned_Containers.ipynb b/guides/user_guide/04-Dimensioned_Containers.ipynb new file mode 100644 index 0000000000..c2424be6e6 --- /dev/null +++ b/guides/user_guide/04-Dimensioned_Containers.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dimensioned Containers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exploring parameter spaces\n", + "\n", + "* Discuss exploring multi-dimensional parameter spaces and faceting of data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Declaring n-dimensional collections\n", + "\n", + "* HoloMaps: Introduce HoloMap as general nd-dimensional space (also mention DynamicMap)\n", + "* Explain keys and key dimensions and using select and indexing\n", + "* Explain semantics of the widgets and point forward to streams+custom widgets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Visual grouping\n", + "\n", + "* Introduce NdOverlay, NdLayout, GridSpace by casting between the containers\n", + "* Example faceting using 2D HoloMap\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grouping and faceting\n", + "\n", + "* Explain ``.overlay``, ``.layout``, ``.grid`` on HoloMap to facet multi-dimensional space\n", + "* Example using 4D HoloMap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grouping and faceting\n", + "\n", + "* Explain ``.overlay``, ``.layout``, ``.grid`` on HoloMap to facet multi-dimensional space\n", + "* Example using 4D HoloMap" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/guides/user_guide/Building_Composite_Objects.ipynb b/guides/user_guide/05-Building_Composite_Objects.ipynb similarity index 94% rename from guides/user_guide/Building_Composite_Objects.ipynb rename to guides/user_guide/05-Building_Composite_Objects.ipynb index de3291783b..1507ac4a5a 100644 --- a/guides/user_guide/Building_Composite_Objects.ipynb +++ b/guides/user_guide/05-Building_Composite_Objects.ipynb @@ -13,32 +13,32 @@ "source": [ "The [Containers](Containers.ipynb) tutorial shows examples of each of the container types in HoloViews, and it is useful to look at the description of each type there, as you work through this tutorial. \n", "\n", - "This tutorial shows you how to combine the various container types, in order to build data structures that can contain all of the data that you want to visualize or analyze, in an extremely flexible way. For instance, you may have a large set of measurements of different types of data (numerical, image, textual notations, etc.) from different experiments done on different days, with various different parameter values associated with each one. HoloViews can store all of this data together, which will allow you to select just the right bit of data \"on the fly\" for any particular analysis or visualization, by indexing, slicing, selecting, and sampling in this data structure.\n", - "\n", - "To illustrate the full functionality provided, we will create an example of the maximally nested object structure currently possible with HoloViews:" + "This tutorial shows you how to combine the various container types, in order to build data structures that can contain all of the data that you want to visualize or analyze, in an extremely flexible way. For instance, you may have a large set of measurements of different types of data (numerical, image, textual notations, etc.) from different experiments done on different days, with various different parameter values associated with each one. HoloViews can store all of this data together, which will allow you to select just the right bit of data \"on the fly\" for any particular analysis or visualization, by indexing, slicing, selecting, and sampling in this data structure." ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], + "cell_type": "markdown", + "metadata": {}, "source": [ - "import numpy as np\n", - "import holoviews as hv\n", - "hv.extension()" + "## Nesting hierarchy
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To illustrate the full functionality provided, we will create an example of the maximally nested object structure currently possible with HoloViews:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')\n", "np.random.seed(10)\n", "\n", "def sine_curve(phase, freq, amp, power, samples=102):\n", @@ -80,9 +80,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout" @@ -98,21 +96,12 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(layout)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Nesting hierarchy " - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -161,9 +150,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(layout)" @@ -188,9 +175,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout.Parameters.Sines" @@ -213,9 +198,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1]" @@ -245,9 +228,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1][1.0]" @@ -270,9 +251,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "(layout.Parameters.Sines[0.5, 1][1].Phases.Sines +\n", @@ -296,9 +275,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "l=layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0]\n", @@ -308,9 +285,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(l)" @@ -333,9 +308,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "type(layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0].data)" @@ -351,9 +324,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.2]" @@ -369,9 +340,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.23], layout.Parameters.Sines[0.5, 1][1].Phases.Sines[0.0][5.27]" @@ -408,9 +377,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "o1 = layout.Parameters.Sines.select(Amplitude=0.5, Power=1.0).select(Frequency=1.0)\n", @@ -428,15 +395,22 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout.Parameters.Sines.select(Amplitude=0.5,Power=1.0, \n", " Frequency=1.0).Phases.Sines.select(Phase=0.0)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Traversing the hierarchy\n", + "\n", + "* Show map/traverse etc to go through the hierarchy." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -458,7 +432,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Live_Data.ipynb b/guides/user_guide/06-Live_Data.ipynb similarity index 100% rename from guides/user_guide/Live_Data.ipynb rename to guides/user_guide/06-Live_Data.ipynb diff --git a/guides/user_guide/Tabular_Datasets.ipynb b/guides/user_guide/07-Tabular_Datasets.ipynb similarity index 100% rename from guides/user_guide/Tabular_Datasets.ipynb rename to guides/user_guide/07-Tabular_Datasets.ipynb diff --git a/guides/user_guide/Gridded_Datasets.ipynb b/guides/user_guide/08-Gridded_Datasets.ipynb similarity index 100% rename from guides/user_guide/Gridded_Datasets.ipynb rename to guides/user_guide/08-Gridded_Datasets.ipynb diff --git a/guides/user_guide/Indexing_and_Selecting_Data.ipynb b/guides/user_guide/09-Indexing_and_Selecting_Data.ipynb similarity index 82% rename from guides/user_guide/Indexing_and_Selecting_Data.ipynb rename to guides/user_guide/09-Indexing_and_Selecting_Data.ipynb index 393a8ba824..141656c812 100644 --- a/guides/user_guide/Indexing_and_Selecting_Data.ipynb +++ b/guides/user_guide/09-Indexing_and_Selecting_Data.ipynb @@ -21,12 +21,24 @@ "| **slice** | e[3:5.5], e[3:5.5,0:1] | Selecting a contiguous portion from an Element, returning the same type of Element\n", "| **sample** | e.sample(y=5.5),
    e.sample((3,3)) | Selecting one or more regularly spaced data values, returning a new type of Element\n", "| **select** | e.select(y=5.5),
    e.select(y=(3,5.5)) | More verbose notation covering all supporting slice and index operations by dimension name.\n", + "| **iloc** | e[2, :],
    e[2:5, :] | Indexes and slices by row and column tabular index supporting integer indexes, slices, lists and boolean indices.\n", "\n", - "These operations are all concerned with selecting some subset of your data values, without combining across data values (e.g. averaging) or otherwise transforming your actual data. In the [Columnar Data](Columnar_Data.ipynb) tutorial we will look at other operations on the data that reduce, summarize, or transform the data in other ways, rather than selections as covered here.\n", + "These operations are all concerned with selecting some subset of your data values, without combining across data values (e.g. averaging) or otherwise transforming your actual data. In the [Tabular Data](Tabular_Datasets.ipynb) tutorial we will look at other operations on the data that reduce, summarize, or transform the data in other ways, rather than selections as covered here.\n", "\n", "We'll be going through each operation in detail and provide a visual illustration to help make the semantics of each operation clear. This Tutorial assumes that you are familiar with continuous and discrete coordinate systems, so please review our [Continuous Coordinates Tutorial](Continuous_Coordinates.ipynb) if you have not done so already." ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -46,14 +58,12 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.extension()\n", + "hv.notebook_extension()\n", "%opts Layout [fig_size=125] Points [size_index=None] (s=50) Scatter3D [size_index=None]\n", "%opts Bounds (linewidth=2 color='k') {+axiswise} Text (fontsize=16 color='k') Image (cmap='Reds')" ] @@ -75,9 +85,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", @@ -97,9 +105,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hist[0.25], hist[0.5], hist[0.55]" @@ -115,9 +121,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*2, 21)\n", @@ -137,7 +141,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "scrolled": true }, "outputs": [], @@ -155,9 +158,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "curve[4:4.5]" @@ -180,9 +181,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "r = np.arange(0, 1, 0.005)\n", @@ -203,9 +202,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*8, 201)\n", @@ -236,9 +233,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(0)\n", @@ -252,14 +247,106 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "img[4.2,4.2], img[4.3,4.2], img[5.0,4.2]" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tabular indexing and slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While most indexing in HoloViews works by selecting the values along a dimension it is also frequently useful to index and slice using integer row and column indices. For this purpose most HoloViews objects have a ``.iloc`` indexing interface (mirroring the [pandas](http://pandas.pydata.org/pandas-docs/stable/indexing.html#different-choices-for-indexing) API), which supports all the usual indexing semantics including:\n", + "\n", + "* An integer e.g. 5\n", + "\n", + "* A list or array of integers [4, 3, 0]\n", + "\n", + "* A slice object with ints 1:7\n", + "\n", + "* A boolean array" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Indexing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this way we can for example select the x- and y-values in the 8th row of our ``Curve``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xs = np.linspace(0, np.pi*2, 21)\n", + "curve = hv.Curve((xs, np.sin(xs)))\n", + "print('x: %s, y: %s' % (curve.iloc[8, 0], curve.iloc[8, 1]))\n", + "curve * hv.Scatter(curve.iloc[8])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively we can select every second sample between indices 5 and 16 of a ``Curve``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve + curve.iloc[5:16:2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Lists of integers and boolean indices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally we may also pass a list of the integer samples to select or use boolean indices. This mode of indexing can be very useful for randomly sampling an Element or picking a specific set of rows or (columns):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve.iloc[[0, 5, 10, 15, 20]] + curve.iloc[xs>3]" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -278,9 +365,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "img_coords = hv.Points(img.table(), extents=extents)\n", @@ -291,9 +376,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "img[5.1,4.9]" @@ -312,9 +395,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sampled = img.sample(y=5)\n", @@ -332,9 +413,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.arange(10)\n", @@ -375,9 +454,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sample_style = dict(edgecolors='k', alpha=1)\n", @@ -397,9 +474,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sampled = obs_hmap.sample((3,3), bounds=(2,5,5,10))\n", @@ -421,9 +496,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.arange(10)\n", @@ -447,9 +520,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sampled = curve.table().select(Observation=(0, 1.1), x={0, 2, 4, 6, 8})\n", @@ -467,7 +538,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, diff --git a/guides/user_guide/Applying_Transformations.ipynb b/guides/user_guide/10-Transforming_Elements.ipynb similarity index 100% rename from guides/user_guide/Applying_Transformations.ipynb rename to guides/user_guide/10-Transforming_Elements.ipynb diff --git a/guides/user_guide/Responding_to_Events.ipynb b/guides/user_guide/11-Responding_to_Events.ipynb similarity index 100% rename from guides/user_guide/Responding_to_Events.ipynb rename to guides/user_guide/11-Responding_to_Events.ipynb diff --git a/guides/user_guide/Custom_Interactivity.ipynb b/guides/user_guide/12-Custom_Interactivity.ipynb similarity index 100% rename from guides/user_guide/Custom_Interactivity.ipynb rename to guides/user_guide/12-Custom_Interactivity.ipynb diff --git a/guides/user_guide/Large_Data.ipynb b/guides/user_guide/14-Large_Data.ipynb similarity index 100% rename from guides/user_guide/Large_Data.ipynb rename to guides/user_guide/14-Large_Data.ipynb diff --git a/guides/user_guide/Customizing_Plots.ipynb b/guides/user_guide/Customizing_Plots.ipynb deleted file mode 100644 index f89fb8b694..0000000000 --- a/guides/user_guide/Customizing_Plots.ipynb +++ /dev/null @@ -1,705 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Customizing Plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "HoloViews is designed to be both highly customizable, allowing you to control how your visualizations appear, but also to enforce a strong separation between your data (with any semantically associated metadata, like type, dimension names, and description) and all options related purely to visualization. This separation allows HoloViews objects to be generated easily by external programs, without giving them a dependency on any plotting or windowing libraries. It also helps make it completely clear which parts of your code deal with the actual data, and which are just about displaying it nicely, which becomes very important for complex visualizations that become more complicated than your data itself.\n", - "\n", - "To achieve this separation, HoloViews stores visualization options independently from your data, and applies the options only when rendering the data to a file on disk, a GUI window, or an IPython notebook cell.\n", - "\n", - "This tutorial gives an overview of the different types of options available, how to find out more about them, and how to set them in both regular Python and using the IPython magic interface that is shown elsewhere in the tutorials." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example objects" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " First, we'll create some HoloViews data objects ready to visualize:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import holoviews as hv\n", - "hv.extension()\n", - "\n", - "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", - "image = hv.Image(np.sin(x**2+y**2), group=\"Function\", label=\"Sine\") \n", - "\n", - "coords = [(0.1*i, np.sin(0.1*i)) for i in range(100)]\n", - "curve = hv.Curve(coords)\n", - "\n", - "curves = {phase: hv.Curve([(0.1*i, np.sin(phase+0.1*i)) for i in range(100)])\n", - " for phase in [0, np.pi/2, np.pi, np.pi*3/2]}\n", - "\n", - "waves = hv.HoloMap(curves)\n", - "\n", - "layout = image + curve" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Rendering and saving objects from Python " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To illustrate how to do plotting independently of IPython, we'll generate and save a plot directly to disk. First, let's create a ``renderer`` object that will render our files to SVG (for static figures) or GIF (for animations):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "renderer = hv.Store.renderers['matplotlib'].instance(fig='svg', holomap='gif')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We could instead have used the default ``Store.renderer``, but that would have been PNG format. Using this renderer, we can save any HoloViews object as SVG or GIF:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "renderer.save(layout, 'example_I')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's it! The renderer builds the figure in matplotlib, renders it to SVG, and saves that to \"example_I.svg\" on disk. Everything up to this point would have worked the same in IPython or in regular Python, even with no display available. But since we're in IPython Notebook at the moment, we can check whether the exporting worked, by loading the file back into the notebook:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from IPython.display import SVG\n", - "SVG(filename='example_I.svg')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use this workflow for generating HoloViews visualizations directly from Python, perhaps as a part of a set of scripts that you run automatically, e.g. to put your results up on a web server as soon as data is generated. But so far, this plot just uses all the default options, with no customization. How can we change how the plot will appear when we render it?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## HoloViews visualization options" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "HoloViews provides three categories of visualization options that can be set by the user. In this section we will first describe the different kinds of options, then later sections show you how to list the supported options of each type for a given HoloViews object or class, and how to change them in Python or IPython." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### ``style`` options:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "``style`` options are passed directly to the underlying rendering backend that actually draws the plots, allowing you to control the details of how it behaves. The default backend is matplotlib, but there are other backends either using matplotlib's options (e.g. ``mpld3``), or their own sets of options (e.g. [``bokeh``](Bokeh_Backend) ).\n", - "\n", - "For whichever backend has been selected, HoloViews can tell you which options are supported, but you will need to see the plotting library's own documentation (e.g. [matplotlib](http://matplotlib.org/contents.html), [bokeh](http://bokeh.pydata.org)) for the details of their use.\n", - "\n", - "HoloViews has been designed to be easily extensible to additional backends in the future, such as [Plotly](https://github.com/ioam/holoviews/pull/398), Cairo, VTK, or D3.js, and if one of those backends were selected then the supported style options would differ." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### ``plot`` options:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each of the various HoloViews plotting classes declares various [Parameters](http://ioam.github.io/param) that control how HoloViews builds the visualization for that type of object, such as plot sizes and labels. HoloViews uses these options internally; they are not simply passed to the underlying backend. HoloViews documents these options fully in its online help and in the [Reference Manual](http://holoviews.org/Reference_Manual). These options may vary for different backends in some cases, depending on the support available both in that library and in the HoloViews interface to it, but we try to keep any options that are meaningful for a variety of backends the same for all of them." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### ``norm`` options:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "``norm`` options are a special type of plot option that are applied orthogonally to the above two types, to control normalization. Normalization refers to adjusting the properties of one plot relative to those of another. For instance, two images normalized together would appear with relative brightness levels, with the brightest image using the full range black to white, while the other image is scaled proportionally. Two images normalized independently would both cover the full range from black to white. Similarly, two axis ranges normalized together will expand to fit the largest range of either axis, while those normalized separately would cover different ranges.\n", - "\n", - "There are currently only two ``norm`` options supported, ``axiswise`` and ``framewise``, but they can be applied to any of the various object types in HoloViews to specify a huge range of different normalization options.\n", - "\n", - "For a given category or group of HoloViews objects, if ``axiswise`` is True, normalization will be computed independently for all items in that category that have their own axes, such as different ``Image`` plots or ``Curve`` plots. If ``axiswise`` is False, all such objects are normalized together.\n", - "\n", - "For a given category or group of HoloViews objects, if ``framewise`` is True, normalization of any ``HoloMap`` objects included is done independently per frame rendered -- each frame will appear as it would if it were extracted from the ``HoloMap`` and plotted separately. If ``framewise`` is False (the default), all frames in a given ``HoloMap`` are normalized together, so that you can see strength differences over the course of the animation.\n", - "\n", - "As described below, these options can be controlled precisely and in any combination to make sure that HoloViews displays the data of most interest, ignoring irrelevant differences and highlighting important ones." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Finding out which options are available for an object" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the ``norm`` options, no further online documentation is provided, because all of the various visualization classes support only the two options described above. But there are a variety of ways to get the list of supported ``style`` options and detailed documentation for the ``plot`` options for a given component.\n", - "\n", - "First, for any Python class or object in HoloViews, you can use ``holoviews.help(``*object-or-class*``, visualization=False)`` to find out about its parameters. For instance, these parameters are available for our ``Image`` object, shown with their current value (or default value, for a class), data type, whether it can be changed by the user (if it is constant, read-only, etc.), and bounds if any:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "hv.help(image, visualization=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This information can be useful, but we have explicitly suppressed information regarding the visualization parameters -- these all report metadata about your data, not about anything to do with plotting directly. That's because the normal HoloViews components have nothing to do with plotting; they are just simple containers for your data and a small amount of metadata.\n", - "\n", - "Instead, the plotting implementation and its associated parameters are kept in completely separate Python classes and objects. To find out about *visualizing* a HoloViews component like an ``Image``, you can simply use the help command ``holoviews.help(``*object-or-class*``)`` that looks up the code that plots that particular type of component, and then reports the ``style`` and ``plot`` options available for it.\n", - "\n", - "For our ``image`` example, ``holoviews.help`` first finds that ``image`` is of type ``Image``, then looks in its database to find that ``Image`` visualization is handled by the ``RasterPlot`` class (which users otherwise rarely need to access directly). ``holoviews.help`` then shows information about what objects are available to customize (either the object itself, or the items inside a container), followed by a brief list of ``style`` options supported by a ``RasterPlot``, and a list of ``plot`` options (which are all the [parameters](http://ioam.github.io/param) of a ``RasterPlot``). As this list of ``plot`` options is very long by default, here is an example that uses the ``pattern`` argument to limit the results to the options referencing the string ``'bounds'``:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true, - "scrolled": false - }, - "outputs": [], - "source": [ - "hv.help(image, pattern='bounds')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "The pattern option is particularly useful in conjunction with ``recursive=True`` which helps when searching for information across the different levels of a composite object. Note that the ``pattern`` argument supports Python's regular expression syntax and may also be used together with the ``visualization=False`` option." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Supported ``style`` options" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, HoloViews lists the currently allowed ``style`` options, but provides no further documentation because these settings are implemented by matplotlib and described at the matplotlib site. Note that matplotlib actually accepts a huge range of additional options, but they are not listed as being allowed because those options are not normally meaningful for this plot type. But if you know of a specific matplotlib option not on the list and really want to use it, you can add it manually to the list of supported options using ``Store.add_style_opts(``*holoviews-component-class*``, ['``*matplotlib-option* ...``'])``. For instance, if you want to use the ``filternorm`` parameter with this image object, you would run ``Store.add_style_opts(Image, ['filternorm'])``. This will add the new option to the corresponding plotting class ``RasterPlot``, ready for use just like any other style option: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "hv.Store.add_style_opts(hv.Image, ['filternorm'])\n", - "# To check that it worked:\n", - "RasterPlot = renderer.plotting_class(hv.Image)\n", - "print(RasterPlot.style_opts)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Changing ``plot`` options at the class level" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Any [parameter](http://ioam.github.io/param) in HoloViews can be set on an object or on the class of the object, so any of the above plot options can be set like: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "RasterPlot.colorbar=True\n", - "RasterPlot.set_param(show_title=False,show_frame=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here ``.set_param()`` allows you to set multiple parameters conveniently, but it works the same as the single-parameter ``.colorbar`` example above it. Setting these values at the class level affects all previously created and to-be-created plotting objects of this type, unless specifically overridden via ``Store`` as described below.\n", - "\n", - "Note that if you look at the source code for a particular plotting class, you will only see *some* of the parameters it supports. The rest, such as ``show_frame`` above, are defined in a superclass of the given object. The [Reference Manual](http://holoviews.org/Reference_Manual) shows the complete list of parameters available for any given class (those labeled ``param`` in the manual), but it can be an overwhelming list since it includes all superclasses, all the metadata about each parameter, etc. The ``holoviews.help`` command with ``visualization=True`` not only provides a much more concise listing, it can will also provide ``style`` options not available in the Reference Manual, by using the database to determine which plotting class is associated with this object.\n", - "\n", - "Because setting these parameters at the class level does not provide much control over individual plots, HoloViews provides a much more flexible system using the ``OptionTree`` mechanisms described below, which can override these class defaults according to the more specific HoloViews object type, ``group``, and ``label`` attributes. \n", - "\n", - "The rest of the sections show how to change any of the above options, once you have found the right one using the suitable call to ``holoviews.help``." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Controlling options from Python" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once you know the name of the option you want to change, and the value you want to change it to, there are a number of ways to customize your plot. \n", - "\n", - "For the Python output to SVG example above, you can specify the options for a given type using keywords supplying a dictionary for any of the above option categories. You can see that the colormap changes when we supply that ``style`` option and render a new SVG:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "renderer.save(layout, 'example_II', style=dict(Image={'cmap':'Blues'}),\n", - " plot= dict(Image={'yaxis':None}))\n", - "SVG(filename='example_II.svg')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As before, the SVG call is simply to display it here in the notebook; the actual image is saved on disk and then loaded back in here for display. \n", - "\n", - "You can see that the image now has a colorbar, because we set ``colorbar=True`` on the ``RasterPlot`` class, that it has become blue, because we set the matplotlib ``cmap`` style option in the ``renderer.save`` call, and that the *y* axis has been disabled, because we set the ``plot`` option ``yaxis`` to ``None`` (which is normally ``'left'`` by default, as you can see in the default value for ``RasterPlot``'s parameter ``yaxis`` above). Hopefully you can see that once you know the option value you want to use, it can be provided easily.\n", - "\n", - "You can also create a whole set of options separately, perhaps holding a large collection of preferred values, and apply it whenever you wish to save:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "options={'Image.Function.Sine': {'plot':dict(fig_size=50), 'style':dict(cmap='jet')}}\n", - "renderer.save(layout, 'example_III',options=options)\n", - "SVG(filename='example_III.svg')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here you can see that the *y* axis has returned, because our previous setting to turn it off was just for the call to ``renderer.save``. But we still have a colorbar, because that parameter was set at the class level, for all future plots of this type. Note that this form of option setting, while more verbose, accepts the full ``{type}[.{group}[.{label}]]`` syntax, like ``'Image.Function.Sine'`` or ``'Image.Function'``, while the shorter keyword approach above only supports the class, like 'Image'.\n", - "\n", - "Note that for the ``options`` dictionary, the option nesting is inverted compared to the keyword approach: the outermost dictionary is by key (``Image``, or ``Image.Function.Sines``), with the option categories underneath. You can see that with this mechanism, we can specify the options even for subobjects of a container, as long as we can specify them with an appropriate key.\n", - "\n", - "There's also another way to customize options in Python that lets you build up customizations incrementally. To do this, you can associate a particular set of options persistently with a particular HoloViews object, even if that object is later combined with other objects into a container. Here a new copy of the object is created, with the given set of options (using either the keyword or ``options=`` format above) bound to it:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "green_sine = image(style={'cmap':'Greens'})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we could save the object to SVG just as before, but in this case we can skip a step and simply view it directly in the notebook:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "green_sine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To customize options of individual components in composite objects like Overlays or Layouts you can either specify the options on each individual component or specify which object to customize using the ``{type}[.{group}[.{label}]]`` syntax." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "(image + curve)(style={'Image.Function.Sine': dict(cmap='Reds'), 'Curve': dict(color='indianred')})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Both IPython notebook and ``renderer.save()`` use the same mechanisms for keeping track of the options, so they will give the same results. Specifically, what happens when you \"bind\" a set of options to an object is that there is an integer ID stored in the object (``green_sine`` in this case), and a corresponding entry with that ID is stored in a database of options called an ``OptionTree`` (kept in ``holoviews.core.options.Store``). The object itself is otherwise unchanged, but then if that object is later used in another container, etc. it will retain its ID and therefore its customization. Any customization stored in an ``OptionTree`` will override any class attribute defaults set like ``RasterGridPlot.border=5`` above. This approach lets HoloViews keep track of any customizations you want to make, without ever affecting your actual data objects.\n", - "\n", - "If the same object is later customized again to create a new customized object, the old customizations will be copied, and then the new customizations applied. The new customizations will thus override the old, while retaining any previous customizations not specified in the new step. \n", - "\n", - "In this way, it is possible to build complex objects with arbitrary customization, step by step. As mentioned above, it is also possible to customize objects already combined into a complex container, just by specifying an option for a suitable key (e.g. ``'Image.Function.Sine'`` above). This flexible system should allow for any level of customization that is needed.\n", - "\n", - "Finally, there is one more way to apply options that is a mix of the above approaches -- temporarily assign a new ID to the object and apply a set of customizations during a specific portion of the code. To illustrate this, we'll create a new Image object called 'Cosine':" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "cosine = hv.Image(np.cos(x**2+y**2), group=\"Function\", label=\"Cosine\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "with hv.StoreOptions.options(cosine, options={'Image':{'style':{'cmap':'Reds'}}}):\n", - " data, info = renderer(cosine)\n", - "print(info)\n", - "SVG(data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here the result is in red as it was generated in the context of a 'Reds' colormap but if we display cosine again outside the scope of the with statement, it retains the default settings:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "cosine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that if we want to use this context manager to set new options on the existing green_sine object, you must specify that the options apply to a specific Image by stating the applicable group and label:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "with hv.StoreOptions.options(green_sine, options={'Image.Function.Sine':{'style':{'cmap':'Purples'}}}):\n", - " data, info = renderer(green_sine)\n", - "print(info)\n", - "SVG(data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now the result inside the context is purple but elswhere green_sine remains green. If the group and label had not been specified above, the specific customization applied earlier (setting the green colormap) would take precedence over the general settings of Image. For this reason, it is important to know the appropriate precedence of new customizations, or else you can just always specify the object group and label to make sure the new settings override the old ones." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Controlling options in IPython using ``%%opts`` and ``%opts``" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above sections describe how to set all of the options using regular Python. Similar functionality is provided in IPython, but with a more convenient syntax based on an IPython magic command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%%opts Curve style(linewidth=8) Image style(interpolation='bilinear') plot[yaxis=None] norm{+framewise}\n", - "layout" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ``%%opts`` magic works like the pure-Python option for associating options with an object, except that it works on the item in the IPython cell, and it affects the item directly rather than making a copy or applying only in scope. Specifically, it assigns a new ID number to the object returned from this cell, and makes a new ``OptionTree`` containing the options for that ID number.\n", - "\n", - "If the same ``layout`` object is used later in the notebook, even within a complicated container object, it will retain the options set on it.\n", - "\n", - "The options accepted are just the same as for the Python version, but specified more succinctly:\n", - "\n", - "``%%opts`` *target-specification* ``style(``*styleoption*``=``*val* ...``) plot[``*plotoption*``=``*val* ...``] norm{+``*normoption* ``-``*normoption*...``}``\n", - "\n", - "Here *key* lets you specify the object type (e.g. ``Image``), and optionally its ``group`` (e.g. ``Image.Function``) or even both ``group`` and ``label`` (e.g. ``Image.Function.Sine``), if you want to control options very precisely. There is also an even further abbreviated syntax, because the special bracket types alone are enough to indicate which category of option is specified:\n", - "\n", - "``%%opts`` *target-specification* ``(``*styleoption*``=``*val* ...``) [``*plotoption*``=``*val* ...``] {+``*normoption* ``-``*normoption* ...``}``\n", - "\n", - "Here parentheses indicate style options, square brackets indicate plot options, and curly brackets indicate norm options (with ``+axiswise`` and ``+framewise`` indicating True for those values, and ``-axiswise`` and ``-framewise`` indicating False). Additional *target-specification*s and associated options of each type for that *target-specification* can be supplied at the end of this line. This ultra-concise syntax is used throughout the other tutorials, because it helps minimize the code needed to specify the plotting options, and helps make it very clear that these options are handled separately from the actual data.\n", - "\n", - "Here we demonstrate the concise syntax by customizing the style and plot options of the ``Curve`` in the layout:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%%opts Curve (color='r') [fontsize={'xlabel':15, 'ticks':8}] \n", - "layout" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The color of the curve has been changed to red and the fontsizes of the x-axis label and all the tick labels have been modified. The ``fontsize`` is an important plot option, and you can find more information about the available options in the ``fontsize`` documentation above.\n", - "\n", - "The ``%%opts`` magic is designed to allow incremental customization, which explains why the curve in the cell above has retained the increased thickness specified earlier. To reset all the customizations that have been applied to an object, you can create a fresh, uncustomized copy as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "layout()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ``%opts`` \"line\" magic (with one ``%``) works just the same as the ``%%opts`` \"cell\" magic, but it changes the global default options for all future cells, allowing you to choose a new default colormap, line width, etc.\n", - "\n", - "Apart from its brevity, a big benefit of using the IPython magic syntax ``%%opts`` or ``%opts`` is that it is fully tab-completable. Each of the options that is currently available will be listed if you press ```` when you are ready to write it, which makes it much easier to find the right parameter. Of course, you will still need to consult the full ``holoviews.help`` documentation (described above) to see the type, allowable values, and documentation for each option, but the tab completion should at least get you started and is great for helping you remember the list of options and see which options are available.\n", - "\n", - "You can even use the succinct IPython-style specification directly in your Python code if you wish, but it requires the external [pyparsing](https://pypi.python.org/pypi/pyparsing) library (which is already available if you are using matplotlib):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from holoviews.util.parser import OptsSpec\n", - "renderer.save(image + waves, 'example_V', \n", - " options=OptsSpec.parse(\"Image (cmap='gray')\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There is also a special IPython syntax for listing the visualization options for a plotting object in a pop-up window that is equivalent to calling ``holoviews.help(``*object*``)``:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%%output info=True\n", - "curve" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line-magic version of this syntax ``%output info=True`` is particularly useful for learning about components using the notebook, because it will keep a window open with the available options for each object updated as you do ```` in each cell. E.g. you can go through each of the components in the ``Elements`` or ``Containers`` tutorials in this way, to see what options are offered by each without having to type anything for each one." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Option inheritance\n", - "\n", - "Since HoloViews objects nest in a variety of ways and you do not want to keep changing the options specification when you compose your object into an ``Overlay`` or ``NdOverlay``, certain ``plot`` options are inherited. This includes all plot options which control the appearance of the axes, but not those that are specific to the Element. As a simple example let us combine the ``Image`` from above with some ``Bounds``. Even though we apply the ``xrotation`` and ``yticks`` options to the ``Image`` they are inherited by the ``Overlay`` of the ``Image`` and ``Bounds``." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%%opts Image [xrotation=90 yticks=[-0.5, 0., 0.5]]\n", - "image * hv.Bounds((-.25, -.25, .25, .25))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Separating data and visualization options" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hopefully you see from this tutorial how HoloViews enforces a strict separation between your data, stored in HoloViews ``Element`` and container objects, and your plotting options, stored in dictionaries or ``OptionTree``s. Finding the right options is easiest in IPython, because of ```` completion, but the same options are available in pure Python as well, with or without a display, allowing you to automate any part of the process of visualization and analysis." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} From 25bac7d27a89d76e63c7ac07d43744e17b41300f Mon Sep 17 00:00:00 2001 From: jlstevens Date: Thu, 22 Jun 2017 17:06:40 +0100 Subject: [PATCH 55/99] Fixed capitalization of heatmap_tap streams example --- examples/streams/bokeh/{heatMap_tap.ipynb => heatmap_tap.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/streams/bokeh/{heatMap_tap.ipynb => heatmap_tap.ipynb} (100%) diff --git a/examples/streams/bokeh/heatMap_tap.ipynb b/examples/streams/bokeh/heatmap_tap.ipynb similarity index 100% rename from examples/streams/bokeh/heatMap_tap.ipynb rename to examples/streams/bokeh/heatmap_tap.ipynb From 4c14397edd83f7a6043e6af047a82baf13c739b1 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Thu, 22 Jun 2017 18:14:51 +0100 Subject: [PATCH 56/99] Added mandelbrot_homepage notebooks to examples/demos/ --- .../demos/bokeh/mandelbrot_homepage.ipynb | 102 +++++++++++++++++ .../matplotlib/mandelbrot_homepage.ipynb | 105 ++++++++++++++++++ 2 files changed, 207 insertions(+) create mode 100644 examples/demos/bokeh/mandelbrot_homepage.ipynb create mode 100644 examples/demos/matplotlib/mandelbrot_homepage.ipynb diff --git a/examples/demos/bokeh/mandelbrot_homepage.ipynb b/examples/demos/bokeh/mandelbrot_homepage.ipynb new file mode 100644 index 0000000000..a2b7ce6ef5 --- /dev/null +++ b/examples/demos/bokeh/mandelbrot_homepage.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# mandelbrot homepage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Matplotlib - mandelbrot homepage](../matplotlib/mandelbrot_homepage.ipynb)\n", + "\n", + "HoloViews demo that used to be showcased on the [holoviews.org" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import urllib, io\n", + "with urllib.request.urlopen('http://assets.holoviews.org/data/mandelbrot.npy') as url:\n", + " # Heavily downsampled to keep filesize down\n", + " array = np.load(io.BytesIO(url.read())).astype(np.float32)[::4,::4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points [scaling_factor=50] Contours [show_legend=False] (color='w')\n", + "dots = np.linspace(-0.45, 0.45, 19)\n", + "fractal = hv.Image(array)\n", + "# First example on the old holoviews.org homepage was:\n", + "# ((fractal * hv.HLine(y=0)).hist() + fractal.sample(y=0))\n", + "layouts = {y: (fractal * hv.Points(fractal.sample([(i,y) for i in dots])) +\n", + " fractal.sample(y=y) +\n", + " hv.operation.threshold(fractal, level=np.percentile(fractal.sample(y=y)['z'], 90)) +\n", + " hv.operation.contours(fractal, levels=[np.percentile(fractal.sample(y=y)['z'], 60)]))\n", + " for y in np.linspace(-0.3, 0.3, 11)} # Half the frames of the bokeh version\n", + "\n", + "hv.HoloMap(layouts, kdims=['Y']).collate().cols(2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/demos/matplotlib/mandelbrot_homepage.ipynb b/examples/demos/matplotlib/mandelbrot_homepage.ipynb new file mode 100644 index 0000000000..f9b6bfd7ef --- /dev/null +++ b/examples/demos/matplotlib/mandelbrot_homepage.ipynb @@ -0,0 +1,105 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# mandelbrot homepage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Bokeh - mandelbrot homepage](../bokeh/mandelbrot_homepage.ipynb)\n", + "\n", + "HoloViews demo that used to be showcased on the [holoviews.org" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import urllib, io\n", + "with urllib.request.urlopen('http://assets.holoviews.org/data/mandelbrot.npy') as url:\n", + " array = np.load(io.BytesIO(url.read())).astype(np.float32)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%%opts Points [scaling_factor=50] Contours [show_legend=False] (color='w')\n", + "dots = np.linspace(-0.45, 0.45, 19)\n", + "fractal = hv.Image(array)\n", + "# First example on the old holoviews.org homepage was:\n", + "# ((fractal * hv.HLine(y=0)).hist() + fractal.sample(y=0))\n", + "layouts = {y: (fractal * hv.Points(fractal.sample([(i,y) for i in dots])) +\n", + " fractal.sample(y=y) +\n", + " hv.operation.threshold(fractal, level=np.percentile(fractal.sample(y=y)['z'], 90)) +\n", + " hv.operation.contours(fractal, levels=[np.percentile(fractal.sample(y=y)['z'], 60)]))\n", + " for y in np.linspace(-0.3, 0.3, 21)}\n", + "\n", + "hv.HoloMap(layouts, kdims=['Y']).collate().cols(2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From df80ac1370bf41557895e8c4aab8f4f336c2ce40 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Thu, 22 Jun 2017 21:10:50 +0100 Subject: [PATCH 57/99] Minor fixes in the custom interactivity guide --- .../user_guide/12-Custom_Interactivity.ipynb | 66 ++++++------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/guides/user_guide/12-Custom_Interactivity.ipynb b/guides/user_guide/12-Custom_Interactivity.ipynb index 598a0fe3e9..794e66e10a 100644 --- a/guides/user_guide/12-Custom_Interactivity.ipynb +++ b/guides/user_guide/12-Custom_Interactivity.ipynb @@ -10,9 +10,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import param\n", @@ -48,9 +46,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews import streams\n", @@ -83,9 +79,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "pointer = streams.PointerXY()\n", @@ -102,9 +96,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print('The %s stream has contents %r' % (pointer, pointer.contents))" @@ -127,13 +119,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "pointer_dmap = hv.DynamicMap(lambda x, y: hv.Points([(x, y)]), streams=[pointer])\n", - "print pointer.source is pointer_dmap" + "print(pointer.source is pointer_dmap)" ] }, { @@ -146,9 +136,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "pointer_dmap(style={\"Points\": dict(size=10)})" @@ -164,9 +152,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "pointer.contents" @@ -182,9 +168,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Area (color='#fff8dc' line_width=2) Curve (color='black') VLine (color='red')\n", @@ -233,7 +217,7 @@ "ys,xs = np.meshgrid(xvals, -xvals[::-1])\n", "img = hv.Image(np.sin(((ys)**3)*xs))\n", "\n", - "pointer = streams.PointerXY(source=img)\n", + "pointer = streams.PointerXY(x=0,y=0, source=img)\n", "pointer_dmap = hv.DynamicMap(lambda x, y: hv.Points([(x, y)]), streams=[pointer])" ] }, @@ -247,9 +231,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "img + pointer_dmap(style={\"Points\": dict(size=10)})" @@ -267,9 +249,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve {+framewise}\n", @@ -322,9 +302,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "cross_dmap + cross_dmap.clone(link_inputs=False)" @@ -407,9 +385,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [color_index='Taps' tools=['hover']] (size=10 cmap='Set1')\n", @@ -426,9 +402,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "taps" @@ -438,21 +412,21 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.1" } }, "nbformat": 4, From e3dc859ae8585b4309dd53d40d8d7259f8e38b63 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Fri, 23 Jun 2017 03:16:48 +0100 Subject: [PATCH 58/99] Updated first half of the annotating data user guide --- guides/user_guide/01-Annotating_Data.ipynb | 173 ++++++++++++++++----- 1 file changed, 130 insertions(+), 43 deletions(-) diff --git a/guides/user_guide/01-Annotating_Data.ipynb b/guides/user_guide/01-Annotating_Data.ipynb index e7999e9aee..b6f475c498 100644 --- a/guides/user_guide/01-Annotating_Data.ipynb +++ b/guides/user_guide/01-Annotating_Data.ipynb @@ -1,114 +1,194 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import holoviews.util\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Annotating your Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the fundamental concepts in HoloViews introduced in the 'Getting Started' guide [Introduction] is that of annotating data with key, semantic metadata. This user guide documents the two main types annotation (1) dimensions used to specify the abstract space in which the data resides (2) the element group/label system used to organize and select data." + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Annotating your Data\n", + "## Specifying dimensionality\n", + "\n", + "Simple datastructure such as dataframes, arrays, lists or dictionaries cannot be given a suitable visual representation without some associated semantic context. Fundamentally, HoloViews lets you specify this context by first selecting a suitable element type from the [gallery] and by then specifying the corresponding *dimensions*.\n", "\n", - "One of the key features that HoloViews lets you express about your data is its dimensionality. The ``Elements`` allow you to annotate your with metadata expressing its visual and conceptual representation and expressing its dimensionality." + "Here is a very simple example, showing a ``Curve`` element:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "import holoviews as hv\n", - "import holoviews.util\n", - "hv.notebook_extension('bokeh')" + "xs = range(-10,11)\n", + "ys = [-el*el for el in xs]\n", + "curve = hv.Curve((xs, ys))\n", + "curve" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Specifying dimensionality\n", + "All elements (except a small number of annotation elements) have two types of dimensions: *key dimensions* (``kdims``) and *value dimensions* (``vdims``). The *key dimensions* are the dimensions you can index *by* to get the values corresponding to the *value* dimensions. You can learn more about indexing data in the [Indexing and Selecting Data](./09-Indexing_and_Selecting_Data.ipynb) user guide.\n", "\n", - "Dimension objects are always present in the ``kdims`` and ``vdims`` of a HoloViews object, whether or not they are declared:" + "Different elements have different numbers of required key dimensions and value dimensions. For instance, a ``Curve`` always has one key dimension and a value dimension. As we did not explicitly specify anything regarding dimensions when declaring the curve above, the ``kdims`` and ``vidms`` use their default names 'x' and 'y':" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", - "np.random.seed(10)\n", - "points1 = hv.Points(np.random.rand(500,4))\n", - "points2 = hv.Points(np.random.rand(500,4), kdims=['atm_pressure','temperature'])\n", - "points1 + points2" + "\"Object 'curve' has kdims {kdims} and vdims {vdims} \".format(kdims=curve.kdims, vdims=curve.vdims)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The easiest way to specify dimensions other than the defaults is as strings, which sets the dimension names:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "print('Key dimensions of points1: %s' % points1.kdims)\n", - "print('Key dimensions of points2: %s' % points2.kdims)" + "trajectory = hv.Curve((xs, ys), kdims=['distance'], vdims=['height'])\n", + "trajectory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"Object 'trajectory' has kdims {kdims} and vdims {vdims} \".format(kdims=trajectory.kdims, vdims=trajectory.vdims)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "As you can see, the ``kdims`` always contains ``Dimension`` objects. These may be default dimensions, as in the declaration of ``points1``, or created from a string names, as in the declaration of ``points2``. You can also pass in your own ``Dimension`` objects explicitly:" + "We can see our strings have been 'promoted' to dimension objects describing the space in which our trajectory data resides: the ``kdims`` and ``vdims`` *always* contain instances of the ``Dimension`` class which will be described in a later section. Note that naming our dimensions has given the corresponding visual representation appropriate axis labels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dimension parameters\n", + "\n", + "``Dimension`` objects have a number of parameters used to describe the space in which the data resides. Only two of these are considered *core* parameters that identify the identity of the dimension object, the rest consist of auxilliary metadata. Here are the descriptions of the most important ones:\n", + "\n", + "\n", + "
    \n", + "
    \n", + "
    ``name``
    (core) A concise name for the dimension that should be useable as a Python keyword
    \n", + "
    ``label``
    (core) A longer description of the dimension (can contain unicode)
    \n", + "
    ``range``
    The minumum and maximum allowable values for the dimension.
    \n", + "
    ``soft_range``
    Suggested minumum and maximum values, used to specify a useful portion of the range.
    \n", + "
    ``step``
    If specified, the step parameter suggests an appropriate sampling of a continuous range
    \n", + "
    ``unit``
    If specified, the name of the unit associated with the dimension.
    \n", + "
    ``values``
    Explicit list of allowed dimension values
    \n", + "
    \n", + "\n", + "\n", + "For the full list of parameters, you can call ``hv.help(hv.Dimension)``.\n", + "\n", + "Note that you can also use a ``(name, label)`` tuple instead of just a string name if you want to specify both ``name`` and ``label`` without building an explicit ``Dimension`` object which can also be used in the ``kdims`` and ``vdims``:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "hv.Points(np.random.rand(500,4), kdims=[hv.Dimension('atm_pressure'), hv.Dimension('temperature')])" + "distance = hv.Dimension('distance', label='Horizontal distance', unit='m')\n", + "height = hv.Dimension(('height','Height above sea-level'), unit='m')\n", + "\n", + "wo_unit = hv.Curve((xs, ys), \n", + " kdims=[('distance','Horizontal distance')], \n", + " vdims=[('height','Height above sea-level')])\n", + "with_unit = hv.Curve((xs, ys), kdims=[distance], vdims=[height])\n", + "\n", + "wo_unit + with_unit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "* Mention mapping from dims to labels, explain that it is used in methods such as select as keywords (can link to getting started introduction).\n" + "### Setting properties with redim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Dimension properties\n", + "Declaring dimension objects with appropriate parameters can be verbose if you only want a set a few specific parameters. You can often avoid declaring explicit dimension objects using the ``redim`` method which returns a *clone* of the element: the same data, wrapped in a new instance of the same element type with the new dimension settings.\n", "\n", - "* Description list of what parameters dimensions have. label, unit, range etc.\n" + "Let's use ``redim`` to swap out the 'height' dimension for the 'altitude' dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "renamed_height = trajectory.redim(height='altitude')\n", + "renamed_height" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Setting properties with redim\n", - "\n", - "* Example of redim to change dimension name.\n", - "* Example of redim.label and redim.range. Explain the other parameters can be set this way too.\n" + "The ``redim`` 'method' is actually a utility that can be used to set any of the dimension parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "renamed_height.redim.label(altitude='Altitude above sea-level', distance='Horizontal distance')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Declaring Dimension objects\n", - "\n", - "* Can explicitly supply rich dimension objects.\n" + "This pattern can be used to set any of the parameters listed above (unit, range, values etc) by specifying the dimension name and the new value for the parameter." ] }, { @@ -134,25 +214,32 @@ "* Use them with + and point forward to next guide (composition).\n", "* Use them with * and customize with opts and point forward to composition/customizing plots.\n" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Mention mapping from dims to labels, explain that it is used in methods such as select as keywords (can link to getting started introduction).\n" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python [conda env:science]", + "display_name": "Python 3", "language": "python", - "name": "conda-env-science-py" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.1" } }, "nbformat": 4, From 3e7f3e2902b901f3d50848096dc31c72dbad545a Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Thu, 22 Jun 2017 22:20:45 -0500 Subject: [PATCH 59/99] Cleaned up getting-started intro --- guides/getting_started/1-Introduction.ipynb | 151 +++++++------------- 1 file changed, 52 insertions(+), 99 deletions(-) diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index 25f8abddd9..85fb31f030 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -14,24 +14,24 @@ "\n", "## Why HoloViews?\n", "\n", - "HoloViews is a BSD licensed package used for data analysis and visualization for Python 2 and 3. There are plenty of excellent tools available for Python already such as numpy, pandas and xarray for raw data processing as well as some excellent plotting libraries such as bokeh, matplotlib and plotly. So why is there a need for another plotting library?\n", + "HoloViews is an [open-source](https://github.com/ioam/holoviews/blob/master/LICENSE.txt) Python 2 and 3 library for data analysis and visualization. Python already has excellent tools like numpy, pandas, and xarray for data processing, and bokeh and matplotlib for plotting, so why yet another library?\n", "\n", - "As will be made clear over the course of this guide, HoloViews takes a distinct approach to visualization which is quite distinct from the traditional plotting paradigm. Instead of building plots and writing plotting code, you describe your data with a small amount of semantic information. This then enables immediate, automatic visualization that can be effortlessly requested at any time as your data evolves. Without requiring any traditional plotting code, HoloViews brings your data to life with your favorite plotting library, whether it is matplotlib, bokeh or plotly.\n", + "**HoloViews helps you understand your data better, by letting you work seamlessly with both the data *and* its graphical representation.**\n", "\n", - "HoloViews is data-centric while traditional plotting libraries are visualization-centric. Instead of a 'Data Visualization' library that visualizes data at a snapshot in time, HoloViews is about empowering your data with the power of self-visualization as it is explored and transformed. For this reason, HoloViews can be viewed as a 'Visualization Data' library and by the end of this guide this distinction should be clear.\n", + "HoloViews focuses on bundling your data together with machine-readable metadata to support both analysis and visualization, making your raw data *and* its visualization equally accessible at all times. This process can be unfamiliar to those used to traditional data-processing and plotting tools, and this getting-started guide is meant to explain and demonstrate how it all works at a high level. More detailed information about each topic is then provided in the [User Guide](../user_guide/).\n", + "\n", + "With HoloViews, instead of building a plot using direct calls to a plotting library, you first describe your data with a small amount of crucial semantic information required to make it visualizable, then you specify additional metadata as needed to determine more detailed aspects of your visualization. This approach provides immediate, automatic visualization that can be effortlessly requested at any time as your data evolves, at which point HoloViews will render a plot using one of the supported plotting libraries (such as Bokeh or Matplotlib). \n", "\n", "\n", "## Tabulated data: subway stations\n", "\n", - "We will now introduce HoloViews and demonstrate some of its most compelling features using real data relating to transportation in Manhattan, New York. First lets run some imports to make [numpy] and [pandas] accessible for loading our transportation data. We will start with a table of subway station information loaded from a CSV file with pandas and later on in this section, we will load some data relating to taxi dropoffs using numpy:" + "To illustrate how this process works, we will demonstrate some of the key features of HoloViews using a collection of datasets related to transportation in New York City. First let's run some imports to make [numpy](http://numpy.org) and [pandas](http://pandas.pydata.org) accessible for loading the data. Here we start with a table of subway station information loaded from a CSV file with pandas:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -44,7 +44,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This is the standard way to make the numpy and pandas libraries available in the namespace. We recommend always importing HoloViews as ``hv`` and if you haven't already installed HoloViews, checkout our [installation page].\n", + "This is the standard way to make the numpy and pandas libraries available in the namespace. We recommend always importing HoloViews as ``hv`` and if you haven't already installed HoloViews, check out our [installation page].\n", "\n", "Note that after importing HoloViews as ``hv`` we run ``hv.extension('bokeh')`` to load the bokeh plotting extension, allowing us to generate visualizations with [Bokeh](http://bokeh.pydata.org/). In the next section we will see how you can use other plotting libraries such as [matplotlib](matplotlib.org) and even how you can mix and match between them.\n", "\n", @@ -54,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "station_info = pd.read_csv('../datasets/station_info.csv')\n", @@ -67,7 +65,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see that this table contains the subway station name, its latitude and longitude, the year it was opened, the number of services available from the station and ther names and finally the yearly ridership (in millions for 2015)." + "We see that this table contains the subway station name, its latitude and longitude, the year it was opened, the number of services available from the station and ther names, and finally the yearly ridership (in millions for 2015)." ] }, { @@ -82,9 +80,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "scatter = hv.Scatter(station_info, kdims=['services'], vdims=['ridership'])\n", @@ -95,7 +91,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we passed or dataframe to [``hv.Scatter``](../../examples/elements/bokeh/Scatter.ipynb) to create an *object* called *scatter*. This object is independent of any plotting library and is a simple wrapper around our dataframe that knows that the 'services' column is to be plotted along the x-axis and 'ridership' column is to be plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", + "Here we passed our dataframe to [``hv.Scatter``](../../examples/elements/bokeh/Scatter.ipynb) to create an *object* called `scatter`, which is independent of any plotting library. `scatter` is a simple wrapper around our dataframe that knows that the 'services' column is the independent variable, normally plotted along the x-axis, and that the 'ridership' column is a dependent variable, plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", "\n", "Given that we have the handle ``scatter`` on our ``Scatter`` object, we can show that it is indeed an object and not a plot by printing it:" ] @@ -103,9 +99,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(scatter)" @@ -124,15 +118,13 @@ "source": [ "## Compositional ``Layouts``\n", "\n", - "The class [``Scatter``](../../examples/elements/bokeh/Scatter.ipynb) is a subclass of ``Element`` which are the simplest viewable components in HoloViews as shown in our [element gallery]. Now we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" + "The class [``Scatter``](../../examples/elements/bokeh/Scatter.ipynb) is a subclass of ``Element``. As shown in our [element gallery], Elements are the simplest viewable components in HoloViews. Now that we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])\n", @@ -143,15 +135,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In a single line and the ``+`` operator, we created a new, compositional object called a ``Layout`` built from our scatter visualizations and a ``Histogram`` that shows how many subway stations opened in Manhattan since 1900. Note that once again, all the plotting is happening behind the scenes and ``layout`` is a new object that exists independently of any given plotting system:" + "In a single line using the ``+`` operator, we created a new, compositional object called a ``Layout`` built from our scatter visualizations and a ``Histogram`` that shows how many subway stations opened in Manhattan since 1900. Note that once again, all the plotting is happening behind the scenes. The ``layout`` is a not a plot, it's a new object that exists independently of any given plotting system:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(layout)" @@ -163,15 +153,13 @@ "source": [ "## Array data: taxi dropoffs\n", "\n", - "So far we have visualized data in a [pandas ``DataFrame``](http://pandas.pydata.org/) but ``HoloViews`` is as agnostic to data formats as it is to plotting libraries; see [Customizing Plots](../user_guide/Customizing_Plots.ipynb) for more information. This means we can work with array data as easily as we can work with tabular data and to demonstrate this, here are some [numpy arrays](http://www.numpy.org/) relating to taxi dropoff locations in Manhattan:" + "So far we have visualized data in a [pandas ``DataFrame``](http://pandas.pydata.org/) but ``HoloViews`` is as agnostic to data formats as it is to plotting libraries; see [XXXX] for more information. This means we can work with array data as easily as we can work with tabular data. To demonstrate this, here are some [numpy arrays](http://www.numpy.org/) relating to taxi dropoff locations in New York City:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "taxi_dropoffs = {hour:arr for hour, arr in np.load('../datasets/hourly_taxi_data.npz').items()}\n", @@ -184,21 +172,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As we can see, this dataset contains 24 arrays (one for each hour of the day) of taxi dropoff locations (by latitude and longitude), aggregated over one month in 2015, where the array shown above contains the accumulated dropoffs for the first hour of the day." + "As we can see, this dataset contains 24 arrays (one for each hour of the day) of taxi dropoff locations (by latitude and longitude), aggregated over one month in 2015. The array shown above contains the accumulated dropoffs for the first hour of the day." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Compositional ``Overlays``" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once again, we can easily visualize this data with HoloViews by passing our array to [``Image``](../../examples/elements/bokeh/Image.ipynb) to create the ``image`` object which has the spatial extent of the data declared as the ``bounds`` in terms of the corresponding range of latitudes and longitudes." + "## Compositional ``Overlays``\n", + "\n", + "Once again, we can easily visualize this data with HoloViews by passing our array to [``hv.Image``](../../examples/elements/bokeh/Image.ipynb) to create the ``image`` object. This object has the spatial extent of the data declared as the ``bounds``, in terms of the corresponding range of latitudes and longitudes." ] }, { @@ -217,15 +200,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "HoloViews supports ``numpy``, ``xarray``, ``iris``, ``dask`` when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb))) and we can compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a [``Points``](../../examples/elements/bokeh/Points.ipynb) element which is used to mark positions in two-dimensional space:" + "HoloViews supports ``numpy``, ``xarray``, ``iris``, and ``dask`` arrays when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb)). We can also compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a [``Points``](../../examples/elements/bokeh/Points.ipynb) element which is used to mark positions in two-dimensional space:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "points = hv.Points(station_info, kdims=['lon','lat'])\n", @@ -237,34 +218,28 @@ "metadata": {}, "source": [ "\n", - "On the left, we have the visual representation of the ``image`` object we declared. Using ``+`` we put it into a ``Layout`` together with a new compositional object created with the ``*`` operator called an ``Overlay``. This particular overlay displays the station positions on top of our image which works correctly as both elements contain data that exist in the same space, namely Manhattan.\n", + "On the left, we have the visual representation of the ``image`` object we declared. Using ``+`` we put it into a ``Layout`` together with a new compositional object created with the ``*`` operator called an ``Overlay``. This particular overlay displays the station positions on top of our image which works correctly as both elements contain data that exist in the same space, namely New York City.\n", "\n", - "This overlay on the right lets us see the location of all the subway stations in relation to our midnight taxi dropoffs. Note that HoloViews allows you to visually express more of the available information with our points, for instance, you could represent the ridership of each subway by point color or point size. For more information see [Customizing Plots](../user_guide/Customizing_Plots.ipynb)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Effortlessly exploring data" + "This overlay on the right lets us see the location of all the subway stations in relation to our midnight taxi dropoffs. Of course, HoloViews allows you to visually express more of the available information with our points. For instance, you could represent the ridership of each subway by point color or point size. For more information see [Customizing Plots](../user_guide/Customizing_Plots.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of [``Images``](../../examples/elements/bokeh/Image.ipynb) (on for every hour of the day) by declaring a ``HoloMap``: " + "## Effortlessly exploring data\n", + "\n", + "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of [``Images``](../../examples/elements/bokeh/Image.ipynb) (one for every hour of the day) by declaring a ``HoloMap``: " ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "dictionary = {int(hour):hv.Image(arr, bounds=bounds, kdims=['lon','lat']) for hour, arr in taxi_dropoffs.items()}\n", + "dictionary = {int(hour):hv.Image(arr, bounds=bounds, kdims=['lon','lat']) \n", + " for hour, arr in taxi_dropoffs.items()}\n", "hv.HoloMap(dictionary, kdims=['Hour'])" ] }, @@ -278,9 +253,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "holomap = hv.HoloMap(dictionary, kdims=['Hour'])\n", @@ -291,15 +264,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As this a ``HoloMap`` is a container for our ``Image`` elements, we can the methods it offers to return new containers. For instance, in the next cell we select three different hours of the morning from the ``HoloMap`` and display them as a ``Layout``:" + "As this a ``HoloMap`` is a container for our ``Image`` elements, we can use the methods it offers to return new containers. For instance, in the next cell we select three different hours of the morning from the ``HoloMap`` and display them as a ``Layout``:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "holomap.select(Hour={3,6,9}).layout()" @@ -309,33 +280,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here the ``select`` method picks values from the specified 'Hour' *dimension*. We have seen dimensions used in the ``kdims`` and ``vdims`` arguments when declaring our elements (``scatter``, ``histogram`` and ``image`` above) and when declaring the ``HoloMap`` of ``Image``s above. These are the *key dimensions* (``kdims``) and *value dimensions* (``vdims``) used to express the space in which our data lives.\n", + "Here the ``select`` method picks values from the specified 'Hour' dimension. We have seen dimensions used in the ``kdims`` and ``vdims`` arguments when declaring our elements (``scatter``, ``histogram`` and ``image`` above) and when declaring the ``HoloMap`` of ``Image``s above. These are the *key dimensions* (indexing dimensions, or ``kdims``) and *value dimensions* (resulting data, or ``vdims``) used to express the space in which our data lives.\n", "\n", - "Note how the ``Image`` elements where the holomap is constructed are declared using ``kdims=['lat','lon']`` which describes the fact that Manhattan is being viewed in terms of longitude and latitude. This semantic information is automatically mapped to our visualization by the HoloViews plotting system which sets the x-axis and y-axis labels accordingly. In the case of the ``HoloMap`` we used ``kdims=['Hour']`` to declare that the interactive slider ranges over the hours of the day." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Data as visualization" + "Note how the ``Image`` elements where the holomap is constructed are declared using ``kdims=['lat','lon']`` which describes the fact that New York City is being viewed in terms of longitude and latitude. This semantic information is automatically mapped to our visualization by the HoloViews plotting system, which sets the x-axis and y-axis labels accordingly. In the case of the ``HoloMap`` we used ``kdims=['Hour']`` to declare that the interactive slider ranges over the hours of the day." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "## Data as visualization\n", + "\n", "Holomaps are able to compose with elements and other holomaps into overlay and layouts just as easily as you compose two elements together. Here is one such composition where we select a range of longitudes and latitudes from our [``Points``](../../examples/elements/bokeh/Points.ipynb) before we overlay them:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image [xrotation=90] Points (color='deepskyblue' marker='v' size=6)\n", @@ -350,15 +312,13 @@ "source": [ "The line starting with ``%%opts`` used to specify the visual style is part of the HoloViews options system described in the next 'Getting started' section which also describes how to achieve the same effect with standard Python syntax.\n", "\n", - "In the cell above we created and styles a composite object within a few short lines of code. Furthermore, this composite object relates tabular and array data and is immediately presented in a way that can be explored interactively. This way of working enables highly productive exploration allowing new insights to be gained easily. For instance, after exploring with the slider we notice a hotspot of taxi dropoffs at 7am which we can select as follows:" + "In the cell above we created and styled a composite object within a few short lines of code. Furthermore, this composite object relates tabular and array data and is immediately presented in a way that can be explored interactively. This way of working enables highly productive exploration, allowing new insights to be gained easily. For instance, after exploring with the slider we notice a hotspot of taxi dropoffs at 7am which we can select as follows:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "composition.select(Hour=7)" @@ -368,17 +328,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now see that the slice of subway locations was chosen in relation to the hotspot in taxi dropoffs around 7am in the morning. This area of Manhattan just south of Central Park contains many popular tourist attractions, including Times Square and we can infer that tourists often take short taxi rides from the subway stations into this area.\n", + "We can now see that the slice of subway locations was chosen in relation to the hotspot in taxi dropoffs around 7am in the morning. This area of Manhattan just south of Central Park contains many popular tourist attractions, including Times Square, and we can infer that tourists often take short taxi rides from the subway stations into this area.\n", "\n", - "At this point it may appear that HoloViews is about easily generating explorative, interactive visualizations *from* your data. In fact, as we have been building these visualizations we have been working *with* our data, as we can show by examining the ``.data`` attribute of our sliced subway locations:" + "At this point it may appear that HoloViews is about easily generating explorative, interactive visualizations *from* your data. In fact, as we have been building these visualizations we have actually been working *with* our data, as we can show by examining the ``.data`` attribute of our sliced subway locations:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hotspot.data" @@ -388,24 +346,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see that slicing the HoloViews [``Points``](../../examples/elements/bokeh/Points.ipynb) object in the visualization sliced the underlying data with the structure of the table left intact. We can see that the Times Square 42nd Street station is inded one of the subway stations surrounding our taxi dropoff hotspot." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Onwards" + "We see that slicing the HoloViews [``Points``](../../examples/elements/bokeh/Points.ipynb) object in the visualization sliced the underlying data, with the structure of the table left intact. We can see that the Times Square 42nd Street station is indeed one of the subway stations surrounding our taxi dropoff hotspot. This seamless interplay and exchange between the raw data and easy-to-generate visualizations of it is crucial to how HoloViews helps you understand your data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Advanced topics:\n", + "## Onwards\n", "\n", - "* For geographical areas much larger than Manhattan the curvature of the Earth becomes important: holoviews extension called geoviews.\n", - "* The taxi array data was derived from a very large tabular dataset and rasterized using datashader which is also supported by HoloViews." + "The next getting-started section shows how to do [Customization](../Customization.ipynb) of the visual appearance of your data, allowing you highlight the most important features and change the look and feel. Other related topics for deeper study:\n", + " \n", + "* The above plots did not require any special geographic-data support, but when working with larger areas of the Earth's surface (for which curvature becomes significant) or when overlaying data with geographic features, the separate [GeoViews](http://geo.holoviews.org) library provides convenient geo-specific extensions to HoloViews.\n", + "* The taxi array data was derived from a very large tabular dataset and rasterized using [datashader](http://https://github.com/bokeh/datashader), an optional add-on to HoloViews and Bokeh that makes it feasible to work with very large datasets in a web browser." ] } ], From 85294c1edf133db546198c423d3aebbb2755f3d8 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Fri, 23 Jun 2017 12:47:57 +0100 Subject: [PATCH 60/99] Added embedded png and gif output to Deploying Bokeh Server guide --- guides/user_guide/Deploying_Bokeh_Apps.ipynb | 151 ++++++++++++------- 1 file changed, 100 insertions(+), 51 deletions(-) diff --git a/guides/user_guide/Deploying_Bokeh_Apps.ipynb b/guides/user_guide/Deploying_Bokeh_Apps.ipynb index 02d38b4488..04a4c3b9dd 100644 --- a/guides/user_guide/Deploying_Bokeh_Apps.ipynb +++ b/guides/user_guide/Deploying_Bokeh_Apps.ipynb @@ -10,14 +10,12 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.notebook_extension('bokeh')" ] }, { @@ -57,9 +55,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [tools=['box_select', 'lasso_select']]\n", @@ -84,6 +80,13 @@ "layout" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -96,15 +99,22 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "renderer = hv.renderer('bokeh')\n", "print(renderer)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "BokehRenderer()\n", + "```" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -147,13 +157,20 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hvplot = renderer.get_plot(layout)\n", - "hvplot" + "print(hvplot)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "\n", + "```" ] }, { @@ -166,14 +183,19 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hvplot.state" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Column**(\tid = '5a8b7949-decd-4a96-b1f8-8f77ec90e5bf', …)\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -209,14 +231,22 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "renderer(layout)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "(,\n", + " {'file-ext': 'html', 'mime_type': u'text/html'})\n", + "```" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -307,9 +337,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def sine(frequency, phase, amplitude):\n", @@ -323,6 +351,15 @@ "print(app)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "\n", + "```" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -333,9 +370,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from tornado.ioloop import IOLoop\n", @@ -355,9 +390,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def show_callback():\n", @@ -396,14 +429,19 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "server = renderer.app(dmap, show=True, new_window=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -414,9 +452,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "server.stop()" @@ -433,18 +469,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Instead of displaying our app in a new browser window and manually creating a ``Server`` instance we can also display an app inline in the notebook simply by supplying the ``show=True`` argument to the ``BokehRenderer.app`` method. The server app will be killed whenever you rerun or delete the cell that contains the output." + "Instead of displaying our app in a new browser window and manually creating a ``Server`` instance we can also display an app inline in the notebook simply by supplying the ``show=True`` argument to the ``BokehRenderer.app`` method. The server app will be killed whenever you rerun or delete the cell that contains the output. Additionally, if your Jupyter Notebook server is not running on the default address or port (``localhost:8888``) supply the websocket origin, which should match the first part of the URL of your notebook:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "renderer.app(dmap, show=True)" + "renderer.app(dmap, show=True, websocket_origin='localhost:8888')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" ] }, { @@ -459,9 +500,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def sine(counter):\n", @@ -471,7 +510,14 @@ "\n", "dmap = hv.DynamicMap(sine, streams=[hv.streams.Counter()])\n", "\n", - "app = renderer.app(dmap, show=True)" + "app = renderer.app(dmap, show=True, websocket_origin='localhost:8888')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" ] }, { @@ -484,9 +530,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.periodic(0.1, 100)" @@ -511,9 +555,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -577,12 +619,19 @@ "# To display in the notebook\n", "handler = FunctionHandler(modify_doc)\n", "app = Application(handler)\n", - "show(app)\n", + "show(app, notebook_url='localhost:8888')\n", "\n", "# To display in a script\n", "# doc = modify_doc(curdoc()) " ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, { "cell_type": "markdown", "metadata": {}, From a08b7072ffd35fda5b3f1b4c0916c90747973995 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Fri, 23 Jun 2017 13:53:18 +0100 Subject: [PATCH 61/99] Minor edits to Introduction section --- guides/getting_started/1-Introduction.ipynb | 60 +++++++++++++++------ 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/guides/getting_started/1-Introduction.ipynb b/guides/getting_started/1-Introduction.ipynb index 85fb31f030..e15eef4b62 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/guides/getting_started/1-Introduction.ipynb @@ -18,9 +18,9 @@ "\n", "**HoloViews helps you understand your data better, by letting you work seamlessly with both the data *and* its graphical representation.**\n", "\n", - "HoloViews focuses on bundling your data together with machine-readable metadata to support both analysis and visualization, making your raw data *and* its visualization equally accessible at all times. This process can be unfamiliar to those used to traditional data-processing and plotting tools, and this getting-started guide is meant to explain and demonstrate how it all works at a high level. More detailed information about each topic is then provided in the [User Guide](../user_guide/).\n", + "HoloViews focuses on bundling your data together with the appropriate metadata to support both analysis and visualization, making your raw data *and* its visualization equally accessible at all times. This process can be unfamiliar to those used to traditional data-processing and plotting tools, and this getting-started guide is meant to demonstrate how it all works at a high level. More detailed information about each topic is then provided in the [User Guide](../user_guide/).\n", "\n", - "With HoloViews, instead of building a plot using direct calls to a plotting library, you first describe your data with a small amount of crucial semantic information required to make it visualizable, then you specify additional metadata as needed to determine more detailed aspects of your visualization. This approach provides immediate, automatic visualization that can be effortlessly requested at any time as your data evolves, at which point HoloViews will render a plot using one of the supported plotting libraries (such as Bokeh or Matplotlib). \n", + "With HoloViews, instead of building a plot using direct calls to a plotting library, you first describe your data with a small amount of crucial semantic information required to make it visualizable, then you specify additional metadata as needed to determine more detailed aspects of your visualization. This approach provides immediate, automatic visualization that can be effortlessly requested at any time as your data evolves, rendered automatically by one of the supported plotting libraries (such as Bokeh or Matplotlib). \n", "\n", "\n", "## Tabulated data: subway stations\n", @@ -31,7 +31,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pandas as pd\n", @@ -54,7 +56,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "station_info = pd.read_csv('../datasets/station_info.csv')\n", @@ -80,7 +84,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "scatter = hv.Scatter(station_info, kdims=['services'], vdims=['ridership'])\n", @@ -99,7 +105,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(scatter)" @@ -124,7 +132,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])\n", @@ -141,7 +151,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "print(layout)" @@ -159,7 +171,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "taxi_dropoffs = {hour:arr for hour, arr in np.load('../datasets/hourly_taxi_data.npz').items()}\n", @@ -206,7 +220,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "points = hv.Points(station_info, kdims=['lon','lat'])\n", @@ -235,7 +251,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dictionary = {int(hour):hv.Image(arr, bounds=bounds, kdims=['lon','lat']) \n", @@ -253,7 +271,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "holomap = hv.HoloMap(dictionary, kdims=['Hour'])\n", @@ -270,7 +290,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "holomap.select(Hour={3,6,9}).layout()" @@ -297,7 +319,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Image [xrotation=90] Points (color='deepskyblue' marker='v' size=6)\n", @@ -318,7 +342,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "composition.select(Hour=7)" @@ -336,7 +362,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "hotspot.data" From 1bd32a7a8479354765be10ace20760b3fd20cd26 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Fri, 23 Jun 2017 16:27:16 +0100 Subject: [PATCH 62/99] Updated the mandelbrot homepage demo to work on Python 2 --- examples/demos/bokeh/mandelbrot_homepage.ipynb | 18 ++++++++++++------ .../demos/matplotlib/mandelbrot_homepage.ipynb | 9 ++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/examples/demos/bokeh/mandelbrot_homepage.ipynb b/examples/demos/bokeh/mandelbrot_homepage.ipynb index a2b7ce6ef5..9e112ad5b4 100644 --- a/examples/demos/bokeh/mandelbrot_homepage.ipynb +++ b/examples/demos/bokeh/mandelbrot_homepage.ipynb @@ -21,7 +21,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -44,10 +46,12 @@ }, "outputs": [], "source": [ - "import urllib, io\n", - "with urllib.request.urlopen('http://assets.holoviews.org/data/mandelbrot.npy') as url:\n", - " # Heavily downsampled to keep filesize down\n", - " array = np.load(io.BytesIO(url.read())).astype(np.float32)[::4,::4]" + "import io\n", + "try: from urllib2 import urlopen\n", + "except: from urllib.request import urlopen\n", + "\n", + "raw = urlopen('http://assets.holoviews.org/data/mandelbrot.npy').read()\n", + "array = np.load(io.BytesIO(raw)).astype(np.float32)[::4,::4]" ] }, { @@ -60,7 +64,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Points [scaling_factor=50] Contours [show_legend=False] (color='w')\n", diff --git a/examples/demos/matplotlib/mandelbrot_homepage.ipynb b/examples/demos/matplotlib/mandelbrot_homepage.ipynb index f9b6bfd7ef..594defeabf 100644 --- a/examples/demos/matplotlib/mandelbrot_homepage.ipynb +++ b/examples/demos/matplotlib/mandelbrot_homepage.ipynb @@ -46,9 +46,12 @@ }, "outputs": [], "source": [ - "import urllib, io\n", - "with urllib.request.urlopen('http://assets.holoviews.org/data/mandelbrot.npy') as url:\n", - " array = np.load(io.BytesIO(url.read())).astype(np.float32)" + "import io\n", + "try: from urllib2 import urlopen\n", + "except: from urllib.request import urlopen\n", + "\n", + "raw = urlopen('http://assets.holoviews.org/data/mandelbrot.npy').read()\n", + "array = np.load(io.BytesIO(raw)).astype(np.float32)" ] }, { From 3b57bfb5b1baec448050e6666537e0fdaf4d8584 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Fri, 23 Jun 2017 17:28:54 +0100 Subject: [PATCH 63/99] Various fixes for guide index and rst files --- doc/getting_started/index.rst | 10 +-- doc/user_guide/Applying_Transformations.rst | 5 -- doc/user_guide/Building_Composite_Objects.rst | 2 +- doc/user_guide/Custom_Interactivity.rst | 2 +- doc/user_guide/Customizing_Plots.rst | 2 +- doc/user_guide/Gridded_Datasets.rst | 2 +- .../Indexing_and_Selecting_Data.rst | 2 +- doc/user_guide/Large_Data.rst | 2 +- doc/user_guide/Live_Data.rst | 2 +- doc/user_guide/Responding_to_Events.rst | 2 +- doc/user_guide/Tabular_Datasets.rst | 2 +- doc/user_guide/Transforming_Elements.rst | 5 ++ doc/user_guide/index.rst | 66 +++++++++---------- 13 files changed, 52 insertions(+), 52 deletions(-) delete mode 100644 doc/user_guide/Applying_Transformations.rst create mode 100644 doc/user_guide/Transforming_Elements.rst diff --git a/doc/getting_started/index.rst b/doc/getting_started/index.rst index 7682526194..56fa7e9371 100644 --- a/doc/getting_started/index.rst +++ b/doc/getting_started/index.rst @@ -14,8 +14,8 @@ This 'Getting Started' guide aims to get you using HoloViews productively as qui :hidden: :maxdepth: 2 - Introduction - Customization - Tabular Datasets - Gridded Datasets - Live Data + Introduction + Customization + Tabular Datasets + Gridded Datasets + Live Data diff --git a/doc/user_guide/Applying_Transformations.rst b/doc/user_guide/Applying_Transformations.rst deleted file mode 100644 index 0449a0ba31..0000000000 --- a/doc/user_guide/Applying_Transformations.rst +++ /dev/null @@ -1,5 +0,0 @@ -Applying Transformations -________________________ - -.. notebook:: holoviews ../../guides/user_guide/Applying_Transformations.ipynb - :offset: 1 diff --git a/doc/user_guide/Building_Composite_Objects.rst b/doc/user_guide/Building_Composite_Objects.rst index 4e0f2e6ac4..c98d892821 100644 --- a/doc/user_guide/Building_Composite_Objects.rst +++ b/doc/user_guide/Building_Composite_Objects.rst @@ -1,5 +1,5 @@ Building Composite Objects __________________________ -.. notebook:: holoviews ../../guides/user_guide/Building_Composite_Objects.ipynb +.. notebook:: holoviews ../../guides/user_guide/05-Building_Composite_Objects.ipynb :offset: 1 diff --git a/doc/user_guide/Custom_Interactivity.rst b/doc/user_guide/Custom_Interactivity.rst index 0599bac379..c26982924f 100644 --- a/doc/user_guide/Custom_Interactivity.rst +++ b/doc/user_guide/Custom_Interactivity.rst @@ -1,5 +1,5 @@ Custom Interactivity ____________________ -.. notebook:: holoviews ../../guides/user_guide/Custom_Interactivity.ipynb +.. notebook:: holoviews ../../guides/user_guide/12-Custom_Interactivity.ipynb :offset: 1 diff --git a/doc/user_guide/Customizing_Plots.rst b/doc/user_guide/Customizing_Plots.rst index 83b38f6c11..e65175f22a 100644 --- a/doc/user_guide/Customizing_Plots.rst +++ b/doc/user_guide/Customizing_Plots.rst @@ -1,5 +1,5 @@ Customizing Plots _________________ -.. notebook:: holoviews ../../guides/user_guide/Customizing_Plots.ipynb +.. notebook:: holoviews ../../guides/user_guide/03-Customizing_Plots.ipynb :offset: 1 diff --git a/doc/user_guide/Gridded_Datasets.rst b/doc/user_guide/Gridded_Datasets.rst index 0a0531f231..29bac246a7 100644 --- a/doc/user_guide/Gridded_Datasets.rst +++ b/doc/user_guide/Gridded_Datasets.rst @@ -1,5 +1,5 @@ Gridded Datasets ________________ -.. notebook:: holoviews ../../guides/user_guide/Gridded_Datasets.ipynb +.. notebook:: holoviews ../../guides/user_guide/08-Gridded_Datasets.ipynb :offset: 1 diff --git a/doc/user_guide/Indexing_and_Selecting_Data.rst b/doc/user_guide/Indexing_and_Selecting_Data.rst index 5dc6c1d183..026373db82 100644 --- a/doc/user_guide/Indexing_and_Selecting_Data.rst +++ b/doc/user_guide/Indexing_and_Selecting_Data.rst @@ -1,5 +1,5 @@ Indexing and Selecting Data ___________________________ -.. notebook:: holoviews ../../guides/user_guide/Indexing_and_Selecting_Data.ipynb +.. notebook:: holoviews ../../guides/user_guide/09-Indexing_and_Selecting_Data.ipynb :offset: 1 diff --git a/doc/user_guide/Large_Data.rst b/doc/user_guide/Large_Data.rst index 0296ac00b4..ab97957fc2 100644 --- a/doc/user_guide/Large_Data.rst +++ b/doc/user_guide/Large_Data.rst @@ -1,5 +1,5 @@ Working with large data using datashader ________________________________________ -.. notebook:: holoviews ../../guides/user_guide/Large_Data.ipynb +.. notebook:: holoviews ../../guides/user_guide/14-Large_Data.ipynb :offset: 1 diff --git a/doc/user_guide/Live_Data.rst b/doc/user_guide/Live_Data.rst index 93a3d8a8a3..ca63f00ea6 100644 --- a/doc/user_guide/Live_Data.rst +++ b/doc/user_guide/Live_Data.rst @@ -1,5 +1,5 @@ Live Data _________ -.. notebook:: holoviews ../../guides/user_guide/Live_Data.ipynb +.. notebook:: holoviews ../../guides/user_guide/06-Live_Data.ipynb :offset: 1 diff --git a/doc/user_guide/Responding_to_Events.rst b/doc/user_guide/Responding_to_Events.rst index 7b0fcf047e..47633354f0 100644 --- a/doc/user_guide/Responding_to_Events.rst +++ b/doc/user_guide/Responding_to_Events.rst @@ -1,5 +1,5 @@ Responding to Events ____________________ -.. notebook:: holoviews ../../guides/user_guide/Responding_to_Events.ipynb +.. notebook:: holoviews ../../guides/user_guide/11-Responding_to_Events.ipynb :offset: 1 diff --git a/doc/user_guide/Tabular_Datasets.rst b/doc/user_guide/Tabular_Datasets.rst index c74ef772cd..b192c68a10 100644 --- a/doc/user_guide/Tabular_Datasets.rst +++ b/doc/user_guide/Tabular_Datasets.rst @@ -1,5 +1,5 @@ Tabular Datasets ________________ -.. notebook:: holoviews ../../guides/user_guide/Tabular_Datasets.ipynb +.. notebook:: holoviews ../../guides/user_guide/07-Tabular_Datasets.ipynb :offset: 1 diff --git a/doc/user_guide/Transforming_Elements.rst b/doc/user_guide/Transforming_Elements.rst new file mode 100644 index 0000000000..5bc8e7ef87 --- /dev/null +++ b/doc/user_guide/Transforming_Elements.rst @@ -0,0 +1,5 @@ +Transforming Elements +_____________________ + +.. notebook:: holoviews ../../guides/user_guide/10-Transforming_Elements.ipynb + :offset: 1 diff --git a/doc/user_guide/index.rst b/doc/user_guide/index.rst index 26e6db404a..aa40090c06 100644 --- a/doc/user_guide/index.rst +++ b/doc/user_guide/index.rst @@ -8,57 +8,57 @@ Core guides These user guides provide detailed explanation of some of the core concepts in HoloViews: -* `Annotating your Data <01-Annotating_Data.html>`_ +* `Annotating your Data `_ How to wrap your data in Element and annotate it with additional metadata to explore and visualize it effectively. -* `Composition of Elements <02-Composing_Elements.html>`_ +* `Composition of Elements `_ Composing your wrapped data into ``Overlay`` and ``Layout`` collections with the ``+`` and ``*`` operators. -* `Customizing Plots <03-Customizing_Plots.html>`_ +* `Customizing Plots `_ Applying plot, style and normalization options to control the look and feel of the plotting. -* `Dimensioned Containers <04-Dimensioned_Containers.html>`_ +* `Dimensioned Containers `_ Declaring multi-dimensional containers to animate and facet your data flexibly. Learn about ``HoloMap``, ``NdOverlay``, ``GridSpace`` and ``NdLayout`` types and how to use them effectively with the corresponding ``.layout``, ``.overlay`` and ``.grid`` method. -* `Building Composite Objects <05-Building_Composite_Objects.html>`_ +* `Building Composite Objects `_ How to build and work with complex composite objects. -* `Live Data <06-Live_Data.html>`_ +* `Live Data `_ Introducing ``DynamicMap`` to lazily declare data and generate complex interactive visualizations. -* `Tabular Datasets <07-Tabular_Datasets.html>`_ +* `Tabular Datasets `_ Loading and wrapping tabular datasets in HoloViews using NumPy, pandas and dask and flexibly exploring the dataset using selection, grouping and aggregation. -* `Gridded Datasets <08-Gridded_Datasets.html>`_ +* `Gridded Datasets `_ Loading and wrapping gridded dataset in HoloViews using NumPy and XArray to flexibly explore and visualize labelled n-dimensional arrays. -* `Indexing and Selecting Data <09-Indexing_and_Selecting_Data.html>`_ +* `Indexing and Selecting Data `_ Effectively indexing and selecting subsets of the data on the different HoloViews datastructures. -* `Transforming Elements <10-Transforming_Elements.html>`_ +* `Transforming Elements `_ Applying and declaring ``Operations`` that transform your allowing you to define the building blocks of a data analysis pipeline and quickly explore and visualize the effect of different parameters on your data. -* `Responding to Events <11-Responding_to_Events.html>`_ +* `Responding to Events `_ Effectively using ``Streams`` to dynamically control and drive your visualizations by responding to user defined events such as custom widgets or from the commandline or notebook. -* `Custom Interactivity <12-Custom_Interactivity.html>`_ +* `Custom Interactivity `_ Using linked ``Streams`` to respond to events generated by interacting with a bokeh plot, e.g. by responding to mouse position, mouse taps, selections or the current axis range. @@ -68,7 +68,7 @@ concepts in HoloViews: analysis pipelines, which can drive interactive plots in a notebook or in a deployed dashboard. -* `Working with large data <14-Large_Data.html>`_ +* `Working with large data `_ Leveraging datashader support in HoloViews to effectively and interactively explore and visualize millions or even billions of datapoints. @@ -115,23 +115,23 @@ These guides provide detail about specific additional features in HoloViews: :hidden: :maxdepth: 2 - Annotating your Data <1-Annotating_Data> - Composition of Elements <2-Composing_Elements> - Customizing Plots <3-Customizing_Plots> - Dimensioned Containers <4-Dimensioned_Containers> - Building Composite Objects <5-Building_Composite_Objects> - Live Data <6-Live_Data> - Tabular Datasets <7-Tabular_Datasets> - Gridded Datasets <8-Gridded_Datasets> - Indexing and Selecting Data <9-Indexing_and_Selecting_Data> - Transforming Elements <10-Applying_Transformations> - Responding to Events <11-Responding_to_Events> - Custom Interactivity <12-Custom_Interactivity> - Working with large data <14-Large_Data> - Plotting with Bokeh - Deploying Bokeh Apps - Plotting with matplotlib - Plotting with plotly - Working with Plot and Renderers - Exporting and Archiving - Continuous Coordinates + Annotating your Data + Composition of Elements + Customizing Plots + Dimensioned Containers + Building Composite Objects + Live Data + Tabular Datasets + Gridded Datasets + Indexing and Selecting Data + Transforming Elements + Responding to Events + Custom Interactivity + Working with large data + Plotting with Bokeh + Deploying Bokeh Apps + Plotting with matplotlib + Plotting with plotly + Working with Plot and Renderers + Exporting and Archiving + Continuous Coordinates From e4641ee79e6680e632c9c49ef41cc7bd2792d5dd Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 00:14:32 +0100 Subject: [PATCH 64/99] Renamed mandelbrot homepage notebook to mandelbrot section --- ...andelbrot_homepage.ipynb => mandelbrot_section.ipynb} | 9 +-------- ...andelbrot_homepage.ipynb => mandelbrot_section.ipynb} | 9 +-------- 2 files changed, 2 insertions(+), 16 deletions(-) rename examples/demos/bokeh/{mandelbrot_homepage.ipynb => mandelbrot_section.ipynb} (92%) rename examples/demos/matplotlib/{mandelbrot_homepage.ipynb => mandelbrot_section.ipynb} (93%) diff --git a/examples/demos/bokeh/mandelbrot_homepage.ipynb b/examples/demos/bokeh/mandelbrot_section.ipynb similarity index 92% rename from examples/demos/bokeh/mandelbrot_homepage.ipynb rename to examples/demos/bokeh/mandelbrot_section.ipynb index 9e112ad5b4..fbefda1398 100644 --- a/examples/demos/bokeh/mandelbrot_homepage.ipynb +++ b/examples/demos/bokeh/mandelbrot_section.ipynb @@ -1,19 +1,12 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# mandelbrot homepage" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most examples work across multiple plotting backends, this example is also available for:\n", "\n", - "* [Matplotlib - mandelbrot homepage](../matplotlib/mandelbrot_homepage.ipynb)\n", + "* [Matplotlib - mandelbrot section](../matplotlib/mandelbrot_section.ipynb)\n", "\n", "HoloViews demo that used to be showcased on the [holoviews.org" ] diff --git a/examples/demos/matplotlib/mandelbrot_homepage.ipynb b/examples/demos/matplotlib/mandelbrot_section.ipynb similarity index 93% rename from examples/demos/matplotlib/mandelbrot_homepage.ipynb rename to examples/demos/matplotlib/mandelbrot_section.ipynb index 594defeabf..1b012e2287 100644 --- a/examples/demos/matplotlib/mandelbrot_homepage.ipynb +++ b/examples/demos/matplotlib/mandelbrot_section.ipynb @@ -1,19 +1,12 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# mandelbrot homepage" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most examples work across multiple plotting backends, this example is also available for:\n", "\n", - "* [Bokeh - mandelbrot homepage](../bokeh/mandelbrot_homepage.ipynb)\n", + "* [Bokeh - mandelbrot section](../bokeh/mandelbrot_section.ipynb)\n", "\n", "HoloViews demo that used to be showcased on the [holoviews.org" ] From 8c90e0775a52e56cbe3a007e2b834ea145af5bdd Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 02:12:32 +0100 Subject: [PATCH 65/99] Added L-systems notebook to examples/topics/geometry --- examples/topics/geometry/lsystems.ipynb | 561 ++++++++++++++++++++++++ 1 file changed, 561 insertions(+) create mode 100644 examples/topics/geometry/lsystems.ipynb diff --git a/examples/topics/geometry/lsystems.ipynb b/examples/topics/geometry/lsystems.ipynb new file mode 100644 index 0000000000..2f38f6f507 --- /dev/null +++ b/examples/topics/geometry/lsystems.ipynb @@ -0,0 +1,561 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# L-Systems\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A [Lindenmayer system](https://en.wikipedia.org/wiki/L-system) or L-system is a mathematical system that can be used to describe growth process such as the growth of plants. Formally, it is a symbol expansion system whereby [rewrite rules](https://en.wikipedia.org/wiki/Rewriting) are applies iteratively to generate a longer string of symbols starting from a simple initial state. In this notebook, we will see how various types of fractal, including plant-like ones can be generated with L-systems and visualized with HoloViews." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import numpy as np\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook makes extensive use of the ``Path`` element and we will want to keep equal aspects and suppress the axes:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%opts Path {+framewise +axiswise} [xaxis=None, yaxis=None show_title=False] (color='black')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Some simple patterns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook, we will be drawing paths relative to an agent, in the spirit of [turtle graphics](https://en.wikipedia.org/wiki/Turtle_graphics). For this we define a simple agent class that has a ``path`` property to show us the path travelled from the point of initialization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class SimpleAgent(object):\n", + " \n", + " def __init__(self, x=0,y=0, heading=0):\n", + " self.x, self.y = x,y\n", + " self.heading = heading\n", + " self.trace = [(self.x, self.y)]\n", + " self.state = None\n", + " \n", + " def forward(self, distance):\n", + " self.x += np.cos(2*np.pi * self.heading/360.0)\n", + " self.y += np.sin(2*np.pi * self.heading/360.0)\n", + " self.trace.append((self.x,self.y))\n", + " \n", + " def rotate(self, angle):\n", + " self.heading += angle\n", + " \n", + " def back(self, distance):\n", + " self.heading += 180\n", + " self.forward(distance)\n", + " self.heading += 180\n", + " \n", + " @property\n", + " def path(self):\n", + " return hv.Path([self.trace])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now test our ``SimpleAgent`` by drawing some spirographs:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def pattern(angle= 5):\n", + " agent = SimpleAgent()\n", + " for i in range(360//angle):\n", + " for i in range(4):\n", + " agent.forward(1)\n", + " agent.rotate(90)\n", + " agent.rotate(angle)\n", + " return agent\n", + " \n", + "(pattern(20).path + pattern(10).path + pattern(5).path\n", + " + pattern(5).path * pattern(10).path * pattern(20).path).cols(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "We can also draw some pretty rose patterns, adapted from [these equations](http://www.mathcats.com/gallery/fiverosedetails.html):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def roses(l,n,k):\n", + " agent = SimpleAgent()\n", + " n * 10\n", + " x = (2.0 * k -n) / (2.0 * n)\n", + " for i in range(360*n):\n", + " agent.forward(l)\n", + " agent.rotate(i + x)\n", + " return agent\n", + "\n", + "roses(5,5,3).path + roses(5, 7, 3).path + roses(5, 12, 5).path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Following rules" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now want to the capabilites of our agent with the ability to read instructions, telling it which path to follow. Let's define the meaning of the following symbols:\n", + "\n", + "**F**: Move forward by a pre-specified distance.
    \n", + "**B**: Move backwards by a pre-specified distance.
    \n", + "**+**: Rotate anti-clockwise by a pre-specified angle.
    \n", + "**-**: Rotate clockwise by a pre-specified angle.
    \n", + "\n", + "Here is an agent class that can read strings of such symbols to draw the corresponding pattern:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class Agent(SimpleAgent):\n", + " \"An upgraded agent that can follow some rules\"\n", + " \n", + " default_rules = {'F': lambda t,d,a: t.forward(d),\n", + " 'B': lambda t,d,a: t.back(d),\n", + " '+': lambda t,d,a: t.rotate(-a),\n", + " '-': lambda t,d,a: t.rotate(a)}\n", + " \n", + " def __init__(self, x=0,y=0, instructions=None, heading=0, \n", + " distance=5, angle=60, rules=default_rules):\n", + " super(Agent,self).__init__(x,y, heading)\n", + " self.distance = distance\n", + " self.angle = angle\n", + " self.rules = rules\n", + " if instructions: self.process(instructions, self.distance, self.angle)\n", + " \n", + " def process(self, instructions, distance, angle):\n", + " for i in instructions: \n", + " self.rules[i](self, distance, angle)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Defining L-Systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L-systems are defined with a [rewrite system](https://en.wikipedia.org/wiki/Rewriting), making use of a set of [production rules](https://en.wikipedia.org/wiki/Production_(computer_science). What this means is that L-systems can generate instructions for our agent to follow, and therefore generate paths.\n", + "\n", + "Now we define the ``expand_rules`` function which can process some expansion rules to repeatedly substitute an initial set of symbols with new symbols:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def expand_rules(initial, iterations, productions):\n", + " \"Expand an initial symbol with the given production rules\"\n", + " expansion = initial\n", + " for i in range(iterations):\n", + " intermediate = \"\"\n", + " for ch in expansion:\n", + " intermediate = intermediate + productions.get(ch,ch)\n", + " expansion = intermediate\n", + " return expansion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Koch curve and snowflake" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To demonstrate ``expand_rules``, let's define two different rules:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "koch_curve = {'F':'F+F-F-F+F'} # Replace 'F' with 'F+F-F-F+F'\n", + "koch_snowflake = {'F':'F-F++F-F'} # Replace 'F' with 'F-F++F-F'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the first three steps using the first rule:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(3):\n", + " print('%d: %s' % (i, expand_rules('F', i, koch_curve)))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Note that these are instructions our agent can follow!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Path {+axiswise} (color=Cycle())\n", + "k1 = Agent(-200, 0, expand_rules('F', 4, koch_curve), angle=90).path\n", + "k2 = Agent(-200, 0, expand_rules('F', 4, koch_snowflake)).path\n", + "k1 + k2 + (k1 * k2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This shows two variants of the [Koch snowflake](https://en.wikipedia.org/wiki/Koch_snowflake) where ``koch_curve`` is a variant that uses right angles." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sierpinski triangle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following example introduces a mutual relationship between two symbols, 'A' and 'B', instead of just the single symbol 'F' used above:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sierpinski_triangle = {'A':'B-A-B', 'B':'A+B+A'}\n", + "for i in range(3):\n", + " print('%d: %s' % (i, expand_rules('A', i,sierpinski_triangle)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once again we can use these instructions to draw an interesting shape although we also need to define what these symbols mean to our agent:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Path (color='green')\n", + "sierpinski_rules = {'A': lambda t,d,a: t.forward(d),\n", + " 'B': lambda t,d,a: t.forward(d),\n", + " '+': lambda t,d,a: t.rotate(-a),\n", + " '-': lambda t,d,a: t.rotate(a)}\n", + "\n", + "instructions = expand_rules('A', 9,sierpinski_triangle)\n", + "Agent(x=-200, y=0, rules=sierpinski_rules, instructions=instructions, angle=60).path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that with our L-system expansion in terms of 'A' and 'B', we have defined the famous [Sierpinski_triangle](https://en.wikipedia.org/wiki/Sierpinski_triangle) fractal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Dragon curve" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now for another famous fractal:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dragon_curve = {'X':'X+YF+', 'Y':'-FX-Y'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have two new symbols 'X' and 'Y' which we need to define in addition to 'F', '+' and '-' which we used before:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dragon_rules = dict(Agent.default_rules, X=lambda t,d,a: None, Y=lambda t,d,a: None)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that 'X' and 'Y' don't actual do anything directly! These symbols are important in the expansion process but have no meaning to the agent. This time, let's use a ``HoloMap`` to view the expansion:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Path {+framewise}\n", + "\n", + "def pad_extents(path):\n", + " \"Add 5% padding around the path\"\n", + " minx, maxx = path.range('x')\n", + " miny, maxy = path.range('y')\n", + " xpadding = ((maxx-minx) * 0.1)/2\n", + " ypadding = ((maxy-miny) * 0.1)/2\n", + " path.extents = (minx-xpadding, miny-ypadding, maxx+xpadding, maxy+ypadding)\n", + " return path\n", + " \n", + "hmap = hv.HoloMap()\n", + "for i in range(7,17):\n", + " path = Agent(-200, 0, expand_rules('FX', i, dragon_curve), rules=dragon_rules, angle=90).path\n", + " hmap[i] = pad_extents(path)\n", + "hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This fractal is known as the [Dragon Curve](https://en.wikipedia.org/wiki/Dragon_curve)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plant fractals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have seen how to generate various fractals with L-systems, but we have not yet seen the plant-like fractals that L-systems are most famous for. This is because we can't draw a realistic plant with a single unbroken line: we need to be able to draw some part of the plant then jump back to an earlier state.\n", + "\n", + "This can be achieved by adding two new actions to our agent: ``push`` to record the current state of the agent and ``pop`` to pop back to the state of the last push:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class AgentWithState(Agent):\n", + " \"Stateful agent that can follow instructions\"\n", + " \n", + " def __init__(self, x,y, instructions, **kwargs):\n", + " super(AgentWithState, self).__init__(x=x,y=y, instructions=None, **kwargs)\n", + " self.traces = []\n", + " self.state = []\n", + " self.process(instructions, self.distance, self.angle)\n", + " \n", + " def push(self):\n", + " self.traces.append(self.trace[:])\n", + " self.state.append((self.heading, self.x, self.y))\n", + " \n", + " def pop(self):\n", + " self.traces.append(self.trace[:])\n", + " [self.heading, self.x, self.y] = self.state.pop()\n", + " self.trace = [(self.x, self.y)]\n", + " \n", + " @property\n", + " def path(self):\n", + " traces = self.traces + [self.trace]\n", + " return hv.Path(traces)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the first three expansions of a new ruleset we will use to generate a plant-like fractal:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plant_fractal = {'X':'F-[[X]+X]+F[+FX]-X', 'F':'FF'}\n", + "for i in range(3):\n", + " print('%d: %s' % (i, expand_rules('X', i, plant_fractal)))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "The new symbols '[' and ']' correspond to the new push and pop state actions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plant_rules = dict(Agent.default_rules, X=lambda t,d,a: None, \n", + " **{'[': lambda t,d,a: t.push(), ']': lambda t,d,a: t.pop()})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now generate a nice plant-like fractal:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Path {+framewise} (color='g' line_width=1)\n", + "hmap = hv.HoloMap()\n", + "for i in range(7):\n", + " instructions = expand_rules('X', i, plant_fractal)\n", + " if i > 2:\n", + " hmap[i] = AgentWithState(-200, 0, instructions, heading=90, rules=plant_rules, angle=25).path\n", + "hmap" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 95a8937e19681df42e59664309056df4d301a2ba Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 02:18:16 +0100 Subject: [PATCH 66/99] Fixed introductory sentence of square limit demo notebooks --- examples/demos/bokeh/square_limit.ipynb | 2 +- examples/demos/matplotlib/square_limit.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/demos/bokeh/square_limit.ipynb b/examples/demos/bokeh/square_limit.ipynb index 80ac44848c..1e5e017375 100644 --- a/examples/demos/bokeh/square_limit.ipynb +++ b/examples/demos/bokeh/square_limit.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Demo version of the topic notebook in [square_limit](../../topics/geometry/square_limit.ipynb) notebook in ``examples/topics/geometry``.\n", + "Demo version of the [square_limit](../../topics/geometry/square_limit.ipynb) topic notebook in ``examples/topics/geometry``.\n", "\n", "\n", "Most examples work across multiple plotting backends, this example is also available for:\n", diff --git a/examples/demos/matplotlib/square_limit.ipynb b/examples/demos/matplotlib/square_limit.ipynb index 8bf530dee0..ad1385910c 100644 --- a/examples/demos/matplotlib/square_limit.ipynb +++ b/examples/demos/matplotlib/square_limit.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Demo version of the topic notebook in [square_limit](../../topics/geometry/square_limit.ipynb) notebook in ``examples/topics/geometry``.\n", + "Demo version of the [square_limit](../../topics/geometry/square_limit.ipynb) topic notebook in ``examples/topics/geometry``.\n", "\n", "Most examples work across multiple plotting backends, this example is also available for:\n", "* [Bokeh - square_limit](../bokeh/square_limit.ipynb)" From 2f3577824292583ef9879fdcb2de330b66ac3eda Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 02:41:39 +0100 Subject: [PATCH 67/99] Added dragon_curve notebooks to examples/demos --- examples/demos/bokeh/dragon_curve.ipynb | 152 +++++++++++++++++++ examples/demos/matplotlib/dragon_curve.ipynb | 151 ++++++++++++++++++ 2 files changed, 303 insertions(+) create mode 100644 examples/demos/bokeh/dragon_curve.ipynb create mode 100644 examples/demos/matplotlib/dragon_curve.ipynb diff --git a/examples/demos/bokeh/dragon_curve.ipynb b/examples/demos/bokeh/dragon_curve.ipynb new file mode 100644 index 0000000000..ba80363f4d --- /dev/null +++ b/examples/demos/bokeh/dragon_curve.ipynb @@ -0,0 +1,152 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dragon curve example from the [L-systems](../../topics/geometry/lsystems.ipynb) topic notebook in ``examples/topics/geometry``.\n", + "\n", + "Most examples work across multiple plotting backends, this example is also available for:\n", + "* [Matplotlib - dragon_curve](../matplotlib/dragon_curve.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import numpy as np\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## L-system definition" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following class is a simplified version of the approach used in the [L-systems](../../topics/geometry/lsystems.ipynb) notebook, made specifically for plotting the [Dragon Curve](https://en.wikipedia.org/wiki/Dragon_curve)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class DragonCurve(object):\n", + " \"L-system agent that follows rules to generate the Dragon Curve\"\n", + " \n", + " initial ='FX'\n", + " productions = {'X':'X+YF+', 'Y':'-FX-Y'}\n", + " dragon_rules = {'F': lambda t,d,a: t.forward(d),\n", + " 'B': lambda t,d,a: t.back(d),\n", + " '+': lambda t,d,a: t.rotate(-a),\n", + " '-': lambda t,d,a: t.rotate(a),\n", + " 'X':lambda t,d,a: None,\n", + " 'Y':lambda t,d,a: None }\n", + " \n", + " def __init__(self, x=0,y=0, iterations=1):\n", + " self.heading = 0\n", + " self.distance = 5\n", + " self.angle = 90\n", + " self.x, self.y = x,y\n", + " self.trace = [(self.x, self.y)]\n", + " self.process(self.expand(iterations), self.distance, self.angle)\n", + " \n", + " def process(self, instructions, distance, angle):\n", + " for i in instructions: \n", + " self.dragon_rules[i](self, distance, angle)\n", + " \n", + " def expand(self, iterations):\n", + " \"Expand an initial symbol with the given production rules\"\n", + " expansion = self.initial\n", + " \n", + " for i in range(iterations):\n", + " intermediate = \"\"\n", + " for ch in expansion:\n", + " intermediate = intermediate + self.productions.get(ch,ch)\n", + " expansion = intermediate\n", + " return expansion\n", + "\n", + " def forward(self, distance):\n", + " self.x += np.cos(2*np.pi * self.heading/360.0)\n", + " self.y += np.sin(2*np.pi * self.heading/360.0)\n", + " self.trace.append((self.x,self.y))\n", + " \n", + " def rotate(self, angle):\n", + " self.heading += angle\n", + " \n", + " def back(self, distance):\n", + " self.heading += 180\n", + " self.forward(distance)\n", + " self.heading += 180\n", + " \n", + " @property\n", + " def path(self):\n", + " return hv.Path([self.trace])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Path {+framewise} [xaxis=None yaxis=None title_format=''] (color='black' line_width=1)\n", + "\n", + "def pad_extents(path):\n", + " \"Add 5% padding around the path\"\n", + " minx, maxx = path.range('x')\n", + " miny, maxy = path.range('y')\n", + " xpadding = ((maxx-minx) * 0.1)/2\n", + " ypadding = ((maxy-miny) * 0.1)/2\n", + " path.extents = (minx-xpadding, miny-ypadding, maxx+xpadding, maxy+ypadding)\n", + " return path\n", + " \n", + "hmap = hv.HoloMap(kdims=['Iteration'])\n", + "for i in range(7,17):\n", + " path = DragonCurve(-200, 0, i).path\n", + " hmap[i] = pad_extents(path)\n", + "hmap" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/demos/matplotlib/dragon_curve.ipynb b/examples/demos/matplotlib/dragon_curve.ipynb new file mode 100644 index 0000000000..98b35a6114 --- /dev/null +++ b/examples/demos/matplotlib/dragon_curve.ipynb @@ -0,0 +1,151 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dragon curve example from the [L-systems](../../topics/geometry/lsystems.ipynb) topic notebook in ``examples/topics/geometry``.\n", + "\n", + "Most examples work across multiple plotting backends, this example is also available for:\n", + "* [Bokeh - dragon_curve](../bokeh/dragon_curve.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "import numpy as np\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## L-system definition" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following class is a simplified version of the approach used in the [L-systems](../../topics/geometry/lsystems.ipynb) notebook, made specifically for plotting the [Dragon Curve](https://en.wikipedia.org/wiki/Dragon_curve)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class DragonCurve(object):\n", + " \"L-system agent that follows rules to generate the Dragon Curve\"\n", + " \n", + " initial ='FX'\n", + " productions = {'X':'X+YF+', 'Y':'-FX-Y'}\n", + " dragon_rules = {'F': lambda t,d,a: t.forward(d),\n", + " 'B': lambda t,d,a: t.back(d),\n", + " '+': lambda t,d,a: t.rotate(-a),\n", + " '-': lambda t,d,a: t.rotate(a),\n", + " 'X':lambda t,d,a: None,\n", + " 'Y':lambda t,d,a: None }\n", + " \n", + " def __init__(self, x=0,y=0, iterations=1):\n", + " self.heading = 0\n", + " self.distance = 5\n", + " self.angle = 90\n", + " self.x, self.y = x,y\n", + " self.trace = [(self.x, self.y)]\n", + " self.process(self.expand(iterations), self.distance, self.angle)\n", + " \n", + " def process(self, instructions, distance, angle):\n", + " for i in instructions: \n", + " self.dragon_rules[i](self, distance, angle)\n", + " \n", + " def expand(self, iterations):\n", + " \"Expand an initial symbol with the given production rules\"\n", + " expansion = self.initial\n", + " \n", + " for i in range(iterations):\n", + " intermediate = \"\"\n", + " for ch in expansion:\n", + " intermediate = intermediate + self.productions.get(ch,ch)\n", + " expansion = intermediate\n", + " return expansion\n", + "\n", + " def forward(self, distance):\n", + " self.x += np.cos(2*np.pi * self.heading/360.0)\n", + " self.y += np.sin(2*np.pi * self.heading/360.0)\n", + " self.trace.append((self.x,self.y))\n", + " \n", + " def rotate(self, angle):\n", + " self.heading += angle\n", + " \n", + " def back(self, distance):\n", + " self.heading += 180\n", + " self.forward(distance)\n", + " self.heading += 180\n", + " \n", + " @property\n", + " def path(self):\n", + " return hv.Path([self.trace])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%output size=200\n", + "%%opts Path {+framewise} [xaxis=None yaxis=None title_format=''] (color='black' linewidth=1)\n", + "\n", + "def pad_extents(path):\n", + " \"Add 5% padding around the path\"\n", + " minx, maxx = path.range('x')\n", + " miny, maxy = path.range('y')\n", + " xpadding = ((maxx-minx) * 0.1)/2\n", + " ypadding = ((maxy-miny) * 0.1)/2\n", + " path.extents = (minx-xpadding, miny-ypadding, maxx+xpadding, maxy+ypadding)\n", + " return path\n", + " \n", + "hmap = hv.HoloMap(kdims=['Iteration'])\n", + "for i in range(7,17):\n", + " path = DragonCurve(-200, 0, i).path\n", + " hmap[i] = pad_extents(path)\n", + "hmap" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From d3ccd9336dc5dc288f13c8bbad1065e960edc820 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 02:43:02 +0100 Subject: [PATCH 68/99] Minor improvements to the L-systems topics notebook --- examples/topics/geometry/lsystems.ipynb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/topics/geometry/lsystems.ipynb b/examples/topics/geometry/lsystems.ipynb index 2f38f6f507..78411996f5 100644 --- a/examples/topics/geometry/lsystems.ipynb +++ b/examples/topics/geometry/lsystems.ipynb @@ -71,7 +71,6 @@ " self.x, self.y = x,y\n", " self.heading = heading\n", " self.trace = [(self.x, self.y)]\n", - " self.state = None\n", " \n", " def forward(self, distance):\n", " self.x += np.cos(2*np.pi * self.heading/360.0)\n", @@ -417,7 +416,7 @@ " path.extents = (minx-xpadding, miny-ypadding, maxx+xpadding, maxy+ypadding)\n", " return path\n", " \n", - "hmap = hv.HoloMap()\n", + "hmap = hv.HoloMap(kdims=['Iteration'])\n", "for i in range(7,17):\n", " path = Agent(-200, 0, expand_rules('FX', i, dragon_curve), rules=dragon_rules, angle=90).path\n", " hmap[i] = pad_extents(path)\n", @@ -528,7 +527,7 @@ "outputs": [], "source": [ "%%opts Path {+framewise} (color='g' line_width=1)\n", - "hmap = hv.HoloMap()\n", + "hmap = hv.HoloMap(kdims=['Iteration'])\n", "for i in range(7):\n", " instructions = expand_rules('X', i, plant_fractal)\n", " if i > 2:\n", From 93a3194302cb64a97ea87c9a4f5b484dac26d90f Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 03:27:24 +0100 Subject: [PATCH 69/99] Fixed syntax error in game_of_life.py Bokeh app --- examples/apps/bokeh/game_of_life.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/apps/bokeh/game_of_life.py b/examples/apps/bokeh/game_of_life.py index ef6db87b14..2280d36858 100644 --- a/examples/apps/bokeh/game_of_life.py +++ b/examples/apps/bokeh/game_of_life.py @@ -70,7 +70,7 @@ def update(pattern, counter, x, y): title = 'Game of Life - Tap to place pattern, Doubletap to clear' opts = { 'style': {'cmap': 'gray', 'toolbar': False, }, - 'plot' : {'height': 400, 'width': 800, title_format: '{label}', + 'plot' : {'height': 400, 'width': 800, 'title_format': '{label}', 'xaxis': None, 'yaxis': None} } img = hv.Image(np.zeros((100, 200), dtype=np.uint8)).redim.range(z=(0, 1))(**opts) From a2e0306046b6c6ad9394cbacde7e71e168ea64ca Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 03:35:07 +0100 Subject: [PATCH 70/99] Added nytaxi_hover.py to examples/apps/bokeh --- examples/apps/bokeh/nytaxi_hover.py | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 examples/apps/bokeh/nytaxi_hover.py diff --git a/examples/apps/bokeh/nytaxi_hover.py b/examples/apps/bokeh/nytaxi_hover.py new file mode 100644 index 0000000000..fe57529ea9 --- /dev/null +++ b/examples/apps/bokeh/nytaxi_hover.py @@ -0,0 +1,52 @@ +""" +Bokeh app example using datashader for rasterizing a large dataset and +geoviews for reprojecting coordinate systems. + +This example requires the 1.7GB nyc_taxi.csv dataset which you can +obtain by following the instructions for 'nyc_taxi' at: + + https://github.com/bokeh/datashader/blob/master/examples/README.md + +Once this CSV is placed in a data/ subfolder, you can run this app with: + + bokeh serve --show nytaxi_hover.py + +""" +import holoviews as hv +import geoviews as gv +import dask.dataframe as dd +import cartopy.crs as ccrs + +from holoviews.operation.datashader import datashade, aggregate + +hv.extension('bokeh') + +# Set plot and style options +hv.util.opts('Image [width=800 height=400 shared_axes=False logz=True] {+axiswise} ') +hv.util.opts("HLine VLine (color='white' line_width=1) Layout [shared_axes=False] ") +hv.util.opts("Curve [xaxis=None yaxis=None show_grid=False, show_frame=False] (color='orangered') {+framewise}") + +# Read the CSV file +df = dd.read_csv('data/nyc_taxi.csv',usecols=['pickup_x', 'pickup_y']) +df = df.persist() + +# Reproject points from Mercator to PlateCarree (latitude/longitude) +points = gv.Points(df, kdims=['pickup_x', 'pickup_y'], vdims=[], crs=ccrs.GOOGLE_MERCATOR) +projected = gv.operation.project_points(points, projection=ccrs.PlateCarree()) +projected = projected.redim(pickup_x='lon', pickup_y='lat') + +# Use datashader to rasterize and linked streams for interactivity +agg = aggregate(projected, link_inputs=True, x_sampling=0.0001, y_sampling=0.0001) +pointerx = hv.streams.PointerX(x=-74, source=projected) +pointery = hv.streams.PointerY(y=40.8, source=projected) +vline = hv.DynamicMap(lambda x: hv.VLine(x), streams=[pointerx]) +hline = hv.DynamicMap(lambda y: hv.HLine(y), streams=[pointery]) + +sampled = hv.util.Dynamic(agg, operation=lambda obj, x: obj.sample(lon=x), + streams=[pointerx], link_inputs=False) + +hvobj = ((agg * hline * vline) << sampled.opts(plot={'Curve': dict(width=100)})) + +# Obtain Bokeh document and set the title +doc = hv.renderer('bokeh').server_doc(hvobj) +doc.title = 'NYC Taxi Crosshair' From 7f012ae2e9b32bb71bc28259989ee8be44b6fc5e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Sun, 25 Jun 2017 14:03:47 +0100 Subject: [PATCH 71/99] Added bars_economic notebooks to examples/demos --- examples/demos/bokeh/bars_economic.ipynb | 86 +++++++++++++++++++ examples/demos/matplotlib/bars_economic.ipynb | 86 +++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 examples/demos/bokeh/bars_economic.ipynb create mode 100644 examples/demos/matplotlib/bars_economic.ipynb diff --git a/examples/demos/bokeh/bars_economic.ipynb b/examples/demos/bokeh/bars_economic.ipynb new file mode 100644 index 0000000000..4d4b8babcd --- /dev/null +++ b/examples/demos/bokeh/bars_economic.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Matplotlib - bars_economic](../matplotlib/bars_economic.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh','matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Declaring data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", + "key_dimensions = [('year', 'Year'), ('country', 'Country')]\n", + "value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),\n", + " ('gdp', 'GDP Growth'), ('trade', 'Trade')]\n", + "macro = hv.Table(macro_df, kdims=key_dimensions, vdims=value_dimensions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Bars [stack_index=1 xrotation=90 legend_cols=7 show_legend=False show_frame=False tools=['hover']]\n", + "%%opts Bars (color=Cycle(values=bokeh.palettes.Category20[12]))\n", + "macro.to.bars([ 'Year', 'Country'], 'Trade', [])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/demos/matplotlib/bars_economic.ipynb b/examples/demos/matplotlib/bars_economic.ipynb new file mode 100644 index 0000000000..dddad9e61a --- /dev/null +++ b/examples/demos/matplotlib/bars_economic.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Bokeh - bars_economic](../bokeh/bars_economic.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Declaring data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", + "key_dimensions = [('year', 'Year'), ('country', 'Country')]\n", + "value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),\n", + " ('gdp', 'GDP Growth'), ('trade', 'Trade')]\n", + "macro = hv.Table(macro_df, kdims=key_dimensions, vdims=value_dimensions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Bars [category_index=2 stack_index=1 group_index=0 xrotation=90 color_by=['stack']] (color=Palette('tab20'))\n", + "%%opts Bars [legend_position='right' legend_cols=2]\n", + "macro.to.bars([ 'Year', 'Country'], 'Trade', [])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 327f7ac2485119f382f9e27ba50de8fed7851749 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 00:14:01 +0100 Subject: [PATCH 72/99] Fixed color cycle in bokeh bars_economic notebook --- examples/demos/bokeh/bars_economic.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/demos/bokeh/bars_economic.ipynb b/examples/demos/bokeh/bars_economic.ipynb index 4d4b8babcd..8f384640fe 100644 --- a/examples/demos/bokeh/bars_economic.ipynb +++ b/examples/demos/bokeh/bars_economic.ipynb @@ -57,7 +57,7 @@ "outputs": [], "source": [ "%%opts Bars [stack_index=1 xrotation=90 legend_cols=7 show_legend=False show_frame=False tools=['hover']]\n", - "%%opts Bars (color=Cycle(values=bokeh.palettes.Category20[12]))\n", + "%%opts Bars (color=Cycle('Category20'))\n", "macro.to.bars([ 'Year', 'Country'], 'Trade', [])" ] } From 05e111b1bc3659bf7395b690f688cb1d24187916 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 00:24:16 +0100 Subject: [PATCH 73/99] Switched Palette for Cycle in matplotlib's bar_economic.ipynb --- examples/demos/matplotlib/bars_economic.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/demos/matplotlib/bars_economic.ipynb b/examples/demos/matplotlib/bars_economic.ipynb index dddad9e61a..3aee905458 100644 --- a/examples/demos/matplotlib/bars_economic.ipynb +++ b/examples/demos/matplotlib/bars_economic.ipynb @@ -56,7 +56,7 @@ "metadata": {}, "outputs": [], "source": [ - "%%opts Bars [category_index=2 stack_index=1 group_index=0 xrotation=90 color_by=['stack']] (color=Palette('tab20'))\n", + "%%opts Bars [category_index=2 stack_index=1 group_index=0 xrotation=90 color_by=['stack']] (color=Cycle('tab20'))\n", "%%opts Bars [legend_position='right' legend_cols=2]\n", "macro.to.bars([ 'Year', 'Country'], 'Trade', [])" ] From aa5c4bb0c5108b0a8f3f40d1840dee56212bc11a Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 00:27:38 +0100 Subject: [PATCH 74/99] Added scatter_economic notebooks to examples/demos --- examples/demos/bokeh/scatter_economic.ipynb | 88 ++++++++++++++++++ .../demos/matplotlib/scatter_economic.ipynb | 89 +++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 examples/demos/bokeh/scatter_economic.ipynb create mode 100644 examples/demos/matplotlib/scatter_economic.ipynb diff --git a/examples/demos/bokeh/scatter_economic.ipynb b/examples/demos/bokeh/scatter_economic.ipynb new file mode 100644 index 0000000000..d23b3e1c58 --- /dev/null +++ b/examples/demos/bokeh/scatter_economic.ipynb @@ -0,0 +1,88 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Matplotlib - scatter_economic](../matplotlib/scatter_economic.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Declaring data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", + "key_dimensions = [('year', 'Year'), ('country', 'Country')]\n", + "value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),\n", + " ('gdp', 'GDP Growth'), ('trade', 'Trade')]\n", + "macro = hv.Table(macro_df, kdims=key_dimensions, vdims=value_dimensions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter [width=700 height=400 scaling_method='width' scaling_factor=2 size_index=2 show_grid=True] \n", + "%%opts Scatter (color=Cycle('Category20') line_color='k')\n", + "%%opts NdOverlay [legend_position='left' show_frame=False]\n", + "gdp_unem_scatter = macro.to.scatter('Year', ['GDP Growth', 'Unemployment'])\n", + "gdp_unem_scatter.overlay('Country')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/demos/matplotlib/scatter_economic.ipynb b/examples/demos/matplotlib/scatter_economic.ipynb new file mode 100644 index 0000000000..b85ed4c53d --- /dev/null +++ b/examples/demos/matplotlib/scatter_economic.ipynb @@ -0,0 +1,89 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Bokeh - scatter_economic](../bokeh/scatter_economic.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Declaring data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", + "key_dimensions = [('year', 'Year'), ('country', 'Country')]\n", + "value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),\n", + " ('gdp', 'GDP Growth'), ('trade', 'Trade')]\n", + "macro = hv.Table(macro_df, kdims=key_dimensions, vdims=value_dimensions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%output dpi=100\n", + "%%opts Scatter [scaling_method='width' scaling_factor=2 size_index=2 show_grid=True] \n", + "%%opts Scatter (color=Cycle('tab20') edgecolors='k')\n", + "%%opts NdOverlay [legend_position='right' aspect=2, fig_size=250, show_frame=False]\n", + "gdp_unem_scatter = macro.to.scatter('Year', ['GDP Growth', 'Unemployment'])\n", + "gdp_unem_scatter.overlay('Country')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 22d15c4c4e001a6e37d7c7cb501c34d8b8b0a8d1 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Mon, 26 Jun 2017 00:36:51 +0100 Subject: [PATCH 75/99] Fixes for Game of Life app --- examples/apps/bokeh/game_of_life.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/examples/apps/bokeh/game_of_life.py b/examples/apps/bokeh/game_of_life.py index 2280d36858..8ccfd2b4c4 100644 --- a/examples/apps/bokeh/game_of_life.py +++ b/examples/apps/bokeh/game_of_life.py @@ -64,8 +64,7 @@ def update(pattern, counter, x, y): r, c = pattern.shape y, x = img.sheet2matrixidx(x,y) img.data[y:y+r,x:x+c] = pattern[::-1] - img.data = img.data.copy() - return img + return hv.Image(img) title = 'Game of Life - Tap to place pattern, Doubletap to clear' opts = { @@ -73,12 +72,11 @@ def update(pattern, counter, x, y): 'plot' : {'height': 400, 'width': 800, 'title_format': '{label}', 'xaxis': None, 'yaxis': None} } -img = hv.Image(np.zeros((100, 200), dtype=np.uint8)).redim.range(z=(0, 1))(**opts) - +img = hv.Image(np.zeros((100, 200), dtype=np.uint8)) counter, tap = Counter(transient=True), Tap(transient=True) pattern_dim = hv.Dimension('Pattern', values=sorted(shapes.keys())) dmap = hv.DynamicMap(update, kdims=[pattern_dim], streams=[counter, tap]) -doc = renderer.app(dmap) +doc = renderer.server_doc(dmap.redim.range(z=(0, 1))(**opts)) dmap.periodic(0.05, None) doc.title = 'Game of Life' From b546d7c8ca3475a4369136022e358fb8cee46420 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 01:00:48 +0100 Subject: [PATCH 76/99] Added dropdown_economic notebooks to examples/demos --- examples/demos/bokeh/dropdown_economic.ipynb | 100 ++++++++++++++++++ .../demos/matplotlib/dropdown_economic.ipynb | 90 ++++++++++++++++ 2 files changed, 190 insertions(+) create mode 100644 examples/demos/bokeh/dropdown_economic.ipynb create mode 100644 examples/demos/matplotlib/dropdown_economic.ipynb diff --git a/examples/demos/bokeh/dropdown_economic.ipynb b/examples/demos/bokeh/dropdown_economic.ipynb new file mode 100644 index 0000000000..4efe5ccab2 --- /dev/null +++ b/examples/demos/bokeh/dropdown_economic.ipynb @@ -0,0 +1,100 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Matplotlib - dropdown_economic](../matplotlib/dropdown_economic.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Declaring data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", + "key_dimensions = [('year', 'Year'), ('country', 'Country')]\n", + "value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),\n", + " ('gdp', 'GDP Growth'), ('trade', 'Trade')]\n", + "macro = hv.Table(macro_df, kdims=key_dimensions, vdims=value_dimensions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note:** The ``Arrow`` element is not current supported by the Bokeh plotting extension. This version uses ``VLines`` and ``Text`` instead of ``Arrow`` and will be updated to match matplotlib's approach in the next version of HoloViews." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Overlay [width=700 height=400 show_frame=False]\n", + "%%opts Curve (color='k') Scatter [color_index=2 size_index=2 scaling_factor=1.4] (cmap='Blues' line_color='k')\n", + "%%opts VLine (color='k' line_width=1)\n", + "%%opts Text (text_font_size='13px')\n", + "gdp_curves = macro.to.curve('Year', 'GDP Growth')\n", + "gdp_unem_scatter = macro.to.scatter('Year', ['GDP Growth', 'Unemployment'])\n", + "vlines = hv.VLine(1973)* hv.VLine(1975) * hv.VLine(1979) * hv.VLine(1981.9)\n", + "text = (hv.Text(1971.7,9, 'Oil Crisis') * hv.Text(1976.4, 9, 'Stagflation') \n", + " * hv.Text(1977.3, 7, 'Energy Crisis') * hv.Text(1985, 9, 'Early Eighties Recession'))\n", + "gdp_curves * gdp_unem_scatter * vlines * text" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/demos/matplotlib/dropdown_economic.ipynb b/examples/demos/matplotlib/dropdown_economic.ipynb new file mode 100644 index 0000000000..ab130c50a4 --- /dev/null +++ b/examples/demos/matplotlib/dropdown_economic.ipynb @@ -0,0 +1,90 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most examples work across multiple plotting backends, this example is also available for:\n", + "\n", + "* [Bokeh - dropdown_economic](../bokeh/dropdown_economic.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.notebook_extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Declaring data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", + "key_dimensions = [('year', 'Year'), ('country', 'Country')]\n", + "value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),\n", + " ('gdp', 'GDP Growth'), ('trade', 'Trade')]\n", + "macro = hv.Table(macro_df, kdims=key_dimensions, vdims=value_dimensions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Curve (color='k') Scatter [color_index=2 size_index=2 scaling_factor=1.4] (cmap='Blues' edgecolors='k')\n", + "%%opts Overlay [show_frame=True aspect=2, fig_size=250, show_frame=False]\n", + "gdp_curves = macro.to.curve('Year', 'GDP Growth')\n", + "gdp_unem_scatter = macro.to.scatter('Year', ['GDP Growth', 'Unemployment'])\n", + "annotations = hv.Arrow(1973, 8, 'Oil Crisis', 'v') * hv.Arrow(1975, 6, 'Stagflation', 'v') *\\\n", + "hv.Arrow(1979, 8, 'Energy Crisis', 'v') * hv.Arrow(1981.9, 5, 'Early Eighties\\n Recession', 'v')\n", + "gdp_curves * gdp_unem_scatter* annotations" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From e57e9479804e97202da2bd3fe107298180b858e2 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 01:29:07 +0100 Subject: [PATCH 77/99] L-systems notebook now only shows two rose spirographs --- examples/topics/geometry/lsystems.ipynb | 50 ++++++++++++++++++------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/examples/topics/geometry/lsystems.ipynb b/examples/topics/geometry/lsystems.ipynb index 78411996f5..4ac219f20a 100644 --- a/examples/topics/geometry/lsystems.ipynb +++ b/examples/topics/geometry/lsystems.ipynb @@ -37,7 +37,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%opts Path {+framewise +axiswise} [xaxis=None, yaxis=None show_title=False] (color='black')" @@ -139,7 +141,7 @@ " agent.rotate(i + x)\n", " return agent\n", "\n", - "roses(5,5,3).path + roses(5, 7, 3).path + roses(5, 12, 5).path" + "roses(5, 7, 3).path + roses(5, 12, 5).path" ] }, { @@ -244,7 +246,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "koch_curve = {'F':'F+F-F-F+F'} # Replace 'F' with 'F+F-F-F+F'\n", @@ -261,7 +265,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "for i in range(3):\n", @@ -280,7 +286,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Path {+axiswise} (color=Cycle())\n", @@ -313,7 +321,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "sierpinski_triangle = {'A':'B-A-B', 'B':'A+B+A'}\n", @@ -331,7 +341,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Path (color='green')\n", @@ -368,7 +380,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dragon_curve = {'X':'X+YF+', 'Y':'-FX-Y'}" @@ -402,7 +416,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Path {+framewise}\n", @@ -449,7 +465,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "class AgentWithState(Agent):\n", @@ -486,7 +504,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "plant_fractal = {'X':'F-[[X]+X]+F[+FX]-X', 'F':'FF'}\n", @@ -506,7 +526,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "plant_rules = dict(Agent.default_rules, X=lambda t,d,a: None, \n", @@ -523,7 +545,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Path {+framewise} (color='g' line_width=1)\n", From b048e6ad395791c5a0d60b94db2ac0b5327f1972 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 12:38:11 +0100 Subject: [PATCH 78/99] Added draft HoloMap GridSpace, NdLayout and NdOverlay notebooks --- .../containers/matplotlib/GridSpace.ipynb | 130 +++++++++ examples/containers/matplotlib/HoloMap.ipynb | 251 ++++++++++++++++++ examples/containers/matplotlib/NdLayout.ipynb | 169 ++++++++++++ .../containers/matplotlib/NdOverlay.ipynb | 162 +++++++++++ 4 files changed, 712 insertions(+) create mode 100644 examples/containers/matplotlib/GridSpace.ipynb create mode 100644 examples/containers/matplotlib/HoloMap.ipynb create mode 100644 examples/containers/matplotlib/NdLayout.ipynb create mode 100644 examples/containers/matplotlib/NdOverlay.ipynb diff --git a/examples/containers/matplotlib/GridSpace.ipynb b/examples/containers/matplotlib/GridSpace.ipynb new file mode 100644 index 0000000000..1e1bde5db1 --- /dev/null +++ b/examples/containers/matplotlib/GridSpace.ipynb @@ -0,0 +1,130 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    GridSpace Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](./GridSpace.ipynb)
    [Bokeh](../bokeh/GridSpace.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ``GridSpace`` is a two-dimensional dictionary of HoloViews objects presented onscreen as a grid. In one sense, due to the restriction on it's dimensionality, a ``GridSpace`` may be considered a special-case of [``HoloMap``](./HoloMap.ipynb). In another sense, ``GridSpace`` may be seen as more general as a ``GridSpace`` can hold a ``HoloMap`` but the converse is not permitted; see the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``GridSpace`` holds two-dimensional dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``sine_curve`` function below, we can declare a two-dimensional dictionary of ``Curve`` elements, where the keys are 2-tuples corresponding to (phase, frequency) values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "phases = [0, np.pi/2, np.pi, 3*np.pi/2]\n", + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in phases for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now pass this dictionary of curves to ``GridSpace``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gridspace = hv.GridSpace(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "gridspace" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``GridSpace`` is similar to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other than the difference in the visual semantics, whereby ``GridSpaces`` display their contents together in a two-dimensional grid, ``GridSpaces`` are very similar to ``HoloMap``s (see the [``HoloMap``](./HoloMap.ipynb) notebook for more information).\n", + "\n", + "One way to demonstrate the similarity of these two containers is to cast our ``gridspace`` object to ``HoloMap`` and back to a ``GridSpace``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(gridspace)\n", + "hmap + hv.GridSpace(hmap)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/containers/matplotlib/HoloMap.ipynb b/examples/containers/matplotlib/HoloMap.ipynb new file mode 100644 index 0000000000..031ede4356 --- /dev/null +++ b/examples/containers/matplotlib/HoloMap.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    HoloMap Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](./HoloMap.ipynb)
    [Bokeh](../bokeh/HoloMap.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A HoloMap is an explorable multi-dimensional dictionary of HoloViews objects. A ``HoloMap`` cannot contain ``Layouts``, ``NdLayouts``, ``GridSpaces`` or other ``HoloMaps`` or ``DyamicMap`` but can contain any other HoloViews object. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` holds dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a ``HoloMap`` is a dictionary of elements, let us now create a dictionary of sine curves:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "\n", + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "curve_dict = {f:sine_curve(0,f) for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a dictionary where the frequency is the key and the corresponding curve element is the value. We can now turn this dictionary into a ``HoloMap`` by declaring the keys as corresponding to the frequency key dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(curve_dict, kdims=['frequency'])\n", + "hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` is multi-dimensional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using tuple keys and making sure each position in the tuple is assigned a corresponding ``kdim``, ``HoloMaps`` allow exploration of a multi-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "phases = [0, np.pi/2, np.pi, 3*np.pi/2]\n", + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in phases for f in frequencies}\n", + "hmap = hv.HoloMap(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` supports dictionary-like behavior" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloMaps support a number of features similar to regular dictionaries, including **assignment**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(kdims=['phase', 'frequency'])\n", + "for (phase, freq) in [(0,0.5), (0.5,0.5), (0.5,1), (0,1)]:\n", + " hmap[(phase, freq)] = sine_curve(phase,freq)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Key membership predicate**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(0, 0.5) in hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The ``get`` method:**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap.get((0,0.5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` supports multi-dimensional indexing and slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One difference with regular dictionaries, is that ``HoloMaps`` support multi-dimensional indexing:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap[0,1] + hmap[0,:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See the [User Guide] for more information on selecting, slicing and indexing." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` is ordered" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One difference with regular Python dictionaries is that they are *ordered*, which can be observed by inspecting the ``.data`` attribute:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that internally, ``HoloMaps`` uses [``OrderedDict``](https://docs.python.org/3.6/library/collections.html#collections.OrderedDict) where the keys are sorted by default. You can set ``sort=False`` and then either supply an ordered list of (key, value) tuples, an ``OrderedDict`` or insert items in a chosen order.\n", + "\n", + "That said, there is generally very-little reason to ever use ``sort=False`` as regular Python dictionaries do not have a well-defined key ordering and ``HoloViews`` sliders work regardless of the ordering used. The only reason to set the ordering is if you wish to iterate over a ``HoloMap`` using the ``items``, ``keys``, ``values`` methods or use the iterator interface." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/containers/matplotlib/NdLayout.ipynb b/examples/containers/matplotlib/NdLayout.ipynb new file mode 100644 index 0000000000..2d6f3037c1 --- /dev/null +++ b/examples/containers/matplotlib/NdLayout.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    NdLayout Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](./NdLayout.ipynb)
    [Bokeh](../bokeh/NdLayout.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An ``NdLayout`` is a multi-dimensional dictionary of HoloViews elements presented side-by-side like a ``Layout``. An ``NdLayout`` can be considered as a special-case of ``HoloMap`` that can hold any one type of HoloViews container or element as long as it isn't another ``NdLayout`` or ``Layout``. Unlike a regular ``Layout`` that can be built with the ``+`` operator, the items in an ``NdOverlay`` container have corresponding keys and must all have the same type. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdLayout`` holds dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``sine_curve`` function below, we can declare a dictionary of ``Curve`` elements, where the keys correspond to the frequency values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "\n", + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "curve_dict = {f:sine_curve(0,f) for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a dictionary where the frequency is the key and the corresponding curve element is the value. We can now turn this dictionary into an ``NdLayout`` by declaring the keys as corresponding to the frequency key dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "NdLayout = hv.NdLayout(curve_dict, kdims=['frequency'])\n", + "NdLayout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdLayout`` is multi-dimensional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using tuple keys and making sure each position in the tuple is assigned a corresponding ``kdim``, ``NdLayouts`` allow visualization of a multi-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in [0, np.pi/2] for f in [0.5, 0.75]}\n", + "NdLayout = hv.NdLayout(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "NdLayout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdLayout`` is similar to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other than the difference in the visual semantics, whereby ``NdLayout`` displays its contents overlaid, ``NdLayout`` are very similar to ``HoloMap`` (see the [``HoloMap``](./HoloMap.ipynb) notebook for more information).\n", + "\n", + "One way to demonstrate the similarity of these two containers is to cast our ``NdLayout`` object to ``HoloMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hv.HoloMap(NdLayout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We could now cast this ``HoloMap`` back to an ``NdLayout``. Unlike the other container examples such as [``GridSpace``](./GridSpace.ipynb) and [``NdOverlay``](./NdOverlay.ipynb), we cannot display this reconstituted ``NdLayout`` next to the ``HoloMap`` above using ``+`` as a ``Layout`` cannot hold an ``NdLayout`` in the same way than an ``NdLayout`` cannot hold a ``Layout``." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/containers/matplotlib/NdOverlay.ipynb b/examples/containers/matplotlib/NdOverlay.ipynb new file mode 100644 index 0000000000..81a53ff271 --- /dev/null +++ b/examples/containers/matplotlib/NdOverlay.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    NdOverlay Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](./NdOverlay.ipynb)
    [Bokeh](../bokeh/NdOverlay.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An ``NdOverlay`` is a multi-dimensional dictionary of HoloViews elements presented overlayed in the same space. An ``NdOverlay`` can be considered as a special-case of ``HoloMap`` that can only hold a single type of element at a time. Unlike a regular ``Overlay`` that can be built with the ``*`` operator, the items in an ``NdOverlay`` container have corresponding keys and must all have the same type. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdOverlay`` holds dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``sine_curve`` function below, we can declare a dictionary of ``Curve`` elements, where the keys correspond to the frequency values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "\n", + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "curve_dict = {f:sine_curve(0,f) for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a dictionary where the frequency is the key and the corresponding curve element is the value. We can now turn this dictionary into an ``NdOverlay`` by declaring the keys as corresponding to the frequency key dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ndoverlay = hv.NdOverlay(curve_dict, kdims=['frequency'])\n", + "ndoverlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the ``NdOverlay`` is displayed with a legend using colors defined by the ``Curve`` color cycle. For more information on using ``Cycle`` to define color cycling, see the [User Guide]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdOverlay`` is multi-dimensional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using tuple keys and making sure each position in the tuple is assigned a corresponding ``kdim``, ``NdOverlays`` allow visualization of a multi-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in [0, np.pi/2] for f in [0.5, 0.75]}\n", + "ndoverlay = hv.NdOverlay(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "ndoverlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdOverlay`` is similar to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other than the difference in the visual semantics, whereby ``NdOverlay`` displays its contents overlaid, ``NdOverlay`` are very similar to ``HoloMap`` (see the [``HoloMap``](./HoloMap.ipynb) notebook for more information).\n", + "\n", + "One way to demonstrate the similarity of these two containers is to cast our ``ndoverlay`` object to ``HoloMap`` and back to an ``NdOverlay``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(ndoverlay)\n", + "hmap + hv.NdOverlay(hmap)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 06cfd11be32654d6ea5e6df7c1c4afe0bbb76fca Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 18:24:40 +0100 Subject: [PATCH 79/99] Mirrored website structure in examples/ --- doc/getting_started/Customization.rst | 2 +- doc/getting_started/Gridded_Datasets.rst | 2 +- doc/getting_started/Introduction.rst | 2 +- doc/getting_started/Live_Data.rst | 2 +- doc/getting_started/Tabular_Datasets.rst | 2 +- doc/user_guide/Building_Composite_Objects.rst | 2 +- doc/user_guide/Continuous_Coordinates.rst | 2 +- doc/user_guide/Custom_Interactivity.rst | 2 +- doc/user_guide/Customizing_Plots.rst | 2 +- doc/user_guide/Deploying_Bokeh_Apps.rst | 2 +- doc/user_guide/Exporting_and_Archiving.rst | 2 +- doc/user_guide/Gridded_Datasets.rst | 2 +- .../Indexing_and_Selecting_Data.rst | 2 +- doc/user_guide/Large_Data.rst | 2 +- doc/user_guide/Live_Data.rst | 2 +- doc/user_guide/Plotting_with_Bokeh.rst | 2 +- doc/user_guide/Responding_to_Events.rst | 2 +- doc/user_guide/Tabular_Datasets.rst | 2 +- doc/user_guide/Transforming_Elements.rst | 2 +- .../assets}/diseases.csv.gz | Bin .../assets}/hourly_taxi_data.npz | Bin .../datasets => examples/assets}/penguins.png | 0 .../assets}/spike_train.csv.gz | Bin .../assets}/station_info.csv | 0 .../assets}/twophoton.npz | Bin .../{ => gallery}/apps/bokeh/crossfilter.py | 0 .../{ => gallery}/apps/bokeh/game_of_life.py | 0 .../{ => gallery}/apps/bokeh/gapminder.py | 0 .../{ => gallery}/apps/bokeh/mandelbrot.py | 0 .../{ => gallery}/apps/bokeh/nytaxi_hover.py | 0 examples/{ => gallery}/apps/bokeh/player.py | 0 .../apps/bokeh/selection_stream.py | 0 .../demos/bokeh/area_chart.ipynb | 0 .../bokeh/bachelors_degrees_by_gender.ipynb | 0 .../demos/bokeh/bars_economic.ipynb | 0 .../demos/bokeh/boxplot_chart.ipynb | 0 .../demos/bokeh/dot_example.ipynb | 0 .../demos/bokeh/dragon_curve.ipynb | 0 .../demos/bokeh/dropdown_economic.ipynb | 0 .../demos/bokeh/histogram_example.ipynb | 0 .../demos/bokeh/iris_example.ipynb | 0 .../demos/bokeh/iris_splom_example.ipynb | 0 .../demos/bokeh/legend_example.ipynb | 0 .../demos/bokeh/lesmis_example.ipynb | 0 .../bokeh/lorenz_attractor_example.ipynb | 0 .../demos/bokeh/mandelbrot_section.ipynb | 0 .../demos/bokeh/measles_example.ipynb | 0 .../demos/bokeh/quiver_demo.ipynb | 0 .../demos/bokeh/scatter_economic.ipynb | 0 .../demos/bokeh/square_limit.ipynb | 0 .../demos/bokeh/step_chart.ipynb | 0 .../demos/bokeh/stocks_example.ipynb | 0 .../bokeh/texas_choropleth_example.ipynb | 0 .../demos/bokeh/topographic_hillshading.ipynb | 0 .../demos/bokeh/us_unemployment.ipynb | 0 .../demos/bokeh/verhulst_mandelbrot.ipynb | 0 .../demos/matplotlib/area_chart.ipynb | 0 .../bachelors_degrees_by_gender.ipynb | 0 .../demos/matplotlib/bars_economic.ipynb | 0 .../demos/matplotlib/boxplot_chart.ipynb | 0 .../demos/matplotlib/dragon_curve.ipynb | 0 .../demos/matplotlib/dropdown_economic.ipynb | 0 .../demos/matplotlib/histogram_example.ipynb | 0 .../demos/matplotlib/iris_example.ipynb | 0 .../demos/matplotlib/iris_splom_example.ipynb | 0 .../demos/matplotlib/legend_example.ipynb | 0 .../matplotlib/lorenz_attractor_example.ipynb | 0 .../demos/matplotlib/mandelbrot_section.ipynb | 0 .../demos/matplotlib/measles_example.ipynb | 0 .../demos/matplotlib/polar_scatter_demo.ipynb | 0 .../demos/matplotlib/quiver_demo.ipynb | 0 .../demos/matplotlib/scatter_economic.ipynb | 0 .../demos/matplotlib/square_limit.ipynb | 0 .../demos/matplotlib/step_chart.ipynb | 0 .../demos/matplotlib/stocks_example.ipynb | 0 .../demos/matplotlib/surface_3d.ipynb | 0 .../matplotlib/texas_choropleth_example.ipynb | 0 .../matplotlib/topographic_hillshading.ipynb | 0 .../demos/matplotlib/trisurf3d_demo.ipynb | 0 .../demos/matplotlib/us_unemployment.ipynb | 0 .../matplotlib/verhulst_mandelbrot.ipynb | 0 .../demos/plotly/surface_3d.ipynb | 0 .../demos/plotly/trisurf3d_demo.ipynb | 0 .../getting_started/1-Introduction.ipynb | 18 +++++++++--------- .../getting_started/2-Customization.ipynb | 2 +- .../getting_started/3-Tabular_Datasets.ipynb | 2 +- .../getting_started/4-Gridded_Datasets.ipynb | 2 +- .../getting_started/5-Live_Data.ipynb | 0 .../containers/matplotlib/GridSpace.ipynb | 0 .../containers/matplotlib/HoloMap.ipynb | 0 .../containers/matplotlib/NdLayout.ipynb | 0 .../containers/matplotlib/NdOverlay.ipynb | 0 .../elements/assets/penguins.png | Bin .../{ => reference}/elements/bokeh/Area.ipynb | 0 .../{ => reference}/elements/bokeh/Bars.ipynb | 0 .../elements/bokeh/Bounds.ipynb | 0 .../{ => reference}/elements/bokeh/Box.ipynb | 0 .../elements/bokeh/BoxWhisker.ipynb | 0 .../elements/bokeh/Contours.ipynb | 0 .../elements/bokeh/Curve.ipynb | 0 .../elements/bokeh/Ellipse.ipynb | 0 .../elements/bokeh/ErrorBars.ipynb | 0 .../elements/bokeh/HLine.ipynb | 0 .../{ => reference}/elements/bokeh/HSV.ipynb | 0 .../elements/bokeh/HeatMap.ipynb | 0 .../elements/bokeh/Histogram.ipynb | 0 .../elements/bokeh/Image.ipynb | 0 .../elements/bokeh/ItemTable.ipynb | 0 .../{ => reference}/elements/bokeh/Path.ipynb | 0 .../elements/bokeh/Points.ipynb | 0 .../elements/bokeh/Polygons.ipynb | 0 .../elements/bokeh/QuadMesh.ipynb | 0 .../{ => reference}/elements/bokeh/RGB.ipynb | 0 .../elements/bokeh/Raster.ipynb | 0 .../elements/bokeh/Scatter.ipynb | 0 .../elements/bokeh/Spikes.ipynb | 0 .../elements/bokeh/Spline.ipynb | 0 .../elements/bokeh/Spread.ipynb | 0 .../elements/bokeh/Table.ipynb | 0 .../{ => reference}/elements/bokeh/Text.ipynb | 0 .../elements/bokeh/VLine.ipynb | 0 .../elements/bokeh/VectorField.ipynb | 0 .../elements/matplotlib/Area.ipynb | 0 .../elements/matplotlib/Arrow.ipynb | 0 .../elements/matplotlib/Bars.ipynb | 0 .../elements/matplotlib/Bounds.ipynb | 0 .../elements/matplotlib/Box.ipynb | 0 .../elements/matplotlib/BoxWhisker.ipynb | 0 .../elements/matplotlib/Contours.ipynb | 0 .../elements/matplotlib/Curve.ipynb | 0 .../elements/matplotlib/Ellipse.ipynb | 0 .../elements/matplotlib/ErrorBars.ipynb | 0 .../elements/matplotlib/HLine.ipynb | 0 .../elements/matplotlib/HSV.ipynb | 0 .../elements/matplotlib/HeatMap.ipynb | 0 .../elements/matplotlib/Histogram.ipynb | 0 .../elements/matplotlib/Image.ipynb | 0 .../elements/matplotlib/ItemTable.ipynb | 0 .../elements/matplotlib/Path.ipynb | 0 .../elements/matplotlib/Points.ipynb | 0 .../elements/matplotlib/Polygons.ipynb | 0 .../elements/matplotlib/QuadMesh.ipynb | 0 .../elements/matplotlib/RGB.ipynb | 0 .../elements/matplotlib/Raster.ipynb | 0 .../elements/matplotlib/Scatter.ipynb | 0 .../elements/matplotlib/Scatter3D.ipynb | 0 .../elements/matplotlib/Spikes.ipynb | 0 .../elements/matplotlib/Spline.ipynb | 0 .../elements/matplotlib/Spread.ipynb | 0 .../elements/matplotlib/Surface.ipynb | 0 .../elements/matplotlib/Table.ipynb | 0 .../elements/matplotlib/Text.ipynb | 0 .../elements/matplotlib/Trisurface.ipynb | 0 .../elements/matplotlib/VLine.ipynb | 0 .../elements/matplotlib/VectorField.ipynb | 0 .../streams/bokeh/bounds_selection.ipynb | 0 .../streams/bokeh/boundsx_selection.ipynb | 0 .../streams/bokeh/boundsy_selection.ipynb | 0 .../streams/bokeh/curve_selection.ipynb | 0 .../streams/bokeh/heatmap_tap.ipynb | 0 .../bokeh/linked_pointer_crosssection.ipynb | 0 .../streams/bokeh/multiple_selection.ipynb | 0 .../streams/bokeh/point_selection1D.ipynb | 0 .../streams/bokeh/pointer_crosshair.ipynb | 0 .../streams/bokeh/range_histogram.ipynb | 0 .../streams/bokeh/regression_tap.ipynb | 0 .../user_guide/01-Annotating_Data.ipynb | 0 .../user_guide/02-Composing_Elements.ipynb | 0 .../user_guide/03-Customizing_Plots.ipynb | 0 .../04-Dimensioned_Containers.ipynb | 0 .../05-Building_Composite_Objects.ipynb | 0 .../user_guide/06-Live_Data.ipynb | 0 .../user_guide/07-Tabular_Datasets.ipynb | 0 .../user_guide/08-Gridded_Datasets.ipynb | 0 .../09-Indexing_and_Selecting_Data.ipynb | 0 .../user_guide/10-Transforming_Elements.ipynb | 0 .../user_guide/11-Responding_to_Events.ipynb | 0 .../user_guide/12-Custom_Interactivity.ipynb | 0 .../user_guide/14-Large_Data.ipynb | 0 .../user_guide/Continuous_Coordinates.ipynb | 0 .../user_guide/Deploying_Bokeh_Apps.ipynb | 0 .../user_guide/Exporting_and_Archiving.ipynb | 0 .../user_guide/Plotting_with_Bokeh.ipynb | 0 183 files changed, 31 insertions(+), 31 deletions(-) rename {guides/datasets => examples/assets}/diseases.csv.gz (100%) rename {guides/datasets => examples/assets}/hourly_taxi_data.npz (100%) rename {guides/datasets => examples/assets}/penguins.png (100%) rename {guides/datasets => examples/assets}/spike_train.csv.gz (100%) rename {guides/datasets => examples/assets}/station_info.csv (100%) rename {guides/datasets => examples/assets}/twophoton.npz (100%) rename examples/{ => gallery}/apps/bokeh/crossfilter.py (100%) rename examples/{ => gallery}/apps/bokeh/game_of_life.py (100%) rename examples/{ => gallery}/apps/bokeh/gapminder.py (100%) rename examples/{ => gallery}/apps/bokeh/mandelbrot.py (100%) rename examples/{ => gallery}/apps/bokeh/nytaxi_hover.py (100%) rename examples/{ => gallery}/apps/bokeh/player.py (100%) rename examples/{ => gallery}/apps/bokeh/selection_stream.py (100%) rename examples/{ => gallery}/demos/bokeh/area_chart.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/bachelors_degrees_by_gender.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/bars_economic.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/boxplot_chart.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/dot_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/dragon_curve.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/dropdown_economic.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/histogram_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/iris_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/iris_splom_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/legend_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/lesmis_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/lorenz_attractor_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/mandelbrot_section.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/measles_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/quiver_demo.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/scatter_economic.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/square_limit.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/step_chart.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/stocks_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/texas_choropleth_example.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/topographic_hillshading.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/us_unemployment.ipynb (100%) rename examples/{ => gallery}/demos/bokeh/verhulst_mandelbrot.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/area_chart.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/bachelors_degrees_by_gender.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/bars_economic.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/boxplot_chart.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/dragon_curve.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/dropdown_economic.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/histogram_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/iris_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/iris_splom_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/legend_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/lorenz_attractor_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/mandelbrot_section.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/measles_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/polar_scatter_demo.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/quiver_demo.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/scatter_economic.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/square_limit.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/step_chart.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/stocks_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/surface_3d.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/texas_choropleth_example.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/topographic_hillshading.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/trisurf3d_demo.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/us_unemployment.ipynb (100%) rename examples/{ => gallery}/demos/matplotlib/verhulst_mandelbrot.ipynb (100%) rename examples/{ => gallery}/demos/plotly/surface_3d.ipynb (100%) rename examples/{ => gallery}/demos/plotly/trisurf3d_demo.ipynb (100%) rename {guides => examples}/getting_started/1-Introduction.ipynb (88%) rename {guides => examples}/getting_started/2-Customization.ipynb (99%) rename {guides => examples}/getting_started/3-Tabular_Datasets.ipynb (99%) rename {guides => examples}/getting_started/4-Gridded_Datasets.ipynb (99%) rename {guides => examples}/getting_started/5-Live_Data.ipynb (100%) rename examples/{ => reference}/containers/matplotlib/GridSpace.ipynb (100%) rename examples/{ => reference}/containers/matplotlib/HoloMap.ipynb (100%) rename examples/{ => reference}/containers/matplotlib/NdLayout.ipynb (100%) rename examples/{ => reference}/containers/matplotlib/NdOverlay.ipynb (100%) rename examples/{ => reference}/elements/assets/penguins.png (100%) rename examples/{ => reference}/elements/bokeh/Area.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Bars.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Bounds.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Box.ipynb (100%) rename examples/{ => reference}/elements/bokeh/BoxWhisker.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Contours.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Curve.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Ellipse.ipynb (100%) rename examples/{ => reference}/elements/bokeh/ErrorBars.ipynb (100%) rename examples/{ => reference}/elements/bokeh/HLine.ipynb (100%) rename examples/{ => reference}/elements/bokeh/HSV.ipynb (100%) rename examples/{ => reference}/elements/bokeh/HeatMap.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Histogram.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Image.ipynb (100%) rename examples/{ => reference}/elements/bokeh/ItemTable.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Path.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Points.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Polygons.ipynb (100%) rename examples/{ => reference}/elements/bokeh/QuadMesh.ipynb (100%) rename examples/{ => reference}/elements/bokeh/RGB.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Raster.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Scatter.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Spikes.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Spline.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Spread.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Table.ipynb (100%) rename examples/{ => reference}/elements/bokeh/Text.ipynb (100%) rename examples/{ => reference}/elements/bokeh/VLine.ipynb (100%) rename examples/{ => reference}/elements/bokeh/VectorField.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Area.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Arrow.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Bars.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Bounds.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Box.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/BoxWhisker.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Contours.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Curve.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Ellipse.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/ErrorBars.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/HLine.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/HSV.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/HeatMap.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Histogram.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Image.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/ItemTable.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Path.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Points.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Polygons.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/QuadMesh.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/RGB.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Raster.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Scatter.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Scatter3D.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Spikes.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Spline.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Spread.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Surface.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Table.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Text.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/Trisurface.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/VLine.ipynb (100%) rename examples/{ => reference}/elements/matplotlib/VectorField.ipynb (100%) rename examples/{ => reference}/streams/bokeh/bounds_selection.ipynb (100%) rename examples/{ => reference}/streams/bokeh/boundsx_selection.ipynb (100%) rename examples/{ => reference}/streams/bokeh/boundsy_selection.ipynb (100%) rename examples/{ => reference}/streams/bokeh/curve_selection.ipynb (100%) rename examples/{ => reference}/streams/bokeh/heatmap_tap.ipynb (100%) rename examples/{ => reference}/streams/bokeh/linked_pointer_crosssection.ipynb (100%) rename examples/{ => reference}/streams/bokeh/multiple_selection.ipynb (100%) rename examples/{ => reference}/streams/bokeh/point_selection1D.ipynb (100%) rename examples/{ => reference}/streams/bokeh/pointer_crosshair.ipynb (100%) rename examples/{ => reference}/streams/bokeh/range_histogram.ipynb (100%) rename examples/{ => reference}/streams/bokeh/regression_tap.ipynb (100%) rename {guides => examples}/user_guide/01-Annotating_Data.ipynb (100%) rename {guides => examples}/user_guide/02-Composing_Elements.ipynb (100%) rename {guides => examples}/user_guide/03-Customizing_Plots.ipynb (100%) rename {guides => examples}/user_guide/04-Dimensioned_Containers.ipynb (100%) rename {guides => examples}/user_guide/05-Building_Composite_Objects.ipynb (100%) rename {guides => examples}/user_guide/06-Live_Data.ipynb (100%) rename {guides => examples}/user_guide/07-Tabular_Datasets.ipynb (100%) rename {guides => examples}/user_guide/08-Gridded_Datasets.ipynb (100%) rename {guides => examples}/user_guide/09-Indexing_and_Selecting_Data.ipynb (100%) rename {guides => examples}/user_guide/10-Transforming_Elements.ipynb (100%) rename {guides => examples}/user_guide/11-Responding_to_Events.ipynb (100%) rename {guides => examples}/user_guide/12-Custom_Interactivity.ipynb (100%) rename {guides => examples}/user_guide/14-Large_Data.ipynb (100%) rename {guides => examples}/user_guide/Continuous_Coordinates.ipynb (100%) rename {guides => examples}/user_guide/Deploying_Bokeh_Apps.ipynb (100%) rename {guides => examples}/user_guide/Exporting_and_Archiving.ipynb (100%) rename {guides => examples}/user_guide/Plotting_with_Bokeh.ipynb (100%) diff --git a/doc/getting_started/Customization.rst b/doc/getting_started/Customization.rst index 5c2752b727..c47261930b 100644 --- a/doc/getting_started/Customization.rst +++ b/doc/getting_started/Customization.rst @@ -1,5 +1,5 @@ Customization _____________ -.. notebook:: holoviews ../../guides/getting_started/2-Customization.ipynb +.. notebook:: holoviews ../../examples/getting_started/2-Customization.ipynb :offset: 1 diff --git a/doc/getting_started/Gridded_Datasets.rst b/doc/getting_started/Gridded_Datasets.rst index bac6367762..b062e7207e 100644 --- a/doc/getting_started/Gridded_Datasets.rst +++ b/doc/getting_started/Gridded_Datasets.rst @@ -1,5 +1,5 @@ Gridded Datasets ________________ -.. notebook:: holoviews ../../guides/getting_started/4-Gridded_Datasets.ipynb +.. notebook:: holoviews ../../examples/getting_started/4-Gridded_Datasets.ipynb :offset: 1 diff --git a/doc/getting_started/Introduction.rst b/doc/getting_started/Introduction.rst index 9ede9c8e32..f1b4454e52 100644 --- a/doc/getting_started/Introduction.rst +++ b/doc/getting_started/Introduction.rst @@ -1,5 +1,5 @@ Introduction ____________ -.. notebook:: holoviews ../../guides/getting_started/1-Introduction.ipynb +.. notebook:: holoviews ../../examples/getting_started/1-Introduction.ipynb :offset: 1 diff --git a/doc/getting_started/Live_Data.rst b/doc/getting_started/Live_Data.rst index b99b2adc5e..4b0d6711ca 100644 --- a/doc/getting_started/Live_Data.rst +++ b/doc/getting_started/Live_Data.rst @@ -1,6 +1,6 @@ Live Data _________ -.. notebook:: holoviews ../../guides/getting_started/5-Live_Data.ipynb +.. notebook:: holoviews ../../examples/getting_started/5-Live_Data.ipynb :skip_output: When run live, this cell's output should match the behavior of the GIF below :offset: 1 diff --git a/doc/getting_started/Tabular_Datasets.rst b/doc/getting_started/Tabular_Datasets.rst index 387dbbb135..46758d5320 100644 --- a/doc/getting_started/Tabular_Datasets.rst +++ b/doc/getting_started/Tabular_Datasets.rst @@ -1,5 +1,5 @@ Tabular Datasets ________________ -.. notebook:: holoviews ../../guides/getting_started/3-Tabular_Datasets.ipynb +.. notebook:: holoviews ../../examples/getting_started/3-Tabular_Datasets.ipynb :offset: 1 diff --git a/doc/user_guide/Building_Composite_Objects.rst b/doc/user_guide/Building_Composite_Objects.rst index c98d892821..922808081b 100644 --- a/doc/user_guide/Building_Composite_Objects.rst +++ b/doc/user_guide/Building_Composite_Objects.rst @@ -1,5 +1,5 @@ Building Composite Objects __________________________ -.. notebook:: holoviews ../../guides/user_guide/05-Building_Composite_Objects.ipynb +.. notebook:: holoviews ../../examples/user_guide/05-Building_Composite_Objects.ipynb :offset: 1 diff --git a/doc/user_guide/Continuous_Coordinates.rst b/doc/user_guide/Continuous_Coordinates.rst index a2c3a70569..0d0206df49 100644 --- a/doc/user_guide/Continuous_Coordinates.rst +++ b/doc/user_guide/Continuous_Coordinates.rst @@ -1,5 +1,5 @@ Continuous Coordinates ______________________ -.. notebook:: holoviews ../../guides/user_guide/Continuous_Coordinates.ipynb +.. notebook:: holoviews ../../examples/user_guide/Continuous_Coordinates.ipynb :offset: 1 diff --git a/doc/user_guide/Custom_Interactivity.rst b/doc/user_guide/Custom_Interactivity.rst index c26982924f..eb712588d6 100644 --- a/doc/user_guide/Custom_Interactivity.rst +++ b/doc/user_guide/Custom_Interactivity.rst @@ -1,5 +1,5 @@ Custom Interactivity ____________________ -.. notebook:: holoviews ../../guides/user_guide/12-Custom_Interactivity.ipynb +.. notebook:: holoviews ../../examples/user_guide/12-Custom_Interactivity.ipynb :offset: 1 diff --git a/doc/user_guide/Customizing_Plots.rst b/doc/user_guide/Customizing_Plots.rst index e65175f22a..f1f0ef949c 100644 --- a/doc/user_guide/Customizing_Plots.rst +++ b/doc/user_guide/Customizing_Plots.rst @@ -1,5 +1,5 @@ Customizing Plots _________________ -.. notebook:: holoviews ../../guides/user_guide/03-Customizing_Plots.ipynb +.. notebook:: holoviews ../../examples/user_guide/03-Customizing_Plots.ipynb :offset: 1 diff --git a/doc/user_guide/Deploying_Bokeh_Apps.rst b/doc/user_guide/Deploying_Bokeh_Apps.rst index c62749115c..46f9197b79 100644 --- a/doc/user_guide/Deploying_Bokeh_Apps.rst +++ b/doc/user_guide/Deploying_Bokeh_Apps.rst @@ -1,6 +1,6 @@ Deploying Bokeh Apps ____________________ -.. notebook:: holoviews ../../guides/user_guide/Deploying_Bokeh_Apps.ipynb +.. notebook:: holoviews ../../examples/user_guide/Deploying_Bokeh_Apps.ipynb :skip_execute: True :offset: 1 diff --git a/doc/user_guide/Exporting_and_Archiving.rst b/doc/user_guide/Exporting_and_Archiving.rst index 3c9d05fdf7..f20976da79 100644 --- a/doc/user_guide/Exporting_and_Archiving.rst +++ b/doc/user_guide/Exporting_and_Archiving.rst @@ -1,5 +1,5 @@ Exporting and Archiving _______________________ -.. notebook:: holoviews ../../guides/user_guide/Exporting_and_Archiving.ipynb +.. notebook:: holoviews ../../examples/user_guide/Exporting_and_Archiving.ipynb :offset: 1 diff --git a/doc/user_guide/Gridded_Datasets.rst b/doc/user_guide/Gridded_Datasets.rst index 29bac246a7..05b4f1426d 100644 --- a/doc/user_guide/Gridded_Datasets.rst +++ b/doc/user_guide/Gridded_Datasets.rst @@ -1,5 +1,5 @@ Gridded Datasets ________________ -.. notebook:: holoviews ../../guides/user_guide/08-Gridded_Datasets.ipynb +.. notebook:: holoviews ../../examples/user_guide/08-Gridded_Datasets.ipynb :offset: 1 diff --git a/doc/user_guide/Indexing_and_Selecting_Data.rst b/doc/user_guide/Indexing_and_Selecting_Data.rst index 026373db82..6f3ae69fd4 100644 --- a/doc/user_guide/Indexing_and_Selecting_Data.rst +++ b/doc/user_guide/Indexing_and_Selecting_Data.rst @@ -1,5 +1,5 @@ Indexing and Selecting Data ___________________________ -.. notebook:: holoviews ../../guides/user_guide/09-Indexing_and_Selecting_Data.ipynb +.. notebook:: holoviews ../../examples/user_guide/09-Indexing_and_Selecting_Data.ipynb :offset: 1 diff --git a/doc/user_guide/Large_Data.rst b/doc/user_guide/Large_Data.rst index ab97957fc2..63b998eee8 100644 --- a/doc/user_guide/Large_Data.rst +++ b/doc/user_guide/Large_Data.rst @@ -1,5 +1,5 @@ Working with large data using datashader ________________________________________ -.. notebook:: holoviews ../../guides/user_guide/14-Large_Data.ipynb +.. notebook:: holoviews ../../examples/user_guide/14-Large_Data.ipynb :offset: 1 diff --git a/doc/user_guide/Live_Data.rst b/doc/user_guide/Live_Data.rst index ca63f00ea6..5a1057b223 100644 --- a/doc/user_guide/Live_Data.rst +++ b/doc/user_guide/Live_Data.rst @@ -1,5 +1,5 @@ Live Data _________ -.. notebook:: holoviews ../../guides/user_guide/06-Live_Data.ipynb +.. notebook:: holoviews ../../examples/user_guide/06-Live_Data.ipynb :offset: 1 diff --git a/doc/user_guide/Plotting_with_Bokeh.rst b/doc/user_guide/Plotting_with_Bokeh.rst index ac819474ab..1bd08c6425 100644 --- a/doc/user_guide/Plotting_with_Bokeh.rst +++ b/doc/user_guide/Plotting_with_Bokeh.rst @@ -1,5 +1,5 @@ Plotting with Bokeh ___________________ -.. notebook:: holoviews ../../guides/user_guide/Plotting_with_Bokeh.ipynb +.. notebook:: holoviews ../../examples/user_guide/Plotting_with_Bokeh.ipynb :offset: 1 diff --git a/doc/user_guide/Responding_to_Events.rst b/doc/user_guide/Responding_to_Events.rst index 47633354f0..aa043ce68a 100644 --- a/doc/user_guide/Responding_to_Events.rst +++ b/doc/user_guide/Responding_to_Events.rst @@ -1,5 +1,5 @@ Responding to Events ____________________ -.. notebook:: holoviews ../../guides/user_guide/11-Responding_to_Events.ipynb +.. notebook:: holoviews ../../examples/user_guide/11-Responding_to_Events.ipynb :offset: 1 diff --git a/doc/user_guide/Tabular_Datasets.rst b/doc/user_guide/Tabular_Datasets.rst index b192c68a10..ebe6841bb0 100644 --- a/doc/user_guide/Tabular_Datasets.rst +++ b/doc/user_guide/Tabular_Datasets.rst @@ -1,5 +1,5 @@ Tabular Datasets ________________ -.. notebook:: holoviews ../../guides/user_guide/07-Tabular_Datasets.ipynb +.. notebook:: holoviews ../../examples/user_guide/07-Tabular_Datasets.ipynb :offset: 1 diff --git a/doc/user_guide/Transforming_Elements.rst b/doc/user_guide/Transforming_Elements.rst index 5bc8e7ef87..d253918f0a 100644 --- a/doc/user_guide/Transforming_Elements.rst +++ b/doc/user_guide/Transforming_Elements.rst @@ -1,5 +1,5 @@ Transforming Elements _____________________ -.. notebook:: holoviews ../../guides/user_guide/10-Transforming_Elements.ipynb +.. notebook:: holoviews ../../examples/user_guide/10-Transforming_Elements.ipynb :offset: 1 diff --git a/guides/datasets/diseases.csv.gz b/examples/assets/diseases.csv.gz similarity index 100% rename from guides/datasets/diseases.csv.gz rename to examples/assets/diseases.csv.gz diff --git a/guides/datasets/hourly_taxi_data.npz b/examples/assets/hourly_taxi_data.npz similarity index 100% rename from guides/datasets/hourly_taxi_data.npz rename to examples/assets/hourly_taxi_data.npz diff --git a/guides/datasets/penguins.png b/examples/assets/penguins.png similarity index 100% rename from guides/datasets/penguins.png rename to examples/assets/penguins.png diff --git a/guides/datasets/spike_train.csv.gz b/examples/assets/spike_train.csv.gz similarity index 100% rename from guides/datasets/spike_train.csv.gz rename to examples/assets/spike_train.csv.gz diff --git a/guides/datasets/station_info.csv b/examples/assets/station_info.csv similarity index 100% rename from guides/datasets/station_info.csv rename to examples/assets/station_info.csv diff --git a/guides/datasets/twophoton.npz b/examples/assets/twophoton.npz similarity index 100% rename from guides/datasets/twophoton.npz rename to examples/assets/twophoton.npz diff --git a/examples/apps/bokeh/crossfilter.py b/examples/gallery/apps/bokeh/crossfilter.py similarity index 100% rename from examples/apps/bokeh/crossfilter.py rename to examples/gallery/apps/bokeh/crossfilter.py diff --git a/examples/apps/bokeh/game_of_life.py b/examples/gallery/apps/bokeh/game_of_life.py similarity index 100% rename from examples/apps/bokeh/game_of_life.py rename to examples/gallery/apps/bokeh/game_of_life.py diff --git a/examples/apps/bokeh/gapminder.py b/examples/gallery/apps/bokeh/gapminder.py similarity index 100% rename from examples/apps/bokeh/gapminder.py rename to examples/gallery/apps/bokeh/gapminder.py diff --git a/examples/apps/bokeh/mandelbrot.py b/examples/gallery/apps/bokeh/mandelbrot.py similarity index 100% rename from examples/apps/bokeh/mandelbrot.py rename to examples/gallery/apps/bokeh/mandelbrot.py diff --git a/examples/apps/bokeh/nytaxi_hover.py b/examples/gallery/apps/bokeh/nytaxi_hover.py similarity index 100% rename from examples/apps/bokeh/nytaxi_hover.py rename to examples/gallery/apps/bokeh/nytaxi_hover.py diff --git a/examples/apps/bokeh/player.py b/examples/gallery/apps/bokeh/player.py similarity index 100% rename from examples/apps/bokeh/player.py rename to examples/gallery/apps/bokeh/player.py diff --git a/examples/apps/bokeh/selection_stream.py b/examples/gallery/apps/bokeh/selection_stream.py similarity index 100% rename from examples/apps/bokeh/selection_stream.py rename to examples/gallery/apps/bokeh/selection_stream.py diff --git a/examples/demos/bokeh/area_chart.ipynb b/examples/gallery/demos/bokeh/area_chart.ipynb similarity index 100% rename from examples/demos/bokeh/area_chart.ipynb rename to examples/gallery/demos/bokeh/area_chart.ipynb diff --git a/examples/demos/bokeh/bachelors_degrees_by_gender.ipynb b/examples/gallery/demos/bokeh/bachelors_degrees_by_gender.ipynb similarity index 100% rename from examples/demos/bokeh/bachelors_degrees_by_gender.ipynb rename to examples/gallery/demos/bokeh/bachelors_degrees_by_gender.ipynb diff --git a/examples/demos/bokeh/bars_economic.ipynb b/examples/gallery/demos/bokeh/bars_economic.ipynb similarity index 100% rename from examples/demos/bokeh/bars_economic.ipynb rename to examples/gallery/demos/bokeh/bars_economic.ipynb diff --git a/examples/demos/bokeh/boxplot_chart.ipynb b/examples/gallery/demos/bokeh/boxplot_chart.ipynb similarity index 100% rename from examples/demos/bokeh/boxplot_chart.ipynb rename to examples/gallery/demos/bokeh/boxplot_chart.ipynb diff --git a/examples/demos/bokeh/dot_example.ipynb b/examples/gallery/demos/bokeh/dot_example.ipynb similarity index 100% rename from examples/demos/bokeh/dot_example.ipynb rename to examples/gallery/demos/bokeh/dot_example.ipynb diff --git a/examples/demos/bokeh/dragon_curve.ipynb b/examples/gallery/demos/bokeh/dragon_curve.ipynb similarity index 100% rename from examples/demos/bokeh/dragon_curve.ipynb rename to examples/gallery/demos/bokeh/dragon_curve.ipynb diff --git a/examples/demos/bokeh/dropdown_economic.ipynb b/examples/gallery/demos/bokeh/dropdown_economic.ipynb similarity index 100% rename from examples/demos/bokeh/dropdown_economic.ipynb rename to examples/gallery/demos/bokeh/dropdown_economic.ipynb diff --git a/examples/demos/bokeh/histogram_example.ipynb b/examples/gallery/demos/bokeh/histogram_example.ipynb similarity index 100% rename from examples/demos/bokeh/histogram_example.ipynb rename to examples/gallery/demos/bokeh/histogram_example.ipynb diff --git a/examples/demos/bokeh/iris_example.ipynb b/examples/gallery/demos/bokeh/iris_example.ipynb similarity index 100% rename from examples/demos/bokeh/iris_example.ipynb rename to examples/gallery/demos/bokeh/iris_example.ipynb diff --git a/examples/demos/bokeh/iris_splom_example.ipynb b/examples/gallery/demos/bokeh/iris_splom_example.ipynb similarity index 100% rename from examples/demos/bokeh/iris_splom_example.ipynb rename to examples/gallery/demos/bokeh/iris_splom_example.ipynb diff --git a/examples/demos/bokeh/legend_example.ipynb b/examples/gallery/demos/bokeh/legend_example.ipynb similarity index 100% rename from examples/demos/bokeh/legend_example.ipynb rename to examples/gallery/demos/bokeh/legend_example.ipynb diff --git a/examples/demos/bokeh/lesmis_example.ipynb b/examples/gallery/demos/bokeh/lesmis_example.ipynb similarity index 100% rename from examples/demos/bokeh/lesmis_example.ipynb rename to examples/gallery/demos/bokeh/lesmis_example.ipynb diff --git a/examples/demos/bokeh/lorenz_attractor_example.ipynb b/examples/gallery/demos/bokeh/lorenz_attractor_example.ipynb similarity index 100% rename from examples/demos/bokeh/lorenz_attractor_example.ipynb rename to examples/gallery/demos/bokeh/lorenz_attractor_example.ipynb diff --git a/examples/demos/bokeh/mandelbrot_section.ipynb b/examples/gallery/demos/bokeh/mandelbrot_section.ipynb similarity index 100% rename from examples/demos/bokeh/mandelbrot_section.ipynb rename to examples/gallery/demos/bokeh/mandelbrot_section.ipynb diff --git a/examples/demos/bokeh/measles_example.ipynb b/examples/gallery/demos/bokeh/measles_example.ipynb similarity index 100% rename from examples/demos/bokeh/measles_example.ipynb rename to examples/gallery/demos/bokeh/measles_example.ipynb diff --git a/examples/demos/bokeh/quiver_demo.ipynb b/examples/gallery/demos/bokeh/quiver_demo.ipynb similarity index 100% rename from examples/demos/bokeh/quiver_demo.ipynb rename to examples/gallery/demos/bokeh/quiver_demo.ipynb diff --git a/examples/demos/bokeh/scatter_economic.ipynb b/examples/gallery/demos/bokeh/scatter_economic.ipynb similarity index 100% rename from examples/demos/bokeh/scatter_economic.ipynb rename to examples/gallery/demos/bokeh/scatter_economic.ipynb diff --git a/examples/demos/bokeh/square_limit.ipynb b/examples/gallery/demos/bokeh/square_limit.ipynb similarity index 100% rename from examples/demos/bokeh/square_limit.ipynb rename to examples/gallery/demos/bokeh/square_limit.ipynb diff --git a/examples/demos/bokeh/step_chart.ipynb b/examples/gallery/demos/bokeh/step_chart.ipynb similarity index 100% rename from examples/demos/bokeh/step_chart.ipynb rename to examples/gallery/demos/bokeh/step_chart.ipynb diff --git a/examples/demos/bokeh/stocks_example.ipynb b/examples/gallery/demos/bokeh/stocks_example.ipynb similarity index 100% rename from examples/demos/bokeh/stocks_example.ipynb rename to examples/gallery/demos/bokeh/stocks_example.ipynb diff --git a/examples/demos/bokeh/texas_choropleth_example.ipynb b/examples/gallery/demos/bokeh/texas_choropleth_example.ipynb similarity index 100% rename from examples/demos/bokeh/texas_choropleth_example.ipynb rename to examples/gallery/demos/bokeh/texas_choropleth_example.ipynb diff --git a/examples/demos/bokeh/topographic_hillshading.ipynb b/examples/gallery/demos/bokeh/topographic_hillshading.ipynb similarity index 100% rename from examples/demos/bokeh/topographic_hillshading.ipynb rename to examples/gallery/demos/bokeh/topographic_hillshading.ipynb diff --git a/examples/demos/bokeh/us_unemployment.ipynb b/examples/gallery/demos/bokeh/us_unemployment.ipynb similarity index 100% rename from examples/demos/bokeh/us_unemployment.ipynb rename to examples/gallery/demos/bokeh/us_unemployment.ipynb diff --git a/examples/demos/bokeh/verhulst_mandelbrot.ipynb b/examples/gallery/demos/bokeh/verhulst_mandelbrot.ipynb similarity index 100% rename from examples/demos/bokeh/verhulst_mandelbrot.ipynb rename to examples/gallery/demos/bokeh/verhulst_mandelbrot.ipynb diff --git a/examples/demos/matplotlib/area_chart.ipynb b/examples/gallery/demos/matplotlib/area_chart.ipynb similarity index 100% rename from examples/demos/matplotlib/area_chart.ipynb rename to examples/gallery/demos/matplotlib/area_chart.ipynb diff --git a/examples/demos/matplotlib/bachelors_degrees_by_gender.ipynb b/examples/gallery/demos/matplotlib/bachelors_degrees_by_gender.ipynb similarity index 100% rename from examples/demos/matplotlib/bachelors_degrees_by_gender.ipynb rename to examples/gallery/demos/matplotlib/bachelors_degrees_by_gender.ipynb diff --git a/examples/demos/matplotlib/bars_economic.ipynb b/examples/gallery/demos/matplotlib/bars_economic.ipynb similarity index 100% rename from examples/demos/matplotlib/bars_economic.ipynb rename to examples/gallery/demos/matplotlib/bars_economic.ipynb diff --git a/examples/demos/matplotlib/boxplot_chart.ipynb b/examples/gallery/demos/matplotlib/boxplot_chart.ipynb similarity index 100% rename from examples/demos/matplotlib/boxplot_chart.ipynb rename to examples/gallery/demos/matplotlib/boxplot_chart.ipynb diff --git a/examples/demos/matplotlib/dragon_curve.ipynb b/examples/gallery/demos/matplotlib/dragon_curve.ipynb similarity index 100% rename from examples/demos/matplotlib/dragon_curve.ipynb rename to examples/gallery/demos/matplotlib/dragon_curve.ipynb diff --git a/examples/demos/matplotlib/dropdown_economic.ipynb b/examples/gallery/demos/matplotlib/dropdown_economic.ipynb similarity index 100% rename from examples/demos/matplotlib/dropdown_economic.ipynb rename to examples/gallery/demos/matplotlib/dropdown_economic.ipynb diff --git a/examples/demos/matplotlib/histogram_example.ipynb b/examples/gallery/demos/matplotlib/histogram_example.ipynb similarity index 100% rename from examples/demos/matplotlib/histogram_example.ipynb rename to examples/gallery/demos/matplotlib/histogram_example.ipynb diff --git a/examples/demos/matplotlib/iris_example.ipynb b/examples/gallery/demos/matplotlib/iris_example.ipynb similarity index 100% rename from examples/demos/matplotlib/iris_example.ipynb rename to examples/gallery/demos/matplotlib/iris_example.ipynb diff --git a/examples/demos/matplotlib/iris_splom_example.ipynb b/examples/gallery/demos/matplotlib/iris_splom_example.ipynb similarity index 100% rename from examples/demos/matplotlib/iris_splom_example.ipynb rename to examples/gallery/demos/matplotlib/iris_splom_example.ipynb diff --git a/examples/demos/matplotlib/legend_example.ipynb b/examples/gallery/demos/matplotlib/legend_example.ipynb similarity index 100% rename from examples/demos/matplotlib/legend_example.ipynb rename to examples/gallery/demos/matplotlib/legend_example.ipynb diff --git a/examples/demos/matplotlib/lorenz_attractor_example.ipynb b/examples/gallery/demos/matplotlib/lorenz_attractor_example.ipynb similarity index 100% rename from examples/demos/matplotlib/lorenz_attractor_example.ipynb rename to examples/gallery/demos/matplotlib/lorenz_attractor_example.ipynb diff --git a/examples/demos/matplotlib/mandelbrot_section.ipynb b/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb similarity index 100% rename from examples/demos/matplotlib/mandelbrot_section.ipynb rename to examples/gallery/demos/matplotlib/mandelbrot_section.ipynb diff --git a/examples/demos/matplotlib/measles_example.ipynb b/examples/gallery/demos/matplotlib/measles_example.ipynb similarity index 100% rename from examples/demos/matplotlib/measles_example.ipynb rename to examples/gallery/demos/matplotlib/measles_example.ipynb diff --git a/examples/demos/matplotlib/polar_scatter_demo.ipynb b/examples/gallery/demos/matplotlib/polar_scatter_demo.ipynb similarity index 100% rename from examples/demos/matplotlib/polar_scatter_demo.ipynb rename to examples/gallery/demos/matplotlib/polar_scatter_demo.ipynb diff --git a/examples/demos/matplotlib/quiver_demo.ipynb b/examples/gallery/demos/matplotlib/quiver_demo.ipynb similarity index 100% rename from examples/demos/matplotlib/quiver_demo.ipynb rename to examples/gallery/demos/matplotlib/quiver_demo.ipynb diff --git a/examples/demos/matplotlib/scatter_economic.ipynb b/examples/gallery/demos/matplotlib/scatter_economic.ipynb similarity index 100% rename from examples/demos/matplotlib/scatter_economic.ipynb rename to examples/gallery/demos/matplotlib/scatter_economic.ipynb diff --git a/examples/demos/matplotlib/square_limit.ipynb b/examples/gallery/demos/matplotlib/square_limit.ipynb similarity index 100% rename from examples/demos/matplotlib/square_limit.ipynb rename to examples/gallery/demos/matplotlib/square_limit.ipynb diff --git a/examples/demos/matplotlib/step_chart.ipynb b/examples/gallery/demos/matplotlib/step_chart.ipynb similarity index 100% rename from examples/demos/matplotlib/step_chart.ipynb rename to examples/gallery/demos/matplotlib/step_chart.ipynb diff --git a/examples/demos/matplotlib/stocks_example.ipynb b/examples/gallery/demos/matplotlib/stocks_example.ipynb similarity index 100% rename from examples/demos/matplotlib/stocks_example.ipynb rename to examples/gallery/demos/matplotlib/stocks_example.ipynb diff --git a/examples/demos/matplotlib/surface_3d.ipynb b/examples/gallery/demos/matplotlib/surface_3d.ipynb similarity index 100% rename from examples/demos/matplotlib/surface_3d.ipynb rename to examples/gallery/demos/matplotlib/surface_3d.ipynb diff --git a/examples/demos/matplotlib/texas_choropleth_example.ipynb b/examples/gallery/demos/matplotlib/texas_choropleth_example.ipynb similarity index 100% rename from examples/demos/matplotlib/texas_choropleth_example.ipynb rename to examples/gallery/demos/matplotlib/texas_choropleth_example.ipynb diff --git a/examples/demos/matplotlib/topographic_hillshading.ipynb b/examples/gallery/demos/matplotlib/topographic_hillshading.ipynb similarity index 100% rename from examples/demos/matplotlib/topographic_hillshading.ipynb rename to examples/gallery/demos/matplotlib/topographic_hillshading.ipynb diff --git a/examples/demos/matplotlib/trisurf3d_demo.ipynb b/examples/gallery/demos/matplotlib/trisurf3d_demo.ipynb similarity index 100% rename from examples/demos/matplotlib/trisurf3d_demo.ipynb rename to examples/gallery/demos/matplotlib/trisurf3d_demo.ipynb diff --git a/examples/demos/matplotlib/us_unemployment.ipynb b/examples/gallery/demos/matplotlib/us_unemployment.ipynb similarity index 100% rename from examples/demos/matplotlib/us_unemployment.ipynb rename to examples/gallery/demos/matplotlib/us_unemployment.ipynb diff --git a/examples/demos/matplotlib/verhulst_mandelbrot.ipynb b/examples/gallery/demos/matplotlib/verhulst_mandelbrot.ipynb similarity index 100% rename from examples/demos/matplotlib/verhulst_mandelbrot.ipynb rename to examples/gallery/demos/matplotlib/verhulst_mandelbrot.ipynb diff --git a/examples/demos/plotly/surface_3d.ipynb b/examples/gallery/demos/plotly/surface_3d.ipynb similarity index 100% rename from examples/demos/plotly/surface_3d.ipynb rename to examples/gallery/demos/plotly/surface_3d.ipynb diff --git a/examples/demos/plotly/trisurf3d_demo.ipynb b/examples/gallery/demos/plotly/trisurf3d_demo.ipynb similarity index 100% rename from examples/demos/plotly/trisurf3d_demo.ipynb rename to examples/gallery/demos/plotly/trisurf3d_demo.ipynb diff --git a/guides/getting_started/1-Introduction.ipynb b/examples/getting_started/1-Introduction.ipynb similarity index 88% rename from guides/getting_started/1-Introduction.ipynb rename to examples/getting_started/1-Introduction.ipynb index e15eef4b62..ab29445c9d 100644 --- a/guides/getting_started/1-Introduction.ipynb +++ b/examples/getting_started/1-Introduction.ipynb @@ -61,7 +61,7 @@ }, "outputs": [], "source": [ - "station_info = pd.read_csv('../datasets/station_info.csv')\n", + "station_info = pd.read_csv('../assets/station_info.csv')\n", "station_info.head()" ] }, @@ -97,7 +97,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we passed our dataframe to [``hv.Scatter``](../../examples/elements/bokeh/Scatter.ipynb) to create an *object* called `scatter`, which is independent of any plotting library. `scatter` is a simple wrapper around our dataframe that knows that the 'services' column is the independent variable, normally plotted along the x-axis, and that the 'ridership' column is a dependent variable, plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", + "Here we passed our dataframe to [``hv.Scatter``](../reference/elements/elements/bokeh/Scatter.ipynb) to create an *object* called `scatter`, which is independent of any plotting library. `scatter` is a simple wrapper around our dataframe that knows that the 'services' column is the independent variable, normally plotted along the x-axis, and that the 'ridership' column is a dependent variable, plotted on the y-axis. These are our *dimensions* which we will describe in more detail a little later.\n", "\n", "Given that we have the handle ``scatter`` on our ``Scatter`` object, we can show that it is indeed an object and not a plot by printing it:" ] @@ -126,7 +126,7 @@ "source": [ "## Compositional ``Layouts``\n", "\n", - "The class [``Scatter``](../../examples/elements/bokeh/Scatter.ipynb) is a subclass of ``Element``. As shown in our [element gallery], Elements are the simplest viewable components in HoloViews. Now that we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" + "The class [``Scatter``](../reference/elements/elements/bokeh/Scatter.ipynb) is a subclass of ``Element``. As shown in our [element gallery], Elements are the simplest viewable components in HoloViews. Now that we have a handle on ``scatter``, we can demonstrate the compositionality of these objects:" ] }, { @@ -176,7 +176,7 @@ }, "outputs": [], "source": [ - "taxi_dropoffs = {hour:arr for hour, arr in np.load('../datasets/hourly_taxi_data.npz').items()}\n", + "taxi_dropoffs = {hour:arr for hour, arr in np.load('../assets/hourly_taxi_data.npz').items()}\n", "#print('Hours: {hours}'.format(hours=', '.join(taxi_dropoffs.keys())))\n", "print('Taxi data contains {num} arrays (one per hour).\\nDescription of the first array:\\n'.format(num=len(taxi_dropoffs)))\n", "np.info(taxi_dropoffs['0'])" @@ -195,7 +195,7 @@ "source": [ "## Compositional ``Overlays``\n", "\n", - "Once again, we can easily visualize this data with HoloViews by passing our array to [``hv.Image``](../../examples/elements/bokeh/Image.ipynb) to create the ``image`` object. This object has the spatial extent of the data declared as the ``bounds``, in terms of the corresponding range of latitudes and longitudes." + "Once again, we can easily visualize this data with HoloViews by passing our array to [``hv.Image``](../reference/elements/elements/bokeh/Image.ipynb) to create the ``image`` object. This object has the spatial extent of the data declared as the ``bounds``, in terms of the corresponding range of latitudes and longitudes." ] }, { @@ -214,7 +214,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "HoloViews supports ``numpy``, ``xarray``, ``iris``, and ``dask`` arrays when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb)). We can also compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a [``Points``](../../examples/elements/bokeh/Points.ipynb) element which is used to mark positions in two-dimensional space:" + "HoloViews supports ``numpy``, ``xarray``, ``iris``, and ``dask`` arrays when working with array data (see [Gridded Datasets](../user_guide/Gridded_Datasets.ipynb)). We can also compose elements containing array data with those containing tabular data. To illustrate, let's pass our tabular station data to a [``Points``](../reference/elements/elements/bokeh/Points.ipynb) element which is used to mark positions in two-dimensional space:" ] }, { @@ -245,7 +245,7 @@ "source": [ "## Effortlessly exploring data\n", "\n", - "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of [``Images``](../../examples/elements/bokeh/Image.ipynb) (one for every hour of the day) by declaring a ``HoloMap``: " + "You can keep composing datastructures together until there are more dimensions than can fit on simultaneously on your screen. For instance, you can visualize a dictionary of [``Images``](../reference/elements/elements/bokeh/Image.ipynb) (one for every hour of the day) by declaring a ``HoloMap``: " ] }, { @@ -313,7 +313,7 @@ "source": [ "## Data as visualization\n", "\n", - "Holomaps are able to compose with elements and other holomaps into overlay and layouts just as easily as you compose two elements together. Here is one such composition where we select a range of longitudes and latitudes from our [``Points``](../../examples/elements/bokeh/Points.ipynb) before we overlay them:" + "Holomaps are able to compose with elements and other holomaps into overlay and layouts just as easily as you compose two elements together. Here is one such composition where we select a range of longitudes and latitudes from our [``Points``](../reference/elements/elements/bokeh/Points.ipynb) before we overlay them:" ] }, { @@ -374,7 +374,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see that slicing the HoloViews [``Points``](../../examples/elements/bokeh/Points.ipynb) object in the visualization sliced the underlying data, with the structure of the table left intact. We can see that the Times Square 42nd Street station is indeed one of the subway stations surrounding our taxi dropoff hotspot. This seamless interplay and exchange between the raw data and easy-to-generate visualizations of it is crucial to how HoloViews helps you understand your data." + "We see that slicing the HoloViews [``Points``](../reference/elements/elements/bokeh/Points.ipynb) object in the visualization sliced the underlying data, with the structure of the table left intact. We can see that the Times Square 42nd Street station is indeed one of the subway stations surrounding our taxi dropoff hotspot. This seamless interplay and exchange between the raw data and easy-to-generate visualizations of it is crucial to how HoloViews helps you understand your data." ] }, { diff --git a/guides/getting_started/2-Customization.ipynb b/examples/getting_started/2-Customization.ipynb similarity index 99% rename from guides/getting_started/2-Customization.ipynb rename to examples/getting_started/2-Customization.ipynb index 530d8f79b5..0b2d8873f5 100644 --- a/guides/getting_started/2-Customization.ipynb +++ b/examples/getting_started/2-Customization.ipynb @@ -36,7 +36,7 @@ "source": [ "import pandas as pd\n", "import holoviews as hv\n", - "spike_train = pd.read_csv('../datasets/spike_train.csv.gz')\n", + "spike_train = pd.read_csv('../assets/spike_train.csv.gz')\n", "spike_train.head(n=3)" ] }, diff --git a/guides/getting_started/3-Tabular_Datasets.ipynb b/examples/getting_started/3-Tabular_Datasets.ipynb similarity index 99% rename from guides/getting_started/3-Tabular_Datasets.ipynb rename to examples/getting_started/3-Tabular_Datasets.ipynb index d23620f545..adcdb35e02 100644 --- a/guides/getting_started/3-Tabular_Datasets.ipynb +++ b/examples/getting_started/3-Tabular_Datasets.ipynb @@ -51,7 +51,7 @@ "metadata": {}, "outputs": [], "source": [ - "diseases = pd.read_csv('../datasets/diseases.csv.gz')\n", + "diseases = pd.read_csv('../assets/diseases.csv.gz')\n", "diseases.head()" ] }, diff --git a/guides/getting_started/4-Gridded_Datasets.ipynb b/examples/getting_started/4-Gridded_Datasets.ipynb similarity index 99% rename from guides/getting_started/4-Gridded_Datasets.ipynb rename to examples/getting_started/4-Gridded_Datasets.ipynb index 07eee8fa03..d0cafe1536 100644 --- a/guides/getting_started/4-Gridded_Datasets.ipynb +++ b/examples/getting_started/4-Gridded_Datasets.ipynb @@ -48,7 +48,7 @@ "metadata": {}, "outputs": [], "source": [ - "data = np.load('../datasets/twophoton.npz')\n", + "data = np.load('../assets/twophoton.npz')\n", "calcium_array = data['Calcium']\n", "calcium_array.shape" ] diff --git a/guides/getting_started/5-Live_Data.ipynb b/examples/getting_started/5-Live_Data.ipynb similarity index 100% rename from guides/getting_started/5-Live_Data.ipynb rename to examples/getting_started/5-Live_Data.ipynb diff --git a/examples/containers/matplotlib/GridSpace.ipynb b/examples/reference/containers/matplotlib/GridSpace.ipynb similarity index 100% rename from examples/containers/matplotlib/GridSpace.ipynb rename to examples/reference/containers/matplotlib/GridSpace.ipynb diff --git a/examples/containers/matplotlib/HoloMap.ipynb b/examples/reference/containers/matplotlib/HoloMap.ipynb similarity index 100% rename from examples/containers/matplotlib/HoloMap.ipynb rename to examples/reference/containers/matplotlib/HoloMap.ipynb diff --git a/examples/containers/matplotlib/NdLayout.ipynb b/examples/reference/containers/matplotlib/NdLayout.ipynb similarity index 100% rename from examples/containers/matplotlib/NdLayout.ipynb rename to examples/reference/containers/matplotlib/NdLayout.ipynb diff --git a/examples/containers/matplotlib/NdOverlay.ipynb b/examples/reference/containers/matplotlib/NdOverlay.ipynb similarity index 100% rename from examples/containers/matplotlib/NdOverlay.ipynb rename to examples/reference/containers/matplotlib/NdOverlay.ipynb diff --git a/examples/elements/assets/penguins.png b/examples/reference/elements/assets/penguins.png similarity index 100% rename from examples/elements/assets/penguins.png rename to examples/reference/elements/assets/penguins.png diff --git a/examples/elements/bokeh/Area.ipynb b/examples/reference/elements/bokeh/Area.ipynb similarity index 100% rename from examples/elements/bokeh/Area.ipynb rename to examples/reference/elements/bokeh/Area.ipynb diff --git a/examples/elements/bokeh/Bars.ipynb b/examples/reference/elements/bokeh/Bars.ipynb similarity index 100% rename from examples/elements/bokeh/Bars.ipynb rename to examples/reference/elements/bokeh/Bars.ipynb diff --git a/examples/elements/bokeh/Bounds.ipynb b/examples/reference/elements/bokeh/Bounds.ipynb similarity index 100% rename from examples/elements/bokeh/Bounds.ipynb rename to examples/reference/elements/bokeh/Bounds.ipynb diff --git a/examples/elements/bokeh/Box.ipynb b/examples/reference/elements/bokeh/Box.ipynb similarity index 100% rename from examples/elements/bokeh/Box.ipynb rename to examples/reference/elements/bokeh/Box.ipynb diff --git a/examples/elements/bokeh/BoxWhisker.ipynb b/examples/reference/elements/bokeh/BoxWhisker.ipynb similarity index 100% rename from examples/elements/bokeh/BoxWhisker.ipynb rename to examples/reference/elements/bokeh/BoxWhisker.ipynb diff --git a/examples/elements/bokeh/Contours.ipynb b/examples/reference/elements/bokeh/Contours.ipynb similarity index 100% rename from examples/elements/bokeh/Contours.ipynb rename to examples/reference/elements/bokeh/Contours.ipynb diff --git a/examples/elements/bokeh/Curve.ipynb b/examples/reference/elements/bokeh/Curve.ipynb similarity index 100% rename from examples/elements/bokeh/Curve.ipynb rename to examples/reference/elements/bokeh/Curve.ipynb diff --git a/examples/elements/bokeh/Ellipse.ipynb b/examples/reference/elements/bokeh/Ellipse.ipynb similarity index 100% rename from examples/elements/bokeh/Ellipse.ipynb rename to examples/reference/elements/bokeh/Ellipse.ipynb diff --git a/examples/elements/bokeh/ErrorBars.ipynb b/examples/reference/elements/bokeh/ErrorBars.ipynb similarity index 100% rename from examples/elements/bokeh/ErrorBars.ipynb rename to examples/reference/elements/bokeh/ErrorBars.ipynb diff --git a/examples/elements/bokeh/HLine.ipynb b/examples/reference/elements/bokeh/HLine.ipynb similarity index 100% rename from examples/elements/bokeh/HLine.ipynb rename to examples/reference/elements/bokeh/HLine.ipynb diff --git a/examples/elements/bokeh/HSV.ipynb b/examples/reference/elements/bokeh/HSV.ipynb similarity index 100% rename from examples/elements/bokeh/HSV.ipynb rename to examples/reference/elements/bokeh/HSV.ipynb diff --git a/examples/elements/bokeh/HeatMap.ipynb b/examples/reference/elements/bokeh/HeatMap.ipynb similarity index 100% rename from examples/elements/bokeh/HeatMap.ipynb rename to examples/reference/elements/bokeh/HeatMap.ipynb diff --git a/examples/elements/bokeh/Histogram.ipynb b/examples/reference/elements/bokeh/Histogram.ipynb similarity index 100% rename from examples/elements/bokeh/Histogram.ipynb rename to examples/reference/elements/bokeh/Histogram.ipynb diff --git a/examples/elements/bokeh/Image.ipynb b/examples/reference/elements/bokeh/Image.ipynb similarity index 100% rename from examples/elements/bokeh/Image.ipynb rename to examples/reference/elements/bokeh/Image.ipynb diff --git a/examples/elements/bokeh/ItemTable.ipynb b/examples/reference/elements/bokeh/ItemTable.ipynb similarity index 100% rename from examples/elements/bokeh/ItemTable.ipynb rename to examples/reference/elements/bokeh/ItemTable.ipynb diff --git a/examples/elements/bokeh/Path.ipynb b/examples/reference/elements/bokeh/Path.ipynb similarity index 100% rename from examples/elements/bokeh/Path.ipynb rename to examples/reference/elements/bokeh/Path.ipynb diff --git a/examples/elements/bokeh/Points.ipynb b/examples/reference/elements/bokeh/Points.ipynb similarity index 100% rename from examples/elements/bokeh/Points.ipynb rename to examples/reference/elements/bokeh/Points.ipynb diff --git a/examples/elements/bokeh/Polygons.ipynb b/examples/reference/elements/bokeh/Polygons.ipynb similarity index 100% rename from examples/elements/bokeh/Polygons.ipynb rename to examples/reference/elements/bokeh/Polygons.ipynb diff --git a/examples/elements/bokeh/QuadMesh.ipynb b/examples/reference/elements/bokeh/QuadMesh.ipynb similarity index 100% rename from examples/elements/bokeh/QuadMesh.ipynb rename to examples/reference/elements/bokeh/QuadMesh.ipynb diff --git a/examples/elements/bokeh/RGB.ipynb b/examples/reference/elements/bokeh/RGB.ipynb similarity index 100% rename from examples/elements/bokeh/RGB.ipynb rename to examples/reference/elements/bokeh/RGB.ipynb diff --git a/examples/elements/bokeh/Raster.ipynb b/examples/reference/elements/bokeh/Raster.ipynb similarity index 100% rename from examples/elements/bokeh/Raster.ipynb rename to examples/reference/elements/bokeh/Raster.ipynb diff --git a/examples/elements/bokeh/Scatter.ipynb b/examples/reference/elements/bokeh/Scatter.ipynb similarity index 100% rename from examples/elements/bokeh/Scatter.ipynb rename to examples/reference/elements/bokeh/Scatter.ipynb diff --git a/examples/elements/bokeh/Spikes.ipynb b/examples/reference/elements/bokeh/Spikes.ipynb similarity index 100% rename from examples/elements/bokeh/Spikes.ipynb rename to examples/reference/elements/bokeh/Spikes.ipynb diff --git a/examples/elements/bokeh/Spline.ipynb b/examples/reference/elements/bokeh/Spline.ipynb similarity index 100% rename from examples/elements/bokeh/Spline.ipynb rename to examples/reference/elements/bokeh/Spline.ipynb diff --git a/examples/elements/bokeh/Spread.ipynb b/examples/reference/elements/bokeh/Spread.ipynb similarity index 100% rename from examples/elements/bokeh/Spread.ipynb rename to examples/reference/elements/bokeh/Spread.ipynb diff --git a/examples/elements/bokeh/Table.ipynb b/examples/reference/elements/bokeh/Table.ipynb similarity index 100% rename from examples/elements/bokeh/Table.ipynb rename to examples/reference/elements/bokeh/Table.ipynb diff --git a/examples/elements/bokeh/Text.ipynb b/examples/reference/elements/bokeh/Text.ipynb similarity index 100% rename from examples/elements/bokeh/Text.ipynb rename to examples/reference/elements/bokeh/Text.ipynb diff --git a/examples/elements/bokeh/VLine.ipynb b/examples/reference/elements/bokeh/VLine.ipynb similarity index 100% rename from examples/elements/bokeh/VLine.ipynb rename to examples/reference/elements/bokeh/VLine.ipynb diff --git a/examples/elements/bokeh/VectorField.ipynb b/examples/reference/elements/bokeh/VectorField.ipynb similarity index 100% rename from examples/elements/bokeh/VectorField.ipynb rename to examples/reference/elements/bokeh/VectorField.ipynb diff --git a/examples/elements/matplotlib/Area.ipynb b/examples/reference/elements/matplotlib/Area.ipynb similarity index 100% rename from examples/elements/matplotlib/Area.ipynb rename to examples/reference/elements/matplotlib/Area.ipynb diff --git a/examples/elements/matplotlib/Arrow.ipynb b/examples/reference/elements/matplotlib/Arrow.ipynb similarity index 100% rename from examples/elements/matplotlib/Arrow.ipynb rename to examples/reference/elements/matplotlib/Arrow.ipynb diff --git a/examples/elements/matplotlib/Bars.ipynb b/examples/reference/elements/matplotlib/Bars.ipynb similarity index 100% rename from examples/elements/matplotlib/Bars.ipynb rename to examples/reference/elements/matplotlib/Bars.ipynb diff --git a/examples/elements/matplotlib/Bounds.ipynb b/examples/reference/elements/matplotlib/Bounds.ipynb similarity index 100% rename from examples/elements/matplotlib/Bounds.ipynb rename to examples/reference/elements/matplotlib/Bounds.ipynb diff --git a/examples/elements/matplotlib/Box.ipynb b/examples/reference/elements/matplotlib/Box.ipynb similarity index 100% rename from examples/elements/matplotlib/Box.ipynb rename to examples/reference/elements/matplotlib/Box.ipynb diff --git a/examples/elements/matplotlib/BoxWhisker.ipynb b/examples/reference/elements/matplotlib/BoxWhisker.ipynb similarity index 100% rename from examples/elements/matplotlib/BoxWhisker.ipynb rename to examples/reference/elements/matplotlib/BoxWhisker.ipynb diff --git a/examples/elements/matplotlib/Contours.ipynb b/examples/reference/elements/matplotlib/Contours.ipynb similarity index 100% rename from examples/elements/matplotlib/Contours.ipynb rename to examples/reference/elements/matplotlib/Contours.ipynb diff --git a/examples/elements/matplotlib/Curve.ipynb b/examples/reference/elements/matplotlib/Curve.ipynb similarity index 100% rename from examples/elements/matplotlib/Curve.ipynb rename to examples/reference/elements/matplotlib/Curve.ipynb diff --git a/examples/elements/matplotlib/Ellipse.ipynb b/examples/reference/elements/matplotlib/Ellipse.ipynb similarity index 100% rename from examples/elements/matplotlib/Ellipse.ipynb rename to examples/reference/elements/matplotlib/Ellipse.ipynb diff --git a/examples/elements/matplotlib/ErrorBars.ipynb b/examples/reference/elements/matplotlib/ErrorBars.ipynb similarity index 100% rename from examples/elements/matplotlib/ErrorBars.ipynb rename to examples/reference/elements/matplotlib/ErrorBars.ipynb diff --git a/examples/elements/matplotlib/HLine.ipynb b/examples/reference/elements/matplotlib/HLine.ipynb similarity index 100% rename from examples/elements/matplotlib/HLine.ipynb rename to examples/reference/elements/matplotlib/HLine.ipynb diff --git a/examples/elements/matplotlib/HSV.ipynb b/examples/reference/elements/matplotlib/HSV.ipynb similarity index 100% rename from examples/elements/matplotlib/HSV.ipynb rename to examples/reference/elements/matplotlib/HSV.ipynb diff --git a/examples/elements/matplotlib/HeatMap.ipynb b/examples/reference/elements/matplotlib/HeatMap.ipynb similarity index 100% rename from examples/elements/matplotlib/HeatMap.ipynb rename to examples/reference/elements/matplotlib/HeatMap.ipynb diff --git a/examples/elements/matplotlib/Histogram.ipynb b/examples/reference/elements/matplotlib/Histogram.ipynb similarity index 100% rename from examples/elements/matplotlib/Histogram.ipynb rename to examples/reference/elements/matplotlib/Histogram.ipynb diff --git a/examples/elements/matplotlib/Image.ipynb b/examples/reference/elements/matplotlib/Image.ipynb similarity index 100% rename from examples/elements/matplotlib/Image.ipynb rename to examples/reference/elements/matplotlib/Image.ipynb diff --git a/examples/elements/matplotlib/ItemTable.ipynb b/examples/reference/elements/matplotlib/ItemTable.ipynb similarity index 100% rename from examples/elements/matplotlib/ItemTable.ipynb rename to examples/reference/elements/matplotlib/ItemTable.ipynb diff --git a/examples/elements/matplotlib/Path.ipynb b/examples/reference/elements/matplotlib/Path.ipynb similarity index 100% rename from examples/elements/matplotlib/Path.ipynb rename to examples/reference/elements/matplotlib/Path.ipynb diff --git a/examples/elements/matplotlib/Points.ipynb b/examples/reference/elements/matplotlib/Points.ipynb similarity index 100% rename from examples/elements/matplotlib/Points.ipynb rename to examples/reference/elements/matplotlib/Points.ipynb diff --git a/examples/elements/matplotlib/Polygons.ipynb b/examples/reference/elements/matplotlib/Polygons.ipynb similarity index 100% rename from examples/elements/matplotlib/Polygons.ipynb rename to examples/reference/elements/matplotlib/Polygons.ipynb diff --git a/examples/elements/matplotlib/QuadMesh.ipynb b/examples/reference/elements/matplotlib/QuadMesh.ipynb similarity index 100% rename from examples/elements/matplotlib/QuadMesh.ipynb rename to examples/reference/elements/matplotlib/QuadMesh.ipynb diff --git a/examples/elements/matplotlib/RGB.ipynb b/examples/reference/elements/matplotlib/RGB.ipynb similarity index 100% rename from examples/elements/matplotlib/RGB.ipynb rename to examples/reference/elements/matplotlib/RGB.ipynb diff --git a/examples/elements/matplotlib/Raster.ipynb b/examples/reference/elements/matplotlib/Raster.ipynb similarity index 100% rename from examples/elements/matplotlib/Raster.ipynb rename to examples/reference/elements/matplotlib/Raster.ipynb diff --git a/examples/elements/matplotlib/Scatter.ipynb b/examples/reference/elements/matplotlib/Scatter.ipynb similarity index 100% rename from examples/elements/matplotlib/Scatter.ipynb rename to examples/reference/elements/matplotlib/Scatter.ipynb diff --git a/examples/elements/matplotlib/Scatter3D.ipynb b/examples/reference/elements/matplotlib/Scatter3D.ipynb similarity index 100% rename from examples/elements/matplotlib/Scatter3D.ipynb rename to examples/reference/elements/matplotlib/Scatter3D.ipynb diff --git a/examples/elements/matplotlib/Spikes.ipynb b/examples/reference/elements/matplotlib/Spikes.ipynb similarity index 100% rename from examples/elements/matplotlib/Spikes.ipynb rename to examples/reference/elements/matplotlib/Spikes.ipynb diff --git a/examples/elements/matplotlib/Spline.ipynb b/examples/reference/elements/matplotlib/Spline.ipynb similarity index 100% rename from examples/elements/matplotlib/Spline.ipynb rename to examples/reference/elements/matplotlib/Spline.ipynb diff --git a/examples/elements/matplotlib/Spread.ipynb b/examples/reference/elements/matplotlib/Spread.ipynb similarity index 100% rename from examples/elements/matplotlib/Spread.ipynb rename to examples/reference/elements/matplotlib/Spread.ipynb diff --git a/examples/elements/matplotlib/Surface.ipynb b/examples/reference/elements/matplotlib/Surface.ipynb similarity index 100% rename from examples/elements/matplotlib/Surface.ipynb rename to examples/reference/elements/matplotlib/Surface.ipynb diff --git a/examples/elements/matplotlib/Table.ipynb b/examples/reference/elements/matplotlib/Table.ipynb similarity index 100% rename from examples/elements/matplotlib/Table.ipynb rename to examples/reference/elements/matplotlib/Table.ipynb diff --git a/examples/elements/matplotlib/Text.ipynb b/examples/reference/elements/matplotlib/Text.ipynb similarity index 100% rename from examples/elements/matplotlib/Text.ipynb rename to examples/reference/elements/matplotlib/Text.ipynb diff --git a/examples/elements/matplotlib/Trisurface.ipynb b/examples/reference/elements/matplotlib/Trisurface.ipynb similarity index 100% rename from examples/elements/matplotlib/Trisurface.ipynb rename to examples/reference/elements/matplotlib/Trisurface.ipynb diff --git a/examples/elements/matplotlib/VLine.ipynb b/examples/reference/elements/matplotlib/VLine.ipynb similarity index 100% rename from examples/elements/matplotlib/VLine.ipynb rename to examples/reference/elements/matplotlib/VLine.ipynb diff --git a/examples/elements/matplotlib/VectorField.ipynb b/examples/reference/elements/matplotlib/VectorField.ipynb similarity index 100% rename from examples/elements/matplotlib/VectorField.ipynb rename to examples/reference/elements/matplotlib/VectorField.ipynb diff --git a/examples/streams/bokeh/bounds_selection.ipynb b/examples/reference/streams/bokeh/bounds_selection.ipynb similarity index 100% rename from examples/streams/bokeh/bounds_selection.ipynb rename to examples/reference/streams/bokeh/bounds_selection.ipynb diff --git a/examples/streams/bokeh/boundsx_selection.ipynb b/examples/reference/streams/bokeh/boundsx_selection.ipynb similarity index 100% rename from examples/streams/bokeh/boundsx_selection.ipynb rename to examples/reference/streams/bokeh/boundsx_selection.ipynb diff --git a/examples/streams/bokeh/boundsy_selection.ipynb b/examples/reference/streams/bokeh/boundsy_selection.ipynb similarity index 100% rename from examples/streams/bokeh/boundsy_selection.ipynb rename to examples/reference/streams/bokeh/boundsy_selection.ipynb diff --git a/examples/streams/bokeh/curve_selection.ipynb b/examples/reference/streams/bokeh/curve_selection.ipynb similarity index 100% rename from examples/streams/bokeh/curve_selection.ipynb rename to examples/reference/streams/bokeh/curve_selection.ipynb diff --git a/examples/streams/bokeh/heatmap_tap.ipynb b/examples/reference/streams/bokeh/heatmap_tap.ipynb similarity index 100% rename from examples/streams/bokeh/heatmap_tap.ipynb rename to examples/reference/streams/bokeh/heatmap_tap.ipynb diff --git a/examples/streams/bokeh/linked_pointer_crosssection.ipynb b/examples/reference/streams/bokeh/linked_pointer_crosssection.ipynb similarity index 100% rename from examples/streams/bokeh/linked_pointer_crosssection.ipynb rename to examples/reference/streams/bokeh/linked_pointer_crosssection.ipynb diff --git a/examples/streams/bokeh/multiple_selection.ipynb b/examples/reference/streams/bokeh/multiple_selection.ipynb similarity index 100% rename from examples/streams/bokeh/multiple_selection.ipynb rename to examples/reference/streams/bokeh/multiple_selection.ipynb diff --git a/examples/streams/bokeh/point_selection1D.ipynb b/examples/reference/streams/bokeh/point_selection1D.ipynb similarity index 100% rename from examples/streams/bokeh/point_selection1D.ipynb rename to examples/reference/streams/bokeh/point_selection1D.ipynb diff --git a/examples/streams/bokeh/pointer_crosshair.ipynb b/examples/reference/streams/bokeh/pointer_crosshair.ipynb similarity index 100% rename from examples/streams/bokeh/pointer_crosshair.ipynb rename to examples/reference/streams/bokeh/pointer_crosshair.ipynb diff --git a/examples/streams/bokeh/range_histogram.ipynb b/examples/reference/streams/bokeh/range_histogram.ipynb similarity index 100% rename from examples/streams/bokeh/range_histogram.ipynb rename to examples/reference/streams/bokeh/range_histogram.ipynb diff --git a/examples/streams/bokeh/regression_tap.ipynb b/examples/reference/streams/bokeh/regression_tap.ipynb similarity index 100% rename from examples/streams/bokeh/regression_tap.ipynb rename to examples/reference/streams/bokeh/regression_tap.ipynb diff --git a/guides/user_guide/01-Annotating_Data.ipynb b/examples/user_guide/01-Annotating_Data.ipynb similarity index 100% rename from guides/user_guide/01-Annotating_Data.ipynb rename to examples/user_guide/01-Annotating_Data.ipynb diff --git a/guides/user_guide/02-Composing_Elements.ipynb b/examples/user_guide/02-Composing_Elements.ipynb similarity index 100% rename from guides/user_guide/02-Composing_Elements.ipynb rename to examples/user_guide/02-Composing_Elements.ipynb diff --git a/guides/user_guide/03-Customizing_Plots.ipynb b/examples/user_guide/03-Customizing_Plots.ipynb similarity index 100% rename from guides/user_guide/03-Customizing_Plots.ipynb rename to examples/user_guide/03-Customizing_Plots.ipynb diff --git a/guides/user_guide/04-Dimensioned_Containers.ipynb b/examples/user_guide/04-Dimensioned_Containers.ipynb similarity index 100% rename from guides/user_guide/04-Dimensioned_Containers.ipynb rename to examples/user_guide/04-Dimensioned_Containers.ipynb diff --git a/guides/user_guide/05-Building_Composite_Objects.ipynb b/examples/user_guide/05-Building_Composite_Objects.ipynb similarity index 100% rename from guides/user_guide/05-Building_Composite_Objects.ipynb rename to examples/user_guide/05-Building_Composite_Objects.ipynb diff --git a/guides/user_guide/06-Live_Data.ipynb b/examples/user_guide/06-Live_Data.ipynb similarity index 100% rename from guides/user_guide/06-Live_Data.ipynb rename to examples/user_guide/06-Live_Data.ipynb diff --git a/guides/user_guide/07-Tabular_Datasets.ipynb b/examples/user_guide/07-Tabular_Datasets.ipynb similarity index 100% rename from guides/user_guide/07-Tabular_Datasets.ipynb rename to examples/user_guide/07-Tabular_Datasets.ipynb diff --git a/guides/user_guide/08-Gridded_Datasets.ipynb b/examples/user_guide/08-Gridded_Datasets.ipynb similarity index 100% rename from guides/user_guide/08-Gridded_Datasets.ipynb rename to examples/user_guide/08-Gridded_Datasets.ipynb diff --git a/guides/user_guide/09-Indexing_and_Selecting_Data.ipynb b/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb similarity index 100% rename from guides/user_guide/09-Indexing_and_Selecting_Data.ipynb rename to examples/user_guide/09-Indexing_and_Selecting_Data.ipynb diff --git a/guides/user_guide/10-Transforming_Elements.ipynb b/examples/user_guide/10-Transforming_Elements.ipynb similarity index 100% rename from guides/user_guide/10-Transforming_Elements.ipynb rename to examples/user_guide/10-Transforming_Elements.ipynb diff --git a/guides/user_guide/11-Responding_to_Events.ipynb b/examples/user_guide/11-Responding_to_Events.ipynb similarity index 100% rename from guides/user_guide/11-Responding_to_Events.ipynb rename to examples/user_guide/11-Responding_to_Events.ipynb diff --git a/guides/user_guide/12-Custom_Interactivity.ipynb b/examples/user_guide/12-Custom_Interactivity.ipynb similarity index 100% rename from guides/user_guide/12-Custom_Interactivity.ipynb rename to examples/user_guide/12-Custom_Interactivity.ipynb diff --git a/guides/user_guide/14-Large_Data.ipynb b/examples/user_guide/14-Large_Data.ipynb similarity index 100% rename from guides/user_guide/14-Large_Data.ipynb rename to examples/user_guide/14-Large_Data.ipynb diff --git a/guides/user_guide/Continuous_Coordinates.ipynb b/examples/user_guide/Continuous_Coordinates.ipynb similarity index 100% rename from guides/user_guide/Continuous_Coordinates.ipynb rename to examples/user_guide/Continuous_Coordinates.ipynb diff --git a/guides/user_guide/Deploying_Bokeh_Apps.ipynb b/examples/user_guide/Deploying_Bokeh_Apps.ipynb similarity index 100% rename from guides/user_guide/Deploying_Bokeh_Apps.ipynb rename to examples/user_guide/Deploying_Bokeh_Apps.ipynb diff --git a/guides/user_guide/Exporting_and_Archiving.ipynb b/examples/user_guide/Exporting_and_Archiving.ipynb similarity index 100% rename from guides/user_guide/Exporting_and_Archiving.ipynb rename to examples/user_guide/Exporting_and_Archiving.ipynb diff --git a/guides/user_guide/Plotting_with_Bokeh.ipynb b/examples/user_guide/Plotting_with_Bokeh.ipynb similarity index 100% rename from guides/user_guide/Plotting_with_Bokeh.ipynb rename to examples/user_guide/Plotting_with_Bokeh.ipynb From 72e1f3b215e3ea9552aac7b78b7efc7eeca159ec Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 23:02:15 +0100 Subject: [PATCH 80/99] Added rough draft of the Configuring HoloViews user guide --- .../user_guide/Configuring_HoloViews.ipynb | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 examples/user_guide/Configuring_HoloViews.ipynb diff --git a/examples/user_guide/Configuring_HoloViews.ipynb b/examples/user_guide/Configuring_HoloViews.ipynb new file mode 100644 index 0000000000..c80cc09199 --- /dev/null +++ b/examples/user_guide/Configuring_HoloViews.ipynb @@ -0,0 +1,129 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Configuring HoloViews\n", + "\n", + "HoloViews offers several types of configuration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ``hv.config`` settings\n", + "\n", + "HoloViews has a top-level ``hv.config`` object with flags to control various backwards-compatibility options:\n", + "\n", + "* ``style_17`` : Enables the styling used before HoloViews 1.7\n", + "* ``warn_options_call``: Warn when using the to-be-deprecated ``__call__`` syntax for specifying options, instead of the recommended ``.opts`` method.\n", + "\n", + "It is recommended you set ``warn_options_call`` to ``True`` in your holoviews.rc (see section below).\n", + "\n", + "To set the configuration, you can use:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.config(style_17=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although this should be done as early as possible as some configuration options must be set before the corresponding plotting extensions are imported. For this reason, the following way of setting configuration options is recommended:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "hv.extension(config=dict(style_17=True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jupyter notebook configuration\n", + "\n", + "In jupyter_notebook_config.py:\n", + "\n", + "\n", + "```\n", + "c = get_config()\n", + "c.NotebookApp.iopub_data_rate_limit=100000000\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Improved tab-completion\n", + "\n", + "Both ``Layout`` and ``Overlay`` are designed around convenient tab-completion, with the expectation of upper-case names being listed first. In recent versions of IPython there has been a regression whereby the tab-completion is no longer case-sensitive. This can be fixed with:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import holoviews as hv\n", + "hv.extension(case_sensitive_completion=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The holoviews.rc file\n", + "\n", + "HoloViews supports an rc file that is searched for in the following places: ``\"~/.holoviews.rc\"``, ``\"~/.config/holoviews/holoviews.rc\"`` and the in parent directory of the top-level ``__init__.py`` file (useful for developers working out of the HoloViews git repo). A different location to find the rc file can be specified via the ``HOLOVIEWSRC`` environment variable.\n", + "\n", + "This rc file is executed right after HoloViews, imports. For instance you can use an rc file with:\n", + "\n", + "```\n", + "import holoviews as hv\n", + "hv.config(warn_options_call=True)\n", + "hv.extension.case_sensitive_completion=True\n", + "```\n", + "\n", + "So that the case-sensitive tab-completion described in the previous section is enabled by default." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From cf28c323c2a4929eddf72ec40e87d20ddd4b68d9 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Mon, 26 Jun 2017 23:33:02 +0100 Subject: [PATCH 81/99] Added Layout container notebook --- .../containers/matplotlib/Layout.ipynb | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 examples/reference/containers/matplotlib/Layout.ipynb diff --git a/examples/reference/containers/matplotlib/Layout.ipynb b/examples/reference/containers/matplotlib/Layout.ipynb new file mode 100644 index 0000000000..e5c7d67637 --- /dev/null +++ b/examples/reference/containers/matplotlib/Layout.ipynb @@ -0,0 +1,233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Layout Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](./Layout.ipynb)
    [Bokeh](../bokeh/Layout.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A Layout is a collection of HoloViews objects that are related in some way, to be displayed side-by-side. Like ``Overlay`` and unlike other containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdLayout``](./NdLayout.ipynb) a ``Layout`` is *not* dictionary like: it holds potentially heterogeneous types without dimensioned keys.\n", + "\n", + "\n", + "A ``Layout`` cannot contain ``NdLayouts`` but can otherwise contain *any* other HoloViews object. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Layout`` is a heterogeneous collection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build a ``Layout`` between any two HoloViews objects (which can have different types) using the ``+`` operator:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]))\n", + "scatter = hv.Scatter((xvals[::5], range(20)))\n", + "curve + scatter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we have a ``Layout`` composed of a ``Curve`` element and a ``Scatter`` element. The one restriction on what you can put in a ``Layout`` is that you cannot combine an [``NdLayout``](./NdLayout.ipynb) with a regular ``Layout``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building ``Layout`` from a list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build Layout's of any size by passing a list of objects to the ``Layout`` constructor as shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_list = [ hv.Curve((xvals, [np.sin(f*x) for x in xvals])) for f in [0.5, 0.75]]\n", + "scatter_list = [hv.Scatter((xvals[::5], [f*i for i in range(20)])) for f in [-0.5, 0.5]]\n", + "layout = hv.Layout(curve_list + scatter_list).cols(2)\n", + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note the use of the ``.cols`` method to specify the number of columns, wrapping to the next row in scanline order (top-to-bottom and left-to-right)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A ``Layout`` has two-level attribute access" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Layout`` and ``Overlay`` are fundamentally tree-structures holding arbitrary heterogenous HoloViews objects and are quite different from the dictionary-like dimensioned containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdLayout``](./NdLayout.ipynb).\n", + "\n", + "All HoloViews objects have string ``group`` and ``label`` parameters, resulting in a 2-level attribute access on ``Layout`` objects. First let us see how to index the above example where ``group`` and ``label`` was not specified for any of the elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout2 = layout.Curve.I + layout.Scatter.II\n", + "layout2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we create a second layout by indexing two elements from our earlier layout. We see that the first level is the ``group`` string (which defaults to the element class name) followed by the label, which wasn't set and is therefore mapped to a roman numeral (I,II,III etc).\n", + "\n", + "As no group and label was specified, our new ``layout`` will once again have ``Curve.I`` for the curve but as there is only one scatter element, it will have ``Scatter.II`` to index the scatter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tab-completion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Layout`` and ``Overlay`` are designed to be easy to explore and inspect with tab completion. Try running:\n", + "\n", + "```python\n", + "layout.[tab]\n", + "```\n", + "\n", + "And you should see the first levels of indexing (``Curve`` and ``Scatter``) conveniently listed at the top. If this is not the case, you may need to enable improved tab-completion as described in [Configuring HoloViews](../../../user_guide/Configuring_HoloViews.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using ``group`` and ``label``" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now let's return to the first simple example, although this time we will set a group and label; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]), group='Sinusoid', label='Example')\n", + "scatter = hv.Scatter((xvals[::5], range(20)), group='Linear Points', label='Demo')\n", + "layout3 = curve + scatter\n", + "layout3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now see how group and label affect layout access, in addition to being used for setting the titles shown above and for allowing plot customization (see \n", + "[CustomizingPlots](../../../user_guide/03-Customizing_Plots.ipynb)):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout3.Linear_Points.Demo + layout3.Sinusoid.Example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have used the semantic group and label names to access the elements and build a new re-ordered layout." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 63906f86050c8bbaf19e24a87b0d349908f09cd7 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 00:21:18 +0100 Subject: [PATCH 82/99] Improved the Layout container notebook --- examples/reference/containers/matplotlib/Layout.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/reference/containers/matplotlib/Layout.ipynb b/examples/reference/containers/matplotlib/Layout.ipynb index e5c7d67637..40174a5451 100644 --- a/examples/reference/containers/matplotlib/Layout.ipynb +++ b/examples/reference/containers/matplotlib/Layout.ipynb @@ -28,10 +28,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A Layout is a collection of HoloViews objects that are related in some way, to be displayed side-by-side. Like ``Overlay`` and unlike other containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdLayout``](./NdLayout.ipynb) a ``Layout`` is *not* dictionary like: it holds potentially heterogeneous types without dimensioned keys.\n", + "A Layout is a collection of HoloViews objects that are related in some way, to be displayed side-by-side. Like ``Overlay`` and unlike other containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdLayout``](./NdLayout.ipynb) a ``Layout`` is *not* dictionary like: it holds potentially heterogeneous types without any dimensioned keys.\n", "\n", "\n", - "A ``Layout`` cannot contain ``NdLayouts`` but can otherwise contain *any* other HoloViews object. See the [User Guide] for details on how to compose containers." + "A ``Layout`` cannot contain ``NdLayouts`` but can otherwise contain *any* other HoloViews object. See [Building Composite Objects](05-Building_Composite_Objects.ipynb) for more details on how to compose containers. It is best to learn about ``Layout`` and [``Overlay``](./Overlay.ipynb) together as they are very closely related objects that share many core concepts." ] }, { @@ -130,7 +130,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we create a second layout by indexing two elements from our earlier layout. We see that the first level is the ``group`` string (which defaults to the element class name) followed by the label, which wasn't set and is therefore mapped to a roman numeral (I,II,III etc).\n", + "Here we create a second layout by indexing two elements from our earlier ``layout`` object. We see that the first level is the ``group`` string (which defaults to the element class name) followed by the label, which wasn't set and is therefore mapped to a roman numeral (I,II,III etc).\n", "\n", "As no group and label was specified, our new ``layout`` will once again have ``Curve.I`` for the curve but as there is only one scatter element, it will have ``Scatter.II`` to index the scatter." ] @@ -188,8 +188,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now see how group and label affect layout access, in addition to being used for setting the titles shown above and for allowing plot customization (see \n", - "[CustomizingPlots](../../../user_guide/03-Customizing_Plots.ipynb)):" + "We can now see how group and label affect access, in addition to being used for setting the titles shown above and for allowing plot customization (see \n", + "[Customizing Plots](../../../user_guide/03-Customizing_Plots.ipynb) for more information):" ] }, { From 720a3b9fa2deb1b0746bb6e615d7227d3ccfe663 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 00:22:05 +0100 Subject: [PATCH 83/99] Added the Overlay container notebook --- .../containers/matplotlib/Overlay.ipynb | 234 ++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 examples/reference/containers/matplotlib/Overlay.ipynb diff --git a/examples/reference/containers/matplotlib/Overlay.ipynb b/examples/reference/containers/matplotlib/Overlay.ipynb new file mode 100644 index 0000000000..baf44258aa --- /dev/null +++ b/examples/reference/containers/matplotlib/Overlay.ipynb @@ -0,0 +1,234 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Overlay Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](./Overlay.ipynb)
    [Bokeh](../bokeh/Overlay.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('matplotlib')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A Overlay is a collection of HoloViews objects that are related in some way, to be displayed simultanously, overlaid in the space space. Like ``Layout`` and unlike other containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdOverlay``](./NdOverlay.ipynb) a ``Overlay`` is *not* dictionary like: it holds potentially heterogeneous types without any dimensioned keys.\n", + "\n", + "\n", + "A ``Overlay`` cannot contain any other container type other than ``NdOverlay`` but can contain any HoloViews elements. See [Building Composite Objects](05-Building_Composite_Objects.ipynb) for more details on how to compose containers. It is best to learn about ``Overlay`` and [``Layout``](./Layout.ipynb) together as they are very closely related objects that share many core concepts." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Overlay`` is a heterogeneous collection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build a ``Overlay`` between any two HoloViews objects (which can have different types) using the ``*`` operator:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]))\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)))\n", + "curve * scatter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we have a ``Overlay`` composed of a ``Curve`` element and a ``Scatter`` element." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building ``Overlay`` from a list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build Overlay's of any size by passing a list of objects to the ``Overlay`` constructor as shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_list = [ hv.Curve((xvals, [np.sin(f*x) for x in xvals])) for f in [0.5, 0.75]]\n", + "scatter_list = [hv.Scatter((xvals[::5], f*np.linspace(0,1,20))) for f in [-0.5, 0.5]]\n", + "overlay = hv.Overlay(curve_list + scatter_list)\n", + "overlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that these curve and scatter elements are using the default color cycle when overlaid; see [Customizing Plots](../../../user_guide/03-Customizing_Plots.ipynb) for more information on cycles." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A ``Overlay`` has two-level attribute access" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Overlay`` and ``Layout`` are fundamentally tree-structures holding arbitrary heterogenous HoloViews objects and are quite different from the dictionary-like dimensioned containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdOverlay``](./NdOverlay.ipynb).\n", + "\n", + "All HoloViews objects have string ``group`` and ``label`` parameters, resulting in a 2-level attribute access on ``Overlay`` objects. First let us see how to index the above example where ``group`` and ``label`` was not specified for any of the elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overlay2 = overlay.Curve.I * overlay.Scatter.II\n", + "overlay2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we create a second ``Overlay`` by indexing two elements from our earlier ``overlay`` object. We see that the first level is the ``group`` string (which defaults to the element class name) followed by the label, which wasn't set and is therefore mapped to a roman numeral (I,II,III etc).\n", + "\n", + "As no group and label was specified, our new ``Overlay`` will once again have ``Curve.I`` for the curve but as there is only one scatter element, it will have ``Scatter.II`` to index the scatter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tab-completion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Overlay`` and ``Layout`` are designed to be easy to explore and inspect with tab completion. Try running:\n", + "\n", + "```python\n", + "overlay.[tab]\n", + "```\n", + "\n", + "And you should see the first levels of indexing (``Curve`` and ``Scatter``) conveniently listed at the top. If this is not the case, you may need to enable improved tab-completion as described in [Configuring HoloViews](../../../user_guide/Configuring_HoloViews.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using ``group`` and ``label``" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now let's return to the first simple example, although this time we will set a ``group`` and ``label``; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve1 = hv.Curve((xvals, [np.sin(x) for x in xvals]), group='Sinusoid', label='Low Frequency')\n", + "curve2 = hv.Curve((xvals, [np.sin(2*x) for x in xvals]), group='Sinusoid', label='High Frequency')\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)), group='Linear Points', label='Demo')\n", + "overlay3 = curve1 * curve2 * scatter\n", + "overlay3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now see how group and label affect access, in addition to being used for setting the legend shown above and for allowing plot customization (see \n", + "[Customizing Plots](../../../user_guide/03-Customizing_Plots.ipynb) for more information):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overlay3.Linear_Points.Demo * overlay3.Sinusoid.High_Frequency * overlay3.Sinusoid.Low_Frequency" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have used the semantic group and label names to access the elements and build a new re-ordered ``Overlay`` which we can observe by the switched z-ordering and legend colors used for the two sinusoidal curves." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 28d88e4745ece61b406597a2ee0610b97e083ab8 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 01:26:22 +0100 Subject: [PATCH 84/99] Renamed notebook_extension to extension throughout examples --- examples/gallery/demos/bokeh/bars_economic.ipynb | 2 +- examples/gallery/demos/bokeh/dropdown_economic.ipynb | 2 +- examples/gallery/demos/bokeh/mandelbrot_section.ipynb | 2 +- examples/gallery/demos/bokeh/scatter_economic.ipynb | 2 +- examples/gallery/demos/matplotlib/bars_economic.ipynb | 2 +- examples/gallery/demos/matplotlib/dropdown_economic.ipynb | 2 +- examples/gallery/demos/matplotlib/mandelbrot_section.ipynb | 2 +- examples/gallery/demos/matplotlib/scatter_economic.ipynb | 2 +- examples/getting_started/3-Tabular_Datasets.ipynb | 2 +- examples/getting_started/4-Gridded_Datasets.ipynb | 2 +- examples/reference/elements/matplotlib/Scatter3D.ipynb | 2 +- examples/reference/elements/matplotlib/Surface.ipynb | 2 +- examples/reference/elements/matplotlib/Trisurface.ipynb | 2 +- examples/reference/streams/bokeh/curve_selection.ipynb | 2 +- examples/user_guide/01-Annotating_Data.ipynb | 2 +- examples/user_guide/02-Composing_Elements.ipynb | 2 +- examples/user_guide/08-Gridded_Datasets.ipynb | 2 +- examples/user_guide/09-Indexing_and_Selecting_Data.ipynb | 4 ++-- examples/user_guide/10-Transforming_Elements.ipynb | 2 +- examples/user_guide/12-Custom_Interactivity.ipynb | 2 +- examples/user_guide/14-Large_Data.ipynb | 2 +- examples/user_guide/Deploying_Bokeh_Apps.ipynb | 2 +- examples/user_guide/Plotting_with_Bokeh.ipynb | 2 +- 23 files changed, 24 insertions(+), 24 deletions(-) diff --git a/examples/gallery/demos/bokeh/bars_economic.ipynb b/examples/gallery/demos/bokeh/bars_economic.ipynb index 8f384640fe..e6c427638f 100644 --- a/examples/gallery/demos/bokeh/bars_economic.ipynb +++ b/examples/gallery/demos/bokeh/bars_economic.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh','matplotlib')" + "hv.extension('bokeh','matplotlib')" ] }, { diff --git a/examples/gallery/demos/bokeh/dropdown_economic.ipynb b/examples/gallery/demos/bokeh/dropdown_economic.ipynb index 4efe5ccab2..7e17c9f76c 100644 --- a/examples/gallery/demos/bokeh/dropdown_economic.ipynb +++ b/examples/gallery/demos/bokeh/dropdown_economic.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/gallery/demos/bokeh/mandelbrot_section.ipynb b/examples/gallery/demos/bokeh/mandelbrot_section.ipynb index fbefda1398..6c99bf35c7 100644 --- a/examples/gallery/demos/bokeh/mandelbrot_section.ipynb +++ b/examples/gallery/demos/bokeh/mandelbrot_section.ipynb @@ -21,7 +21,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/gallery/demos/bokeh/scatter_economic.ipynb b/examples/gallery/demos/bokeh/scatter_economic.ipynb index d23b3e1c58..e8338a43c5 100644 --- a/examples/gallery/demos/bokeh/scatter_economic.ipynb +++ b/examples/gallery/demos/bokeh/scatter_economic.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/gallery/demos/matplotlib/bars_economic.ipynb b/examples/gallery/demos/matplotlib/bars_economic.ipynb index 3aee905458..cfb0084253 100644 --- a/examples/gallery/demos/matplotlib/bars_economic.ipynb +++ b/examples/gallery/demos/matplotlib/bars_economic.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/gallery/demos/matplotlib/dropdown_economic.ipynb b/examples/gallery/demos/matplotlib/dropdown_economic.ipynb index ab130c50a4..27ce164aa2 100644 --- a/examples/gallery/demos/matplotlib/dropdown_economic.ipynb +++ b/examples/gallery/demos/matplotlib/dropdown_economic.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb b/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb index 1b012e2287..d799d63b72 100644 --- a/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb +++ b/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb @@ -21,7 +21,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/gallery/demos/matplotlib/scatter_economic.ipynb b/examples/gallery/demos/matplotlib/scatter_economic.ipynb index b85ed4c53d..b2a49c582d 100644 --- a/examples/gallery/demos/matplotlib/scatter_economic.ipynb +++ b/examples/gallery/demos/matplotlib/scatter_economic.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/getting_started/3-Tabular_Datasets.ipynb b/examples/getting_started/3-Tabular_Datasets.ipynb index adcdb35e02..9565f698c7 100644 --- a/examples/getting_started/3-Tabular_Datasets.ipynb +++ b/examples/getting_started/3-Tabular_Datasets.ipynb @@ -16,7 +16,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh', 'matplotlib')" + "hv.extension('bokeh', 'matplotlib')" ] }, { diff --git a/examples/getting_started/4-Gridded_Datasets.ipynb b/examples/getting_started/4-Gridded_Datasets.ipynb index d0cafe1536..558ca020c7 100644 --- a/examples/getting_started/4-Gridded_Datasets.ipynb +++ b/examples/getting_started/4-Gridded_Datasets.ipynb @@ -16,7 +16,7 @@ "import numpy as np\n", "import pandas as pd\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh', 'matplotlib')" + "hv.extension('bokeh', 'matplotlib')" ] }, { diff --git a/examples/reference/elements/matplotlib/Scatter3D.ipynb b/examples/reference/elements/matplotlib/Scatter3D.ipynb index 3bdec7d49a..f2f76f620e 100644 --- a/examples/reference/elements/matplotlib/Scatter3D.ipynb +++ b/examples/reference/elements/matplotlib/Scatter3D.ipynb @@ -22,7 +22,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/reference/elements/matplotlib/Surface.ipynb b/examples/reference/elements/matplotlib/Surface.ipynb index c0d696be37..1dae93f4eb 100644 --- a/examples/reference/elements/matplotlib/Surface.ipynb +++ b/examples/reference/elements/matplotlib/Surface.ipynb @@ -22,7 +22,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/reference/elements/matplotlib/Trisurface.ipynb b/examples/reference/elements/matplotlib/Trisurface.ipynb index b39060d8b3..f472f435a1 100644 --- a/examples/reference/elements/matplotlib/Trisurface.ipynb +++ b/examples/reference/elements/matplotlib/Trisurface.ipynb @@ -24,7 +24,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib')" + "hv.extension('matplotlib')" ] }, { diff --git a/examples/reference/streams/bokeh/curve_selection.ipynb b/examples/reference/streams/bokeh/curve_selection.ipynb index bb9dc5dfef..2588b6a47e 100644 --- a/examples/reference/streams/bokeh/curve_selection.ipynb +++ b/examples/reference/streams/bokeh/curve_selection.ipynb @@ -23,7 +23,7 @@ "import numpy as np\n", "import holoviews as hv\n", "from holoviews import streams\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/user_guide/01-Annotating_Data.ipynb b/examples/user_guide/01-Annotating_Data.ipynb index b6f475c498..4ffa7af2b2 100644 --- a/examples/user_guide/01-Annotating_Data.ipynb +++ b/examples/user_guide/01-Annotating_Data.ipynb @@ -8,7 +8,7 @@ "source": [ "import holoviews as hv\n", "import holoviews.util\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/user_guide/02-Composing_Elements.ipynb b/examples/user_guide/02-Composing_Elements.ipynb index 05bfbb0d3a..9139da8f8a 100644 --- a/examples/user_guide/02-Composing_Elements.ipynb +++ b/examples/user_guide/02-Composing_Elements.ipynb @@ -18,7 +18,7 @@ "import numpy as np\n", "import holoviews as hv\n", "\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/user_guide/08-Gridded_Datasets.ipynb b/examples/user_guide/08-Gridded_Datasets.ipynb index c6330c6fa8..567e336366 100644 --- a/examples/user_guide/08-Gridded_Datasets.ipynb +++ b/examples/user_guide/08-Gridded_Datasets.ipynb @@ -18,7 +18,7 @@ "import xarray as xr\n", "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('matplotlib', 'bokeh')" + "hv.extension('matplotlib', 'bokeh')" ] }, { diff --git a/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb b/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb index 141656c812..e272cad837 100644 --- a/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb +++ b/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb @@ -36,7 +36,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension()" + "hv.extension()" ] }, { @@ -63,7 +63,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension()\n", + "hv.extension()\n", "%opts Layout [fig_size=125] Points [size_index=None] (s=50) Scatter3D [size_index=None]\n", "%opts Bounds (linewidth=2 color='k') {+axiswise} Text (fontsize=16 color='k') Image (cmap='Reds')" ] diff --git a/examples/user_guide/10-Transforming_Elements.ipynb b/examples/user_guide/10-Transforming_Elements.ipynb index 3e5930f436..75bcb114f7 100644 --- a/examples/user_guide/10-Transforming_Elements.ipynb +++ b/examples/user_guide/10-Transforming_Elements.ipynb @@ -18,7 +18,7 @@ "import param\n", "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh', 'matplotlib')" + "hv.extension('bokeh', 'matplotlib')" ] }, { diff --git a/examples/user_guide/12-Custom_Interactivity.ipynb b/examples/user_guide/12-Custom_Interactivity.ipynb index 794e66e10a..30abc88c98 100644 --- a/examples/user_guide/12-Custom_Interactivity.ipynb +++ b/examples/user_guide/12-Custom_Interactivity.ipynb @@ -16,7 +16,7 @@ "import param\n", "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh', 'matplotlib')" + "hv.extension('bokeh', 'matplotlib')" ] }, { diff --git a/examples/user_guide/14-Large_Data.ipynb b/examples/user_guide/14-Large_Data.ipynb index 67ab55a133..21b142a8ce 100644 --- a/examples/user_guide/14-Large_Data.ipynb +++ b/examples/user_guide/14-Large_Data.ipynb @@ -40,7 +40,7 @@ "import datashader as ds\n", "from holoviews.operation.datashader import aggregate, shade, datashade, dynspread\n", "from holoviews.operation import decimate\n", - "hv.notebook_extension('bokeh')\n", + "hv.extension('bokeh')\n", "decimate.max_samples=1000\n", "dynspread.max_px=20\n", "dynspread.threshold=0.5\n", diff --git a/examples/user_guide/Deploying_Bokeh_Apps.ipynb b/examples/user_guide/Deploying_Bokeh_Apps.ipynb index 04a4c3b9dd..ee49e57d3a 100644 --- a/examples/user_guide/Deploying_Bokeh_Apps.ipynb +++ b/examples/user_guide/Deploying_Bokeh_Apps.ipynb @@ -15,7 +15,7 @@ "source": [ "import numpy as np\n", "import holoviews as hv\n", - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { diff --git a/examples/user_guide/Plotting_with_Bokeh.ipynb b/examples/user_guide/Plotting_with_Bokeh.ipynb index 4956b27500..78dbda14cd 100644 --- a/examples/user_guide/Plotting_with_Bokeh.ipynb +++ b/examples/user_guide/Plotting_with_Bokeh.ipynb @@ -58,7 +58,7 @@ }, "outputs": [], "source": [ - "hv.notebook_extension('bokeh')" + "hv.extension('bokeh')" ] }, { From 2e812cf3d054a1f719acd59f335110f76daab6eb Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Mon, 26 Jun 2017 19:52:05 -0500 Subject: [PATCH 85/99] Cleaned up getting_started/customization notebook --- examples/assets/spike_train.csv.gz | Bin 2118 -> 2096 bytes .../getting_started/2-Customization.ipynb | 144 ++++++++---------- 2 files changed, 64 insertions(+), 80 deletions(-) diff --git a/examples/assets/spike_train.csv.gz b/examples/assets/spike_train.csv.gz index e42c418781e45e03f2659f726c673fecc3c74118..8422f793226303669af68cdbbc3687b94a244cd2 100644 GIT binary patch literal 2096 zcmV-02+#K)iwFQ=k5O3w15KGhjwLq;hW9zkQ)C+q_y)O0GK-NWiImAIrw`ch)0^&3 z6n5Ewf%5zF`;Q;re}4P@@4x=|`T6bJKmY#s%cjpBzm8vIedPX^k8J;MBme9BKZkxS z6y~IaWuG}N(E{zFElzjjwj$wrYW6u-bVi9zO|s_B0c$F#CRvM$_!Mo(Y=T8Kn(NArri^3B>(Uw^pP56CNkCQS=43MTdb!jHvZ_8Y>x?Y%j+X8a!1bV$-QRD7W9@Bg?DcZ?6Aut=Au1H zZ)3i&mENb}@g%FKIzbp=zF)g~VZR$1605)dkU{xW=ExBeZhJ%olG5V^vZ7dN62|UR zBzT8t$+T84Vev;{=ci{3(xOxE)lq9v*jXcV@7{E6kbc$;Kc(q(Wxk_zBTN}G-X(K8 zr)+D<1bW(pS$y?LeysDUuRiH)kR;g{Il@Mbwdo^nWZM+b`K%lF<~v$9#%)0sJ9;wW zlDTJ6#tf1o_tB!O=P{JzF|_DD6)B2c@*_O81=>YtfS~8+W7A_mJd%4?}i6_~;aE29+;Q`0~kwK$@O8TAn!ynL%b18|V7+Ce|@l3LRS-8!g<8 zmVr43qIC}Xf|jRp4tHDOuG8aqfTBR<#>xb97&W%;sUz!Yb~Zv`PHx0xbG2@yv63o~ zDxo-HkrS!H(>6h2V{e{88(SgvmZ&YYfw$QgX-{^53;E4)17}MoOubg+E=O$0qb{?O zVRWj^aW@(;;x`f9!Q5fKL>-N*5hmHz3J2EN2Ufpz_DN+lhWQdB zq6%RLX+z0|`6ODRw_XVszHQ#3nNq{jZ;4FlLG0+j3_78!b2q{cN|-@!7xl0m8?`d6 zuB^b_80&qD)aX!Bs&H0R$9mgo-BZ2Ti~?D>uyk8kju8UJ(CW>oe(8WHbwIeqq@^8w z*2}TTC8-bxGV$PKok)&_+IWCm-RO*x^xD=LHL0ZAfN?fcAwsSY0dutHjWyh1UQ0@M zMa3y;7%HWa6jI7{(AR(+90e!~s1v%%jRpm)6y)^~!{(I6R#>gDT7fiOxF%x9i|}Y% zjR(3yK;3wSDlp1H4l@HHKX`_({IG7~Ph2fs7`7s!QW{AirQFh831lsNHaKE$t5>$* z!gar%5)n~eWkw^cPP3(}b+09#0>Qq7%;l(%ZupIap{p8VlU^cmJ(9iVffK&kKizz&Z#Ht zn+izrE50cTPt{n@33Xx}6*y}Ky4gOZt95bwX`q#GRLm;}3R*9wVO6MT^i|8v_KBwg zoL;t1tj*Izj-ttBKF6}U(vbfpz~k?T}GBN|u(O=_$R*@2cK38&{FEzuetLsMR$dZtptT z(ruy>WBKn=?`GJCGT>&psr^YOd@EGtkfi-3ER6@a;YAU6yz?&Ii>Fjj0~!KF4klBS zWOoN9(={7gVf8R{qNE$gNCn}eD14;-VnvhZ2&s+g?8rLQ3>Tne1p6Anz7`%z+_0nx zUSWz8WokfMjad2_b@A%G0%kaU{ib@5`OJ$Vr4>amxIO06W=pRL9ee|%P7vkIRrUI@ASlYJ| z$0&!%Xza;wGse%Hk*XnPMOVpvkKx!e2sO5} z*Q1X zPvhei?B%1gKvWSOZEcbVY>_?MW1J#4Y!RLkWF$o%1n-xoNTo%m$cs-AWS;BaZ&=Y~ a7HN_j=lycJ<7d$8f&T&Vpm$bh9RL8N84H8} literal 2118 zcmV-M2)XwkiwFnc_6gMv1H@S@Yz8H3d|Y zthI~CiVkEtK`ryKGiKhSmb`}*&3f)$_OT1QCf-z&Z0u+Atm!x=zA`t{Tvuk2GKwXy zOKX69W(qyp4AP=_+N0wpIFGc*T{P*=A}+h$BC(>__#-RX8587|mq$|Mj-1z%XU&o= z=q)Y^@7@?VVV6flMQ4=W!F*vWxxa?TleB)73Bm~V{p!^V``yssSpD?}kDb5r965r+ zZIAW_ap}qaJLnnIz5gCWC02_RwkH3cVp{X9a&Ga zvk?k&QX?jtt92udl~jPc5{e@hIgu(nZEq+X?9DT1V=Kho5~Za&@HG7*?a2(dkl!2+ zaJF>9)N57la>Rx_>M|=iR^s-(GZ4wyu`;%!WLa?I_~y@(#?ns~_Np|FCri@2Wi-*M zjLjXDrLd)wfe}Xc;LYu40oc;0Yy0W)0qPgDET2AQRY?CUH3Nmsp6)HRsSt)r+%2V1 zdn3Z$=(NJ=VQiRJ`oUqHlXw~p^V)9YQaA&qzLl2}Pon}OeiLy!m?zAaD5G&T!X!sq z!C;+Zu==gDPs*b)%$FDuRR}w98;TFi$8jZk>*a9a+vY8rDOD`}mdKPEVn+sMkO^Ix zrxA9LjTz+Lq8_$mqgJNXg#>sSW4&*Y5;v5T3Y-$Bpz?k&Bv4%U$Yf0&@s5m7JL!~s5LQ1I)`WmoWkOe|QK6ufg1jDL*qq$h z3ab@XD{M&@u8G+3B0L&bqd}K9P!1j;0*rEy!&HID51!#GKdhVh6IV+YhOLOGltxlW zDYf)e0$B^M4UX8`>Xj|HaNW13L`0NVnb8QV@7dDTy4R9VVZ*)~nafciJ@DIRf`ax8 zYCt5hMWe#g_r8E(omAMZ8}Fm3unkCvJ~}3JFPOVX$V3RdrX>%L??>6xREps-dW zmUEN&e0UneL-XlIfTuKKCugwHsD(VB%L}?3zDViD8tx0xv(9}FDumVV`%j`^Z!Fvh zx3EAm)!n(;kv6o}3r5mZu z2)?jBWY&q)7>B_+r&`!I6_Daryi*if)mYC7bz&U_IBSM|vwcce>*DzDfvbe0U|u#T zNIiHDtwOa&w_0wtPqYf~{jz;xZGKPWs6DC7=U7&EG)PZfsrHnGVYprGi5uyjUmk4K z$c1Y_cg@|1Mcxa2O80fiAZ~FLGJsv%Lq_u;*^94CDFvG#b!NVsC;7-`5$t z`T2FfHVaTDP|-5mcF;W=P`G#WMBngx!o7jNClF}~J^2<{kr$>UH}Y%JMYesi+pBuh z9JC_$`O>?KP^&f`x_6yy_q{|X#`0fN?`GJCJm6-&sXaS^@Gb8uhnw49Ox$R|11~be znDpQI#zim7k z4^WW-Op&Id)AEoy6ME#2Mu7q{w<800Wg!}Pi=lzH7`mzQJZapKIi+a+jyRu*QJv-K zYV|p3*nrfkGfA(faup`}sdVqiiL0ecf#|r>j2igny=k?un#?pKiSU!6??CsuoKohN zqOW~>Dupf8(b&VRb>r|pT%#`0wB~3$K)hr-!WXL@uuh#8TIf;Gy)M57|80&WhJEL2 z=Z{K3bnnQCD{~p`-M=IM`9-x-6m5p8r==t<^1vx_m)ZMn;JZq~M;VH1a4OP-kQgY9 z5fU@8K94-&EArw~1exdh_YEs Date: Tue, 27 Jun 2017 01:57:02 +0100 Subject: [PATCH 86/99] Added paragraph about suppressing stream parameters with rename --- examples/user_guide/11-Responding_to_Events.ipynb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/user_guide/11-Responding_to_Events.ipynb b/examples/user_guide/11-Responding_to_Events.ipynb index e2cd8e2b84..81b883c358 100644 --- a/examples/user_guide/11-Responding_to_Events.ipynb +++ b/examples/user_guide/11-Responding_to_Events.ipynb @@ -430,7 +430,7 @@ "* If your key dimensions and stream parameters match the callable argument names, the definition is valid.\n", "* If your callable accepts mandatory positional arguments and their number matches the number of key dimensions, the names don't need to match and these arguments will be passed key dimensions values.\n", "\n", - "As stream parameters always need to match the argument names, there is a method to allow them to be easily renamed. Let's say you imported a stream class as shown in the [Linked Streams](Linked_Streams.ipynb) tutorial or for this example, reuse the existing ``XY`` stream class. You can then use the ``rename`` method allowing the following definition:" + "As stream parameters always need to match the argument names, there is a method to allow them to be easily renamed. Let's say you imported a stream class as shown in [Custom_Interactivity](12-Custom_Interactivity.ipynb) or for this example, reuse the existing ``XY`` stream class. You can then use the ``rename`` method allowing the following definition:" ] }, { @@ -449,6 +449,13 @@ "dmap" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Occasionally, it is useful to suppress some of the stream parameters of a stream class, especially when using the *linked streams* described in [Custom_Interactivity](12-Custom_Interactivity.ipynb). To do this you can rename the stream parameter to ``None`` so that you no longer need to worry about it being passed as an argument to the callable. To re-enable a stream parameter, it is sufficient to either give the stream parameter it's original string name or a new string name." + ] + }, { "cell_type": "markdown", "metadata": {}, From 194a04f69f07cde0750afbe14e8f62d5866ecfe2 Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Mon, 26 Jun 2017 22:46:05 -0500 Subject: [PATCH 87/99] Cleaned up tabular getting-started --- examples/README.rst | 2 +- .../getting_started/3-Tabular_Datasets.ipynb | 106 +++++++++++------- 2 files changed, 64 insertions(+), 44 deletions(-) diff --git a/examples/README.rst b/examples/README.rst index 031e5d3e06..a26a1a43c1 100644 --- a/examples/README.rst +++ b/examples/README.rst @@ -1,7 +1,7 @@ When working on a notebook in examples/ make sure to run ``python examples.py reference Example.ipynb`` to locate any references to that -notebook in the documenation. +notebook in the documentation. If there are any such references, please check that the content of those pages is still correct. diff --git a/examples/getting_started/3-Tabular_Datasets.ipynb b/examples/getting_started/3-Tabular_Datasets.ipynb index 9565f698c7..da198bc2d9 100644 --- a/examples/getting_started/3-Tabular_Datasets.ipynb +++ b/examples/getting_started/3-Tabular_Datasets.ipynb @@ -7,42 +7,39 @@ "# Tabular Datasets" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import holoviews as hv\n", - "hv.extension('bokeh', 'matplotlib')" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "As we have already discovered Elements are simple wrappers around your data, which provide a semantically meaningful representation. To work directly with a wide range of data formats HoloViews provides flexible and extensible interfaces that allow you to work with two main categories of supported data types:\n", + "As we have already discovered, Elements are simple wrappers around your data that provide a semantically meaningful representation. HoloViews can work with a wide variety of data types, but many of them can be categorized as either:\n", "\n", - " * **Tabular:** Tables of flat columns usually in a tidy format\n", - " * **Gridded:** N-dimensional array-like data\n", + " * **Tabular:** Tables of flat columns, or\n", + " * **Gridded:** Array-like data on 2-dimensional or N-dimensional grids\n", " \n", - "Here we will take a quick tour on how to work with such datasets, for more detail check out the [Columnar Data](...) and [Gridded Data](Gridded_Data.ipynb) user guides. Look especially for details on all the supported formats which include simple dictionaries of column arrays, pandas' ``DataFrame``, dask's ``DataFrame``, xarray's ``DataArray`` and ``Dataset`` and more. Here we will use two of the most flexible and powerful formats: **pandas** DataFrames and **xarray** Datasets to provide a quick overview and introduction." + "These two general data types are explained in detail in the [Tabular Data](../user_guide/07-Tabular_Datasets.ipynb) and [Gridded Data](../user_guide/08-Gridded_Datasets.ipynb) user guides, including all the many supported formats (including Python dictionaries of NumPy arrays, pandas ``DataFrames``, dask ``DataFrames``, and xarray ``DataArrays`` and ``Datasets``). \n", + "\n", + "In this Getting-Started guide we provide a quick overview and introduction to two of the most flexible and powerful formats: columnar **pandas** DataFrames (in this section), and gridded **xarray** Datasets (in the next section)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Tabular" + "## Tabular\n", + "\n", + "Tabular data (also called columnar data) is one of the most common, general, and versatile data formats, corresponding to how data is laid out in a spreadsheet. There are many different ways to put data into a tabular format, but for interactive analysis having [**tidy data**](http://www.jeannicholashould.com/tidy-data-in-python.html) provides flexibility and simplicity. For tidy data, the **columns** of the table represent **variables** or **dimensions** and the **rows** represent **observations**. The best way to understand this format is to look at such a dataset:" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ - "Tabular data is both one of the most common, general and versatile data formats. At the same time there are many different formats tabular data can be laid out in. For interactive analysis the so called **tidy format** is the most flexible and simple. The **columns** and **rows** of the table represent **variables** or **dimensions** and **observations** respectively. The best way to understand this format is to look at such a dataset:" + "import numpy as np\n", + "import pandas as pd\n", + "import holoviews as hv\n", + "hv.extension('bokeh', 'matplotlib')" ] }, { @@ -59,19 +56,36 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This particular dataset was the subject of an excellent piece of visual journalism in the [WSJ](http://graphics.wsj.com/infectious-diseases-and-vaccines/#b02g20t20w15), detailing the incidence of various diseases over time, and was downloaded from the [University of Pittsburgh's Project Tycho](http://www.tycho.pitt.edu/). We can see we have 5 columns corresponding to different variables. We can also make a distinction between the variables. 'Year', 'Week', and 'State' are independent variables and the 'measles' and 'pertussis' columns are the observed or dependent variables. In HoloViews these map onto key dimensions (**kdims**) and value dimensions (**vdims**) respectively.\n", + "This particular dataset was the subject of an excellent piece of visual journalism in the [Wall Street Journal](http://graphics.wsj.com/infectious-diseases-and-vaccines/#b02g20t20w15). The WSJ data details the incidence of various diseases over time, and was downloaded from the [University of Pittsburgh's Project Tycho](http://www.tycho.pitt.edu/). We can see we have 5 data columns, which each correspond either to independent variables that specify a particular measurement ('Year', 'Week', 'State'), or observed/dependent variables reporting what was then actually measured (the 'measles' or 'pertussis' incidence). \n", "\n", - "This is a fairly complex dataset and we can't visualize it all at once. Therefore we will declare a ``Dataset`` Element, which acts as a powerful wrapper for our data and allows us to add additional metadata. One of the most common pieces of metadata are additional labels for the dimensions of our data. We will give the measles and pertussis columns in our dataset more readable labels by supplying a tuple of the form **``(name, label)``** as the dimension. In this notebook we don't need the ``Week`` column so we will quickly the aggregate data computing the mean incidence for each ``Year`` and ``State`` (don't worry, we will cover that later on)." + "Knowing the distinction between those two types of variables is crucial for doing visualizations, but unfortunately the tabular format does not declare this information. Plotting 'Week' against 'State' would not be meaningful, whereas 'measles' for each 'State' (averaging or summing across the other dimensions) would be fine, and there's no way to deduce those constraints from the tabular format. Accordingly, we will first make a HoloViews object called a ``Dataset`` that declares the independent variables (called key dimeansions or **kdims** in HoloViews) and dependent variables (called value dimensions or **vdims**) that you want to work with:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "vdims = [('measles', 'Measles Incidence'), ('pertussis', 'Pertussis Incidence')]\n", - "ds = hv.Dataset(diseases, kdims=['Year', 'State'], vdims=vdims)\n", + "ds = hv.Dataset(diseases, kdims=['Year', 'State'], vdims=vdims)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we've used an optional tuple-based syntax **``(name,label)``** to specify a more meaningful description for the ``vdims``, while using the original short descriptions for the ``kdims``. We haven't yet specified what to do with the ``Week`` dimension, but we are only interested in yearly averages, so let's just tell HoloViews to average over all remaining dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "ds = ds.aggregate(function=np.mean)\n", "ds" ] @@ -80,9 +94,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Now we just have to find the right visualizations to answer the questions we want to ask about the data. For that we can pick from the large library of [Elements] to visualize our data.\n", + "(We'll cover aggregations like ``np.mean`` in detail later, but here the important bit is simply that the ``Week`` dimension can now be ignored.)\n", + "\n", + "The ``repr`` shows us both the ``kdims`` (in square brackets) and the ``vdims`` (in parentheses) of the ``Dataset``. Because it can hold arbitrary combinations of dimensions, a ``Dataset`` is *not* immediately visualizable. There's no single clear mapping from these four dimensions onto a two-dimensional page, hence the textual representation shown above.\n", "\n", - "Perhaps the most natural representation of this dataset is as a Curve displaying the incidence for each year. for each state. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display a timeseries we will pick the ``Curve`` element and specify the ``'Year'`` as the key dimension and the ``'Measles Incidence'`` as the value dimension, which we will refer to by its name (``'measles'``) rather than the more readable but also more verbose label. We will also do the same for the ``'Pertussis Incidence'`` and lay out the two plots." + "To make this data visualizable, we'll need to provide a bit more metadata, by selecting one of the large library of [Elements](../reference/elements/) that can help answer the questions we want to ask about the data. Perhaps the most obvious representation of this dataset is as a Curve displaying the incidence for each year, for each state. We could pull out individual columns one by one from the original dataset, but now that we have declared information about the dimensions, the cleanest approach is to map the dimensions of our ``Dataset`` onto the dimensions of an Element using ``.to``:" ] }, { @@ -99,11 +115,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You will immediately notice that we automatically received a dropdown menu to select which State to view. The ``.to`` interface automatically groups your data by all the key dimensions you didn't assign to the Element, which in this case just leaves the 'State'. To explicitly specify which key dimensions to group over simply supply a list or single dimension as the third positional or ``groupby`` keyword argument.\n", + "Here we specified two ``Curve`` elements showing measles and pertussis incidence respectively (the vdims), per year (the kdim), and laid them out in a vertical column. You'll notice that even though we specified only the short name for the value dimensions, the plot shows the longer names (\"Measles Incidence\", \"Pertussis Incidence\") that we declared on the ``Dataset``.\n", "\n", - "#### Selecting\n", + "You'll also notice that we automatically received a dropdown menu to select which ``State`` to view. Each ``Curve`` ignores unused value dimensions, because additional measurements don't affect each other, but HoloViews has to do *something* with every key dimension for every such plot. If the ``State`` (or any other key dimension) isn't somehow plotted or aggregated over, then HoloViews has to leave choosing a value for it to the user, hence the selection widget. Other options for what to do with extra dimensions or just extra data ranges are illustrated below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Selecting\n", "\n", - "One of the most common thing we might want to do is ``select`` only a subset of the data. The ``select`` method makes this extremely easy letting you select a single value, a list of values supplied as a list and a range of values supplied as a tuple. Here we will use ``select`` to display the display the measles incidence in four states over the 1980s. After applying the selection we again use the ``.to`` method to display the data as ``Bars`` indexed by 'Year' and 'State' key dimensions and displaying the 'Measles Incidence':" + "One of the most common thing we might want to do is to select only a subset of the data. The ``select`` method makes this extremely easy, letting you select a single value, a list of values supplied as a list, or a range of values supplied as a tuple. Here we will use ``select`` to display the measles incidence in four states over one decade. After applying the selection, we use the ``.to`` method as shown earlier, now displaying the data as ``Bars`` indexed by 'Year' and 'State' key dimensions and displaying the 'Measles Incidence' value dimension:" ] }, { @@ -121,14 +144,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Faceting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Above we already saw what happens to key dimensions that we didn't explicitly assign to the Element using the ``.to`` method. They are grouped over and pop up a set of widgets to select the values we want. Often we want to facet the data in other ways however, and HoloViews let's you do this very easily using the ``.overlay``, ``.grid`` and ``.layout`` methods. Using the grid method we can lay out the selected states instead:" + "### Faceting\n", + "\n", + "Above we already saw what happens to key dimensions that we didn't explicitly assign to the Element using the ``.to`` method: they are grouped over, popping up a set of widgets so the user can select the values to show at any one time. However, using widgets is not always the most effective way to view the data, and a ``Dataset`` lets you specify other alternatives using the ``.overlay``, ``.grid`` and ``.layout`` methods. For instance, we can lay out each state separately using ``.grid``:" ] }, { @@ -146,7 +164,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can take the same grouped object and ``overlay`` the individual curves instead of laying them out in a grid. These faceting methods even compose together, meaning that if we had more key dimensions we could ``.overlay`` one dimension, ``.grid`` another and have a widget for any other remaining key dimensions:" + "Or we can take the same grouped object and ``.overlay`` the individual curves instead of laying them out in a grid:" ] }, { @@ -163,16 +181,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Aggregating" + "These faceting methods even compose together, meaning that if we had more key dimensions we could ``.overlay`` one dimension, ``.grid`` another and have a widget for any other remaining key dimensions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Instead of selecting a subset of the data another common operation supported by HoloViews is computing aggregates. When we first loaded this dataset we aggregated over the 'Week' column to compute the mean incidence for every year reducing our data significantly. The ``aggregate`` method is therefore very useful to compute statistics from our data.\n", + "### Aggregating\n", + "\n", + "Instead of selecting a subset of the data, another common operation supported by HoloViews is computing aggregates. When we first loaded this dataset, we aggregated over the 'Week' column to compute the mean incidence for every year, thereby reducing our data significantly. The ``aggregate`` method is therefore very useful to compute statistics from our data.\n", "\n", - "A simple example using our dataset is to compute the mean and standard deviation of the Measles Incidence by ``'Year'``. We can express this simply by passing the key ``dimensions`` to aggregate over (in this case just the 'Year') along with a function and optional ``spreadfn`` to compute the statistics we want. The spread_fn will append the name of the function to the dimension name so we can reference it separately. Once we have computed the aggregate we can simply cast it to a ``Curve`` and ``ErrorBars``:" + "A simple example using our dataset is to compute the mean and standard deviation of the Measles Incidence by ``'Year'``. We can express this simply by passing the key dimensions to aggregate over (in this case just the 'Year') along with a function and optional ``spreadfn`` to compute the statistics we want. The ``spread_fn`` will append the name of the function to the dimension name so we can reference the computed value separately. Once we have computed the aggregate, we can simply cast it to a ``Curve`` and ``ErrorBars``:" ] }, { @@ -190,11 +210,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In this way we can summarize a multi-dimensional dataset to something that can be visualized more easily and allowing us to compute arbitrary statistics along a dimension.\n", + "In this way we can summarize a multi-dimensional dataset as something that can be visualized directly, while allowing us to compute arbitrary statistics along a dimension.\n", "\n", - "### Other data\n", + "## Other data\n", "\n", - "If you want to know more about working with tabular data particularly when using datatypes other than pandas have a look at the [Tabular Data] user guide. The different interfaces allow you to work with everything from simple NumPy arrays to out-of-core dataframes using dask which will scale to visualizations of billions of rows particularly when using the [datashader](https://anaconda.org/jbednar/holoviews_datashader/notebook) integration in HoloViews." + "If you want to know more about working with tabular data, particularly when using datatypes other than pandas, have a look at the [user guide](../user_guide/07-Tabular_Datasets.ipynb). The different interfaces allow you to work with everything from simple NumPy arrays to out-of-core dataframes using dask. Dask dataframes scale to visualizations of billions of rows, when using [datashader](https://anaconda.org/jbednar/holoviews_datashader/notebook) with HoloViews to aggregate the data as needed." ] } ], From a07a82c6da8f7c438721d5e2886ac796816e23cc Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Mon, 26 Jun 2017 23:33:57 -0500 Subject: [PATCH 88/99] Cleaned up getting-started/gridded --- .../getting_started/4-Gridded_Datasets.ipynb | 70 +++++++++++-------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/examples/getting_started/4-Gridded_Datasets.ipynb b/examples/getting_started/4-Gridded_Datasets.ipynb index 558ca020c7..ccae4c28ac 100644 --- a/examples/getting_started/4-Gridded_Datasets.ipynb +++ b/examples/getting_started/4-Gridded_Datasets.ipynb @@ -23,21 +23,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the [previous guide](3-Tabular_Datasets.ipynb) we discovered how to work with tabular datasets. Although this is a near ubiquitous type of data many datasets are best represented by n-dimensional arrays whether that is simple images, volumetric data or higher dimensional parameter spaces. On a 2D screen and using traditional plotting libraries it is often difficult to visualize such parameter spaces quickly and succinctly, using HoloViews we can quickly slice and dice such a dataset to quickly explore the data and answer questions about it." + "In the [previous guide](3-Tabular_Datasets.ipynb) we discovered how to work with tabular datasets. Although tabular datasets are extremely common, many other datasets are best represented by regularly sampled n-dimensional arrays (such as images, volumetric data, or higher dimensional parameter spaces). On a 2D screen and using traditional plotting libraries, it is often difficult to visualize such parameter spaces quickly and succinctly, but HoloViews lets you quickly slice and dice such a dataset to explore the data and answer questions about it easily." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Gridded" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Gridded datasets usually represent observations of some continuous variable across multiple dimensions. This could me everything from a simple image representing luminance values across a 2D surface, volumetric 3D data, an image sequence over time or any other multi-dimensional parameter space. This type of data is particularly common in research areas that make use of spatial imaging or modeling such as climatology, biology and astronomy but can also be used to represent any arbitrary data that varies over multiple dimensions.\n", + "## Gridded\n", + "\n", + "Gridded datasets usually represent observations of some continuous variable across multiple dimensions---a monochrome image representing luminance values across a 2D surface, volumetric 3D data, an RGB image sequence over time, or any other multi-dimensional parameter space. This type of data is particularly common in research areas that make use of spatial imaging or modeling, such as climatology, biology, and astronomy but can also be used to represent any arbitrary data that varies over multiple dimensions.\n", "\n", "In HoloViews terminology the dimensions the data varies over are the so called key dimensions (**kdims**), which define the coordinates of the underlying array. The actual value arrays are described by the value dimensions (**vdims**). Libraries like ``xarray`` or ``iris`` allow you to store the coordinates with the array, but here we will declare the coordinate arrays ourselves so we can get a better understanding of how the gridded data interfaces work. We will therefore start by loading a very simple 3D array:" ] @@ -57,7 +52,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This particular dataset represents imaging data obtained with 2-photon calcium imaging, which provides an indirect measure of neural activity encoded via changes in fluorescent light intensity. The 3D array represents the activity of a 2D imaging plane over time, i.e. it is in effect a sequence of images with a shape of (62, 111) over 50 time steps. Just as we did in the [Tabular Dataset] guide we start by wrapping our data in a HoloViews ``Dataset``. However for HoloViews to understand the raw NumPy array we need to pass coordinates for each of the dimensions (or axes) of the data, here we will simply use integer coordinates for the ``'Time'``, ``'x'`` and ``'y'`` dimensions:" + "This particular NumPy dataset contains data from a 2-photon calcium imaging experiment, which provides an indirect measure of neural activity encoded via changes in fluorescent light intensity. The 3D array represents the activity of a 2D imaging plane over time, forming a sequence of images with a shape of (62, 111) over 50 time steps. Just as we did in the [Tabular Dataset](../4-Tabular_Datasets.ipynb) getting-started guide we start by wrapping our data in a HoloViews ``Dataset``. However, for HoloViews to understand the raw NumPy array we need to pass coordinates for each of the dimensions (or axes) of the data. For simplicity, here we will simply use integer coordinates for the ``'Time'``, ``'x'`` and ``'y'`` dimensions:" ] }, { @@ -91,14 +86,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Other datatypes" + "### Other datatypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Instead of defining the coordinates manually we recommend using [xarray](http://xarray.pydata.org/en/stable/), which will flexibly work with labeled n-dimensional arrays. We can even make a clone of our dataset set the datatype to xarray to convert to an ``xarray.Dataset``, which is the recommended format:" + "Instead of defining the coordinates manually, we recommend using [xarray](http://xarray.pydata.org/en/stable/), which will flexibly work with labeled n-dimensional arrays. We can even make a clone of our dataset and set the datatype to xarray to convert to an ``xarray.Dataset``, which is the recommended format for gridded data in HoloViews:" ] }, { @@ -114,21 +109,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To see more details on working with different datatypes have a look at the [Gridded Data] user guide." + "To see more details on working with different datatypes have a look at the [user guide](../user_guide/08-Gridded_Datasets.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Viewing the data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perhaps the most natural representation of this dataset is as an Image displaying the fluorescence at each point in time. So let's just display it that way, using the ``.to`` interface we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display an image we will pick the ``Image`` element and specify the ``'x'`` and ``'y'`` as the key dimension, since we only have one value dimension we won't have to declare it explicitly." + "### Viewing the data\n", + "\n", + "Perhaps the most natural representation of this dataset is as an Image displaying the fluorescence at each point in time. Using the ``.to`` interface, we can map the dimensions of our ``Dataset`` onto the dimensions of an Element. To display an image, we will pick the ``Image`` element and specify the ``'x'`` and ``'y'`` as the key dimensions. Since we only have one value dimension, we won't have to declare it explicitly:" ] }, { @@ -145,11 +135,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In addition to the slider widget you can select the ``Box select`` tool in the plot toolbar and select a Fluorescence range on the Histogram, which will control the color mapping range. Also try pressing the ``P`` and ``R`` buttons after clicking on the slider to play the animation forward and in reverse respectively. When using ``.to`` or ``.groupby`` on larger datasets you can use the ``dynamic=True`` flag, letting you explore the parameter space dynamically (for more detail have a look at the [Live Data] and [Pipeline] sections).\n", + "The slider widget allows you to scrub through the images for each time, and you can also play the frames as an animation in forward or reverse by pressing the ``P`` and ``R`` keys (respectively) after clicking on the slider. \n", "\n", - "#### Selecting\n", + "Once you have selected an individual plot, you can interact with it by zooming (which does not happen to give additional detail with this particular downsampled dataset), or by selecting the ``Box select`` tool in the plot toolbar and drawing a Fluorescence range on the Histogram to control the color mapping range. \n", "\n", - "Often when working with multi-dimensional datasets we are only interested in small regions of the parameter space. When working with neural imaging data like this it is very common to focus on regions of interest (ROIs) within the larger image. Here we will fetch some bounding boxes the data we loaded earlier. ROIs are often more complex polygons but for simplicity's sake we will use simple rectangular ROIs specified as the left, bottom, right and top coordinate of a bounding box." + "When using ``.to`` or ``.groupby`` on larger datasets with many key dimensions or many distinct key-dimension values, you can use the ``dynamic=True`` flag, letting you explore the parameter space dynamically (for more detail have a look at the [Live Data](../5-Live_Data.ipynb) and [Pipeline] sections)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Selecting\n", + "\n", + "Often when working with multi-dimensional datasets, we are only interested in small regions of the parameter space. For instance, when working with neural imaging data like this, it is very common to focus on regions of interest (ROIs) within the larger image. Here we will fetch some bounding boxes from the data we loaded earlier. ROIs are often more complex polygons but for simplicity's sake we will use simple rectangular ROIs specified as the left, bottom, right and top coordinate of a bounding box:" ] }, { @@ -167,7 +166,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we have 147 ROIs representing bounding boxes around 147 identified neurons in our data. To display them we have wrapped the data in ``Bounds`` elements, which we can overlay on top of our animation. Additionally we will create some ``Text`` elements to label each ROI. Finally we will use the regular Python indexing semantics to select along the Time dimension, which is the first key dimension and can therefore simply with ``ds[21]``. Just like the ``select`` method this indexes and slices by value not the index (which are one and the same here):" + "Here we have 147 ROIs representing bounding boxes around 147 identified neurons in our data. To display them we have wrapped the data in ``Bounds`` elements, which we can overlay on top of our animation. Additionally we will create some ``Text`` elements to label each ROI. Finally we will use the regular Python indexing semantics to select along the Time dimension, which is the first key dimension and can therefore simply be specified like ``ds[21]``. Just like the ``select`` method, indexing like this indexes and slices by value, not the index (which are one and the same here):" ] }, { @@ -188,7 +187,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can use these bounding boxes to select some data since they simply represent coordinates. Have a look at the ROI #60 for example, we can see the neuron activate quite strongly in the middle of our animation. Using the ``select`` method we can select the x and y-coordinates of our ROI and the rough time period when we saw the neuron respond." + "Now we can use these bounding boxes to select some data, since they simply represent coordinates. Looking at ROI #60 for example, we can see the neuron activate quite strongly in the middle of our animation. Using the ``select`` method, we can select the x and y-coordinates of our ROI and the rough time period when we saw the neuron respond:" ] }, { @@ -206,14 +205,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Faceting" + "### Faceting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Even though we have selected a very small region of the data, there is still quite a lot of data there. We can use the ``faceting`` methods to display the data in different ways. Since we have only a few pixels in our dataset now, we can for example plot how the fluorescence changes at each pixel in our ROI over time. We simply use the ``.to`` interface to display the data as ``Curve`` types with time as the key dimension. If you recall from the [Tabular Data](1-Tabular_Data.ipynb), the two method will group by any remaining key dimensions (in this case ``'x'`` and ``'y'``) to display sliders. Here we will instead facet the ``Curve`` elements using the ``.grid``allowing us to see the evolution of the fluorescence signal over time and space:" + "Even though we have selected a very small region of the data, there is still quite a lot of data there. We can use the ``faceting`` methods to display the data in different ways. Since we have only a few pixels in our dataset now, we can for example plot how the fluorescence changes at each pixel in our ROI over time. We simply use the ``.to`` interface to display the data as ``Curve`` types, with time as the key dimension. If you recall from [Tabular Data](3-Tabular_Data.ipynb), the ``.to`` method will group by any remaining key dimensions (in this case ``'x'`` and ``'y'``) to display sliders. Here we will instead facet the ``Curve`` elements using ``.grid``, allowing us to see the evolution of the fluorescence signal over time and space:" ] }, { @@ -230,14 +229,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Aggregating" + "The above cell and the previous cell show the same data, but visualized in very different ways depending on how the data was mapped onto the screen." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Instead of generating a Curve for each pixel individually we may instead want to average the data across x- and y- to get a more robust signal. For that purpose we can use the aggregate method to get the average signal within the ROI window, using the ``spreadfn`` we can also compute the standard deviation between pixels. We will display the mean and standard deviation data as a overlay of a ``Spread`` and ``Curve`` Element:" + "### Aggregating\n", + "\n", + "Instead of generating a Curve for each pixel individually, we may instead want to average the data across x and y to get an aggregated estimate of that neuron's activity. For that purpose we can use the aggregate method to get the average signal within the ROI window. Using the ``spreadfn`` we can also compute the standard deviation between pixels, which helps us understand how variable the signal is across that window (to let us know what we have covered up when aggregating). We will display the mean and standard deviation data as a overlay of a ``Spread`` and ``Curve`` Element:" ] }, { @@ -250,6 +251,15 @@ "agg = roi.aggregate('Time', np.mean, spreadfn=np.std)\n", "hv.Spread(agg) * hv.Curve(agg)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course, we could combine all of these approaches and aggregate each ROI, faceting the entire dataset by ROI to show how the activity of the various neurons differs.\n", + "\n", + "As you can see, HoloViews makes it simple for you to select and display data from a large gridded dataset, allowing you to focus on whatever aspects of the data are important to answer a given question. The final getting-started section covers how you can provide [Live Data](05-Live_Data.ipynb) visualizations to let users dynamically choose what to display interactively." + ] } ], "metadata": { From 68a2567a2361775ab8473479ea47f5ba24579c43 Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Tue, 27 Jun 2017 00:17:43 -0500 Subject: [PATCH 89/99] Cleaned up getting_started/live data --- examples/getting_started/5-Live_Data.ipynb | 120 +++++++-------------- 1 file changed, 40 insertions(+), 80 deletions(-) diff --git a/examples/getting_started/5-Live_Data.ipynb b/examples/getting_started/5-Live_Data.ipynb index 6ac65dd49b..ace4256032 100644 --- a/examples/getting_started/5-Live_Data.ipynb +++ b/examples/getting_started/5-Live_Data.ipynb @@ -11,35 +11,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The 'Getting Started' Guide has up until this point demonstrate how HoloViews objects can wrap your data and be given a rich, useful representation. This has assumed that the data was available in memory so that it could be used to construct the appropriate object.\n", + "The 'Getting Started' guide has up until this point demonstrated how HoloViews objects can wrap your data and be given a rich, useful representation. All of the visualizations assumed that the data was already available in memory so that it could be used to construct the appropriate object, and all of the resulting visualizations can be viewed in static HTML pages, no longer requiring Python when users interact with them.\n", "\n", - "The assumption that the data is immediately available in memory for analysis and visualization does not hold in many different scenarios. The data of interest may exist on some remote server making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk but be too large to fit into memory. Perhaps the data doesn't even exist yet: it may be the result of some computation yet to be performed or the outcome of some live process with the corresponding measurement not yet made.\n", + "In many important scenarios, the assumption that the data is immediately available in memory does not hold. The data of interest may exist on some remote server, making it unavailable locally until it is fetched. In other situations, the data may exist on the local disk, but be too large to fit into memory. Perhaps the data doesn't even exist yet: it may be the result of some computation yet to be performed or the outcome of some live process with the corresponding measurement not yet made.\n", "\n", - "All these examples are of *live data* that can be made available to HoloViews using the appropriate Python process. In this section, we will see how HoloViews allows you to build visualizations that update dynamically to newly available data and that can even respond to live user interaction.

    \n", + "All these scenarios are examples of *live data* that can be made available to HoloViews using the appropriate Python process. In this section, we will see how HoloViews allows you to build visualizations that update dynamically to newly available data and that can respond to live user interaction.\n", "\n", - "
    Note: To work with live data, you need a live server which is why the outputs shown below are GIF animations. If you run this notebook yourself, you will be able to try out your own interactions and compare them to the displayed GIF animations.
    " + "

    Note: To work with live data, you need a live Python server, not a static web site, which is why the outputs shown below are GIF animations. If you run this notebook yourself, you will be able to try out your own interactions and compare them to the displayed GIF animations.

    " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## A computational process" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us start by importing NumPy and HoloViews and setting some suitable defaults for the ``Curve`` element we will be using:" + "## A computational process\n", + "\n", + "Let us start by importing NumPy and HoloViews and setting some suitable defaults for the ``Curve`` element we will be using (disabling axes and grid lines):" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import holoviews as hv\n", @@ -52,7 +45,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are many possible examples of live data including financial data feeds, real-time scientific measurements, and sophisticated numerical simulations. Here we will consider the path traced by two very simple equations:\n", + "There are many possible examples of live data, including financial data feeds, real-time scientific measurements, and sophisticated numerical simulations. Here we will consider the path traced by two very simple equations:\n", "\n", "$$x_{n+1} = \\sin(ay_n) + c \\cos(ax_n)$$\n", "$$y_{n+1} = \\sin(bx_n) + d \\cos(by_n)$$\n", @@ -83,13 +76,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we run this function now, we'll get a list of 10000 tuples which won't be very informative." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "If we run this function now, we'll get a list of 10000 tuples, which won't be very informative.\n", + "\n", "The ``Curve`` element accepts the output of our ``clifford`` function, making it trivial to define a function that when called gives us a visualization:" ] }, @@ -109,15 +97,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The first line with the ``%opts`` line magic disables axes and grids. We can then view the output for some combination of values for ``a,b,c`` and ``d``, starting from the origin:\n" + "We can then view the output for some combination of values for ``a,b,c,d``, starting from the origin:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (line_width=0.03 color='red')\n", @@ -128,29 +114,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This gives us a snapshot for the four chosen values, what we really would like to do is to interact with the four-dimensional parameter space directly." + "This HoloViews element gives us a snapshot for the four chosen values, but what we really would like to do is to interact with the four-dimensional parameter space directly, even though that parameter space is too large to compute all possible combinations feasibly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Live parameter exploration" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To dynamically explore these parameters, we can start by declaring a ``DynamicMap``, passing in our function instead of a dictionary of ``Image`` elements as we saw in the [Introduction](1-Introduction.ipynb). We declare the four arguments of our function as ``kdims``:" + "## Live parameter exploration\n", + "\n", + "To dynamically explore these parameters, we can start by declaring a ``DynamicMap``, passing in our function instead of the dictionary of ``Image`` elements we saw in the [Introduction](1-Introduction.ipynb). We declare the four arguments of our function as ``kdims``:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap = hv.DynamicMap(clifford_attractor, kdims=['a','b','c','d'])\n", @@ -161,15 +140,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "HoloViews does not yet have the information needed to give us a visualization as we have not specified the ranges that the 'a','b','c' and 'd' dimensions can take. We can now do this easily with the ``redim`` method:" + "As you can see from the error message, HoloViews does not yet have the information needed to give us a visualization--it has no way to guess any value to use for the 'a','b','c', and 'd' dimensions. Since we know what suitable values look like, we can easily specify appropriate ranges using the ``redim`` method:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (line_width=0.03 color='green')\n", @@ -195,14 +172,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Live interaction" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The concept of the ``DynamicMap`` also supports live interaction (when using the Bokeh plotting extension) via the *streams system*. A stream is simply a parameter of a corresponding stream class that is configured to track some variable reflecting a user interaction. For this example we'll use ``PointerXY`` to get the ``x`` and ``y`` value of the mouse as it hovers over the plot." + "## Live interaction\n", + "\n", + "The live visualizations above are indistinguishable from standard HoloViews visualization, apart from the speed and memory usage. With a live Python server and the Bokeh backend, HoloViews can also be used for building highly customized forms of live interactivity using ``DynamicMap`` and the *streams system*. A HoloViews stream is simply a parameter of a corresponding stream class configured to track some variable that reflects a user interaction. For instance, let's write a function that accepts an initial ``x`` and ``y`` value and computes a more complex version of the above plot, showing the ``x``,``y`` point as a dot along with a line segment indicating the first step taken when computing the attractor and some text indicating the starting point:" ] }, { @@ -213,14 +185,17 @@ }, "outputs": [], "source": [ - "from holoviews.streams import PointerXY" + "def interactive_clifford(a,b,c,d,x=0,y=0):\n", + " coords = clifford(a,b,c,d,x0=x,y0=y)\n", + " return (hv.Curve(coords) * hv.Points(coords[0]) * hv.Curve(coords[:2], group='Init')\n", + " * hv.Text(-0.75,1.35, 'x:{x:.2f} y:{y:.2f}'.format(x=coords[0][0],y=coords[0][1])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can extend our function to accept the ``x`` and ``y`` values of the pointer to set the initial ``x0`` and ``y0`` values of the attractor. In addition, we can use this position to create a red point that follows the cursor, some text to show the position of this point, and finally a red line segment to show the first step taken when computing the attractor:" + "All we have done is create an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing our Clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and also passing in a `PointerXY` stream that grabs the x,y locations of the mouse (in data space), we have an explorable visualization you can interact with directly. The plot now shows the ttractor (in blue) and the starting point and first step (in red), with the starting point following the mouse position:" ] }, { @@ -231,30 +206,18 @@ }, "outputs": [], "source": [ - "def interactive(a,b,c,d,x=0,y=0):\n", - " coords = clifford(a,b,c,d,x0=x,y0=y)\n", - " return (hv.Curve(coords) * hv.Points(coords[0]) * hv.Curve(coords[:2], group='Init')\n", - " * hv.Text(-0.75,1.35, 'x:{x:.2f} y:{y:.2f}'.format(x=coords[0][0],y=coords[0][1])))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "All we have done is create an ``Overlay`` as described in the [Introduction](1-Introduction.ipynb) containing our clifford attractor curve and a few other HoloViews elements parameterized accordingly, including ``Points`` and the ``Text`` annotation. Now by passing this function to ``DynamicMap`` and setting the ranges as before, we have an explorable visualization you can interact with directly:" + "from holoviews.streams import PointerXY" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (line_width=0.03 color='blue') Points (color='red' size=10) Curve.Init (color='red' line_width=2)\n", "# When run live, this cell's output should match the behavior of the GIF below\n", - "dmap = hv.DynamicMap(interactive, kdims=['a','b','c','d'], streams=[PointerXY(x=0,y=0)])\n", + "dmap = hv.DynamicMap(interactive_clifford, kdims=['a','b','c','d'], streams=[PointerXY(x=0,y=0)])\n", "dmap.redim.range(a=(-1.4,-1),b=(1.6,1.8),c=(1,1.5),d=(0.7,0.8))" ] }, @@ -272,29 +235,24 @@ "\n", "By exploring with the mouse, see if you can find the fixed-point location (where the next step maps you to the same position) located at ``x=0.18,y=0.65`` with parameters ``a=1.4, b=1.6, c=1`` and ``d=0.7``.\n", "\n", - "To learn more about the streams system please consult the [User Guide] and check out our [Linked streams gallery]." + "To learn more about the streams system please consult the [user guide](../user_guide/06-Live_Data.ipynb) and check out our [Streams gallery](../reference/index.html#streams)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Tradeoffs using live data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The DynamicMap together with the streams system allow specification of exciting, dynamic visualizations and interactions. The way it works is that HoloViews runs JavaScript in your browser which then communicates with a running Python server process that may be running in the Jupyter notebook server or in the [Bokeh server]. This Python process may be running locally on your machine or some remote server either online or somewhere else on your local network. Regardless of where it is running, this Python process executes the callback you supply to ``DynamicMap`` allowing HoloViews to update your visualization whenever the parameters change.\n", + "## Tradeoffs using live data\n", "\n", - "This architecture is powerful and fully general as you can always make static content in memory into dynamic output generated by a function (see the [User Guide] to learn more). Using live data is not always recommended, however, as using purely static content also has some important advantages.\n", + "``DynamicMap`` and ``Streams`` allow specification of exciting, dynamic visualizations, allowing you to build full-featured interactive applications and simulations with very little code (particularly when combined with a declarative widget library like [ParamNB](https://github.com/ioam/paramnb) or [ParamBokeh](https://github.com/ioam/parambokeh)). The way these dynamic visualizations work is that HoloViews runs JavaScript in your browser, which then communicates with a running Python server process that may be running in the Jupyter notebook server or in the [Bokeh server](http://bokeh.pydata.org/en/latest/docs/user_guide/server.html). This Python process may be running locally on your machine or on some remote internet or local-network server. Regardless of where it is running, this Python process executes the callback you supply to ``DynamicMap``, allowing HoloViews to update your visualization whenever the parameters change.\n", + "\n", + "This architecture is powerful and fully general, as you can always make static content in memory into dynamic output generated by a function (see the [User Guide](../user_guide/06-Live_Data.ipynb) to learn more). Using live data is not always recommended, however, because using purely static content also has some important advantages:\n", "\n", "### Reasons to use live data\n", "\n", "* Your data is inherently coming from a live source and your visualization needs to reflect this in real time.\n", "* You wish to explore a large parameter space and statically sampling this space adequately is prohibitive in memory or computation time.\n", - "* Your data is too big to fit in memory and you only need to explore a portion of it that you can stream in from disk\n", + "* Your data is too big to fit in memory and you only need to explore a portion of it that you can stream in from disk.\n", "* You want an open-ended visualization that keeps updating indefinitely.\n", "\n", "### Reasons to use static data\n", @@ -302,7 +260,9 @@ "* You wish to archive or record your visualization in such a way that they exist independently of code execution in a potentially changing codebase.\n", "* You wish to share visualizations in a static HTML file that does not require running a live server (e.g a file that can be e-mailed and immediately viewed or placed on an HTML server).\n", "\n", - "The general recommendation is to visualize your data with ``HoloMap`` when you have a small amount of data (typically a few megabytes) that can be quickly computed and can reasonably be embedded into an HTML file. Otherwise, you can use ``DynamicMap`` that you can sample from to generate a ``HoloMap`` from when you wish to share your results (see the [User Guide] for more information on how to turn your ``DynamicMap`` objects into ``HoloMap``s)." + "The general recommendation is to visualize your data with ``HoloMap`` when you have a small amount of data (typically a few megabytes) that can be quickly computed and can reasonably be embedded into an HTML file. Otherwise, you can use ``DynamicMap`` that you can sample from to generate a ``HoloMap`` from when you wish to share your results (see the [user guide](../user_guide/06-Live_Data.ipynb) for more information on how to turn your ``DynamicMap`` objects into ``HoloMap``s).\n", + "\n", + "Now that you have explored the basic capabilities of HoloViews, you should try it out on your own data, guided by the [user guide](../user_guide/) and following examples in the component [reference gallery](../reference/) and other demos in the [gallery](../gallery/)." ] } ], From 62dcb6519f92a07467d7d11f7e3e6af19464a71d Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Tue, 27 Jun 2017 00:20:45 -0500 Subject: [PATCH 90/99] Minor clarification --- examples/getting_started/5-Live_Data.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/getting_started/5-Live_Data.ipynb b/examples/getting_started/5-Live_Data.ipynb index ace4256032..33195992fe 100644 --- a/examples/getting_started/5-Live_Data.ipynb +++ b/examples/getting_started/5-Live_Data.ipynb @@ -260,7 +260,7 @@ "* You wish to archive or record your visualization in such a way that they exist independently of code execution in a potentially changing codebase.\n", "* You wish to share visualizations in a static HTML file that does not require running a live server (e.g a file that can be e-mailed and immediately viewed or placed on an HTML server).\n", "\n", - "The general recommendation is to visualize your data with ``HoloMap`` when you have a small amount of data (typically a few megabytes) that can be quickly computed and can reasonably be embedded into an HTML file. Otherwise, you can use ``DynamicMap`` that you can sample from to generate a ``HoloMap`` from when you wish to share your results (see the [user guide](../user_guide/06-Live_Data.ipynb) for more information on how to turn your ``DynamicMap`` objects into ``HoloMap``s).\n", + "The general recommendation is to visualize your data with ``HoloMap`` (as in the introduction to this guide) when you have a small amount of data (typically a few megabytes) that can be quickly computed and can reasonably be embedded into an HTML file. Otherwise, you can use ``DynamicMap`` that you can sample from to generate a ``HoloMap`` from when you wish to share your results (see the [user guide](../user_guide/06-Live_Data.ipynb) for more information on how to turn your ``DynamicMap`` objects into ``HoloMap``s).\n", "\n", "Now that you have explored the basic capabilities of HoloViews, you should try it out on your own data, guided by the [user guide](../user_guide/) and following examples in the component [reference gallery](../reference/) and other demos in the [gallery](../gallery/)." ] From 495dd97c775896288c29e34d89c30cd04a9f7d83 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 11:50:57 +0100 Subject: [PATCH 91/99] Replaced broken markdown links in elements/matplotlib --- examples/reference/elements/matplotlib/Area.ipynb | 2 +- examples/reference/elements/matplotlib/Arrow.ipynb | 2 +- examples/reference/elements/matplotlib/Bars.ipynb | 2 +- examples/reference/elements/matplotlib/Bounds.ipynb | 2 +- examples/reference/elements/matplotlib/Box.ipynb | 2 +- examples/reference/elements/matplotlib/BoxWhisker.ipynb | 2 +- examples/reference/elements/matplotlib/Contours.ipynb | 2 +- examples/reference/elements/matplotlib/Curve.ipynb | 2 +- examples/reference/elements/matplotlib/Ellipse.ipynb | 2 +- examples/reference/elements/matplotlib/ErrorBars.ipynb | 2 +- examples/reference/elements/matplotlib/HLine.ipynb | 2 +- examples/reference/elements/matplotlib/HSV.ipynb | 2 +- examples/reference/elements/matplotlib/HeatMap.ipynb | 2 +- examples/reference/elements/matplotlib/Histogram.ipynb | 2 +- examples/reference/elements/matplotlib/Image.ipynb | 2 +- examples/reference/elements/matplotlib/ItemTable.ipynb | 2 +- examples/reference/elements/matplotlib/Path.ipynb | 2 +- examples/reference/elements/matplotlib/Points.ipynb | 2 +- examples/reference/elements/matplotlib/Polygons.ipynb | 2 +- examples/reference/elements/matplotlib/QuadMesh.ipynb | 2 +- examples/reference/elements/matplotlib/RGB.ipynb | 2 +- examples/reference/elements/matplotlib/Raster.ipynb | 2 +- examples/reference/elements/matplotlib/Scatter.ipynb | 2 +- examples/reference/elements/matplotlib/Scatter3D.ipynb | 2 +- examples/reference/elements/matplotlib/Spikes.ipynb | 2 +- examples/reference/elements/matplotlib/Spline.ipynb | 2 +- examples/reference/elements/matplotlib/Spread.ipynb | 2 +- examples/reference/elements/matplotlib/Surface.ipynb | 2 +- examples/reference/elements/matplotlib/Table.ipynb | 2 +- examples/reference/elements/matplotlib/Text.ipynb | 2 +- examples/reference/elements/matplotlib/Trisurface.ipynb | 2 +- examples/reference/elements/matplotlib/VLine.ipynb | 2 +- examples/reference/elements/matplotlib/VectorField.ipynb | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/examples/reference/elements/matplotlib/Area.ipynb b/examples/reference/elements/matplotlib/Area.ipynb index 9c56f1943b..5b53fc916e 100644 --- a/examples/reference/elements/matplotlib/Area.ipynb +++ b/examples/reference/elements/matplotlib/Area.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Area Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Area.ipynb)
    [Bokeh](../bokeh/Area.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Arrow.ipynb b/examples/reference/elements/matplotlib/Arrow.ipynb index 25f25cb78b..c8536b0bb3 100644 --- a/examples/reference/elements/matplotlib/Arrow.ipynb +++ b/examples/reference/elements/matplotlib/Arrow.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Arrow
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Arrow.ipynb)
    \n", + "
    Backends
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Bars.ipynb b/examples/reference/elements/matplotlib/Bars.ipynb index 5731148e51..d4f084efe6 100644 --- a/examples/reference/elements/matplotlib/Bars.ipynb +++ b/examples/reference/elements/matplotlib/Bars.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Bars Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Bars.ipynb)
    [Bokeh](../bokeh/Bars.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Bounds.ipynb b/examples/reference/elements/matplotlib/Bounds.ipynb index 2e225f2363..567010751b 100644 --- a/examples/reference/elements/matplotlib/Bounds.ipynb +++ b/examples/reference/elements/matplotlib/Bounds.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Bounds Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Bounds.ipynb)
    [Bokeh](../bokeh/Bounds.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Box.ipynb b/examples/reference/elements/matplotlib/Box.ipynb index 96713da2ff..ce84e8e16b 100644 --- a/examples/reference/elements/matplotlib/Box.ipynb +++ b/examples/reference/elements/matplotlib/Box.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Box Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Box.ipynb)
    [Bokeh](../bokeh/Box.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/BoxWhisker.ipynb b/examples/reference/elements/matplotlib/BoxWhisker.ipynb index f2bca46fe4..3c2dfc2e9f 100644 --- a/examples/reference/elements/matplotlib/BoxWhisker.ipynb +++ b/examples/reference/elements/matplotlib/BoxWhisker.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    BoxWhisker Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./BoxWhisker.ipynb)
    [Bokeh](../bokeh/BoxWhisker.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Contours.ipynb b/examples/reference/elements/matplotlib/Contours.ipynb index b7730686bc..ec214aa799 100644 --- a/examples/reference/elements/matplotlib/Contours.ipynb +++ b/examples/reference/elements/matplotlib/Contours.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Contours Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Contours.ipynb)
    [Bokeh](../bokeh/Contours.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Curve.ipynb b/examples/reference/elements/matplotlib/Curve.ipynb index cd6892410f..7a59cf9aa7 100644 --- a/examples/reference/elements/matplotlib/Curve.ipynb +++ b/examples/reference/elements/matplotlib/Curve.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Curve Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Curve.ipynb)
    [Bokeh](../bokeh/Curve.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Ellipse.ipynb b/examples/reference/elements/matplotlib/Ellipse.ipynb index 15defcc78c..a2ed72ab65 100644 --- a/examples/reference/elements/matplotlib/Ellipse.ipynb +++ b/examples/reference/elements/matplotlib/Ellipse.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Ellipse Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Ellipse.ipynb)
    [Bokeh](../bokeh/Ellipse.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/ErrorBars.ipynb b/examples/reference/elements/matplotlib/ErrorBars.ipynb index 67b660dafc..3df7b6031a 100644 --- a/examples/reference/elements/matplotlib/ErrorBars.ipynb +++ b/examples/reference/elements/matplotlib/ErrorBars.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    ErrorBars Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./ErrorBars.ipynb)
    [Bokeh](../bokeh/ErrorBars.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/HLine.ipynb b/examples/reference/elements/matplotlib/HLine.ipynb index 905f2dd4d3..3e21119e83 100644 --- a/examples/reference/elements/matplotlib/HLine.ipynb +++ b/examples/reference/elements/matplotlib/HLine.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HLine Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./HLine.ipynb)
    [Bokeh](../bokeh/HLine.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/HSV.ipynb b/examples/reference/elements/matplotlib/HSV.ipynb index 32f6a1abd6..a78a674236 100644 --- a/examples/reference/elements/matplotlib/HSV.ipynb +++ b/examples/reference/elements/matplotlib/HSV.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HSV Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./HSV.ipynb)
    [Bokeh](../bokeh/HSV.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/HeatMap.ipynb b/examples/reference/elements/matplotlib/HeatMap.ipynb index 1a84b65efc..e078cd01c7 100644 --- a/examples/reference/elements/matplotlib/HeatMap.ipynb +++ b/examples/reference/elements/matplotlib/HeatMap.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HeatMap Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./HeatMap.ipynb)
    [Bokeh](../bokeh/HeatMap.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Histogram.ipynb b/examples/reference/elements/matplotlib/Histogram.ipynb index 4d5b63e598..5d53bf345e 100644 --- a/examples/reference/elements/matplotlib/Histogram.ipynb +++ b/examples/reference/elements/matplotlib/Histogram.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Histogram Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Histogram.ipynb)
    [Bokeh](../bokeh/Histogram.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Image.ipynb b/examples/reference/elements/matplotlib/Image.ipynb index b02c29ccad..bffc0705dd 100644 --- a/examples/reference/elements/matplotlib/Image.ipynb +++ b/examples/reference/elements/matplotlib/Image.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Image Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Image.ipynb)
    [Bokeh](../bokeh/Image.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/ItemTable.ipynb b/examples/reference/elements/matplotlib/ItemTable.ipynb index 9d9544c6b4..198ffc1951 100644 --- a/examples/reference/elements/matplotlib/ItemTable.ipynb +++ b/examples/reference/elements/matplotlib/ItemTable.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    ItemTable Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./ItemTable.ipynb)
    [Bokeh](../bokeh/ItemTable.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Path.ipynb b/examples/reference/elements/matplotlib/Path.ipynb index ce9e42f11c..67d9696ef1 100644 --- a/examples/reference/elements/matplotlib/Path.ipynb +++ b/examples/reference/elements/matplotlib/Path.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Path Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Path.ipynb)
    [Bokeh](../bokeh/Path.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Points.ipynb b/examples/reference/elements/matplotlib/Points.ipynb index b003dddad2..babe75c1e9 100644 --- a/examples/reference/elements/matplotlib/Points.ipynb +++ b/examples/reference/elements/matplotlib/Points.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Points Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Points.ipynb)
    [Bokeh](../bokeh/Points.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Polygons.ipynb b/examples/reference/elements/matplotlib/Polygons.ipynb index 8105094bab..669bbc0eb3 100644 --- a/examples/reference/elements/matplotlib/Polygons.ipynb +++ b/examples/reference/elements/matplotlib/Polygons.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Polygons Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Polygons.ipynb)
    [Bokeh](../bokeh/Polygons.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/QuadMesh.ipynb b/examples/reference/elements/matplotlib/QuadMesh.ipynb index 14b5992a91..0de495d910 100644 --- a/examples/reference/elements/matplotlib/QuadMesh.ipynb +++ b/examples/reference/elements/matplotlib/QuadMesh.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    QuadMesh Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./QuadMesh.ipynb)
    [Bokeh](../bokeh/QuadMesh.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/RGB.ipynb b/examples/reference/elements/matplotlib/RGB.ipynb index dc9bcb459c..256fa86cba 100644 --- a/examples/reference/elements/matplotlib/RGB.ipynb +++ b/examples/reference/elements/matplotlib/RGB.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    RGB Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./RGB.ipynb)
    [Bokeh](../bokeh/RGB.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Raster.ipynb b/examples/reference/elements/matplotlib/Raster.ipynb index c0f4a6ac31..bc9b96427b 100644 --- a/examples/reference/elements/matplotlib/Raster.ipynb +++ b/examples/reference/elements/matplotlib/Raster.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Raster Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Raster.ipynb)
    [Bokeh](../bokeh/Raster.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Scatter.ipynb b/examples/reference/elements/matplotlib/Scatter.ipynb index 288ce79be2..150adbea5e 100644 --- a/examples/reference/elements/matplotlib/Scatter.ipynb +++ b/examples/reference/elements/matplotlib/Scatter.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Scatter Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Scatter.ipynb)
    [Bokeh](../bokeh/Scatter.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Scatter3D.ipynb b/examples/reference/elements/matplotlib/Scatter3D.ipynb index f2f76f620e..d6d0000293 100644 --- a/examples/reference/elements/matplotlib/Scatter3D.ipynb +++ b/examples/reference/elements/matplotlib/Scatter3D.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Scatter3D Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](../matplotlib/Image.ipynb)
    \n", + "
    Backends
    Matplotlib
    \n", "\n", "
    \n", "" diff --git a/examples/reference/elements/matplotlib/Spikes.ipynb b/examples/reference/elements/matplotlib/Spikes.ipynb index d0e91bd222..1854672926 100644 --- a/examples/reference/elements/matplotlib/Spikes.ipynb +++ b/examples/reference/elements/matplotlib/Spikes.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Spikes Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Spikes.ipynb)
    [Bokeh](../bokeh/Spikes.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Spline.ipynb b/examples/reference/elements/matplotlib/Spline.ipynb index 8a11aacd9b..b9692b5334 100644 --- a/examples/reference/elements/matplotlib/Spline.ipynb +++ b/examples/reference/elements/matplotlib/Spline.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Spline Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Spline.ipynb)
    [Bokeh](../bokeh/Spline.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Spread.ipynb b/examples/reference/elements/matplotlib/Spread.ipynb index fd7f80825a..83691f9194 100644 --- a/examples/reference/elements/matplotlib/Spread.ipynb +++ b/examples/reference/elements/matplotlib/Spread.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Spread Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Spread.ipynb)
    [Bokeh](../bokeh/Spread.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Surface.ipynb b/examples/reference/elements/matplotlib/Surface.ipynb index 1dae93f4eb..e386d59a27 100644 --- a/examples/reference/elements/matplotlib/Surface.ipynb +++ b/examples/reference/elements/matplotlib/Surface.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Surface Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](../matplotlib/Surface.ipynb)
    \n", + "
    Backends
    Matplotlib
    \n", "\n", "
    \n", "" diff --git a/examples/reference/elements/matplotlib/Table.ipynb b/examples/reference/elements/matplotlib/Table.ipynb index 2377305e57..9ad03eef0d 100644 --- a/examples/reference/elements/matplotlib/Table.ipynb +++ b/examples/reference/elements/matplotlib/Table.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Table Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Table.ipynb)
    [Bokeh](../bokeh/Table.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Text.ipynb b/examples/reference/elements/matplotlib/Text.ipynb index b988bae866..bd2b1dcf55 100644 --- a/examples/reference/elements/matplotlib/Text.ipynb +++ b/examples/reference/elements/matplotlib/Text.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Text Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Text.ipynb)
    [Bokeh](../bokeh/Text.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/Trisurface.ipynb b/examples/reference/elements/matplotlib/Trisurface.ipynb index f472f435a1..3ed7f407de 100644 --- a/examples/reference/elements/matplotlib/Trisurface.ipynb +++ b/examples/reference/elements/matplotlib/Trisurface.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Trisurface Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](../matplotlib/Trisurface.ipynb)
    \n", + "
    Backends
    Matplotlib
    \n", "\n", "
    \n", "" diff --git a/examples/reference/elements/matplotlib/VLine.ipynb b/examples/reference/elements/matplotlib/VLine.ipynb index 687a96a197..e27fe1c2b2 100644 --- a/examples/reference/elements/matplotlib/VLine.ipynb +++ b/examples/reference/elements/matplotlib/VLine.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    VLine Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./VLine.ipynb)
    [Bokeh](../bokeh/VLine.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/matplotlib/VectorField.ipynb b/examples/reference/elements/matplotlib/VectorField.ipynb index 62c6d63b99..b8b109e970 100644 --- a/examples/reference/elements/matplotlib/VectorField.ipynb +++ b/examples/reference/elements/matplotlib/VectorField.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    VectorField Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./VectorField.ipynb)
    [Bokeh](../bokeh/VectorField.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] From e5db528a80e2db1d34dabe5f9252b2dca2836b67 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 12:02:01 +0100 Subject: [PATCH 92/99] Replaced broken markdown links in elements/bokeh --- examples/reference/elements/bokeh/Area.ipynb | 2 +- examples/reference/elements/bokeh/Bars.ipynb | 2 +- examples/reference/elements/bokeh/Bounds.ipynb | 2 +- examples/reference/elements/bokeh/Box.ipynb | 2 +- examples/reference/elements/bokeh/BoxWhisker.ipynb | 2 +- examples/reference/elements/bokeh/Contours.ipynb | 2 +- examples/reference/elements/bokeh/Curve.ipynb | 2 +- examples/reference/elements/bokeh/Ellipse.ipynb | 2 +- examples/reference/elements/bokeh/ErrorBars.ipynb | 2 +- examples/reference/elements/bokeh/HLine.ipynb | 2 +- examples/reference/elements/bokeh/HSV.ipynb | 2 +- examples/reference/elements/bokeh/HeatMap.ipynb | 2 +- examples/reference/elements/bokeh/Histogram.ipynb | 2 +- examples/reference/elements/bokeh/Image.ipynb | 2 +- examples/reference/elements/bokeh/ItemTable.ipynb | 2 +- examples/reference/elements/bokeh/Path.ipynb | 2 +- examples/reference/elements/bokeh/Points.ipynb | 2 +- examples/reference/elements/bokeh/Polygons.ipynb | 2 +- examples/reference/elements/bokeh/QuadMesh.ipynb | 2 +- examples/reference/elements/bokeh/RGB.ipynb | 2 +- examples/reference/elements/bokeh/Raster.ipynb | 2 +- examples/reference/elements/bokeh/Scatter.ipynb | 2 +- examples/reference/elements/bokeh/Spikes.ipynb | 2 +- examples/reference/elements/bokeh/Spline.ipynb | 2 +- examples/reference/elements/bokeh/Spread.ipynb | 2 +- examples/reference/elements/bokeh/Table.ipynb | 2 +- examples/reference/elements/bokeh/Text.ipynb | 2 +- examples/reference/elements/bokeh/VLine.ipynb | 2 +- examples/reference/elements/bokeh/VectorField.ipynb | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) diff --git a/examples/reference/elements/bokeh/Area.ipynb b/examples/reference/elements/bokeh/Area.ipynb index 2dda4b69f1..ad33ccb4e5 100644 --- a/examples/reference/elements/bokeh/Area.ipynb +++ b/examples/reference/elements/bokeh/Area.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Area Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Area.ipynb)
    [Matplotlib](../matplotlib/Area.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Bars.ipynb b/examples/reference/elements/bokeh/Bars.ipynb index 2d3be161a2..4bfb13806c 100644 --- a/examples/reference/elements/bokeh/Bars.ipynb +++ b/examples/reference/elements/bokeh/Bars.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Bars Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Bars.ipynb)
    [Matplotlib](../matplotlib/Bars.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Bounds.ipynb b/examples/reference/elements/bokeh/Bounds.ipynb index 1916876d24..4e7226266d 100644 --- a/examples/reference/elements/bokeh/Bounds.ipynb +++ b/examples/reference/elements/bokeh/Bounds.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Bounds Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Bounds.ipynb)
    [Matplotlib](../matplotlib/Bounds.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Box.ipynb b/examples/reference/elements/bokeh/Box.ipynb index bbac360702..1fb04edd84 100644 --- a/examples/reference/elements/bokeh/Box.ipynb +++ b/examples/reference/elements/bokeh/Box.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Box Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Box.ipynb)
    [Matplotlib](../matplotlib/Box.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/BoxWhisker.ipynb b/examples/reference/elements/bokeh/BoxWhisker.ipynb index fe590dcc3b..fffbe22e32 100644 --- a/examples/reference/elements/bokeh/BoxWhisker.ipynb +++ b/examples/reference/elements/bokeh/BoxWhisker.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    BoxWhisker Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./BoxWhisker.ipynb)
    [Matplotlib](../matplotlib/BoxWhisker.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Contours.ipynb b/examples/reference/elements/bokeh/Contours.ipynb index 2b71cd4eea..27c562d286 100644 --- a/examples/reference/elements/bokeh/Contours.ipynb +++ b/examples/reference/elements/bokeh/Contours.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Contours Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Contours.ipynb)
    [Matplotlib](../matplotlib/Contours.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Curve.ipynb b/examples/reference/elements/bokeh/Curve.ipynb index cb962e6b0c..9d66dae6cb 100644 --- a/examples/reference/elements/bokeh/Curve.ipynb +++ b/examples/reference/elements/bokeh/Curve.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Curve Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Curve.ipynb)
    [Matplotlib](../matplotlib/Curve.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Ellipse.ipynb b/examples/reference/elements/bokeh/Ellipse.ipynb index 6c20b403e3..c4f5445237 100644 --- a/examples/reference/elements/bokeh/Ellipse.ipynb +++ b/examples/reference/elements/bokeh/Ellipse.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Ellipse Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Ellipse.ipynb)
    [Matplotlib](../matplotlib/Ellipse.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/ErrorBars.ipynb b/examples/reference/elements/bokeh/ErrorBars.ipynb index df7f1a5df4..5cac2738cd 100644 --- a/examples/reference/elements/bokeh/ErrorBars.ipynb +++ b/examples/reference/elements/bokeh/ErrorBars.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    ErrorBars Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./ErrorBars.ipynb)
    [Matplotlib](../matplotlib/ErrorBars.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/HLine.ipynb b/examples/reference/elements/bokeh/HLine.ipynb index 5ee72429f9..a49a08d0e2 100644 --- a/examples/reference/elements/bokeh/HLine.ipynb +++ b/examples/reference/elements/bokeh/HLine.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HLine Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./HLine.ipynb)
    [Matplotlib](../matplotlib/HLine.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/HSV.ipynb b/examples/reference/elements/bokeh/HSV.ipynb index da65d91448..d95fa83d06 100644 --- a/examples/reference/elements/bokeh/HSV.ipynb +++ b/examples/reference/elements/bokeh/HSV.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HSV Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./HSV.ipynb)
    [Matplotlib](../matplotlib/HSV.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/HeatMap.ipynb b/examples/reference/elements/bokeh/HeatMap.ipynb index 2d3be73bd3..3b4f4f187e 100644 --- a/examples/reference/elements/bokeh/HeatMap.ipynb +++ b/examples/reference/elements/bokeh/HeatMap.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HeatMap Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./HeatMap.ipynb)
    [Matplotlib](../matplotlib/HeatMap.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Histogram.ipynb b/examples/reference/elements/bokeh/Histogram.ipynb index b054ba3e84..6276cccb31 100644 --- a/examples/reference/elements/bokeh/Histogram.ipynb +++ b/examples/reference/elements/bokeh/Histogram.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Histogram Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Histogram.ipynb)
    [Matplotlib](../matplotlib/Histogram.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Image.ipynb b/examples/reference/elements/bokeh/Image.ipynb index f669a292d3..38d0b8c5b0 100644 --- a/examples/reference/elements/bokeh/Image.ipynb +++ b/examples/reference/elements/bokeh/Image.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Image Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Image.ipynb)
    [Matplotlib](../matplotlib/Image.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/ItemTable.ipynb b/examples/reference/elements/bokeh/ItemTable.ipynb index 50d7cc8161..de9e26c33b 100644 --- a/examples/reference/elements/bokeh/ItemTable.ipynb +++ b/examples/reference/elements/bokeh/ItemTable.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    ItemTable Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./ItemTable.ipynb)
    [Matplotlib](../matplotlib/ItemTable.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Path.ipynb b/examples/reference/elements/bokeh/Path.ipynb index d39b731456..7abbe1aea1 100644 --- a/examples/reference/elements/bokeh/Path.ipynb +++ b/examples/reference/elements/bokeh/Path.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Path Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Path.ipynb)
    [Matplotlib](../matplotlib/Path.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Points.ipynb b/examples/reference/elements/bokeh/Points.ipynb index d94b4e31f8..a4cff64d36 100644 --- a/examples/reference/elements/bokeh/Points.ipynb +++ b/examples/reference/elements/bokeh/Points.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Points Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Points.ipynb)
    [Matplotlib](../matplotlib/Points.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Polygons.ipynb b/examples/reference/elements/bokeh/Polygons.ipynb index 94bdf7265f..d6d8e1ad83 100644 --- a/examples/reference/elements/bokeh/Polygons.ipynb +++ b/examples/reference/elements/bokeh/Polygons.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Polygons Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Polygons.ipynb)
    [Matplotlib](../matplotlib/Polygons.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/QuadMesh.ipynb b/examples/reference/elements/bokeh/QuadMesh.ipynb index d5b32b5335..58da23bb21 100644 --- a/examples/reference/elements/bokeh/QuadMesh.ipynb +++ b/examples/reference/elements/bokeh/QuadMesh.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    QuadMesh Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./QuadMesh.ipynb)
    [Matplotlib](../matplotlib/QuadMesh.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/RGB.ipynb b/examples/reference/elements/bokeh/RGB.ipynb index e4be8c0efd..3835162d61 100644 --- a/examples/reference/elements/bokeh/RGB.ipynb +++ b/examples/reference/elements/bokeh/RGB.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    RGB Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./RGB.ipynb)
    [Matplotlib](../matplotlib/RGB.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Raster.ipynb b/examples/reference/elements/bokeh/Raster.ipynb index e5f774d72d..b1689847a5 100644 --- a/examples/reference/elements/bokeh/Raster.ipynb +++ b/examples/reference/elements/bokeh/Raster.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Raster Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Raster.ipynb)
    [Matplotlib](../matplotlib/Raster.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Scatter.ipynb b/examples/reference/elements/bokeh/Scatter.ipynb index 018671a319..c036e7295d 100644 --- a/examples/reference/elements/bokeh/Scatter.ipynb +++ b/examples/reference/elements/bokeh/Scatter.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Scatter Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Scatter.ipynb)
    [Matplotlib](../matplotlib/Scatter.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Spikes.ipynb b/examples/reference/elements/bokeh/Spikes.ipynb index 98d97ba291..1fcf314116 100644 --- a/examples/reference/elements/bokeh/Spikes.ipynb +++ b/examples/reference/elements/bokeh/Spikes.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Spikes Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Spikes.ipynb)
    [Matplotlib](../matplotlib/Spikes.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Spline.ipynb b/examples/reference/elements/bokeh/Spline.ipynb index 4dfc41a373..ed0d8ab6cb 100644 --- a/examples/reference/elements/bokeh/Spline.ipynb +++ b/examples/reference/elements/bokeh/Spline.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Spline Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Spline.ipynb)
    [Matplotlib](../matplotlib/Spline.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Spread.ipynb b/examples/reference/elements/bokeh/Spread.ipynb index d9f10fed28..e01ac435c4 100644 --- a/examples/reference/elements/bokeh/Spread.ipynb +++ b/examples/reference/elements/bokeh/Spread.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Spread Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Spread.ipynb)
    [Matplotlib](../matplotlib/Spread.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Table.ipynb b/examples/reference/elements/bokeh/Table.ipynb index b9a32fc62d..1f79631ec2 100644 --- a/examples/reference/elements/bokeh/Table.ipynb +++ b/examples/reference/elements/bokeh/Table.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Table Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Table.ipynb)
    [Matplotlib](../matplotlib/Table.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/Text.ipynb b/examples/reference/elements/bokeh/Text.ipynb index 7ddb63f8a4..f529dbb3f6 100644 --- a/examples/reference/elements/bokeh/Text.ipynb +++ b/examples/reference/elements/bokeh/Text.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Text Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./Text.ipynb)
    [Matplotlib](../matplotlib/Text.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/VLine.ipynb b/examples/reference/elements/bokeh/VLine.ipynb index 492b578778..225ab62c8a 100644 --- a/examples/reference/elements/bokeh/VLine.ipynb +++ b/examples/reference/elements/bokeh/VLine.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    VLine Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./VLine.ipynb)
    [Matplotlib](../matplotlib/VLine.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/bokeh/VectorField.ipynb b/examples/reference/elements/bokeh/VectorField.ipynb index 1e278a9eff..01c06ee1a2 100644 --- a/examples/reference/elements/bokeh/VectorField.ipynb +++ b/examples/reference/elements/bokeh/VectorField.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    VectorField Element
    \n", "
    Dependencies
    Bokeh
    \n", - "
    Backends
    [Bokeh](./VectorField.ipynb)
    [Matplotlib](../matplotlib/VectorField.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", "
    \n", "" ] From 337daa2b01290f7f0b40ff1bba0f4aed17f0731e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 12:07:45 +0100 Subject: [PATCH 93/99] Replaced broken markdown links in containers/matplotlib --- examples/reference/containers/matplotlib/GridSpace.ipynb | 2 +- examples/reference/containers/matplotlib/HoloMap.ipynb | 2 +- examples/reference/containers/matplotlib/Layout.ipynb | 2 +- examples/reference/containers/matplotlib/NdLayout.ipynb | 2 +- examples/reference/containers/matplotlib/NdOverlay.ipynb | 2 +- examples/reference/containers/matplotlib/Overlay.ipynb | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/reference/containers/matplotlib/GridSpace.ipynb b/examples/reference/containers/matplotlib/GridSpace.ipynb index 1e1bde5db1..d21714745e 100644 --- a/examples/reference/containers/matplotlib/GridSpace.ipynb +++ b/examples/reference/containers/matplotlib/GridSpace.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    GridSpace Container
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./GridSpace.ipynb)
    [Bokeh](../bokeh/GridSpace.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/containers/matplotlib/HoloMap.ipynb b/examples/reference/containers/matplotlib/HoloMap.ipynb index 031ede4356..663f68a351 100644 --- a/examples/reference/containers/matplotlib/HoloMap.ipynb +++ b/examples/reference/containers/matplotlib/HoloMap.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HoloMap Container
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./HoloMap.ipynb)
    [Bokeh](../bokeh/HoloMap.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/containers/matplotlib/Layout.ipynb b/examples/reference/containers/matplotlib/Layout.ipynb index 40174a5451..e400fa28bf 100644 --- a/examples/reference/containers/matplotlib/Layout.ipynb +++ b/examples/reference/containers/matplotlib/Layout.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Layout Container
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Layout.ipynb)
    [Bokeh](../bokeh/Layout.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/containers/matplotlib/NdLayout.ipynb b/examples/reference/containers/matplotlib/NdLayout.ipynb index 2d6f3037c1..59e75c9866 100644 --- a/examples/reference/containers/matplotlib/NdLayout.ipynb +++ b/examples/reference/containers/matplotlib/NdLayout.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    NdLayout Container
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./NdLayout.ipynb)
    [Bokeh](../bokeh/NdLayout.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/containers/matplotlib/NdOverlay.ipynb b/examples/reference/containers/matplotlib/NdOverlay.ipynb index 81a53ff271..cdefd05163 100644 --- a/examples/reference/containers/matplotlib/NdOverlay.ipynb +++ b/examples/reference/containers/matplotlib/NdOverlay.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    NdOverlay Container
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./NdOverlay.ipynb)
    [Bokeh](../bokeh/NdOverlay.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] diff --git a/examples/reference/containers/matplotlib/Overlay.ipynb b/examples/reference/containers/matplotlib/Overlay.ipynb index baf44258aa..5ae73c85ee 100644 --- a/examples/reference/containers/matplotlib/Overlay.ipynb +++ b/examples/reference/containers/matplotlib/Overlay.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Overlay Container
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](./Overlay.ipynb)
    [Bokeh](../bokeh/Overlay.ipynb)
    \n", + "
    Backends
    Matplotlib
    Bokeh
    \n", "
    \n", "" ] From c018dc7cc601f660e497c9aca2828a3d82322765 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 12:31:33 +0100 Subject: [PATCH 94/99] Made the matplotlib Layout notebook more consistent with Overlay --- examples/reference/containers/matplotlib/Layout.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/reference/containers/matplotlib/Layout.ipynb b/examples/reference/containers/matplotlib/Layout.ipynb index e400fa28bf..673b3a90ff 100644 --- a/examples/reference/containers/matplotlib/Layout.ipynb +++ b/examples/reference/containers/matplotlib/Layout.ipynb @@ -56,7 +56,7 @@ "source": [ "xvals = [0.1* i for i in range(100)]\n", "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]))\n", - "scatter = hv.Scatter((xvals[::5], range(20)))\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)))\n", "curve + scatter" ] }, @@ -88,7 +88,7 @@ "outputs": [], "source": [ "curve_list = [ hv.Curve((xvals, [np.sin(f*x) for x in xvals])) for f in [0.5, 0.75]]\n", - "scatter_list = [hv.Scatter((xvals[::5], [f*i for i in range(20)])) for f in [-0.5, 0.5]]\n", + "scatter_list = [hv.Scatter((xvals[::5], f*np.linspace(0,1,20))) for f in [-0.5, 0.5]]\n", "layout = hv.Layout(curve_list + scatter_list).cols(2)\n", "layout" ] @@ -179,7 +179,7 @@ "source": [ "xvals = [0.1* i for i in range(100)]\n", "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]), group='Sinusoid', label='Example')\n", - "scatter = hv.Scatter((xvals[::5], range(20)), group='Linear Points', label='Demo')\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)), group='Linear Points', label='Demo')\n", "layout3 = curve + scatter\n", "layout3" ] From b4c4dd8f1f49be3e848209cc5e1a79de1dd9a433 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 27 Jun 2017 12:31:55 +0100 Subject: [PATCH 95/99] Readded plotly element notebooks --- .../elements/plotly/BoxWhiskers.ipynb | 93 ++++++++++++ .../reference/elements/plotly/Curve.ipynb | 99 ++++++++++++ .../elements/plotly/Distribution.ipynb | 83 ++++++++++ .../reference/elements/plotly/ErrorBars.ipynb | 102 +++++++++++++ .../reference/elements/plotly/HeatMap.ipynb | 106 +++++++++++++ .../reference/elements/plotly/Image.ipynb | 121 +++++++++++++++ .../reference/elements/plotly/ItemTable.ipynb | 65 ++++++++ .../reference/elements/plotly/Points.ipynb | 125 +++++++++++++++ .../reference/elements/plotly/Raster.ipynb | 74 +++++++++ .../reference/elements/plotly/Scatter.ipynb | 129 ++++++++++++++++ .../reference/elements/plotly/Scatter3D.ipynb | 85 +++++++++++ .../reference/elements/plotly/Surface.ipynb | 98 ++++++++++++ .../reference/elements/plotly/Table.ipynb | 143 ++++++++++++++++++ .../elements/plotly/Trisurface.ipynb | 99 ++++++++++++ 14 files changed, 1422 insertions(+) create mode 100644 examples/reference/elements/plotly/BoxWhiskers.ipynb create mode 100644 examples/reference/elements/plotly/Curve.ipynb create mode 100644 examples/reference/elements/plotly/Distribution.ipynb create mode 100644 examples/reference/elements/plotly/ErrorBars.ipynb create mode 100644 examples/reference/elements/plotly/HeatMap.ipynb create mode 100644 examples/reference/elements/plotly/Image.ipynb create mode 100644 examples/reference/elements/plotly/ItemTable.ipynb create mode 100644 examples/reference/elements/plotly/Points.ipynb create mode 100644 examples/reference/elements/plotly/Raster.ipynb create mode 100644 examples/reference/elements/plotly/Scatter.ipynb create mode 100644 examples/reference/elements/plotly/Scatter3D.ipynb create mode 100644 examples/reference/elements/plotly/Surface.ipynb create mode 100644 examples/reference/elements/plotly/Table.ipynb create mode 100644 examples/reference/elements/plotly/Trisurface.ipynb diff --git a/examples/reference/elements/plotly/BoxWhiskers.ipynb b/examples/reference/elements/plotly/BoxWhiskers.ipynb new file mode 100644 index 0000000000..52b09dc061 --- /dev/null +++ b/examples/reference/elements/plotly/BoxWhiskers.ipynb @@ -0,0 +1,93 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    BoxWhisker Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/BoxWhisker.ipynb)
    [Matplotlib](../matplotlib/BoxWhisker.ipynb)
    [Plotly](./BoxWhisker.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ``BoxWhisker`` Element is a quick way of visually summarizing one or more groups of numerical data through their quartiles. \n", + "\n", + "The data of a ``BoxWhisker`` Element may have any number of key dimensions representing the grouping of the value dimension and a single value dimensions representing the distribution of values within each group. See the [Columnar Data Tutorial](../Tutorials/Columnar_Data.ipynb) for supported data formats, which include arrays, pandas dataframes and dictionaries of arrays." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Without any groups a BoxWhisker Element represents a single distribution of values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.BoxWhisker(np.random.randn(1000), vdims=['Value'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By supplying key dimensions we can compare our distributions across multiple variables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts BoxWhisker [width=600 height=400 show_legend=False]\n", + "groups = [chr(65+g) for g in np.random.randint(0, 3, 200)]\n", + "hv.BoxWhisker((groups, np.random.randint(0, 5, 200), np.random.randn(200)),\n", + " kdims=['Group', 'Category'], vdims=['Value']).sort()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Curve.ipynb b/examples/reference/elements/plotly/Curve.ipynb new file mode 100644 index 0000000000..8110d67396 --- /dev/null +++ b/examples/reference/elements/plotly/Curve.ipynb @@ -0,0 +1,99 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Curve Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/Curve.ipynb)
    [Matplotlib](../matplotlib/Curve.ipynb)
    [Plotly](./Curve.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Curve`` Elements are used to display quantitative values over a continuous interval or time span. They accept tabular data with one key dimension representing the samples along the x-axis and one value dimension of the height of the curve at for each sample. See the [Columnar Data Tutorial](../Tutorials/Columnar_Data.ipynb) for supported data formats, which include arrays, pandas dataframes and dictionaries of arrays." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Simple Curve\n", + "\n", + "A ``Curve`` is a set of values provided for some set of keys from a [continuously indexable 1D coordinate system](Continuous_Coordinates.ipynb), where the plotted values will be connected up because they are assumed to be samples from a continuous relation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "points = [(0.1*i, np.sin(0.1*i)) for i in range(100)]\n", + "hv.Curve(points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Interpolation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Curve`` also supports the ``interpolation`` plot option to determine whether to linearly interpolate the curve values or to draw discrete steps:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.NdOverlay({interp: hv.Curve(points[::8])(plot=dict(interpolation=interp))\n", + " for interp in ['linear', 'steps-mid', 'steps-pre', 'steps-post']})" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Distribution.ipynb b/examples/reference/elements/plotly/Distribution.ipynb new file mode 100644 index 0000000000..2d83c444ad --- /dev/null +++ b/examples/reference/elements/plotly/Distribution.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Distribution Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Plotly](./Distribution.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ``Distribution`` Element is a quick way of visualize the distribution of some data visualizing it as a a histogram or kernel density estimate. Unlike the ``Histogram`` Element ``Distribution`` wraps the raw data rather than representing the already binned data.\n", + "\n", + "Here we will wrap a simple numpy array containing 1000 samples of a normal distribution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Distribution(np.random.randn(1000))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Distribution`` Elements like all other Elements can be overlaid allowing us to compare two distributions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Distribution(np.random.randn(1000), label='#1') * hv.Distribution(np.random.randn(1000)+2, label='#2')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/ErrorBars.ipynb b/examples/reference/elements/plotly/ErrorBars.ipynb new file mode 100644 index 0000000000..711be5b9f6 --- /dev/null +++ b/examples/reference/elements/plotly/ErrorBars.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    ErrorBars Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/ErrorBars.ipynb)
    [Matplotlib](../matplotlib/ErrorBars.ipynb)
    [Plotly](./ErrorBars.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``ErrorBars`` provide a visual indicator for the variability of the plotted data on a graph. They are usually applied on top of other plots such as scatter, curve or bar plots to indicate the variability in each sample. \n", + "\n", + "``ErrorBars`` may be used to represent symmetric error or assymetric error. An ``ErrorBars`` Element must have one key dimensions representing the samples along the x-axis and two or three value dimensions representing the value of the sample and positive and negative error values associated with that sample. See the [Columnar Data Tutorial](../Tutorials/Columnar_Data.ipynb) for supported data formats, which include arrays, pandas dataframes and dictionaries of arrays." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Symmetric error\n", + "\n", + "By default the ``ErrorBars`` Element accepts x- and y-coordinates along with a symmetric error value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(7)\n", + "errors = [(0.1*i, np.sin(0.1*i), np.random.rand()/2) for i in np.linspace(0, 100, 11)]\n", + "hv.Curve(errors) * hv.ErrorBars(errors)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Assymetric error" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``ErrorBars`` is a set of x-/y-coordinates with associated error values. Error values may be either symmetric or asymmetric, and thus can be supplied as an Nx3 or Nx4 array (or any of the alternative constructors Chart Elements allow)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "errors = [(0.1*i, np.sin(0.1*i), np.random.rand()/2, np.random.rand()/4) for i in np.linspace(0, 100, 11)]\n", + "hv.Curve(errors) * hv.ErrorBars(errors, vdims=['y', 'yerrneg', 'yerrpos'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/HeatMap.ipynb b/examples/reference/elements/plotly/HeatMap.ipynb new file mode 100644 index 0000000000..6db6450904 --- /dev/null +++ b/examples/reference/elements/plotly/HeatMap.ipynb @@ -0,0 +1,106 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    HeatMap Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/HeatMap.ipynb)
    [Matplotlib](../matplotlib/HeatMap.ipynb)
    [Plotly](./HeatMap.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``HeatMap`` visualises tabular data indexed by two key dimensions as a grid of colored values. This allows spotting correlations in multivariate data and provides a high-level overview of how the two variables are plotted.\n", + "\n", + "The data for a ``HeatMap`` may be supplied as 2D tabular data with one or more associated value dimensions. The first value dimension will be colormapped, but further value dimensions may be revealed using the hover tool." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts HeatMap (cmap='RdBu_r')\n", + "data = [(chr(65+i), chr(97+j), i*j) for i in range(5) for j in range(5) if i!=j]\n", + "hv.HeatMap(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is important to note that the data should be aggregated before plotting as the ``HeatMap`` cannot display multiple values for one coordinate and will simply use the first value it finds for each combination of x- and y-coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "heatmap = hv.HeatMap([(0, 0, 0), (0, 0, 10), (1, 0, 2), (1, 1, 3)])\n", + "heatmap + heatmap.aggregate(function=np.max).opts(plot=dict(colorbar=True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the above example shows before aggregating the second value for the (0, 0) is ignored unless we aggregate the data first.\n", + "\n", + "To reveal the values of a ``HeatMap`` we can enable a ``colorbar`` and if you wish to have interactive hover information, you can use the hover tool in the [Bokeh backend](../bokeh/HeatMap.ipynb):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts HeatMap [colorbar=True]\n", + "hv.HeatMap((np.random.randint(0, 10, 100), np.random.randint(0, 10, 100),\n", + " np.random.randn(100), np.random.randn(100)), vdims=['z', 'z2']).redim.range(z=(-2, 2)).sort()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Image.ipynb b/examples/reference/elements/plotly/Image.ipynb new file mode 100644 index 0000000000..f32860d266 --- /dev/null +++ b/examples/reference/elements/plotly/Image.ipynb @@ -0,0 +1,121 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Image Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/Image.ipynb)
    [Matplotlib](../matplotlib/Image.ipynb)
    [Plotly](./Image.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like ``Raster``, a HoloViews ``Image`` allows you to view 2D arrays using an arbitrary color map. Unlike ``Raster``, an ``Image`` is associated with a [2D coordinate system in continuous space](Continuous_Coordinates.ipynb), which is appropriate for values sampled from some underlying continuous distribution (as in a photograph or other measurements from locations in real space)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ls = np.linspace(0, 10, 200)\n", + "xx, yy = np.meshgrid(ls, ls)\n", + "\n", + "bounds=(-1,-1,1,1) # Coordinate system: (left, bottom, top, right)\n", + "img = hv.Image(np.sin(xx)*np.cos(yy), bounds=bounds)\n", + "img" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Slicing, sampling, etc. on an ``Image`` all operate in this continuous space, whereas the corresponding operations on a ``Raster`` work on the raw array coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img + img[-0.5:0.5, -0.5:0.5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice how, because our declared coordinate system is continuous, we can slice with any floating-point value we choose. The appropriate range of the samples in the input numpy array will always be displayed, whether or not there are samples at those specific floating-point values. This also allows us to index by a floating value, since the ``Image`` is defined as a continuous space it will snap to the closest coordinate, to inspect the closest coordinate we can use the ``closest`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points (color='black' symbol='x' )\n", + "closest = img.closest((0.1,0.1))\n", + "print('The value at position %s is %s' % (closest, img[0.1, 0.1]))\n", + "img * hv.Points([img.closest((0.1,0.1))])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also easily take cross-sections of the Image by using the sample method or collapse a dimension using the ``reduce`` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "img.sample(x=0) + img.reduce(x=np.mean)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/ItemTable.ipynb b/examples/reference/elements/plotly/ItemTable.ipynb new file mode 100644 index 0000000000..ce740a81f4 --- /dev/null +++ b/examples/reference/elements/plotly/ItemTable.ipynb @@ -0,0 +1,65 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    ItemTable Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/ItemTable.ipynb)
    [Matplotlib](../matplotlib/ItemTable.ipynb)
    [Plotly](./ItemTable.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An ``ItemTable`` is an ordered collection of key, value pairs. It can be used to directly visualize items in a tabular format where the items may be supplied as an ``OrderedDict`` or a list of (key,value) pairs. A standard Python dictionary can be easily visualized using a call to the ``.items()`` method, though the entries in such a dictionary are not kept in any particular order, and so you may wish to sort them before display. One typical usage for an ``ItemTable`` is to list parameter values or measurements associated with an adjacent ``Element``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.ItemTable([('Age', 10), ('Weight',15), ('Height','0.8 meters')])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Points.ipynb b/examples/reference/elements/plotly/Points.ipynb new file mode 100644 index 0000000000..0baa413f8c --- /dev/null +++ b/examples/reference/elements/plotly/Points.ipynb @@ -0,0 +1,125 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Points Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/Points.ipynb)
    [Matplotlib](../matplotlib/Points.ipynb)
    [Plotly](./Points.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Points`` element visualizes as markers placed in a space of two independent variables, traditionally denoted *x* and *y*. In HoloViews, the names ``'x'`` and ``'y'`` are used as the default ``key_dimensions`` of the element. We can see this from the default axis labels when visualizing a simple ``Points`` element:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points (color='black' symbol='x')\n", + "np.random.seed(12)\n", + "coords = np.random.rand(50,2)\n", + "hv.Points(coords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here both the random *x* values and random *y* values are *both* considered to be the 'data' with no dependency between them (compare this to how [``Scatter``](./Scatter.ipynb) elements are defined). You can think of ``Points`` as simply marking positions in some two-dimensional space that can be sliced by specifying a 2D region-of-interest:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points (color='black' symbol='x' size=10)\n", + "hv.Points(coords) + hv.Points(coords)[0.6:0.8,0.2:0.5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although the simplest ``Points`` element simply mark positions in a two-dimensional space without any associated value this doesn't mean value dimensions aren't supported. Here is an example with two additional quantities for each point, declared as the ``value_dimension``s *z* and α visualized as the color and size of the dots, respectively:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Points [color_index=2]\n", + "np.random.seed(10)\n", + "data = np.random.rand(100,4)\n", + "\n", + "points = hv.Points(data, vdims=['z', 'size'])\n", + "points + points[0.3:0.7, 0.3:0.7].hist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the right subplot, the ``hist`` method is used to show the distribution of samples along the first value dimension we added (*z*).\n", + "\n", + "\n", + "The marker shape specified above can be any supported by [matplotlib](http://matplotlib.org/api/markers_api.html), e.g. ``s``, ``d``, or ``o``; the other options select the color and size of the marker. For convenience with the [bokeh backend](Bokeh_Backend), the matplotlib marker options are supported using a compatibility function in HoloViews." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: Although the ``Scatter`` element is superficially similar to the [``Points``](./Points.ipynb) element (they can generate plots that look identical), the two element types are semantically quite different. The fundamental difference is that [``Points``](./Points.ipynb) are used to visualize data where the *y* variable is *dependent*. This semantic difference also explains why the histogram generated by ``hist`` call above visualizes the distribution of a different dimension than it does for [``Scatter``](./Scatter.ipynb).\n", + "\n", + "This difference means that ``Points`` naturally combine elements that express independent variables in two-dimensional space, for instance [``Raster``](./Raster.ipynb) types such as [``Image``](./Image.ipynb). Similarly, ``Scatter`` expresses a dependent relationship in two-dimensions and combine naturally with ``Chart`` types such as [``Curve``](./Curve.ipynb)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Raster.ipynb b/examples/reference/elements/plotly/Raster.ipynb new file mode 100644 index 0000000000..1267d5f3bd --- /dev/null +++ b/examples/reference/elements/plotly/Raster.ipynb @@ -0,0 +1,74 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Raster Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/Raster.ipynb)
    [Matplotlib](../matplotlib/Raster.ipynb)
    [Plotly](./Raster.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ``Raster`` is the base class for image-like elements (namely [``Image``](./Image.ipynb), [``RGB``](./RGB.ipynb) and [``HSV``](./HSV.ipynb)), but may be used directly to visualize 2D arrays using a color map:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = np.linspace(0,4,202)\n", + "ys,xs = np.meshgrid(xvals, -xvals[::-1])\n", + "hv.Raster(np.sin(((ys)**3)*xs))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The coordinate system of a ``Raster`` is the raw indexes of the underlying array, with integer values always starting from (0,0) in the top left, with default extents corresponding to the shape of the array. For a similar element used to visualize arrays but defined in a continuous Cartesian coordinate system, use the [``Image``](./Image.ipynb) element." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Scatter.ipynb b/examples/reference/elements/plotly/Scatter.ipynb new file mode 100644 index 0000000000..2529d204cf --- /dev/null +++ b/examples/reference/elements/plotly/Scatter.ipynb @@ -0,0 +1,129 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Scatter Element
    \n", + "
    Dependencies
    Plotly
    \n", + "
    Backends
    [Bokeh](../bokeh/Scatter.ipynb)
    [Matplotlib](../matplotlib/Scatter.ipynb)
    [Plotly](./Scatter.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Scatter`` element visualizes as markers placed in a space of one independent variable, traditionally denoted as *x*, against a dependent variable, traditonally denoted as *y*. In HoloViews, the name ``'x'`` is the default dimension name used in the ``key_dimensions`` and ``'y'`` is the default dimension name used in the ``value_dimensions``. We can see this from the default axis labels when visualizing a simple ``Scatter`` element:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter (color='k' symbol='s' size=10)\n", + "np.random.seed(42)\n", + "coords = [(i, np.random.random()) for i in range(20)]\n", + "hv.Scatter(coords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here the random *y* values are considered to be the 'data' whereas the x positions express where those values are located (compare this to how [``Points``](./Points.ipynb) elements are defined). In this sense, ``Scatter`` can be thought of as a [``Curve``](./Curve.ipynb) without any lines connecting the samples and you can use slicing to view the *y* values corresponding to a chosen *x* range:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter (color='k' symbol='x' size=10)\n", + "hv.Scatter(coords)[0:12] + hv.Scatter(coords)[12:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ``Scatter`` element must always have at least one value dimension but that doesn't mean additional value dimensions aren't supported. Here is an example with two additional quantities for each point, declared as the ``value_dimension``s *z* and α visualized as the color and size of the dots, respectively:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter [color_index=2]\n", + "np.random.seed(10)\n", + "data = np.random.rand(100,4)\n", + "\n", + "scatter = hv.Scatter(data, vdims=['y', 'z', 'size'])\n", + "scatter + scatter[0.3:0.7, 0.3:0.7].hist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the right subplot, the ``hist`` method is used to show the distribution of samples along our first value dimension, (*y*)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The marker shape specified above can be any supported by [matplotlib](http://matplotlib.org/api/markers_api.html), e.g. ``s``, ``d``, or ``o``; the other options select the color and size of the marker. For convenience with the [bokeh backend](Bokeh_Backend), the matplotlib marker options are supported using a compatibility function in HoloViews." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: Although the ``Scatter`` element is superficially similar to the [``Points``](./Points.ipynb) element (they can generate plots that look identical), the two element types are semantically quite different: ``Points`` are used to visualize data where the *y* variable is *dependent*. This semantic difference also explains why the histogram generated by ``hist`` call above visualizes the distribution of a different dimension than it does for [``Points``](./Points.ipynb).\n", + "\n", + "This difference means that ``Scatter`` naturally combine elements that express dependent variables in two-dimensional space such as the ``Chart`` types, such as [``Curve``](./Curve.ipynb). Similarly, ``Points`` express a independent relationship in two-dimensions and combine naturally with [``Raster``](./Raster.ipynb) types such as [``Image``](./Image.ipynb)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Scatter3D.ipynb b/examples/reference/elements/plotly/Scatter3D.ipynb new file mode 100644 index 0000000000..e36ad22fd6 --- /dev/null +++ b/examples/reference/elements/plotly/Scatter3D.ipynb @@ -0,0 +1,85 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Scatter3D Element
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](../matplotlib/Scatter3D.ipynb)
    [Plotly](./Scatter3D.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Scatter3D`` represents three-dimensional coordinates which may be colormapped or scaled in size according to a value. They are therefore very similar to [``Points``](Points.ipynb) and [``Scatter``](Scatter.ipynb) types but have one additional coordinate dimension. Like other 3D elements the camera angle can be controlled using ``azimuth``, ``elevation`` and ``distance`` plot options:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter3D [width=500 height=500 camera_zoom=20 color_index=2] (size=5 cmap='fire')\n", + "y,x = np.mgrid[-5:5, -5:5] * 0.1\n", + "heights = np.sin(x**2+y**2)\n", + "hv.Scatter3D(zip(x.flat,y.flat,heights.flat))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just like all regular 2D elements, ``Scatter3D`` types can be overlaid and will follow the default color cycle: \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Scatter3D [width=500 height=500] (symbol='x' size=2)\n", + "hv.Scatter3D(np.random.randn(100,4), vdims=['Size']) * hv.Scatter3D(np.random.randn(100,4)+2, vdims=['Size'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Surface.ipynb b/examples/reference/elements/plotly/Surface.ipynb new file mode 100644 index 0000000000..4af8b4a619 --- /dev/null +++ b/examples/reference/elements/plotly/Surface.ipynb @@ -0,0 +1,98 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Surface Element
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](../matplotlib/Surface.ipynb)
    [Plotly](./Surface.ipynb)
    \n", + "\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Surface`` is used for a set of gridded points whose associated value dimension represents samples from a continuous surface. ``Surface`` is equivalent to an ``Image`` type and supports all the same data formats, including simply NumPy arrays with associated ``bounds`` and other gridded data formats such as xarray.\n", + "\n", + "Rendering a large can often be quite expensive, using ``rstride`` and ``cstride`` we can draw a coarser surface. We can also control the ``azimuth``, ``elevation`` and ``distance`` as plot options to control the camera angle:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%%opts Surface [width=500 height=500] (cmap='plasma')\n", + "hv.Surface(np.sin(np.linspace(0,100*np.pi*2,10000)).reshape(100,100))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to a simple surface plots, the matplotlib surface plot also supports other related ``plot_type`` modes including ``'wireframe'`` and ``'contour'`` plots:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%%opts Surface [width=500 height=500] (cmap='fire')\n", + "xs = np.arange(-4, 4, 0.25)\n", + "ys = np.arange(-4, 4, 0.25)\n", + "X, Y = np.meshgrid(xs, ys)\n", + "R = np.sqrt(X**2 + Y**2)\n", + "Z = np.sin(R)\n", + "surface = hv.Surface((xs, ys, Z))\n", + "surface" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Table.ipynb b/examples/reference/elements/plotly/Table.ipynb new file mode 100644 index 0000000000..94ee4bf853 --- /dev/null +++ b/examples/reference/elements/plotly/Table.ipynb @@ -0,0 +1,143 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Table Element
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Bokeh](../bokeh/Table.ipynb)
    [Matplotlib](../matplotlib/Table.ipynb)
    [Plotly](./Table.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A table is more general than an [``ItemTable``](./ItemTable.ioynb), as it allows multi-dimensional keys and multidimensional values. Let's say we have the following data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "gender = ['M','M', 'M','F']\n", + "age = [10,16,13,12]\n", + "weight = [15,18,16,10]\n", + "height = [0.8,0.6,0.7,0.8]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can construct a ``Table`` using a dictionary format (identical in format as that accepted by the [pandas](http://pandas.pydata.org/) ``DataFrame``):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.Table({'Gender':gender, 'Age':age, 'Weight':weight, 'Height':height},\n", + " kdims = ['Gender', 'Age'], vdims=['Weight', 'Height'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or we can declare the same table by dimension position, with key dimensions followed by value dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table = hv.Table((gender, age, weight, height), kdims = ['Gender', 'Age'], vdims=['Weight', 'Height'])\n", + "table" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that you can use the ``select`` method using tables by the key dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table.select(Gender='M') + table.select(Gender='M', Age=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Table`` is used as a common data structure that may be converted to any other HoloViews data structure via the ``to`` utility available on the object. Here we use this utility to show the weight of the males in our datset by age:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table.select(Gender='M').to.curve(kdims=[\"Age\"], vdims=[\"Weight\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For more extended usage of table conversion see the [Columnar Data](Columnnar_Data.ipynb) and [Pandas Conversion](Pandas_Conversion.ipynb) Tutorials." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [default]", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/reference/elements/plotly/Trisurface.ipynb b/examples/reference/elements/plotly/Trisurface.ipynb new file mode 100644 index 0000000000..346fa4fe4d --- /dev/null +++ b/examples/reference/elements/plotly/Trisurface.ipynb @@ -0,0 +1,99 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Trisurface Element
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    [Matplotlib](../matplotlib/Trisurface.ipynb)
    [Plotly](./Trisurface.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.notebook_extension('plotly')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Trisurface`` Element renders any collection of 3D points as a surface by applying [Delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation). It is therefore useful for plotting an arbitrary collection of datapoints as a 3D surface. Like other 3D elements it supports ``azimuth``, ``elevation`` and ``distance`` plot options to control the camera position:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Trisurface [width=500 height=500]\n", + "y,x = np.mgrid[-5:5, -5:5] * 0.1\n", + "heights = np.sin(x**2+y**2)\n", + "hv.Trisurface((x.flat,y.flat,heights.flat))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like all other colormapped plots we can easily add a ``colorbar`` and control the ``cmap`` of the plot:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%opts Trisurface [width=500 height=500 colorbar=True] (cmap='fire')\n", + "\n", + "u=np.linspace(0,2*np.pi, 24)\n", + "v=np.linspace(-1,1, 8)\n", + "u,v=np.meshgrid(u,v)\n", + "u=u.flatten()\n", + "v=v.flatten()\n", + "\n", + "#evaluate the parameterization at the flattened u and v\n", + "tp=1+0.5*v*np.cos(u/2.)\n", + "x=tp*np.cos(u)\n", + "y=tp*np.sin(u)\n", + "z=0.5*v*np.sin(u/2.)\n", + "\n", + "surface = hv.Trisurface((x, y, z), label='Moebius band')\n", + "surface" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:science]", + "language": "python", + "name": "conda-env-science-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 87348d0476d272f99fd12765623142bf6b5a2471 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 12:33:19 +0100 Subject: [PATCH 96/99] Added bokeh container notebooks --- .../containers/bokeh/GridSpace.ipynb | 137 ++++++++++ .../reference/containers/bokeh/HoloMap.ipynb | 251 ++++++++++++++++++ .../reference/containers/bokeh/Layout.ipynb | 233 ++++++++++++++++ .../reference/containers/bokeh/NdLayout.ipynb | 161 +++++++++++ .../containers/bokeh/NdOverlay.ipynb | 162 +++++++++++ .../reference/containers/bokeh/Overlay.ipynb | 234 ++++++++++++++++ 6 files changed, 1178 insertions(+) create mode 100644 examples/reference/containers/bokeh/GridSpace.ipynb create mode 100644 examples/reference/containers/bokeh/HoloMap.ipynb create mode 100644 examples/reference/containers/bokeh/Layout.ipynb create mode 100644 examples/reference/containers/bokeh/NdLayout.ipynb create mode 100644 examples/reference/containers/bokeh/NdOverlay.ipynb create mode 100644 examples/reference/containers/bokeh/Overlay.ipynb diff --git a/examples/reference/containers/bokeh/GridSpace.ipynb b/examples/reference/containers/bokeh/GridSpace.ipynb new file mode 100644 index 0000000000..b578e582b8 --- /dev/null +++ b/examples/reference/containers/bokeh/GridSpace.ipynb @@ -0,0 +1,137 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    GridSpace Container
    \n", + "
    Dependencies
    Bokeh
    \n", + "
    Backends
    [Bokeh](./GridSpace.ipynb)
    [Matplotlib](../matplotlib/GridSpace.ipynb)
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ``GridSpace`` is a two-dimensional dictionary of HoloViews objects presented onscreen as a grid. In one sense, due to the restriction on it's dimensionality, a ``GridSpace`` may be considered a special-case of [``HoloMap``](./HoloMap.ipynb). In another sense, ``GridSpace`` may be seen as more general as a ``GridSpace`` can hold a ``HoloMap`` but the converse is not permitted; see the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``GridSpace`` holds two-dimensional dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``sine_curve`` function below, we can declare a two-dimensional dictionary of ``Curve`` elements, where the keys are 2-tuples corresponding to (phase, frequency) values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "phases = [0, np.pi/2, np.pi, 3*np.pi/2]\n", + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in phases for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now pass this dictionary of curves to ``GridSpace``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "gridspace = hv.GridSpace(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "gridspace" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``GridSpace`` is similar to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other than the difference in the visual semantics, whereby ``GridSpaces`` display their contents together in a two-dimensional grid, ``GridSpaces`` are very similar to ``HoloMap``s (see the [``HoloMap``](./HoloMap.ipynb) notebook for more information).\n", + "\n", + "One way to demonstrate the similarity of these two containers is to cast our ``gridspace`` object to ``HoloMap`` and back to a ``GridSpace``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%%output size=50\n", + "hmap = hv.HoloMap(gridspace)\n", + "hmap + hv.GridSpace(hmap)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/reference/containers/bokeh/HoloMap.ipynb b/examples/reference/containers/bokeh/HoloMap.ipynb new file mode 100644 index 0000000000..bdd8742958 --- /dev/null +++ b/examples/reference/containers/bokeh/HoloMap.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    HoloMap Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A HoloMap is an explorable multi-dimensional dictionary of HoloViews objects. A ``HoloMap`` cannot contain ``Layouts``, ``NdLayouts``, ``GridSpaces`` or other ``HoloMaps`` or ``DyamicMap`` but can contain any other HoloViews object. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` holds dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a ``HoloMap`` is a dictionary of elements, let us now create a dictionary of sine curves:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "\n", + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "curve_dict = {f:sine_curve(0,f) for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a dictionary where the frequency is the key and the corresponding curve element is the value. We can now turn this dictionary into a ``HoloMap`` by declaring the keys as corresponding to the frequency key dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(curve_dict, kdims=['frequency'])\n", + "hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` is multi-dimensional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using tuple keys and making sure each position in the tuple is assigned a corresponding ``kdim``, ``HoloMaps`` allow exploration of a multi-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "phases = [0, np.pi/2, np.pi, 3*np.pi/2]\n", + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in phases for f in frequencies}\n", + "hmap = hv.HoloMap(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` supports dictionary-like behavior" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HoloMaps support a number of features similar to regular dictionaries, including **assignment**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(kdims=['phase', 'frequency'])\n", + "for (phase, freq) in [(0,0.5), (0.5,0.5), (0.5,1), (0,1)]:\n", + " hmap[(phase, freq)] = sine_curve(phase,freq)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Key membership predicate**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(0, 0.5) in hmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The ``get`` method:**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap.get((0,0.5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` supports multi-dimensional indexing and slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One difference with regular dictionaries, is that ``HoloMaps`` support multi-dimensional indexing:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap[0,1] + hmap[0,:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See the [User Guide] for more information on selecting, slicing and indexing." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``HoloMap`` is ordered" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One difference with regular Python dictionaries is that they are *ordered*, which can be observed by inspecting the ``.data`` attribute:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that internally, ``HoloMaps`` uses [``OrderedDict``](https://docs.python.org/3.6/library/collections.html#collections.OrderedDict) where the keys are sorted by default. You can set ``sort=False`` and then either supply an ordered list of (key, value) tuples, an ``OrderedDict`` or insert items in a chosen order.\n", + "\n", + "That said, there is generally very-little reason to ever use ``sort=False`` as regular Python dictionaries do not have a well-defined key ordering and ``HoloViews`` sliders work regardless of the ordering used. The only reason to set the ordering is if you wish to iterate over a ``HoloMap`` using the ``items``, ``keys``, ``values`` methods or use the iterator interface." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/reference/containers/bokeh/Layout.ipynb b/examples/reference/containers/bokeh/Layout.ipynb new file mode 100644 index 0000000000..aa0ea716b4 --- /dev/null +++ b/examples/reference/containers/bokeh/Layout.ipynb @@ -0,0 +1,233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Layout Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A Layout is a collection of HoloViews objects that are related in some way, to be displayed side-by-side. Like ``Overlay`` and unlike other containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdLayout``](./NdLayout.ipynb) a ``Layout`` is *not* dictionary like: it holds potentially heterogeneous types without any dimensioned keys.\n", + "\n", + "\n", + "A ``Layout`` cannot contain ``NdLayouts`` but can otherwise contain *any* other HoloViews object. See [Building Composite Objects](05-Building_Composite_Objects.ipynb) for more details on how to compose containers. It is best to learn about ``Layout`` and [``Overlay``](./Overlay.ipynb) together as they are very closely related objects that share many core concepts." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Layout`` is a heterogeneous collection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build a ``Layout`` between any two HoloViews objects (which can have different types) using the ``+`` operator:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]))\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)))\n", + "curve + scatter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we have a ``Layout`` composed of a ``Curve`` element and a ``Scatter`` element. The one restriction on what you can put in a ``Layout`` is that you cannot combine an [``NdLayout``](./NdLayout.ipynb) with a regular ``Layout``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building ``Layout`` from a list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build Layout's of any size by passing a list of objects to the ``Layout`` constructor as shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_list = [ hv.Curve((xvals, [np.sin(f*x) for x in xvals])) for f in [0.5, 0.75]]\n", + "scatter_list = [hv.Scatter((xvals[::5], f*np.linspace(0,1,20))) for f in [-0.5, 0.5]]\n", + "layout = hv.Layout(curve_list + scatter_list).cols(2)\n", + "layout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note the use of the ``.cols`` method to specify the number of columns, wrapping to the next row in scanline order (top-to-bottom and left-to-right)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A ``Layout`` has two-level attribute access" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Layout`` and ``Overlay`` are fundamentally tree-structures holding arbitrary heterogenous HoloViews objects and are quite different from the dictionary-like dimensioned containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdLayout``](./NdLayout.ipynb).\n", + "\n", + "All HoloViews objects have string ``group`` and ``label`` parameters, resulting in a 2-level attribute access on ``Layout`` objects. First let us see how to index the above example where ``group`` and ``label`` was not specified for any of the elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout2 = layout.Curve.I + layout.Scatter.II\n", + "layout2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we create a second layout by indexing two elements from our earlier ``layout`` object. We see that the first level is the ``group`` string (which defaults to the element class name) followed by the label, which wasn't set and is therefore mapped to a roman numeral (I,II,III etc).\n", + "\n", + "As no group and label was specified, our new ``layout`` will once again have ``Curve.I`` for the curve but as there is only one scatter element, it will have ``Scatter.II`` to index the scatter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tab-completion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Layout`` and ``Overlay`` are designed to be easy to explore and inspect with tab completion. Try running:\n", + "\n", + "```python\n", + "layout.[tab]\n", + "```\n", + "\n", + "And you should see the first levels of indexing (``Curve`` and ``Scatter``) conveniently listed at the top. If this is not the case, you may need to enable improved tab-completion as described in [Configuring HoloViews](../../../user_guide/Configuring_HoloViews.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using ``group`` and ``label``" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now let's return to the first simple example, although this time we will set a group and label; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]), group='Sinusoid', label='Example')\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)), group='Linear Points', label='Demo')\n", + "layout3 = curve + scatter\n", + "layout3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now see how group and label affect access, in addition to being used for setting the titles shown above and for allowing plot customization (see \n", + "[Customizing Plots](../../../user_guide/03-Customizing_Plots.ipynb) for more information):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "layout3.Linear_Points.Demo + layout3.Sinusoid.Example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have used the semantic group and label names to access the elements and build a new re-ordered layout." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/reference/containers/bokeh/NdLayout.ipynb b/examples/reference/containers/bokeh/NdLayout.ipynb new file mode 100644 index 0000000000..70546f1f2d --- /dev/null +++ b/examples/reference/containers/bokeh/NdLayout.ipynb @@ -0,0 +1,161 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    NdLayout Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An ``NdLayout`` is a multi-dimensional dictionary of HoloViews elements presented side-by-side like a ``Layout``. An ``NdLayout`` can be considered as a special-case of ``HoloMap`` that can hold any one type of HoloViews container or element as long as it isn't another ``NdLayout`` or ``Layout``. Unlike a regular ``Layout`` that can be built with the ``+`` operator, the items in an ``NdOverlay`` container have corresponding keys and must all have the same type. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdLayout`` holds dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``sine_curve`` function below, we can declare a dictionary of ``Curve`` elements, where the keys correspond to the frequency values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "\n", + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "curve_dict = {f:sine_curve(0,f) for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a dictionary where the frequency is the key and the corresponding curve element is the value. We can now turn this dictionary into an ``NdLayout`` by declaring the keys as corresponding to the frequency key dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "NdLayout = hv.NdLayout(curve_dict, kdims=['frequency'])\n", + "NdLayout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdLayout`` is multi-dimensional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using tuple keys and making sure each position in the tuple is assigned a corresponding ``kdim``, ``NdLayouts`` allow visualization of a multi-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in [0, np.pi/2] for f in [0.5, 0.75]}\n", + "NdLayout = hv.NdLayout(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "NdLayout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdLayout`` is similar to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other than the difference in the visual semantics, whereby ``NdLayout`` displays its contents overlaid, ``NdLayout`` are very similar to ``HoloMap`` (see the [``HoloMap``](./HoloMap.ipynb) notebook for more information).\n", + "\n", + "One way to demonstrate the similarity of these two containers is to cast our ``NdLayout`` object to ``HoloMap``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hv.HoloMap(NdLayout)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We could now cast this ``HoloMap`` back to an ``NdLayout``. Unlike the other container examples such as [``GridSpace``](./GridSpace.ipynb) and [``NdOverlay``](./NdOverlay.ipynb), we cannot display this reconstituted ``NdLayout`` next to the ``HoloMap`` above using ``+`` as a ``Layout`` cannot hold an ``NdLayout`` in the same way than an ``NdLayout`` cannot hold a ``Layout``." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/reference/containers/bokeh/NdOverlay.ipynb b/examples/reference/containers/bokeh/NdOverlay.ipynb new file mode 100644 index 0000000000..bcca06878d --- /dev/null +++ b/examples/reference/containers/bokeh/NdOverlay.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    NdOverlay Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An ``NdOverlay`` is a multi-dimensional dictionary of HoloViews elements presented overlayed in the same space. An ``NdOverlay`` can be considered as a special-case of ``HoloMap`` that can only hold a single type of element at a time. Unlike a regular ``Overlay`` that can be built with the ``*`` operator, the items in an ``NdOverlay`` container have corresponding keys and must all have the same type. See the [User Guide] for details on how to compose containers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdOverlay`` holds dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the ``sine_curve`` function below, we can declare a dictionary of ``Curve`` elements, where the keys correspond to the frequency values:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "frequencies = [0.5, 0.75, 1.0, 1.25]\n", + "\n", + "def sine_curve(phase, freq):\n", + " xvals = [0.1* i for i in range(100)]\n", + " return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))\n", + "\n", + "curve_dict = {f:sine_curve(0,f) for f in frequencies}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a dictionary where the frequency is the key and the corresponding curve element is the value. We can now turn this dictionary into an ``NdOverlay`` by declaring the keys as corresponding to the frequency key dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ndoverlay = hv.NdOverlay(curve_dict, kdims=['frequency'])\n", + "ndoverlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the ``NdOverlay`` is displayed with a legend using colors defined by the ``Curve`` color cycle. For more information on using ``Cycle`` to define color cycling, see the [User Guide]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdOverlay`` is multi-dimensional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using tuple keys and making sure each position in the tuple is assigned a corresponding ``kdim``, ``NdOverlays`` allow visualization of a multi-dimensional space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_dict_2D = {(p,f):sine_curve(p,f) for p in [0, np.pi/2] for f in [0.5, 0.75]}\n", + "ndoverlay = hv.NdOverlay(curve_dict_2D, kdims=['phase', 'frequency'])\n", + "ndoverlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``NdOverlay`` is similar to ``HoloMap``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other than the difference in the visual semantics, whereby ``NdOverlay`` displays its contents overlaid, ``NdOverlay`` are very similar to ``HoloMap`` (see the [``HoloMap``](./HoloMap.ipynb) notebook for more information).\n", + "\n", + "One way to demonstrate the similarity of these two containers is to cast our ``ndoverlay`` object to ``HoloMap`` and back to an ``NdOverlay``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hmap = hv.HoloMap(ndoverlay)\n", + "hmap + hv.NdOverlay(hmap)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/reference/containers/bokeh/Overlay.ipynb b/examples/reference/containers/bokeh/Overlay.ipynb new file mode 100644 index 0000000000..d2a333f04f --- /dev/null +++ b/examples/reference/containers/bokeh/Overlay.ipynb @@ -0,0 +1,234 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "
    Title
    Overlay Container
    \n", + "
    Dependencies
    Matplotlib
    \n", + "
    Backends
    Bokeh
    Matplotlib
    \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import holoviews as hv\n", + "hv.extension('bokeh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A Overlay is a collection of HoloViews objects that are related in some way, to be displayed simultanously, overlaid in the space space. Like ``Layout`` and unlike other containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdOverlay``](./NdOverlay.ipynb) a ``Overlay`` is *not* dictionary like: it holds potentially heterogeneous types without any dimensioned keys.\n", + "\n", + "\n", + "A ``Overlay`` cannot contain any other container type other than ``NdOverlay`` but can contain any HoloViews elements. See [Building Composite Objects](05-Building_Composite_Objects.ipynb) for more details on how to compose containers. It is best to learn about ``Overlay`` and [``Layout``](./Layout.ipynb) together as they are very closely related objects that share many core concepts." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ``Overlay`` is a heterogeneous collection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build a ``Overlay`` between any two HoloViews objects (which can have different types) using the ``*`` operator:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve = hv.Curve((xvals, [np.sin(x) for x in xvals]))\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)))\n", + "curve * scatter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we have a ``Overlay`` composed of a ``Curve`` element and a ``Scatter`` element." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building ``Overlay`` from a list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can build Overlay's of any size by passing a list of objects to the ``Overlay`` constructor as shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "curve_list = [ hv.Curve((xvals, [np.sin(f*x) for x in xvals])) for f in [0.5, 0.75]]\n", + "scatter_list = [hv.Scatter((xvals[::5], f*np.linspace(0,1,20))) for f in [-0.5, 0.5]]\n", + "overlay = hv.Overlay(curve_list + scatter_list)\n", + "overlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that these curve and scatter elements are using the default color cycle when overlaid; see [Customizing Plots](../../../user_guide/03-Customizing_Plots.ipynb) for more information on cycles." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A ``Overlay`` has two-level attribute access" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Overlay`` and ``Layout`` are fundamentally tree-structures holding arbitrary heterogenous HoloViews objects and are quite different from the dictionary-like dimensioned containers such as [``HoloMap``](./HoloMap.ipynb) , [``GridSpace``](./GridSpace.ipynb) and [``NdOverlay``](./NdOverlay.ipynb).\n", + "\n", + "All HoloViews objects have string ``group`` and ``label`` parameters, resulting in a 2-level attribute access on ``Overlay`` objects. First let us see how to index the above example where ``group`` and ``label`` was not specified for any of the elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overlay2 = overlay.Curve.I * overlay.Scatter.II\n", + "overlay2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we create a second ``Overlay`` by indexing two elements from our earlier ``overlay`` object. We see that the first level is the ``group`` string (which defaults to the element class name) followed by the label, which wasn't set and is therefore mapped to a roman numeral (I,II,III etc).\n", + "\n", + "As no group and label was specified, our new ``Overlay`` will once again have ``Curve.I`` for the curve but as there is only one scatter element, it will have ``Scatter.II`` to index the scatter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tab-completion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``Overlay`` and ``Layout`` are designed to be easy to explore and inspect with tab completion. Try running:\n", + "\n", + "```python\n", + "overlay.[tab]\n", + "```\n", + "\n", + "And you should see the first levels of indexing (``Curve`` and ``Scatter``) conveniently listed at the top. If this is not the case, you may need to enable improved tab-completion as described in [Configuring HoloViews](../../../user_guide/Configuring_HoloViews.ipynb)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using ``group`` and ``label``" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now let's return to the first simple example, although this time we will set a ``group`` and ``label``; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xvals = [0.1* i for i in range(100)]\n", + "curve1 = hv.Curve((xvals, [np.sin(x) for x in xvals]), group='Sinusoid', label='Low Frequency')\n", + "curve2 = hv.Curve((xvals, [np.sin(2*x) for x in xvals]), group='Sinusoid', label='High Frequency')\n", + "scatter = hv.Scatter((xvals[::5], np.linspace(0,1,20)), group='Linear Points', label='Demo')\n", + "overlay3 = curve1 * curve2 * scatter\n", + "overlay3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now see how group and label affect access, in addition to being used for setting the legend shown above and for allowing plot customization (see \n", + "[Customizing Plots](../../../user_guide/03-Customizing_Plots.ipynb) for more information):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overlay3.Linear_Points.Demo * overlay3.Sinusoid.High_Frequency * overlay3.Sinusoid.Low_Frequency" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have used the semantic group and label names to access the elements and build a new re-ordered ``Overlay`` which we can observe by the switched z-ordering and legend colors used for the two sinusoidal curves." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 34f6adaa78b6979d81002bf791df7c891cce168e Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 12:49:10 +0100 Subject: [PATCH 97/99] Replaced broken markdown links in elements/plotly --- .../reference/elements/plotly/BoxWhiskers.ipynb | 2 +- examples/reference/elements/plotly/Curve.ipynb | 2 +- .../reference/elements/plotly/Distribution.ipynb | 2 +- examples/reference/elements/plotly/ErrorBars.ipynb | 2 +- examples/reference/elements/plotly/HeatMap.ipynb | 2 +- examples/reference/elements/plotly/Image.ipynb | 2 +- examples/reference/elements/plotly/ItemTable.ipynb | 2 +- examples/reference/elements/plotly/Points.ipynb | 2 +- examples/reference/elements/plotly/Raster.ipynb | 2 +- examples/reference/elements/plotly/Scatter.ipynb | 2 +- examples/reference/elements/plotly/Scatter3D.ipynb | 14 ++++++++++---- examples/reference/elements/plotly/Surface.ipynb | 2 +- examples/reference/elements/plotly/Table.ipynb | 2 +- .../reference/elements/plotly/Trisurface.ipynb | 2 +- 14 files changed, 23 insertions(+), 17 deletions(-) diff --git a/examples/reference/elements/plotly/BoxWhiskers.ipynb b/examples/reference/elements/plotly/BoxWhiskers.ipynb index 52b09dc061..03e46234ca 100644 --- a/examples/reference/elements/plotly/BoxWhiskers.ipynb +++ b/examples/reference/elements/plotly/BoxWhiskers.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    BoxWhisker Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/BoxWhisker.ipynb)
    [Matplotlib](../matplotlib/BoxWhisker.ipynb)
    [Plotly](./BoxWhisker.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Curve.ipynb b/examples/reference/elements/plotly/Curve.ipynb index 8110d67396..9c151ff4ac 100644 --- a/examples/reference/elements/plotly/Curve.ipynb +++ b/examples/reference/elements/plotly/Curve.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Curve Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/Curve.ipynb)
    [Matplotlib](../matplotlib/Curve.ipynb)
    [Plotly](./Curve.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Distribution.ipynb b/examples/reference/elements/plotly/Distribution.ipynb index 2d83c444ad..788a46ed7e 100644 --- a/examples/reference/elements/plotly/Distribution.ipynb +++ b/examples/reference/elements/plotly/Distribution.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Distribution Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Plotly](./Distribution.ipynb)
    \n", + "
    Backends
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/ErrorBars.ipynb b/examples/reference/elements/plotly/ErrorBars.ipynb index 711be5b9f6..9ff8e329c9 100644 --- a/examples/reference/elements/plotly/ErrorBars.ipynb +++ b/examples/reference/elements/plotly/ErrorBars.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    ErrorBars Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/ErrorBars.ipynb)
    [Matplotlib](../matplotlib/ErrorBars.ipynb)
    [Plotly](./ErrorBars.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/HeatMap.ipynb b/examples/reference/elements/plotly/HeatMap.ipynb index 6db6450904..34c9f9fb7e 100644 --- a/examples/reference/elements/plotly/HeatMap.ipynb +++ b/examples/reference/elements/plotly/HeatMap.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    HeatMap Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/HeatMap.ipynb)
    [Matplotlib](../matplotlib/HeatMap.ipynb)
    [Plotly](./HeatMap.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Image.ipynb b/examples/reference/elements/plotly/Image.ipynb index f32860d266..a37e6b5e15 100644 --- a/examples/reference/elements/plotly/Image.ipynb +++ b/examples/reference/elements/plotly/Image.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Image Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/Image.ipynb)
    [Matplotlib](../matplotlib/Image.ipynb)
    [Plotly](./Image.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/ItemTable.ipynb b/examples/reference/elements/plotly/ItemTable.ipynb index ce740a81f4..d388db11e4 100644 --- a/examples/reference/elements/plotly/ItemTable.ipynb +++ b/examples/reference/elements/plotly/ItemTable.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    ItemTable Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/ItemTable.ipynb)
    [Matplotlib](../matplotlib/ItemTable.ipynb)
    [Plotly](./ItemTable.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Points.ipynb b/examples/reference/elements/plotly/Points.ipynb index 0baa413f8c..8558ea4c77 100644 --- a/examples/reference/elements/plotly/Points.ipynb +++ b/examples/reference/elements/plotly/Points.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Points Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/Points.ipynb)
    [Matplotlib](../matplotlib/Points.ipynb)
    [Plotly](./Points.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Raster.ipynb b/examples/reference/elements/plotly/Raster.ipynb index 1267d5f3bd..bb0417ae46 100644 --- a/examples/reference/elements/plotly/Raster.ipynb +++ b/examples/reference/elements/plotly/Raster.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Raster Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/Raster.ipynb)
    [Matplotlib](../matplotlib/Raster.ipynb)
    [Plotly](./Raster.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Scatter.ipynb b/examples/reference/elements/plotly/Scatter.ipynb index 2529d204cf..e44c8c8b47 100644 --- a/examples/reference/elements/plotly/Scatter.ipynb +++ b/examples/reference/elements/plotly/Scatter.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Scatter Element
    \n", "
    Dependencies
    Plotly
    \n", - "
    Backends
    [Bokeh](../bokeh/Scatter.ipynb)
    [Matplotlib](../matplotlib/Scatter.ipynb)
    [Plotly](./Scatter.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Scatter3D.ipynb b/examples/reference/elements/plotly/Scatter3D.ipynb index e36ad22fd6..e726be538f 100644 --- a/examples/reference/elements/plotly/Scatter3D.ipynb +++ b/examples/reference/elements/plotly/Scatter3D.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Scatter3D Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](../matplotlib/Scatter3D.ipynb)
    [Plotly](./Scatter3D.ipynb)
    \n", + "
    Backends
    Matplotlib
    Plotly
    \n", "
    \n", "" ] @@ -16,7 +16,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -34,7 +36,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Scatter3D [width=500 height=500 camera_zoom=20 color_index=2] (size=5 cmap='fire')\n", @@ -53,7 +57,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "%%opts Scatter3D [width=500 height=500] (symbol='x' size=2)\n", diff --git a/examples/reference/elements/plotly/Surface.ipynb b/examples/reference/elements/plotly/Surface.ipynb index 4af8b4a619..aaaf352411 100644 --- a/examples/reference/elements/plotly/Surface.ipynb +++ b/examples/reference/elements/plotly/Surface.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Surface Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](../matplotlib/Surface.ipynb)
    [Plotly](./Surface.ipynb)
    \n", + "
    Backends
    Matplotlib
    Plotly
    \n", "\n", "
    \n", "" diff --git a/examples/reference/elements/plotly/Table.ipynb b/examples/reference/elements/plotly/Table.ipynb index 94ee4bf853..13eb5d4e19 100644 --- a/examples/reference/elements/plotly/Table.ipynb +++ b/examples/reference/elements/plotly/Table.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Table Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Bokeh](../bokeh/Table.ipynb)
    [Matplotlib](../matplotlib/Table.ipynb)
    [Plotly](./Table.ipynb)
    \n", + "
    Backends
    Bokeh
    Matplotlib
    Plotly
    \n", "
    \n", "" ] diff --git a/examples/reference/elements/plotly/Trisurface.ipynb b/examples/reference/elements/plotly/Trisurface.ipynb index 346fa4fe4d..1e0bb0b900 100644 --- a/examples/reference/elements/plotly/Trisurface.ipynb +++ b/examples/reference/elements/plotly/Trisurface.ipynb @@ -8,7 +8,7 @@ "
    \n", "
    Title
    Trisurface Element
    \n", "
    Dependencies
    Matplotlib
    \n", - "
    Backends
    [Matplotlib](../matplotlib/Trisurface.ipynb)
    [Plotly](./Trisurface.ipynb)
    \n", + "
    Backends
    Matplotlib
    Plotly
    \n", "
    \n", "" ] From caca493f88ddc8d44019ec46836fc1bad1ae0b18 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Tue, 27 Jun 2017 13:00:10 +0100 Subject: [PATCH 98/99] Stripped cell metadata and kernel specs from all example notebooks --- examples/gallery/demos/bokeh/area_chart.ipynb | 28 +- .../bokeh/bachelors_degrees_by_gender.ipynb | 16 +- .../gallery/demos/bokeh/bars_economic.ipynb | 19 +- .../gallery/demos/bokeh/boxplot_chart.ipynb | 20 +- .../gallery/demos/bokeh/dot_example.ipynb | 19 +- .../gallery/demos/bokeh/dragon_curve.ipynb | 19 +- .../demos/bokeh/dropdown_economic.ipynb | 19 +- .../demos/bokeh/histogram_example.ipynb | 16 +- .../gallery/demos/bokeh/iris_example.ipynb | 20 +- .../demos/bokeh/iris_splom_example.ipynb | 20 +- .../gallery/demos/bokeh/legend_example.ipynb | 20 +- .../gallery/demos/bokeh/lesmis_example.ipynb | 32 +-- .../bokeh/lorenz_attractor_example.ipynb | 28 +- .../demos/bokeh/mandelbrot_section.ipynb | 27 +- .../gallery/demos/bokeh/measles_example.ipynb | 24 +- .../gallery/demos/bokeh/quiver_demo.ipynb | 20 +- .../demos/bokeh/scatter_economic.ipynb | 19 +- .../gallery/demos/bokeh/square_limit.ipynb | 19 +- examples/gallery/demos/bokeh/step_chart.ipynb | 20 +- .../gallery/demos/bokeh/stocks_example.ipynb | 20 +- .../bokeh/texas_choropleth_example.ipynb | 28 +- .../demos/bokeh/topographic_hillshading.ipynb | 20 +- .../gallery/demos/bokeh/us_unemployment.ipynb | 28 +- .../demos/bokeh/verhulst_mandelbrot.ipynb | 19 +- .../gallery/demos/matplotlib/area_chart.ipynb | 28 +- .../bachelors_degrees_by_gender.ipynb | 24 +- .../demos/matplotlib/bars_economic.ipynb | 19 +- .../demos/matplotlib/boxplot_chart.ipynb | 20 +- .../demos/matplotlib/dragon_curve.ipynb | 15 +- .../demos/matplotlib/dropdown_economic.ipynb | 19 +- .../demos/matplotlib/histogram_example.ipynb | 16 +- .../demos/matplotlib/iris_example.ipynb | 20 +- .../demos/matplotlib/iris_splom_example.ipynb | 20 +- .../demos/matplotlib/legend_example.ipynb | 20 +- .../matplotlib/lorenz_attractor_example.ipynb | 22 +- .../demos/matplotlib/mandelbrot_section.ipynb | 27 +- .../demos/matplotlib/measles_example.ipynb | 25 +- .../demos/matplotlib/polar_scatter_demo.ipynb | 15 +- .../demos/matplotlib/quiver_demo.ipynb | 20 +- .../demos/matplotlib/scatter_economic.ipynb | 19 +- .../demos/matplotlib/square_limit.ipynb | 15 +- .../gallery/demos/matplotlib/step_chart.ipynb | 28 +- .../demos/matplotlib/stocks_example.ipynb | 20 +- .../gallery/demos/matplotlib/surface_3d.ipynb | 28 +- .../matplotlib/texas_choropleth_example.ipynb | 20 +- .../matplotlib/topographic_hillshading.ipynb | 20 +- .../demos/matplotlib/trisurf3d_demo.ipynb | 28 +- .../demos/matplotlib/us_unemployment.ipynb | 20 +- .../matplotlib/verhulst_mandelbrot.ipynb | 19 +- .../gallery/demos/plotly/surface_3d.ipynb | 16 +- .../gallery/demos/plotly/trisurf3d_demo.ipynb | 20 +- examples/getting_started/1-Introduction.ipynb | 75 ++--- .../getting_started/2-Customization.ipynb | 15 +- .../getting_started/3-Tabular_Datasets.ipynb | 19 +- .../getting_started/4-Gridded_Datasets.ipynb | 15 +- examples/getting_started/5-Live_Data.ipynb | 31 +-- .../containers/bokeh/GridSpace.ipynb | 31 +-- .../reference/containers/bokeh/HoloMap.ipynb | 23 +- .../reference/containers/bokeh/Layout.ipynb | 19 +- .../reference/containers/bokeh/NdLayout.ipynb | 19 +- .../containers/bokeh/NdOverlay.ipynb | 19 +- .../reference/containers/bokeh/Overlay.ipynb | 19 +- .../containers/matplotlib/GridSpace.ipynb | 19 +- .../containers/matplotlib/HoloMap.ipynb | 23 +- .../containers/matplotlib/Layout.ipynb | 19 +- .../containers/matplotlib/NdLayout.ipynb | 35 +-- .../containers/matplotlib/NdOverlay.ipynb | 19 +- .../containers/matplotlib/Overlay.ipynb | 19 +- examples/reference/elements/bokeh/Area.ipynb | 31 +-- examples/reference/elements/bokeh/Bars.ipynb | 31 +-- .../reference/elements/bokeh/Bounds.ipynb | 27 +- examples/reference/elements/bokeh/Box.ipynb | 27 +- .../reference/elements/bokeh/BoxWhisker.ipynb | 27 +- .../reference/elements/bokeh/Contours.ipynb | 27 +- examples/reference/elements/bokeh/Curve.ipynb | 27 +- .../reference/elements/bokeh/Ellipse.ipynb | 27 +- .../reference/elements/bokeh/ErrorBars.ipynb | 27 +- examples/reference/elements/bokeh/HLine.ipynb | 23 +- examples/reference/elements/bokeh/HSV.ipynb | 31 +-- .../reference/elements/bokeh/HeatMap.ipynb | 31 +-- .../reference/elements/bokeh/Histogram.ipynb | 31 +-- examples/reference/elements/bokeh/Image.ipynb | 35 +-- .../reference/elements/bokeh/ItemTable.ipynb | 23 +- examples/reference/elements/bokeh/Path.ipynb | 31 +-- .../reference/elements/bokeh/Points.ipynb | 31 +-- .../reference/elements/bokeh/Polygons.ipynb | 27 +- .../reference/elements/bokeh/QuadMesh.ipynb | 35 +-- examples/reference/elements/bokeh/RGB.ipynb | 35 +-- .../reference/elements/bokeh/Raster.ipynb | 23 +- .../reference/elements/bokeh/Scatter.ipynb | 31 +-- .../reference/elements/bokeh/Spikes.ipynb | 39 +-- .../reference/elements/bokeh/Spline.ipynb | 23 +- .../reference/elements/bokeh/Spread.ipynb | 27 +- examples/reference/elements/bokeh/Table.ipynb | 39 +-- examples/reference/elements/bokeh/Text.ipynb | 23 +- examples/reference/elements/bokeh/VLine.ipynb | 23 +- .../elements/bokeh/VectorField.ipynb | 39 +-- .../reference/elements/matplotlib/Area.ipynb | 31 +-- .../reference/elements/matplotlib/Arrow.ipynb | 23 +- .../reference/elements/matplotlib/Bars.ipynb | 15 +- .../elements/matplotlib/Bounds.ipynb | 27 +- .../reference/elements/matplotlib/Box.ipynb | 27 +- .../elements/matplotlib/BoxWhisker.ipynb | 27 +- .../elements/matplotlib/Contours.ipynb | 27 +- .../reference/elements/matplotlib/Curve.ipynb | 27 +- .../elements/matplotlib/Ellipse.ipynb | 27 +- .../elements/matplotlib/ErrorBars.ipynb | 27 +- .../reference/elements/matplotlib/HLine.ipynb | 23 +- .../reference/elements/matplotlib/HSV.ipynb | 31 +-- .../elements/matplotlib/HeatMap.ipynb | 31 +-- .../elements/matplotlib/Histogram.ipynb | 31 +-- .../reference/elements/matplotlib/Image.ipynb | 35 +-- .../elements/matplotlib/ItemTable.ipynb | 23 +- .../reference/elements/matplotlib/Path.ipynb | 31 +-- .../elements/matplotlib/Points.ipynb | 31 +-- .../elements/matplotlib/Polygons.ipynb | 27 +- .../elements/matplotlib/QuadMesh.ipynb | 31 +-- .../reference/elements/matplotlib/RGB.ipynb | 35 +-- .../elements/matplotlib/Raster.ipynb | 23 +- .../elements/matplotlib/Scatter.ipynb | 31 +-- .../elements/matplotlib/Scatter3D.ipynb | 15 +- .../elements/matplotlib/Spikes.ipynb | 39 +-- .../elements/matplotlib/Spline.ipynb | 23 +- .../elements/matplotlib/Spread.ipynb | 27 +- .../elements/matplotlib/Surface.ipynb | 15 +- .../reference/elements/matplotlib/Table.ipynb | 39 +-- .../reference/elements/matplotlib/Text.ipynb | 23 +- .../elements/matplotlib/Trisurface.ipynb | 27 +- .../reference/elements/matplotlib/VLine.ipynb | 23 +- .../elements/matplotlib/VectorField.ipynb | 39 +-- .../elements/plotly/BoxWhiskers.ipynb | 15 +- .../reference/elements/plotly/Curve.ipynb | 15 +- .../elements/plotly/Distribution.ipynb | 15 +- .../reference/elements/plotly/ErrorBars.ipynb | 15 +- .../reference/elements/plotly/HeatMap.ipynb | 15 +- .../reference/elements/plotly/Image.ipynb | 15 +- .../reference/elements/plotly/ItemTable.ipynb | 15 +- .../reference/elements/plotly/Points.ipynb | 15 +- .../reference/elements/plotly/Raster.ipynb | 15 +- .../reference/elements/plotly/Scatter.ipynb | 15 +- .../reference/elements/plotly/Scatter3D.ipynb | 27 +- .../reference/elements/plotly/Surface.ipynb | 27 +- .../reference/elements/plotly/Table.ipynb | 19 +- .../elements/plotly/Trisurface.ipynb | 15 +- .../streams/bokeh/bounds_selection.ipynb | 10 +- .../streams/bokeh/boundsx_selection.ipynb | 27 +- .../streams/bokeh/boundsy_selection.ipynb | 15 +- .../streams/bokeh/curve_selection.ipynb | 15 +- .../reference/streams/bokeh/heatmap_tap.ipynb | 23 +- .../bokeh/linked_pointer_crosssection.ipynb | 10 +- .../streams/bokeh/multiple_selection.ipynb | 18 +- .../streams/bokeh/point_selection1D.ipynb | 10 +- .../streams/bokeh/pointer_crosshair.ipynb | 14 +- .../streams/bokeh/range_histogram.ipynb | 10 +- .../streams/bokeh/regression_tap.ipynb | 15 +- examples/topics/geometry/lsystems.ipynb | 87 ++---- examples/topics/geometry/square_limit.ipynb | 19 +- examples/topics/simulation/boids.ipynb | 39 +-- examples/user_guide/01-Annotating_Data.ipynb | 15 +- .../user_guide/02-Composing_Elements.ipynb | 19 +- .../user_guide/03-Customizing_Plots.ipynb | 15 +- .../04-Dimensioned_Containers.ipynb | 15 +- .../05-Building_Composite_Objects.ipynb | 15 +- examples/user_guide/06-Live_Data.ipynb | 107 ++----- examples/user_guide/07-Tabular_Datasets.ipynb | 116 ++------ examples/user_guide/08-Gridded_Datasets.ipynb | 96 ++----- .../09-Indexing_and_Selecting_Data.ipynb | 27 +- .../user_guide/10-Transforming_Elements.ipynb | 55 +--- .../user_guide/11-Responding_to_Events.ipynb | 144 +++------- .../user_guide/12-Custom_Interactivity.ipynb | 32 +-- examples/user_guide/14-Large_Data.ipynb | 260 ++---------------- .../user_guide/Configuring_HoloViews.ipynb | 15 +- .../user_guide/Continuous_Coordinates.ipynb | 15 +- .../user_guide/Deploying_Bokeh_Apps.ipynb | 31 +-- .../user_guide/Exporting_and_Archiving.ipynb | 19 +- examples/user_guide/Plotting_with_Bokeh.ipynb | 227 +++------------ 176 files changed, 715 insertions(+), 4322 deletions(-) diff --git a/examples/gallery/demos/bokeh/area_chart.ipynb b/examples/gallery/demos/bokeh/area_chart.ipynb index f6686392ce..bb3cf7d0c5 100644 --- a/examples/gallery/demos/bokeh/area_chart.ipynb +++ b/examples/gallery/demos/bokeh/area_chart.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# create some example data\n", @@ -60,9 +56,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "style = dict(fill_alpha=0.5)\n", @@ -73,23 +67,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/bachelors_degrees_by_gender.ipynb b/examples/gallery/demos/bokeh/bachelors_degrees_by_gender.ipynb index fe39cd8932..a8c9ffe805 100644 --- a/examples/gallery/demos/bokeh/bachelors_degrees_by_gender.ipynb +++ b/examples/gallery/demos/bokeh/bachelors_degrees_by_gender.ipynb @@ -119,23 +119,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/bars_economic.ipynb b/examples/gallery/demos/bokeh/bars_economic.ipynb index e6c427638f..27fe12878c 100644 --- a/examples/gallery/demos/bokeh/bars_economic.ipynb +++ b/examples/gallery/demos/bokeh/bars_economic.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", @@ -63,22 +61,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/boxplot_chart.ipynb b/examples/gallery/demos/bokeh/boxplot_chart.ipynb index a183a0fb7f..99190fd3fb 100644 --- a/examples/gallery/demos/bokeh/boxplot_chart.ipynb +++ b/examples/gallery/demos/bokeh/boxplot_chart.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.autompg import autompg as df\n", @@ -64,23 +62,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/dot_example.ipynb b/examples/gallery/demos/bokeh/dot_example.ipynb index 861bd16a7f..2f63ac6eec 100644 --- a/examples/gallery/demos/bokeh/dot_example.ipynb +++ b/examples/gallery/demos/bokeh/dot_example.ipynb @@ -28,9 +28,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "factors = [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\"]\n", @@ -68,22 +66,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/dragon_curve.ipynb b/examples/gallery/demos/bokeh/dragon_curve.ipynb index ba80363f4d..e2df26032d 100644 --- a/examples/gallery/demos/bokeh/dragon_curve.ipynb +++ b/examples/gallery/demos/bokeh/dragon_curve.ipynb @@ -38,9 +38,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class DragonCurve(object):\n", @@ -129,22 +127,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/dropdown_economic.ipynb b/examples/gallery/demos/bokeh/dropdown_economic.ipynb index 7e17c9f76c..3413b69f40 100644 --- a/examples/gallery/demos/bokeh/dropdown_economic.ipynb +++ b/examples/gallery/demos/bokeh/dropdown_economic.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", @@ -77,22 +75,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/histogram_example.ipynb b/examples/gallery/demos/bokeh/histogram_example.ipynb index 600ea77b9d..6e8efdd5c6 100644 --- a/examples/gallery/demos/bokeh/histogram_example.ipynb +++ b/examples/gallery/demos/bokeh/histogram_example.ipynb @@ -129,23 +129,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/iris_example.ipynb b/examples/gallery/demos/bokeh/iris_example.ipynb index e2156a057e..10645b7bf7 100644 --- a/examples/gallery/demos/bokeh/iris_example.ipynb +++ b/examples/gallery/demos/bokeh/iris_example.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.iris import flowers\n", @@ -60,23 +58,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/iris_splom_example.ipynb b/examples/gallery/demos/bokeh/iris_splom_example.ipynb index cf00e50424..b7ff1e3a87 100644 --- a/examples/gallery/demos/bokeh/iris_splom_example.ipynb +++ b/examples/gallery/demos/bokeh/iris_splom_example.ipynb @@ -54,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "plot_opts = dict(tools=['hover', 'box_select'], bgcolor='#efe8e2')\n", @@ -67,23 +65,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/legend_example.ipynb b/examples/gallery/demos/bokeh/legend_example.ipynb index 5f9cb80343..d7c0336f29 100644 --- a/examples/gallery/demos/bokeh/legend_example.ipynb +++ b/examples/gallery/demos/bokeh/legend_example.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "x = np.linspace(0, 4*np.pi, 100)\n", @@ -70,23 +68,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/lesmis_example.ipynb b/examples/gallery/demos/bokeh/lesmis_example.ipynb index 3bd72548fb..def790195a 100644 --- a/examples/gallery/demos/bokeh/lesmis_example.ipynb +++ b/examples/gallery/demos/bokeh/lesmis_example.ipynb @@ -10,9 +10,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -30,9 +28,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.les_mis import data\n", @@ -76,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "plot_opts = dict(height=800, width=800, xaxis='top', logz=True, xrotation=90,\n", @@ -95,9 +89,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.Layout([c(plot=dict(width=300, height=300))\n", @@ -107,23 +99,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/lorenz_attractor_example.ipynb b/examples/gallery/demos/bokeh/lorenz_attractor_example.ipynb index 1646c9ed90..b1fa88425e 100644 --- a/examples/gallery/demos/bokeh/lorenz_attractor_example.ipynb +++ b/examples/gallery/demos/bokeh/lorenz_attractor_example.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from scipy.integrate import odeint\n", @@ -76,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "lorenzian(style={'Path': dict(color=hv.Palette('Blues'))})" @@ -86,23 +80,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/mandelbrot_section.ipynb b/examples/gallery/demos/bokeh/mandelbrot_section.ipynb index 6c99bf35c7..d53d85fd81 100644 --- a/examples/gallery/demos/bokeh/mandelbrot_section.ipynb +++ b/examples/gallery/demos/bokeh/mandelbrot_section.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import io\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [scaling_factor=50] Contours [show_legend=False] (color='w')\n", @@ -78,22 +72,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/measles_example.ipynb b/examples/gallery/demos/bokeh/measles_example.ipynb index f2b4217236..43f60ff2ff 100644 --- a/examples/gallery/demos/bokeh/measles_example.ipynb +++ b/examples/gallery/demos/bokeh/measles_example.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "url = 'https://raw.githubusercontent.com/blmoore/blogR/master/data/measles_incidence.csv'\n", @@ -78,27 +76,9 @@ } ], "metadata": { - "hide_input": false, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" - }, - "widgets": { - "state": {}, - "version": "1.1.2" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/quiver_demo.ipynb b/examples/gallery/demos/bokeh/quiver_demo.ipynb index 0f0ae3f5a2..0c02b0a612 100644 --- a/examples/gallery/demos/bokeh/quiver_demo.ipynb +++ b/examples/gallery/demos/bokeh/quiver_demo.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs, ys = np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2)\n", @@ -85,23 +83,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/scatter_economic.ipynb b/examples/gallery/demos/bokeh/scatter_economic.ipynb index e8338a43c5..ce425a4252 100644 --- a/examples/gallery/demos/bokeh/scatter_economic.ipynb +++ b/examples/gallery/demos/bokeh/scatter_economic.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", @@ -65,22 +63,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/square_limit.ipynb b/examples/gallery/demos/bokeh/square_limit.ipynb index 1e5e017375..86d55199da 100644 --- a/examples/gallery/demos/bokeh/square_limit.ipynb +++ b/examples/gallery/demos/bokeh/square_limit.ipynb @@ -34,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "spline=[(0.0,1.0),(0.08,0.98),(0.22,0.82),(0.29,0.72),(0.29,0.72),(0.3,0.64),(0.29,0.57),(0.3,0.5),\n", @@ -137,22 +135,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/step_chart.ipynb b/examples/gallery/demos/bokeh/step_chart.ipynb index db4744d218..1331f479e3 100644 --- a/examples/gallery/demos/bokeh/step_chart.ipynb +++ b/examples/gallery/demos/bokeh/step_chart.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# build a dataset where multiple columns measure the same thing\n", @@ -73,23 +71,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/stocks_example.ipynb b/examples/gallery/demos/bokeh/stocks_example.ipynb index 9ec35aa063..bc5375cd9b 100644 --- a/examples/gallery/demos/bokeh/stocks_example.ipynb +++ b/examples/gallery/demos/bokeh/stocks_example.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.operation.timeseries import rolling\n", @@ -86,23 +84,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/texas_choropleth_example.ipynb b/examples/gallery/demos/bokeh/texas_choropleth_example.ipynb index edbf096ede..56d7193650 100644 --- a/examples/gallery/demos/bokeh/texas_choropleth_example.ipynb +++ b/examples/gallery/demos/bokeh/texas_choropleth_example.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.us_counties import data as counties\n", @@ -68,9 +64,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "plot_opts = dict(logz=True, tools=['hover'], xaxis=None, yaxis=None,\n", @@ -82,23 +76,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/topographic_hillshading.ipynb b/examples/gallery/demos/bokeh/topographic_hillshading.ipynb index d171770a83..dcc457b845 100644 --- a/examples/gallery/demos/bokeh/topographic_hillshading.ipynb +++ b/examples/gallery/demos/bokeh/topographic_hillshading.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -88,23 +86,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/us_unemployment.ipynb b/examples/gallery/demos/bokeh/us_unemployment.ipynb index 96684633f9..c1de654cc7 100644 --- a/examples/gallery/demos/bokeh/us_unemployment.ipynb +++ b/examples/gallery/demos/bokeh/us_unemployment.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.unemployment1948 import data\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from matplotlib.colors import ListedColormap\n", @@ -73,23 +67,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/bokeh/verhulst_mandelbrot.ipynb b/examples/gallery/demos/bokeh/verhulst_mandelbrot.ipynb index a88d9fcfb0..2c77d43c24 100644 --- a/examples/gallery/demos/bokeh/verhulst_mandelbrot.ipynb +++ b/examples/gallery/demos/bokeh/verhulst_mandelbrot.ipynb @@ -40,9 +40,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Area of the complex plane\n", @@ -111,22 +109,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/area_chart.ipynb b/examples/gallery/demos/matplotlib/area_chart.ipynb index 121f0c3f46..00294b95d6 100644 --- a/examples/gallery/demos/matplotlib/area_chart.ipynb +++ b/examples/gallery/demos/matplotlib/area_chart.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -35,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# create some example data\n", @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "style = dict(alpha=0.5)\n", @@ -74,23 +68,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/bachelors_degrees_by_gender.ipynb b/examples/gallery/demos/matplotlib/bachelors_degrees_by_gender.ipynb index b968c4e0d7..a27ba49902 100644 --- a/examples/gallery/demos/matplotlib/bachelors_degrees_by_gender.ipynb +++ b/examples/gallery/demos/matplotlib/bachelors_degrees_by_gender.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -99,9 +97,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "# Define a callback to define a custom grid along the y-axis and disabling the (ugly) axis spines\n", @@ -122,23 +118,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/bars_economic.ipynb b/examples/gallery/demos/matplotlib/bars_economic.ipynb index cfb0084253..c78c003b2e 100644 --- a/examples/gallery/demos/matplotlib/bars_economic.ipynb +++ b/examples/gallery/demos/matplotlib/bars_economic.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", @@ -63,22 +61,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/boxplot_chart.ipynb b/examples/gallery/demos/matplotlib/boxplot_chart.ipynb index 3996f2a781..86b436e780 100644 --- a/examples/gallery/demos/matplotlib/boxplot_chart.ipynb +++ b/examples/gallery/demos/matplotlib/boxplot_chart.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.autompg import autompg as df\n", @@ -63,23 +61,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/dragon_curve.ipynb b/examples/gallery/demos/matplotlib/dragon_curve.ipynb index 98b35a6114..d3632c8df6 100644 --- a/examples/gallery/demos/matplotlib/dragon_curve.ipynb +++ b/examples/gallery/demos/matplotlib/dragon_curve.ipynb @@ -128,22 +128,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/dropdown_economic.ipynb b/examples/gallery/demos/matplotlib/dropdown_economic.ipynb index 27ce164aa2..1ad070251c 100644 --- a/examples/gallery/demos/matplotlib/dropdown_economic.ipynb +++ b/examples/gallery/demos/matplotlib/dropdown_economic.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", @@ -67,22 +65,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/histogram_example.ipynb b/examples/gallery/demos/matplotlib/histogram_example.ipynb index df49c0e379..4f79ea782d 100644 --- a/examples/gallery/demos/matplotlib/histogram_example.ipynb +++ b/examples/gallery/demos/matplotlib/histogram_example.ipynb @@ -129,23 +129,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/iris_example.ipynb b/examples/gallery/demos/matplotlib/iris_example.ipynb index a1dccdcf8f..c700682388 100644 --- a/examples/gallery/demos/matplotlib/iris_example.ipynb +++ b/examples/gallery/demos/matplotlib/iris_example.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.iris import flowers\n", @@ -61,23 +59,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/iris_splom_example.ipynb b/examples/gallery/demos/matplotlib/iris_splom_example.ipynb index e934d42f83..c86673b2b8 100644 --- a/examples/gallery/demos/matplotlib/iris_splom_example.ipynb +++ b/examples/gallery/demos/matplotlib/iris_splom_example.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.iris import flowers\n", @@ -67,23 +65,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/legend_example.ipynb b/examples/gallery/demos/matplotlib/legend_example.ipynb index 492f7f76fe..8b91dec824 100644 --- a/examples/gallery/demos/matplotlib/legend_example.ipynb +++ b/examples/gallery/demos/matplotlib/legend_example.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "x = np.linspace(0, 4*np.pi, 100)\n", @@ -70,23 +68,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/lorenz_attractor_example.ipynb b/examples/gallery/demos/matplotlib/lorenz_attractor_example.ipynb index 419bdd7e16..9c65b059a7 100644 --- a/examples/gallery/demos/matplotlib/lorenz_attractor_example.ipynb +++ b/examples/gallery/demos/matplotlib/lorenz_attractor_example.ipynb @@ -31,10 +31,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "from scipy.integrate import odeint\n", @@ -82,23 +80,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb b/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb index d799d63b72..30a8af72db 100644 --- a/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb +++ b/examples/gallery/demos/matplotlib/mandelbrot_section.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import io\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [scaling_factor=50] Contours [show_legend=False] (color='w')\n", @@ -78,22 +72,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/measles_example.ipynb b/examples/gallery/demos/matplotlib/measles_example.ipynb index d2c0a94687..164d6efa1b 100644 --- a/examples/gallery/demos/matplotlib/measles_example.ipynb +++ b/examples/gallery/demos/matplotlib/measles_example.ipynb @@ -34,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "url = 'https://raw.githubusercontent.com/blmoore/blogR/master/data/measles_incidence.csv'\n", @@ -81,28 +79,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "hide_input": false, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" - }, - "widgets": { - "state": {}, - "version": "1.1.2" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/polar_scatter_demo.ipynb b/examples/gallery/demos/matplotlib/polar_scatter_demo.ipynb index c9ff752a3a..761a3aa29d 100644 --- a/examples/gallery/demos/matplotlib/polar_scatter_demo.ipynb +++ b/examples/gallery/demos/matplotlib/polar_scatter_demo.ipynb @@ -59,22 +59,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/quiver_demo.ipynb b/examples/gallery/demos/matplotlib/quiver_demo.ipynb index 20058009bc..92dbdfc874 100644 --- a/examples/gallery/demos/matplotlib/quiver_demo.ipynb +++ b/examples/gallery/demos/matplotlib/quiver_demo.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs, ys = np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2)\n", @@ -85,23 +83,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/scatter_economic.ipynb b/examples/gallery/demos/matplotlib/scatter_economic.ipynb index b2a49c582d..8b6a9f07e8 100644 --- a/examples/gallery/demos/matplotlib/scatter_economic.ipynb +++ b/examples/gallery/demos/matplotlib/scatter_economic.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')\n", @@ -66,22 +64,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/square_limit.ipynb b/examples/gallery/demos/matplotlib/square_limit.ipynb index ad1385910c..eda54976be 100644 --- a/examples/gallery/demos/matplotlib/square_limit.ipynb +++ b/examples/gallery/demos/matplotlib/square_limit.ipynb @@ -137,22 +137,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/step_chart.ipynb b/examples/gallery/demos/matplotlib/step_chart.ipynb index 1fd6915a8d..8bef1b6b69 100644 --- a/examples/gallery/demos/matplotlib/step_chart.ipynb +++ b/examples/gallery/demos/matplotlib/step_chart.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# build a dataset where multiple columns measure the same thing\n", @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "plot = dict(interpolation='steps-mid')\n", @@ -77,23 +71,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/stocks_example.ipynb b/examples/gallery/demos/matplotlib/stocks_example.ipynb index abc6b6df0c..11dc6cb0a2 100644 --- a/examples/gallery/demos/matplotlib/stocks_example.ipynb +++ b/examples/gallery/demos/matplotlib/stocks_example.ipynb @@ -34,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.operation.timeseries import rolling\n", @@ -87,23 +85,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/surface_3d.ipynb b/examples/gallery/demos/matplotlib/surface_3d.ipynb index 1bc9109f37..0bace1c6df 100644 --- a/examples/gallery/demos/matplotlib/surface_3d.ipynb +++ b/examples/gallery/demos/matplotlib/surface_3d.ipynb @@ -14,9 +14,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -34,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Make data.\n", @@ -59,9 +55,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "surface(plot=dict(colorbar=True))" @@ -69,23 +63,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/texas_choropleth_example.ipynb b/examples/gallery/demos/matplotlib/texas_choropleth_example.ipynb index c6ad71e968..8fb4e9d2c7 100644 --- a/examples/gallery/demos/matplotlib/texas_choropleth_example.ipynb +++ b/examples/gallery/demos/matplotlib/texas_choropleth_example.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.us_counties import data as counties\n", @@ -79,23 +77,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/topographic_hillshading.ipynb b/examples/gallery/demos/matplotlib/topographic_hillshading.ipynb index e45e8135c3..1895e113e6 100644 --- a/examples/gallery/demos/matplotlib/topographic_hillshading.ipynb +++ b/examples/gallery/demos/matplotlib/topographic_hillshading.ipynb @@ -33,9 +33,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -89,23 +87,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/trisurf3d_demo.ipynb b/examples/gallery/demos/matplotlib/trisurf3d_demo.ipynb index 3923b45274..9406c371f9 100644 --- a/examples/gallery/demos/matplotlib/trisurf3d_demo.ipynb +++ b/examples/gallery/demos/matplotlib/trisurf3d_demo.ipynb @@ -21,9 +21,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -42,9 +40,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "n_radii = 8\n", @@ -79,9 +75,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "trisurface" @@ -89,23 +83,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/us_unemployment.ipynb b/examples/gallery/demos/matplotlib/us_unemployment.ipynb index b49ba3b57f..3348194914 100644 --- a/examples/gallery/demos/matplotlib/us_unemployment.ipynb +++ b/examples/gallery/demos/matplotlib/us_unemployment.ipynb @@ -32,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.sampledata.unemployment1948 import data\n", @@ -69,23 +67,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/matplotlib/verhulst_mandelbrot.ipynb b/examples/gallery/demos/matplotlib/verhulst_mandelbrot.ipynb index 0e624f6344..b3170b116a 100644 --- a/examples/gallery/demos/matplotlib/verhulst_mandelbrot.ipynb +++ b/examples/gallery/demos/matplotlib/verhulst_mandelbrot.ipynb @@ -40,9 +40,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Area of the complex plane\n", @@ -111,22 +109,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/plotly/surface_3d.ipynb b/examples/gallery/demos/plotly/surface_3d.ipynb index 310c185c74..32caad44c2 100644 --- a/examples/gallery/demos/plotly/surface_3d.ipynb +++ b/examples/gallery/demos/plotly/surface_3d.ipynb @@ -72,23 +72,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/gallery/demos/plotly/trisurf3d_demo.ipynb b/examples/gallery/demos/plotly/trisurf3d_demo.ipynb index c286925ed2..45d013a6e1 100644 --- a/examples/gallery/demos/plotly/trisurf3d_demo.ipynb +++ b/examples/gallery/demos/plotly/trisurf3d_demo.ipynb @@ -41,9 +41,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "n_radii = 8\n", @@ -87,23 +85,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/getting_started/1-Introduction.ipynb b/examples/getting_started/1-Introduction.ipynb index ab29445c9d..63b411128a 100644 --- a/examples/getting_started/1-Introduction.ipynb +++ b/examples/getting_started/1-Introduction.ipynb @@ -31,9 +31,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -56,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "station_info = pd.read_csv('../assets/station_info.csv')\n", @@ -84,9 +80,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "scatter = hv.Scatter(station_info, kdims=['services'], vdims=['ridership'])\n", @@ -105,9 +99,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(scatter)" @@ -132,9 +124,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])\n", @@ -151,9 +141,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(layout)" @@ -171,9 +159,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "taxi_dropoffs = {hour:arr for hour, arr in np.load('../assets/hourly_taxi_data.npz').items()}\n", @@ -201,9 +187,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "bounds = (-74.05, 40.70, -73.90, 40.80)\n", @@ -220,9 +204,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "points = hv.Points(station_info, kdims=['lon','lat'])\n", @@ -251,9 +233,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dictionary = {int(hour):hv.Image(arr, bounds=bounds, kdims=['lon','lat']) \n", @@ -271,9 +251,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "holomap = hv.HoloMap(dictionary, kdims=['Hour'])\n", @@ -290,9 +268,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "holomap.select(Hour={3,6,9}).layout()" @@ -319,9 +295,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image [xrotation=90] Points (color='deepskyblue' marker='v' size=6)\n", @@ -342,9 +316,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "composition.select(Hour=7)" @@ -362,9 +334,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hotspot.data" @@ -391,22 +361,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/getting_started/2-Customization.ipynb b/examples/getting_started/2-Customization.ipynb index 0c677fe3ff..4edc432a43 100644 --- a/examples/getting_started/2-Customization.ipynb +++ b/examples/getting_started/2-Customization.ipynb @@ -262,22 +262,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/getting_started/3-Tabular_Datasets.ipynb b/examples/getting_started/3-Tabular_Datasets.ipynb index da198bc2d9..5c3ca5b481 100644 --- a/examples/getting_started/3-Tabular_Datasets.ipynb +++ b/examples/getting_started/3-Tabular_Datasets.ipynb @@ -64,9 +64,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "vdims = [('measles', 'Measles Incidence'), ('pertussis', 'Pertussis Incidence')]\n", @@ -219,22 +217,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/getting_started/4-Gridded_Datasets.ipynb b/examples/getting_started/4-Gridded_Datasets.ipynb index ccae4c28ac..ad265d083a 100644 --- a/examples/getting_started/4-Gridded_Datasets.ipynb +++ b/examples/getting_started/4-Gridded_Datasets.ipynb @@ -263,22 +263,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/getting_started/5-Live_Data.ipynb b/examples/getting_started/5-Live_Data.ipynb index 33195992fe..24971ee135 100644 --- a/examples/getting_started/5-Live_Data.ipynb +++ b/examples/getting_started/5-Live_Data.ipynb @@ -56,9 +56,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def clifford(a,b,c,d,x0,y0):\n", @@ -84,9 +82,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def clifford_attractor(a,b,c,d):\n", @@ -180,9 +176,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def interactive_clifford(a,b,c,d,x=0,y=0):\n", @@ -201,9 +195,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.streams import PointerXY" @@ -267,22 +259,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/bokeh/GridSpace.ipynb b/examples/reference/containers/bokeh/GridSpace.ipynb index b578e582b8..3ac74b832d 100644 --- a/examples/reference/containers/bokeh/GridSpace.ipynb +++ b/examples/reference/containers/bokeh/GridSpace.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -50,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def sine_curve(phase, freq):\n", @@ -74,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "gridspace = hv.GridSpace(curve_dict_2D, kdims=['phase', 'frequency'])\n", @@ -102,9 +96,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%output size=50\n", @@ -114,22 +106,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/bokeh/HoloMap.ipynb b/examples/reference/containers/bokeh/HoloMap.ipynb index bdd8742958..4f2175faa3 100644 --- a/examples/reference/containers/bokeh/HoloMap.ipynb +++ b/examples/reference/containers/bokeh/HoloMap.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "frequencies = [0.5, 0.75, 1.0, 1.25]\n", @@ -122,9 +120,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hmap = hv.HoloMap(kdims=['phase', 'frequency'])\n", @@ -228,22 +224,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/bokeh/Layout.ipynb b/examples/reference/containers/bokeh/Layout.ipynb index aa0ea716b4..764510e4da 100644 --- a/examples/reference/containers/bokeh/Layout.ipynb +++ b/examples/reference/containers/bokeh/Layout.ipynb @@ -164,9 +164,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "Now let's return to the first simple example, although this time we will set a group and label; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" ] @@ -210,22 +208,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/bokeh/NdLayout.ipynb b/examples/reference/containers/bokeh/NdLayout.ipynb index 70546f1f2d..6d699ea302 100644 --- a/examples/reference/containers/bokeh/NdLayout.ipynb +++ b/examples/reference/containers/bokeh/NdLayout.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "frequencies = [0.5, 0.75, 1.0, 1.25]\n", @@ -138,22 +136,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/bokeh/NdOverlay.ipynb b/examples/reference/containers/bokeh/NdOverlay.ipynb index bcca06878d..442ec33a89 100644 --- a/examples/reference/containers/bokeh/NdOverlay.ipynb +++ b/examples/reference/containers/bokeh/NdOverlay.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "frequencies = [0.5, 0.75, 1.0, 1.25]\n", @@ -139,22 +137,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/bokeh/Overlay.ipynb b/examples/reference/containers/bokeh/Overlay.ipynb index d2a333f04f..c1755ae61f 100644 --- a/examples/reference/containers/bokeh/Overlay.ipynb +++ b/examples/reference/containers/bokeh/Overlay.ipynb @@ -164,9 +164,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "Now let's return to the first simple example, although this time we will set a ``group`` and ``label``; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" ] @@ -211,22 +209,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/matplotlib/GridSpace.ipynb b/examples/reference/containers/matplotlib/GridSpace.ipynb index d21714745e..54fc2e7a27 100644 --- a/examples/reference/containers/matplotlib/GridSpace.ipynb +++ b/examples/reference/containers/matplotlib/GridSpace.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def sine_curve(phase, freq):\n", @@ -107,22 +105,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/matplotlib/HoloMap.ipynb b/examples/reference/containers/matplotlib/HoloMap.ipynb index 663f68a351..67cd320fb0 100644 --- a/examples/reference/containers/matplotlib/HoloMap.ipynb +++ b/examples/reference/containers/matplotlib/HoloMap.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "frequencies = [0.5, 0.75, 1.0, 1.25]\n", @@ -122,9 +120,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hmap = hv.HoloMap(kdims=['phase', 'frequency'])\n", @@ -228,22 +224,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/matplotlib/Layout.ipynb b/examples/reference/containers/matplotlib/Layout.ipynb index 673b3a90ff..6e428257f3 100644 --- a/examples/reference/containers/matplotlib/Layout.ipynb +++ b/examples/reference/containers/matplotlib/Layout.ipynb @@ -164,9 +164,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "Now let's return to the first simple example, although this time we will set a group and label; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" ] @@ -210,22 +208,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/matplotlib/NdLayout.ipynb b/examples/reference/containers/matplotlib/NdLayout.ipynb index 59e75c9866..2c8718637f 100644 --- a/examples/reference/containers/matplotlib/NdLayout.ipynb +++ b/examples/reference/containers/matplotlib/NdLayout.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -50,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "frequencies = [0.5, 0.75, 1.0, 1.25]\n", @@ -74,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "NdLayout = hv.NdLayout(curve_dict, kdims=['frequency'])\n", @@ -100,9 +94,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "curve_dict_2D = {(p,f):sine_curve(p,f) for p in [0, np.pi/2] for f in [0.5, 0.75]}\n", @@ -129,9 +121,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.HoloMap(NdLayout)" @@ -146,22 +136,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/matplotlib/NdOverlay.ipynb b/examples/reference/containers/matplotlib/NdOverlay.ipynb index cdefd05163..348e3f698f 100644 --- a/examples/reference/containers/matplotlib/NdOverlay.ipynb +++ b/examples/reference/containers/matplotlib/NdOverlay.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "frequencies = [0.5, 0.75, 1.0, 1.25]\n", @@ -139,22 +137,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/containers/matplotlib/Overlay.ipynb b/examples/reference/containers/matplotlib/Overlay.ipynb index 5ae73c85ee..3c89a6a6d2 100644 --- a/examples/reference/containers/matplotlib/Overlay.ipynb +++ b/examples/reference/containers/matplotlib/Overlay.ipynb @@ -164,9 +164,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "Now let's return to the first simple example, although this time we will set a ``group`` and ``label``; see the [Annotating Data](../../../user_guide/01-Annotating_Data.ipynb) for more information:" ] @@ -211,22 +209,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Area.ipynb b/examples/reference/elements/bokeh/Area.ipynb index ad33ccb4e5..c2a6eca7a4 100644 --- a/examples/reference/elements/bokeh/Area.ipynb +++ b/examples/reference/elements/bokeh/Area.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*4, 40)\n", @@ -68,9 +64,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "X = np.linspace(0,3,200)\n", @@ -94,9 +88,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "values = np.random.rand(5, 20)\n", @@ -108,22 +100,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Bars.ipynb b/examples/reference/elements/bokeh/Bars.ipynb index 4bfb13806c..40812e075d 100644 --- a/examples/reference/elements/bokeh/Bars.ipynb +++ b/examples/reference/elements/bokeh/Bars.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "data = [('one',8),('two', 10), ('three', 16), ('four', 8), ('five', 4), ('six', 1)]\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "bars[['one', 'two', 'three']] + bars[['four', 'five', 'six']]" @@ -76,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Bars.Grouped [group_index='Group'] Bars.Stacked [stack_index='Group']\n", @@ -93,22 +85,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Bounds.ipynb b/examples/reference/elements/bokeh/Bounds.ipynb index 4e7226266d..e685b49b9b 100644 --- a/examples/reference/elements/bokeh/Bounds.ipynb +++ b/examples/reference/elements/bokeh/Bounds.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Bounds (color='orange' line_width=6)\n", @@ -56,9 +52,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "penguins * penguins[-0.15:0.2, -0.4:0, 'G'] * hv.Bounds((-0.15, -0.4, 0.2, 0))" @@ -66,22 +60,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Box.ipynb b/examples/reference/elements/bokeh/Box.ipynb index 1fb04edd84..8e90fff126 100644 --- a/examples/reference/elements/bokeh/Box.ipynb +++ b/examples/reference/elements/bokeh/Box.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Box (line_width=5 color='red') Image (cmap='gray')\n", @@ -60,9 +56,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Box (line_width=5 color='purple') Image (cmap='gray')\n", @@ -73,22 +67,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/BoxWhisker.ipynb b/examples/reference/elements/bokeh/BoxWhisker.ipynb index fffbe22e32..b3a0d0c03e 100644 --- a/examples/reference/elements/bokeh/BoxWhisker.ipynb +++ b/examples/reference/elements/bokeh/BoxWhisker.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "hv.BoxWhisker(np.random.randn(1000), vdims=['Value'])" @@ -63,9 +59,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts BoxWhisker [width=600 height=400 show_legend=False] (whisker_color='gray' color='white')\n", @@ -76,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Contours.ipynb b/examples/reference/elements/bokeh/Contours.ipynb index 27c562d286..63a4325903 100644 --- a/examples/reference/elements/bokeh/Contours.ipynb +++ b/examples/reference/elements/bokeh/Contours.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Contours (cmap='viridis')\n", @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Contours [show_legend=False colorbar=True width=325] (cmap='fire')\n", @@ -76,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Curve.ipynb b/examples/reference/elements/bokeh/Curve.ipynb index 9d66dae6cb..84965e1401 100644 --- a/examples/reference/elements/bokeh/Curve.ipynb +++ b/examples/reference/elements/bokeh/Curve.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "points = [(0.1*i, np.sin(0.1*i)) for i in range(100)]\n", @@ -71,9 +67,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve [width=600] NdOverlay [legend_position='right']\n", @@ -83,22 +77,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Ellipse.ipynb b/examples/reference/elements/bokeh/Ellipse.ipynb index c4f5445237..bffd57468d 100644 --- a/examples/reference/elements/bokeh/Ellipse.ipynb +++ b/examples/reference/elements/bokeh/Ellipse.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Ellipse (line_width=6)\n", @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Ellipse (line_width=6)\n", @@ -74,22 +68,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/ErrorBars.ipynb b/examples/reference/elements/bokeh/ErrorBars.ipynb index 5cac2738cd..ec11a520f9 100644 --- a/examples/reference/elements/bokeh/ErrorBars.ipynb +++ b/examples/reference/elements/bokeh/ErrorBars.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(7)\n", @@ -74,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "errors = [(0.1*i, np.sin(0.1*i), np.random.rand()/2, np.random.rand()/4) for i in np.linspace(0, 100, 11)]\n", @@ -85,22 +79,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/HLine.ipynb b/examples/reference/elements/bokeh/HLine.ipynb index a49a08d0e2..8618733842 100644 --- a/examples/reference/elements/bokeh/HLine.ipynb +++ b/examples/reference/elements/bokeh/HLine.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts HLine (color='blue' line_width=6) Points (color='#D3D3D3')\n", @@ -49,22 +45,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/HSV.ipynb b/examples/reference/elements/bokeh/HSV.ipynb index d95fa83d06..17a03b760c 100644 --- a/examples/reference/elements/bokeh/HSV.ipynb +++ b/examples/reference/elements/bokeh/HSV.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%opts Image (cmap='gray')\n", @@ -81,9 +75,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "print(hsv.rgb)\n", @@ -92,22 +84,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/HeatMap.ipynb b/examples/reference/elements/bokeh/HeatMap.ipynb index 3b4f4f187e..443dbc706b 100644 --- a/examples/reference/elements/bokeh/HeatMap.ipynb +++ b/examples/reference/elements/bokeh/HeatMap.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "data = [(chr(65+i), chr(97+j), i*j) for i in range(5) for j in range(5) if i!=j]\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "heatmap = hv.HeatMap([(0, 0, 1), (0, 0, 10), (1, 0, 2), (1, 1, 3)])\n", @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts HeatMap [tools=['hover'] colorbar=True width=325 toolbar='above']\n", @@ -90,22 +82,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Histogram.ipynb b/examples/reference/elements/bokeh/Histogram.ipynb index 6276cccb31..24b6602ca8 100644 --- a/examples/reference/elements/bokeh/Histogram.ipynb +++ b/examples/reference/elements/bokeh/Histogram.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*2)\n", @@ -79,9 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Histogram (alpha=0.3)\n", @@ -96,22 +88,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Image.ipynb b/examples/reference/elements/bokeh/Image.ipynb index 38d0b8c5b0..361f853f58 100644 --- a/examples/reference/elements/bokeh/Image.ipynb +++ b/examples/reference/elements/bokeh/Image.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "ls = np.linspace(0, 10, 200)\n", @@ -59,9 +55,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "img + img[-0.5:0.5, -0.5:0.5]" @@ -77,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='black' marker='x' size=20)\n", @@ -98,9 +90,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "img.sample(x=0) + img.reduce(x=np.mean)" @@ -108,22 +98,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/ItemTable.ipynb b/examples/reference/elements/bokeh/ItemTable.ipynb index de9e26c33b..9770e00692 100644 --- a/examples/reference/elements/bokeh/ItemTable.ipynb +++ b/examples/reference/elements/bokeh/ItemTable.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts ItemTable [height=60]\n", @@ -47,22 +43,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Path.ipynb b/examples/reference/elements/bokeh/Path.ipynb index 7abbe1aea1..09e602e693 100644 --- a/examples/reference/elements/bokeh/Path.ipynb +++ b/examples/reference/elements/bokeh/Path.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -37,9 +35,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path (color='black' line_width=4)\n", @@ -63,9 +59,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path (line_width=4)\n", @@ -89,9 +83,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path [width=600]\n", @@ -102,22 +94,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Points.ipynb b/examples/reference/elements/bokeh/Points.ipynb index a4cff64d36..38de018a58 100644 --- a/examples/reference/elements/bokeh/Points.ipynb +++ b/examples/reference/elements/bokeh/Points.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='k' marker='+' size=10)\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='k' marker='+' size=10)\n", @@ -76,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [color_index=2 size_index=3 scaling_factor=50]\n", @@ -110,22 +102,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Polygons.ipynb b/examples/reference/elements/bokeh/Polygons.ipynb index d6d8e1ad83..de77358255 100644 --- a/examples/reference/elements/bokeh/Polygons.ipynb +++ b/examples/reference/elements/bokeh/Polygons.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Polygons (cmap='hot' line_color='black' line_width=2)\n", @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "def rectangle(x=0, y=0, width=1, height=1):\n", @@ -76,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/QuadMesh.ipynb b/examples/reference/elements/bokeh/QuadMesh.ipynb index 58da23bb21..633fcb37b4 100644 --- a/examples/reference/elements/bokeh/QuadMesh.ipynb +++ b/examples/reference/elements/bokeh/QuadMesh.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "n = 8 # Number of bins in each direction\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts QuadMesh [tools=['hover'] xticks=[10, 100,1000]] QuadMesh.LogScale [logx=True]\n", @@ -79,9 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "qmesh = hv.QuadMesh((xs, ys, zs))\n", @@ -98,9 +90,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts QuadMesh [tools=['hover']] (alpha=0 hover_line_alpha=1 hover_line_color='black')\n", @@ -117,22 +107,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/RGB.ipynb b/examples/reference/elements/bokeh/RGB.ipynb index 3835162d61..d1d4476ec3 100644 --- a/examples/reference/elements/bokeh/RGB.ipynb +++ b/examples/reference/elements/bokeh/RGB.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "hv.RGB.load_image('../assets/penguins.png')" @@ -54,9 +50,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image (cmap='gray')\n", @@ -97,9 +89,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image (cmap='gray')\n", @@ -113,22 +103,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Raster.ipynb b/examples/reference/elements/bokeh/Raster.ipynb index b1689847a5..e368d5af3c 100644 --- a/examples/reference/elements/bokeh/Raster.ipynb +++ b/examples/reference/elements/bokeh/Raster.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "xvals = np.linspace(0,4,202)\n", @@ -55,22 +51,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Scatter.ipynb b/examples/reference/elements/bokeh/Scatter.ipynb index c036e7295d..aa7ff4deae 100644 --- a/examples/reference/elements/bokeh/Scatter.ipynb +++ b/examples/reference/elements/bokeh/Scatter.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter (color='k' marker='s' size=10)\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter (color='k' marker='s' size=10)\n", @@ -76,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter [color_index=2 size_index=3 scaling_factor=50]\n", @@ -114,22 +106,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Spikes.ipynb b/examples/reference/elements/bokeh/Spikes.ipynb index 1fcf314116..535cefaf61 100644 --- a/examples/reference/elements/bokeh/Spikes.ipynb +++ b/examples/reference/elements/bokeh/Spikes.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes (line_alpha=0.4) [spike_length=0.1]\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='red')\n", @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes (cmap='Reds')\n", @@ -97,9 +89,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes [spike_length=0.1] NdOverlay [show_legend=False]\n", @@ -117,9 +107,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes (line_alpha=0.2)\n", @@ -129,22 +117,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Spline.ipynb b/examples/reference/elements/bokeh/Spline.ipynb index ed0d8ab6cb..3cf17e82ac 100644 --- a/examples/reference/elements/bokeh/Spline.ipynb +++ b/examples/reference/elements/bokeh/Spline.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (color='#D3D3D3') Spline (line_width=6 color='green')\n", @@ -55,22 +51,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Spread.ipynb b/examples/reference/elements/bokeh/Spread.ipynb index e01ac435c4..54aedeced1 100644 --- a/examples/reference/elements/bokeh/Spread.ipynb +++ b/examples/reference/elements/bokeh/Spread.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -48,9 +46,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", @@ -76,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spread (fill_color='indianred' fill_alpha=1)\n", @@ -89,22 +83,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Table.ipynb b/examples/reference/elements/bokeh/Table.ipynb index 1f79631ec2..a8e18a6151 100644 --- a/examples/reference/elements/bokeh/Table.ipynb +++ b/examples/reference/elements/bokeh/Table.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "gender = ['M','M', 'M','F']\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Table [height=140]\n", @@ -77,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Table [height=140]\n", @@ -96,9 +88,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Table [height=100]\n", @@ -115,9 +105,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "table.select(Gender='M').to.curve(kdims=[\"Age\"], vdims=[\"Weight\"])" @@ -132,22 +120,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/Text.ipynb b/examples/reference/elements/bokeh/Text.ipynb index f529dbb3f6..8b58036135 100644 --- a/examples/reference/elements/bokeh/Text.ipynb +++ b/examples/reference/elements/bokeh/Text.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (color='#D3D3D3')\n", @@ -48,22 +44,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/VLine.ipynb b/examples/reference/elements/bokeh/VLine.ipynb index 225ab62c8a..19338f023b 100644 --- a/examples/reference/elements/bokeh/VLine.ipynb +++ b/examples/reference/elements/bokeh/VLine.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VLine (color='red' line_width=6) Curve (color='#D3D3D3')\n", @@ -49,22 +45,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/bokeh/VectorField.ipynb b/examples/reference/elements/bokeh/VectorField.ipynb index 01c06ee1a2..46528fad49 100644 --- a/examples/reference/elements/bokeh/VectorField.ipynb +++ b/examples/reference/elements/bokeh/VectorField.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [size_index=3]\n", @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [size_index=3] VectorField.A [color_index=2] VectorField.M [color_index=3]\n", @@ -81,9 +75,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [color_index=2 size_index=3 rescale_lengths=False] (scale=4)\n", @@ -101,9 +93,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs, ys = np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2)\n", @@ -126,9 +116,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [width=500 color_index=3 size_index=3 pivot='tip'] (cmap='fire' scale=0.8) Points (color='black' size=1)\n", @@ -137,22 +125,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Area.ipynb b/examples/reference/elements/matplotlib/Area.ipynb index 5b53fc916e..0e5a31f705 100644 --- a/examples/reference/elements/matplotlib/Area.ipynb +++ b/examples/reference/elements/matplotlib/Area.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*4, 40)\n", @@ -68,9 +64,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "X = np.linspace(0,3,200)\n", @@ -94,9 +88,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "values = np.random.rand(5, 20)\n", @@ -108,22 +100,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Arrow.ipynb b/examples/reference/elements/matplotlib/Arrow.ipynb index c8536b0bb3..ba320c8a76 100644 --- a/examples/reference/elements/matplotlib/Arrow.ipynb +++ b/examples/reference/elements/matplotlib/Arrow.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (color='#D3D3D3')\n", @@ -49,22 +45,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Bars.ipynb b/examples/reference/elements/matplotlib/Bars.ipynb index d4f084efe6..33e7cad5ed 100644 --- a/examples/reference/elements/matplotlib/Bars.ipynb +++ b/examples/reference/elements/matplotlib/Bars.ipynb @@ -86,22 +86,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Bounds.ipynb b/examples/reference/elements/matplotlib/Bounds.ipynb index 567010751b..db7d70f90c 100644 --- a/examples/reference/elements/matplotlib/Bounds.ipynb +++ b/examples/reference/elements/matplotlib/Bounds.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Bounds (color='orange' linewidth=6)\n", @@ -56,9 +52,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "penguins * penguins[-0.15:0.2, -0.4:0, 'G'] * hv.Bounds((-0.15, -0.4, 0.2, 0))" @@ -66,22 +60,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Box.ipynb b/examples/reference/elements/matplotlib/Box.ipynb index ce84e8e16b..c9d54f9423 100644 --- a/examples/reference/elements/matplotlib/Box.ipynb +++ b/examples/reference/elements/matplotlib/Box.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Box (linewidth=5 color='red') Image (cmap='gray')\n", @@ -60,9 +56,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Box (linewidth=5 color='purple') Image (cmap='gray')\n", @@ -73,22 +67,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/BoxWhisker.ipynb b/examples/reference/elements/matplotlib/BoxWhisker.ipynb index 3c2dfc2e9f..e45fd4f629 100644 --- a/examples/reference/elements/matplotlib/BoxWhisker.ipynb +++ b/examples/reference/elements/matplotlib/BoxWhisker.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "hv.BoxWhisker(np.random.randn(1000), vdims=['Value'])" @@ -63,9 +59,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts BoxWhisker [width=600 height=400 show_legend=False] (whisker_color='gray' color='white')\n", @@ -76,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Contours.ipynb b/examples/reference/elements/matplotlib/Contours.ipynb index ec214aa799..b79a9ce508 100644 --- a/examples/reference/elements/matplotlib/Contours.ipynb +++ b/examples/reference/elements/matplotlib/Contours.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Contours (cmap='viridis')\n", @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Contours [show_legend=False colorbar=True width=325] (cmap='fire')\n", @@ -76,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Curve.ipynb b/examples/reference/elements/matplotlib/Curve.ipynb index 7a59cf9aa7..2c739eed22 100644 --- a/examples/reference/elements/matplotlib/Curve.ipynb +++ b/examples/reference/elements/matplotlib/Curve.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "points = [(0.1*i, np.sin(0.1*i)) for i in range(100)]\n", @@ -71,9 +67,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts NdOverlay [legend_position='right']\n", @@ -83,22 +77,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Ellipse.ipynb b/examples/reference/elements/matplotlib/Ellipse.ipynb index a2ed72ab65..c6bc2bb608 100644 --- a/examples/reference/elements/matplotlib/Ellipse.ipynb +++ b/examples/reference/elements/matplotlib/Ellipse.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Ellipse (linewidth=6)\n", @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Ellipse (linewidth=6)\n", @@ -74,22 +68,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/ErrorBars.ipynb b/examples/reference/elements/matplotlib/ErrorBars.ipynb index 3df7b6031a..ba11db8b7d 100644 --- a/examples/reference/elements/matplotlib/ErrorBars.ipynb +++ b/examples/reference/elements/matplotlib/ErrorBars.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(7)\n", @@ -74,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "errors = [(0.1*i, np.sin(0.1*i), np.random.rand()/2, np.random.rand()/4) for i in np.linspace(0, 100, 11)]\n", @@ -85,22 +79,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/HLine.ipynb b/examples/reference/elements/matplotlib/HLine.ipynb index 3e21119e83..8d6a7ca1bc 100644 --- a/examples/reference/elements/matplotlib/HLine.ipynb +++ b/examples/reference/elements/matplotlib/HLine.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts HLine (color='blue' linewidth=6) Points (color='#D3D3D3')\n", @@ -49,22 +45,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/HSV.ipynb b/examples/reference/elements/matplotlib/HSV.ipynb index a78a674236..386064b07a 100644 --- a/examples/reference/elements/matplotlib/HSV.ipynb +++ b/examples/reference/elements/matplotlib/HSV.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%opts Image (cmap='gray')\n", @@ -81,9 +75,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "print(hsv.rgb)\n", @@ -92,22 +84,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/HeatMap.ipynb b/examples/reference/elements/matplotlib/HeatMap.ipynb index e078cd01c7..5302c7ff40 100644 --- a/examples/reference/elements/matplotlib/HeatMap.ipynb +++ b/examples/reference/elements/matplotlib/HeatMap.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "data = [(chr(65+i), chr(97+j), i*j) for i in range(5) for j in range(5) if i!=j]\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "heatmap = hv.HeatMap([(0, 0, 1), (0, 0, 10), (1, 0, 2), (1, 1, 3)])\n", @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts HeatMap [ colorbar=True fig_size=250]\n", @@ -90,22 +82,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Histogram.ipynb b/examples/reference/elements/matplotlib/Histogram.ipynb index 5d53bf345e..3f3b2088a4 100644 --- a/examples/reference/elements/matplotlib/Histogram.ipynb +++ b/examples/reference/elements/matplotlib/Histogram.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, np.pi*2)\n", @@ -79,9 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Histogram (alpha=0.3)\n", @@ -96,22 +88,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Image.ipynb b/examples/reference/elements/matplotlib/Image.ipynb index bffc0705dd..1c7e0befed 100644 --- a/examples/reference/elements/matplotlib/Image.ipynb +++ b/examples/reference/elements/matplotlib/Image.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "ls = np.linspace(0, 10, 200)\n", @@ -59,9 +55,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "img + img[-0.5:0.5, -0.5:0.5]" @@ -77,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='black' marker='x' size=20)\n", @@ -98,9 +90,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "img.sample(x=0) + img.reduce(x=np.mean)" @@ -108,22 +98,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/ItemTable.ipynb b/examples/reference/elements/matplotlib/ItemTable.ipynb index 198ffc1951..fee8ba6de2 100644 --- a/examples/reference/elements/matplotlib/ItemTable.ipynb +++ b/examples/reference/elements/matplotlib/ItemTable.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "hv.ItemTable([('Age', 10), ('Weight',15), ('Height','0.8 meters')])" @@ -46,22 +42,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Path.ipynb b/examples/reference/elements/matplotlib/Path.ipynb index 67d9696ef1..7867475cd1 100644 --- a/examples/reference/elements/matplotlib/Path.ipynb +++ b/examples/reference/elements/matplotlib/Path.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -37,9 +35,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path (color='black' linewidth=4)\n", @@ -63,9 +59,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path (linewidth=4)\n", @@ -89,9 +83,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path [fig_size=400 aspect=3]\n", @@ -102,22 +94,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Points.ipynb b/examples/reference/elements/matplotlib/Points.ipynb index babe75c1e9..ebecc2dfff 100644 --- a/examples/reference/elements/matplotlib/Points.ipynb +++ b/examples/reference/elements/matplotlib/Points.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='k' marker='+' size=10)\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='k' marker='+' size=10)\n", @@ -76,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [color_index=2 size_index=3 scaling_factor=50]\n", @@ -110,22 +102,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Polygons.ipynb b/examples/reference/elements/matplotlib/Polygons.ipynb index 669bbc0eb3..aadea11b8d 100644 --- a/examples/reference/elements/matplotlib/Polygons.ipynb +++ b/examples/reference/elements/matplotlib/Polygons.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Polygons (cmap='hot' edgecolor='black' linewidth=2)\n", @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "def rectangle(x=0, y=0, width=1, height=1):\n", @@ -76,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/QuadMesh.ipynb b/examples/reference/elements/matplotlib/QuadMesh.ipynb index 0de495d910..f68a09346f 100644 --- a/examples/reference/elements/matplotlib/QuadMesh.ipynb +++ b/examples/reference/elements/matplotlib/QuadMesh.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "n = 8 # Number of bins in each direction\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts QuadMesh [xticks=[10, 100,1000]] QuadMesh.LogScale [logx=True]\n", @@ -79,9 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "qmesh = hv.QuadMesh((xs, ys, zs))\n", @@ -97,22 +89,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/RGB.ipynb b/examples/reference/elements/matplotlib/RGB.ipynb index 256fa86cba..dda362f9be 100644 --- a/examples/reference/elements/matplotlib/RGB.ipynb +++ b/examples/reference/elements/matplotlib/RGB.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "hv.RGB.load_image('../assets/penguins.png')" @@ -54,9 +50,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "x,y = np.mgrid[-50:51, -50:51] * 0.1\n", @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image (cmap='gray')\n", @@ -97,9 +89,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image (cmap='gray')\n", @@ -113,22 +103,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Raster.ipynb b/examples/reference/elements/matplotlib/Raster.ipynb index bc9b96427b..2cd625fbce 100644 --- a/examples/reference/elements/matplotlib/Raster.ipynb +++ b/examples/reference/elements/matplotlib/Raster.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "xvals = np.linspace(0,4,202)\n", @@ -55,22 +51,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Scatter.ipynb b/examples/reference/elements/matplotlib/Scatter.ipynb index 150adbea5e..74f6a5f88c 100644 --- a/examples/reference/elements/matplotlib/Scatter.ipynb +++ b/examples/reference/elements/matplotlib/Scatter.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter (color='k' marker='s' size=10)\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter (color='k' marker='s' size=10)\n", @@ -76,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter [color_index=2 size_index=3 scaling_factor=50]\n", @@ -114,22 +106,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Scatter3D.ipynb b/examples/reference/elements/matplotlib/Scatter3D.ipynb index d6d0000293..bd81158011 100644 --- a/examples/reference/elements/matplotlib/Scatter3D.ipynb +++ b/examples/reference/elements/matplotlib/Scatter3D.ipynb @@ -63,22 +63,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Spikes.ipynb b/examples/reference/elements/matplotlib/Spikes.ipynb index 1854672926..19a4d13cd0 100644 --- a/examples/reference/elements/matplotlib/Spikes.ipynb +++ b/examples/reference/elements/matplotlib/Spikes.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -38,9 +36,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes (alpha=0.4) [spike_length=0.1]\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (color='red')\n", @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes (cmap='Reds')\n", @@ -97,9 +89,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes [spike_length=0.1] NdOverlay [show_legend=False]\n", @@ -117,9 +107,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spikes (alpha=0.2)\n", @@ -129,22 +117,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Spline.ipynb b/examples/reference/elements/matplotlib/Spline.ipynb index b9692b5334..710460daa5 100644 --- a/examples/reference/elements/matplotlib/Spline.ipynb +++ b/examples/reference/elements/matplotlib/Spline.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (color='#D3D3D3') Spline (linewidth=6 edgecolor='green')\n", @@ -55,22 +51,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Spread.ipynb b/examples/reference/elements/matplotlib/Spread.ipynb index 83691f9194..f5c7544cf3 100644 --- a/examples/reference/elements/matplotlib/Spread.ipynb +++ b/examples/reference/elements/matplotlib/Spread.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(42)\n", @@ -75,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Spread (facecolor='indianred' alpha=1)\n", @@ -88,22 +82,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Surface.ipynb b/examples/reference/elements/matplotlib/Surface.ipynb index e386d59a27..73dc3ac87f 100644 --- a/examples/reference/elements/matplotlib/Surface.ipynb +++ b/examples/reference/elements/matplotlib/Surface.ipynb @@ -69,22 +69,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Table.ipynb b/examples/reference/elements/matplotlib/Table.ipynb index 9ad03eef0d..fe7848665b 100644 --- a/examples/reference/elements/matplotlib/Table.ipynb +++ b/examples/reference/elements/matplotlib/Table.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "gender = ['M','M', 'M','F']\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "hv.Table({'Gender':gender, 'Age':age, 'Weight':weight, 'Height':height},\n", @@ -76,9 +70,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "table = hv.Table((gender, age, weight, height), kdims = ['Gender', 'Age'], vdims=['Weight', 'Height'])\n", @@ -95,9 +87,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "table.select(Gender='M') + table.select(Gender='M', Age=10)" @@ -113,9 +103,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "table.select(Gender='M').to.curve(kdims=[\"Age\"], vdims=[\"Weight\"])" @@ -130,22 +118,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Text.ipynb b/examples/reference/elements/matplotlib/Text.ipynb index bd2b1dcf55..f97edeff6c 100644 --- a/examples/reference/elements/matplotlib/Text.ipynb +++ b/examples/reference/elements/matplotlib/Text.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve (color='#D3D3D3')\n", @@ -48,22 +44,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/Trisurface.ipynb b/examples/reference/elements/matplotlib/Trisurface.ipynb index 3ed7f407de..e28fc5e8a0 100644 --- a/examples/reference/elements/matplotlib/Trisurface.ipynb +++ b/examples/reference/elements/matplotlib/Trisurface.ipynb @@ -17,9 +17,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -37,9 +35,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Trisurface [azimuth=30 elevation=30 fig_size=200]\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Trisurface [fig_size=200 colorbar=True] (cmap='fire')\n", @@ -83,22 +77,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/VLine.ipynb b/examples/reference/elements/matplotlib/VLine.ipynb index e27fe1c2b2..1586b2ec22 100644 --- a/examples/reference/elements/matplotlib/VLine.ipynb +++ b/examples/reference/elements/matplotlib/VLine.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VLine (color='red' linewidth=6) Curve (color='#D3D3D3')\n", @@ -49,22 +45,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/matplotlib/VectorField.ipynb b/examples/reference/elements/matplotlib/VectorField.ipynb index b8b109e970..5c668b6bac 100644 --- a/examples/reference/elements/matplotlib/VectorField.ipynb +++ b/examples/reference/elements/matplotlib/VectorField.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [size_index=3]\n", @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [size_index=3] VectorField.A [color_index=2] VectorField.M [color_index=3]\n", @@ -81,9 +75,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [color_index=2 size_index=3 rescale_lengths=False] (scale=4)\n", @@ -101,9 +93,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs, ys = np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2)\n", @@ -126,9 +116,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts VectorField [color_index=3 size_index=3 pivot='tip'] (cmap='fire' scale=0.8) Points (color='black' s=1)\n", @@ -137,22 +125,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.13" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/BoxWhiskers.ipynb b/examples/reference/elements/plotly/BoxWhiskers.ipynb index 03e46234ca..be51185f38 100644 --- a/examples/reference/elements/plotly/BoxWhiskers.ipynb +++ b/examples/reference/elements/plotly/BoxWhiskers.ipynb @@ -70,22 +70,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Curve.ipynb b/examples/reference/elements/plotly/Curve.ipynb index 9c151ff4ac..3a3f04e523 100644 --- a/examples/reference/elements/plotly/Curve.ipynb +++ b/examples/reference/elements/plotly/Curve.ipynb @@ -76,22 +76,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Distribution.ipynb b/examples/reference/elements/plotly/Distribution.ipynb index 788a46ed7e..7ad57b4dca 100644 --- a/examples/reference/elements/plotly/Distribution.ipynb +++ b/examples/reference/elements/plotly/Distribution.ipynb @@ -60,22 +60,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/ErrorBars.ipynb b/examples/reference/elements/plotly/ErrorBars.ipynb index 9ff8e329c9..d41a9853ff 100644 --- a/examples/reference/elements/plotly/ErrorBars.ipynb +++ b/examples/reference/elements/plotly/ErrorBars.ipynb @@ -79,22 +79,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/HeatMap.ipynb b/examples/reference/elements/plotly/HeatMap.ipynb index 34c9f9fb7e..cb69c56710 100644 --- a/examples/reference/elements/plotly/HeatMap.ipynb +++ b/examples/reference/elements/plotly/HeatMap.ipynb @@ -83,22 +83,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Image.ipynb b/examples/reference/elements/plotly/Image.ipynb index a37e6b5e15..5519bb69b9 100644 --- a/examples/reference/elements/plotly/Image.ipynb +++ b/examples/reference/elements/plotly/Image.ipynb @@ -98,22 +98,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/ItemTable.ipynb b/examples/reference/elements/plotly/ItemTable.ipynb index d388db11e4..670b91ce49 100644 --- a/examples/reference/elements/plotly/ItemTable.ipynb +++ b/examples/reference/elements/plotly/ItemTable.ipynb @@ -42,22 +42,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Points.ipynb b/examples/reference/elements/plotly/Points.ipynb index 8558ea4c77..a849a48c8b 100644 --- a/examples/reference/elements/plotly/Points.ipynb +++ b/examples/reference/elements/plotly/Points.ipynb @@ -102,22 +102,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Raster.ipynb b/examples/reference/elements/plotly/Raster.ipynb index bb0417ae46..dab41a3a6d 100644 --- a/examples/reference/elements/plotly/Raster.ipynb +++ b/examples/reference/elements/plotly/Raster.ipynb @@ -51,22 +51,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Scatter.ipynb b/examples/reference/elements/plotly/Scatter.ipynb index e44c8c8b47..c4e337354d 100644 --- a/examples/reference/elements/plotly/Scatter.ipynb +++ b/examples/reference/elements/plotly/Scatter.ipynb @@ -106,22 +106,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Scatter3D.ipynb b/examples/reference/elements/plotly/Scatter3D.ipynb index e726be538f..efbf321557 100644 --- a/examples/reference/elements/plotly/Scatter3D.ipynb +++ b/examples/reference/elements/plotly/Scatter3D.ipynb @@ -16,9 +16,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter3D [width=500 height=500 camera_zoom=20 color_index=2] (size=5 cmap='fire')\n", @@ -57,9 +53,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter3D [width=500 height=500] (symbol='x' size=2)\n", @@ -68,22 +62,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Surface.ipynb b/examples/reference/elements/plotly/Surface.ipynb index aaaf352411..c033d76811 100644 --- a/examples/reference/elements/plotly/Surface.ipynb +++ b/examples/reference/elements/plotly/Surface.ipynb @@ -17,9 +17,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -39,9 +37,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Surface [width=500 height=500] (cmap='plasma')\n", @@ -58,9 +54,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Surface [width=500 height=500] (cmap='fire')\n", @@ -75,22 +69,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Table.ipynb b/examples/reference/elements/plotly/Table.ipynb index 13eb5d4e19..0fd6eb0850 100644 --- a/examples/reference/elements/plotly/Table.ipynb +++ b/examples/reference/elements/plotly/Table.ipynb @@ -34,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "gender = ['M','M', 'M','F']\n", @@ -120,22 +118,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/elements/plotly/Trisurface.ipynb b/examples/reference/elements/plotly/Trisurface.ipynb index 1e0bb0b900..e81e627bf5 100644 --- a/examples/reference/elements/plotly/Trisurface.ipynb +++ b/examples/reference/elements/plotly/Trisurface.ipynb @@ -76,22 +76,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/bounds_selection.ipynb b/examples/reference/streams/bokeh/bounds_selection.ipynb index b512c302b8..aac9049c9a 100644 --- a/examples/reference/streams/bokeh/bounds_selection.ipynb +++ b/examples/reference/streams/bokeh/bounds_selection.ipynb @@ -71,16 +71,8 @@ ], "metadata": { "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/boundsx_selection.ipynb b/examples/reference/streams/bokeh/boundsx_selection.ipynb index b16d0ec10f..9a7e958b34 100644 --- a/examples/reference/streams/bokeh/boundsx_selection.ipynb +++ b/examples/reference/streams/bokeh/boundsx_selection.ipynb @@ -17,9 +17,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -32,9 +30,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve[tools=['xbox_select']]\n", @@ -54,31 +50,16 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "
    " ] } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.5.2" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/boundsy_selection.ipynb b/examples/reference/streams/bokeh/boundsy_selection.ipynb index cda2a49fd9..ba23b752b2 100644 --- a/examples/reference/streams/bokeh/boundsy_selection.ipynb +++ b/examples/reference/streams/bokeh/boundsy_selection.ipynb @@ -61,22 +61,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.5.2" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/curve_selection.ipynb b/examples/reference/streams/bokeh/curve_selection.ipynb index 2588b6a47e..24157ed30b 100644 --- a/examples/reference/streams/bokeh/curve_selection.ipynb +++ b/examples/reference/streams/bokeh/curve_selection.ipynb @@ -43,22 +43,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/heatmap_tap.ipynb b/examples/reference/streams/bokeh/heatmap_tap.ipynb index 29802be65b..7cfe9f21d5 100644 --- a/examples/reference/streams/bokeh/heatmap_tap.ipynb +++ b/examples/reference/streams/bokeh/heatmap_tap.ipynb @@ -17,9 +17,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -32,9 +30,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts HeatMap [width=700 height=500 logz=True fontsize={'xticks': '6pt'}, tools=['hover'] xrotation=90] (cmap='RdBu_r') \n", @@ -68,22 +64,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/linked_pointer_crosssection.ipynb b/examples/reference/streams/bokeh/linked_pointer_crosssection.ipynb index da7c3c6feb..e11ccd9787 100644 --- a/examples/reference/streams/bokeh/linked_pointer_crosssection.ipynb +++ b/examples/reference/streams/bokeh/linked_pointer_crosssection.ipynb @@ -61,16 +61,8 @@ ], "metadata": { "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/multiple_selection.ipynb b/examples/reference/streams/bokeh/multiple_selection.ipynb index 15d23aac64..44ff9e2137 100644 --- a/examples/reference/streams/bokeh/multiple_selection.ipynb +++ b/examples/reference/streams/bokeh/multiple_selection.ipynb @@ -17,9 +17,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -31,9 +29,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [tools=['box_select', 'lasso_select', 'tap']]\n", @@ -64,16 +60,8 @@ ], "metadata": { "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/point_selection1D.ipynb b/examples/reference/streams/bokeh/point_selection1D.ipynb index 0d95c7c590..1c387d0110 100644 --- a/examples/reference/streams/bokeh/point_selection1D.ipynb +++ b/examples/reference/streams/bokeh/point_selection1D.ipynb @@ -63,16 +63,8 @@ ], "metadata": { "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/pointer_crosshair.ipynb b/examples/reference/streams/bokeh/pointer_crosshair.ipynb index 51d9a9590f..4f33b2f9a7 100644 --- a/examples/reference/streams/bokeh/pointer_crosshair.ipynb +++ b/examples/reference/streams/bokeh/pointer_crosshair.ipynb @@ -17,9 +17,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -59,16 +57,8 @@ ], "metadata": { "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/range_histogram.ipynb b/examples/reference/streams/bokeh/range_histogram.ipynb index cd73905599..9a32efc0a5 100644 --- a/examples/reference/streams/bokeh/range_histogram.ipynb +++ b/examples/reference/streams/bokeh/range_histogram.ipynb @@ -60,16 +60,8 @@ ], "metadata": { "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/reference/streams/bokeh/regression_tap.ipynb b/examples/reference/streams/bokeh/regression_tap.ipynb index 78833a1eee..05e72d0554 100644 --- a/examples/reference/streams/bokeh/regression_tap.ipynb +++ b/examples/reference/streams/bokeh/regression_tap.ipynb @@ -78,22 +78,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/topics/geometry/lsystems.ipynb b/examples/topics/geometry/lsystems.ipynb index 4ac219f20a..52cc03aaae 100644 --- a/examples/topics/geometry/lsystems.ipynb +++ b/examples/topics/geometry/lsystems.ipynb @@ -37,9 +37,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts Path {+framewise +axiswise} [xaxis=None, yaxis=None show_title=False] (color='black')" @@ -62,9 +60,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class SimpleAgent(object):\n", @@ -168,9 +164,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class Agent(SimpleAgent):\n", @@ -213,9 +207,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def expand_rules(initial, iterations, productions):\n", @@ -246,9 +238,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "koch_curve = {'F':'F+F-F-F+F'} # Replace 'F' with 'F+F-F-F+F'\n", @@ -265,9 +255,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "for i in range(3):\n", @@ -276,9 +264,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "Note that these are instructions our agent can follow!" ] @@ -286,9 +272,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path {+axiswise} (color=Cycle())\n", @@ -321,9 +305,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sierpinski_triangle = {'A':'B-A-B', 'B':'A+B+A'}\n", @@ -341,9 +323,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path (color='green')\n", @@ -380,9 +360,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dragon_curve = {'X':'X+YF+', 'Y':'-FX-Y'}" @@ -398,9 +376,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dragon_rules = dict(Agent.default_rules, X=lambda t,d,a: None, Y=lambda t,d,a: None)" @@ -416,9 +392,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path {+framewise}\n", @@ -465,9 +439,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class AgentWithState(Agent):\n", @@ -504,9 +476,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "plant_fractal = {'X':'F-[[X]+X]+F[+FX]-X', 'F':'FF'}\n", @@ -516,9 +486,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ "The new symbols '[' and ']' correspond to the new push and pop state actions:" ] @@ -526,9 +494,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "plant_rules = dict(Agent.default_rules, X=lambda t,d,a: None, \n", @@ -545,9 +511,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path {+framewise} (color='g' line_width=1)\n", @@ -561,22 +525,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/topics/geometry/square_limit.ipynb b/examples/topics/geometry/square_limit.ipynb index 7ccf3f28d6..7c747abd51 100644 --- a/examples/topics/geometry/square_limit.ipynb +++ b/examples/topics/geometry/square_limit.ipynb @@ -91,9 +91,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from matplotlib.path import Path\n", @@ -282,22 +280,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/topics/simulation/boids.ipynb b/examples/topics/simulation/boids.ipynb index 15c6b97123..401aacf40d 100644 --- a/examples/topics/simulation/boids.ipynb +++ b/examples/topics/simulation/boids.ipynb @@ -52,9 +52,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def radarray(N):\n", @@ -80,9 +78,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def count(mask, n): \n", @@ -108,9 +104,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class Boids(BoidState):\n", @@ -164,9 +158,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts VectorField [xaxis=None yaxis=None] (scale=0.08)\n", @@ -183,9 +175,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "boids = Boids(500)" @@ -246,9 +236,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.periodic(0.01, timeout=60, block=True) # Run the simulation for 60 seconds" @@ -256,22 +244,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/01-Annotating_Data.ipynb b/examples/user_guide/01-Annotating_Data.ipynb index 4ffa7af2b2..6ad627b8f9 100644 --- a/examples/user_guide/01-Annotating_Data.ipynb +++ b/examples/user_guide/01-Annotating_Data.ipynb @@ -224,22 +224,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/02-Composing_Elements.ipynb b/examples/user_guide/02-Composing_Elements.ipynb index 9139da8f8a..aaa550e0d3 100644 --- a/examples/user_guide/02-Composing_Elements.ipynb +++ b/examples/user_guide/02-Composing_Elements.ipynb @@ -10,9 +10,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -69,22 +67,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/03-Customizing_Plots.ipynb b/examples/user_guide/03-Customizing_Plots.ipynb index 15d1826cae..c5726aba44 100644 --- a/examples/user_guide/03-Customizing_Plots.ipynb +++ b/examples/user_guide/03-Customizing_Plots.ipynb @@ -185,22 +185,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/04-Dimensioned_Containers.ipynb b/examples/user_guide/04-Dimensioned_Containers.ipynb index c2424be6e6..1cea05c919 100644 --- a/examples/user_guide/04-Dimensioned_Containers.ipynb +++ b/examples/user_guide/04-Dimensioned_Containers.ipynb @@ -60,22 +60,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/05-Building_Composite_Objects.ipynb b/examples/user_guide/05-Building_Composite_Objects.ipynb index 1507ac4a5a..eef4c179f9 100644 --- a/examples/user_guide/05-Building_Composite_Objects.ipynb +++ b/examples/user_guide/05-Building_Composite_Objects.ipynb @@ -431,22 +431,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/06-Live_Data.ipynb b/examples/user_guide/06-Live_Data.ipynb index 61325a4c35..29e59ffadc 100644 --- a/examples/user_guide/06-Live_Data.ipynb +++ b/examples/user_guide/06-Live_Data.ipynb @@ -65,9 +65,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import holoviews as hv\n", @@ -85,9 +83,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xvals = np.linspace(-4,0,202)\n", @@ -124,9 +120,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap = hv.DynamicMap(waves_image, kdims=['alpha', 'beta'])\n", @@ -154,9 +148,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap[0,1] + dmap.select(alpha=1, beta=2)" @@ -181,9 +173,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.redim.range(alpha=(0,5.0), beta=(1,5.0))" @@ -208,9 +198,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.redim.values(alpha=[0,1,2], beta=[0.1, 1.0, 2.5])" @@ -246,9 +234,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def shapes(N, radius=0.5): # Positional keyword arguments are fine\n", @@ -276,9 +262,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Path (linewidth=1.5)\n", @@ -310,9 +294,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts Path (linewidth=1.5)" @@ -335,9 +317,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dtype = type(dmap.data).__name__\n", @@ -362,9 +342,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.HoloMap(dmap)" @@ -382,9 +360,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.HoloMap(dmap[{(2,0.3), (2,0.6), (3,0.3), (3,0.6)}])" @@ -402,9 +378,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "samples = hv.HoloMap(dmap[{2,3},{0.5,1.0}])\n", @@ -414,9 +388,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "samples.data.keys()" @@ -448,9 +420,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.util import Dynamic\n", @@ -485,9 +455,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap = hv.DynamicMap(shapes, kdims=['N','radius']).redim.range(N=(2,20), radius=(0.5,1.0))" @@ -503,9 +471,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sliced = dmap[4:8, :]\n", @@ -523,9 +489,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "sliced[:, 0.8:1.0]" @@ -556,9 +520,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, 2*np.pi)\n", @@ -583,9 +545,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts GridSpace [show_legend=True fig_size=200]\n", @@ -607,9 +567,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts Path (linewidth=1 color=Palette('Blues'))\n", @@ -635,9 +593,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts GridSpace [xaxis=None yaxis=None] Path [bgcolor='w' xaxis=None yaxis=None]\n", @@ -668,9 +624,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Image {+axiswise}\n", @@ -708,22 +662,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/07-Tabular_Datasets.ipynb b/examples/user_guide/07-Tabular_Datasets.ipynb index dfbf0a3967..e9b8250a1e 100644 --- a/examples/user_guide/07-Tabular_Datasets.ipynb +++ b/examples/user_guide/07-Tabular_Datasets.ipynb @@ -24,9 +24,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -53,9 +51,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = range(10)\n", @@ -75,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.Scatter(table) + hv.Curve(table) + hv.Bars(table)" @@ -127,9 +121,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(hv.Scatter({'x': xs, 'y': ys}) +\n", @@ -149,9 +141,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(hv.Scatter(ys) + hv.Scatter((xs, ys)) + hv.Scatter(zip(xs, ys)))" @@ -167,9 +157,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({'x': xs, 'y': ys, 'z': ys*2})\n", @@ -186,9 +174,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.Dataset.datatype" @@ -204,9 +190,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(type(hv.Scatter((xs, ys), datatype=['array']).data))\n", @@ -231,9 +215,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "overlay = hv.Scatter(df, kdims='x', vdims='y') * hv.Scatter(df, kdims='x', vdims='z')\n", @@ -250,9 +232,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "overlay.Scatter.I.data is overlay.Scatter.II.data" @@ -284,9 +264,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "table.array()" @@ -302,9 +280,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "HTML(table.dframe().head().to_html())" @@ -320,9 +296,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "table.columns()" @@ -344,9 +318,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xs = np.arange(10)\n", @@ -364,9 +336,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "HTML(curve.dframe().to_html())" @@ -382,9 +352,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points (s=200) [size_index=None]\n", @@ -413,9 +381,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "obs_hmap = hv.HoloMap({i: hv.Image(np.random.randn(10, 10), bounds=(0,0,3,3))\n", @@ -433,9 +399,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Layout [fig_size=150] Scatter3D [color_index=3 size_index=None] (cmap='hot' edgecolor='k' s=50)\n", @@ -452,9 +416,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from itertools import product\n", @@ -476,9 +438,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Table [fig_size=150]\n", @@ -509,9 +469,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "bars = hv.Bars((['C', 'A', 'B', 'D'], [2, 7, 3, 4]))\n", @@ -535,9 +493,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "n = np.arange(1000)\n", @@ -558,9 +514,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts BoxWhisker [aspect=2 fig_size=200 bgcolor='w']\n", @@ -584,9 +538,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Bars [show_legend=False] {+axiswise}\n", @@ -617,9 +569,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hmap = hv.HoloMap({i: hv.Curve(np.arange(10)*i) for i in range(10)})\n", @@ -629,23 +579,9 @@ } ], "metadata": { - "hide_input": false, - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/08-Gridded_Datasets.ipynb b/examples/user_guide/08-Gridded_Datasets.ipynb index 567e336366..ec9788d905 100644 --- a/examples/user_guide/08-Gridded_Datasets.ipynb +++ b/examples/user_guide/08-Gridded_Datasets.ipynb @@ -10,9 +10,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import xarray as xr\n", @@ -24,9 +22,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts Scatter3D [size_index=None color_index=3] (cmap='fire')" @@ -52,9 +48,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "img = hv.Image((range(10), range(5), np.random.rand(5, 10)), datatype=['grid'])\n", @@ -71,9 +65,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "img.data" @@ -89,9 +81,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xr_img = img.clone(datatype=['xarray'])\n", @@ -113,9 +103,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "print(\"Array type: %s with bounds %s\" % (type(arr_img.data), arr_img.bounds))" @@ -151,9 +139,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dataset3d = hv.Dataset((range(3), range(5), range(7), np.random.randn(7, 5, 3)),\n", @@ -171,9 +157,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.Scatter3D(dataset3d)" @@ -196,9 +180,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dataset3d.select(x=1).to(hv.Image, ['y', 'z']) + hv.Scatter3D(dataset3d.select(x=1))" @@ -216,9 +198,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "(dataset3d.to(hv.Image, ['y', 'z'], 'Value', ['x']) +\n", @@ -242,9 +222,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.Image(dataset3d.aggregate(['x', 'y'], np.mean)) + hv.Image(dataset3d.reduce(z=np.mean))" @@ -260,9 +238,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.Spread(dataset3d.aggregate('z', np.mean, np.std)) * hv.Curve(dataset3d.aggregate('z', np.mean))" @@ -278,9 +254,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dataset3d.to(hv.BoxWhisker, 'x', 'Value', groupby=[])" @@ -296,9 +270,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dataset3d.to(hv.Distribution, [], 'Value', groupby='x').overlay()" @@ -321,9 +293,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "heatmap = hv.HeatMap((['A', 'B', 'C'], ['a', 'b', 'c', 'd', 'e'], np.random.rand(5, 3)))\n", @@ -358,9 +328,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "heatmap.dimension_values('x')" @@ -376,9 +344,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "heatmap.dimension_values('x', expanded=False)" @@ -394,9 +360,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "heatmap.dimension_values('x', flat=False)" @@ -419,9 +383,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "heatmap.dimension_values('z')" @@ -437,9 +399,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "heatmap.dimension_values('z', flat=False)" @@ -447,23 +407,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb b/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb index e272cad837..6910acbc4e 100644 --- a/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb +++ b/examples/user_guide/09-Indexing_and_Selecting_Data.ipynb @@ -140,9 +140,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "curve[4.05], curve[4.1], curve[4.17], curve[4.3]" @@ -222,9 +220,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts Image (cmap='Blues') Bounds (color='red')" @@ -435,9 +431,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "obs_hmap = hv.HoloMap({i: hv.Image(np.random.randn(10, 10), bounds=extents)\n", @@ -537,22 +531,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [default]", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/10-Transforming_Elements.ipynb b/examples/user_guide/10-Transforming_Elements.ipynb index 75bcb114f7..007a5f5592 100644 --- a/examples/user_guide/10-Transforming_Elements.ipynb +++ b/examples/user_guide/10-Transforming_Elements.ipynb @@ -10,9 +10,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import param\n", @@ -42,9 +40,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.operation import histogram\n", @@ -68,9 +64,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "boxw = hv.BoxWhisker(np.random.randn(10000))\n", @@ -105,9 +99,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "holomap = hv.HoloMap({(i*0.1+0.1): hv.BoxWhisker(np.random.randn(10000)*(i*0.1+0.1)) for i in range(5)},\n", @@ -141,9 +133,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.operation import timeseries\n", @@ -171,9 +161,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter [width=600] (color='black')\n", @@ -207,9 +195,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.operation import Operation\n", @@ -247,9 +233,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve [width=600] Overlay [xaxis=None]\n", @@ -280,9 +264,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "rolled = hv.HoloMap({(w, str(wt)): timeseries.rolling(curve, rolling_window=w, window_type=wt)\n", @@ -303,9 +285,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Curve [width=600] Overlay [legend_position='top_left']\n", @@ -341,22 +321,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/11-Responding_to_Events.ipynb b/examples/user_guide/11-Responding_to_Events.ipynb index 81b883c358..c14fc953ba 100644 --- a/examples/user_guide/11-Responding_to_Events.ipynb +++ b/examples/user_guide/11-Responding_to_Events.ipynb @@ -10,9 +10,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -36,9 +34,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Styles and plot options used in this tutorial\n", @@ -66,9 +62,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "lin = np.linspace(-np.pi,np.pi,300)\n", @@ -110,9 +104,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.streams import Stream, param\n", @@ -129,9 +121,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.help(Time)" @@ -147,9 +137,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "Time = Stream.define('Time', t=param.Number(default=0.0, doc='A time parameter'))\n", @@ -166,9 +154,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "time_dflt = Time()\n", @@ -185,9 +171,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "time = Time(t=np.pi/4)\n", @@ -218,9 +202,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap = hv.DynamicMap(lissajous_curve, streams=[time])\n", @@ -239,9 +221,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.event( t=0.2)" @@ -259,9 +239,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "time.event(t=-0.2)" @@ -293,9 +271,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "ls = np.linspace(0, 10, 200)\n", @@ -320,9 +296,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.event(x=-0.2, y=0.1)" @@ -360,9 +334,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%opts Curve (linestyle='-')\n", @@ -395,9 +367,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.event(time=8)" @@ -436,9 +406,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def integral2(lim, t): \n", @@ -473,9 +441,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap=hv.DynamicMap(integral, kdims=['time','limit'], streams=[Time()]).redim.range(limit=(-3.,3.))\n", @@ -494,9 +460,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap[1,0] + dmap.select(time=3,limit=1.5) + dmap[None,1.5]" @@ -514,9 +478,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.reset() # Reset the cache, we don't want the values from the cell above\n", @@ -555,9 +517,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def sample_distributions(samples=10, tol=0.04):\n", @@ -584,9 +544,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.DynamicMap(sample_generator)" @@ -602,9 +560,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap = hv.DynamicMap(sample_generator, streams=[Stream.define('Next')()])\n", @@ -628,9 +584,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "for i in range(40):\n", @@ -647,9 +601,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "dmap.periodic(0.1, 1000, timeout=3)" @@ -681,9 +633,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "hv.HoloMap({i:next(dmap) for i in range(10)}, kdims=['Iteration'])" @@ -725,9 +675,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "defineXY = Stream.define('defineXY', x=0.0, y=0.0)" @@ -743,9 +691,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "class XY(Stream):\n", @@ -763,9 +709,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xy = XY(x=2,y=3)" @@ -781,9 +725,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xy.update(x=4,y=50)\n", @@ -816,9 +758,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xy = XY()\n", @@ -836,9 +776,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def subscriber(xpos,ypos):\n", @@ -859,9 +797,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xy.clear()\n", @@ -879,23 +815,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/12-Custom_Interactivity.ipynb b/examples/user_guide/12-Custom_Interactivity.ipynb index 30abc88c98..9e6d2e0b60 100644 --- a/examples/user_guide/12-Custom_Interactivity.ipynb +++ b/examples/user_guide/12-Custom_Interactivity.ipynb @@ -208,9 +208,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "xvals = np.linspace(0,4,202)\n", @@ -283,9 +281,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "pointer = streams.PointerXY(x=0, y=0)\n", @@ -341,9 +337,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "tap = streams.Tap(transient=True)\n", @@ -360,9 +354,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "taps = []\n", @@ -410,23 +402,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/14-Large_Data.ipynb b/examples/user_guide/14-Large_Data.ipynb index 21b142a8ce..0744b75df8 100644 --- a/examples/user_guide/14-Large_Data.ipynb +++ b/examples/user_guide/14-Large_Data.ipynb @@ -19,20 +19,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "hidden": true - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -72,23 +59,7 @@ }, { "cell_type": "markdown", - "metadata": { - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 0, - "height": 4, - "hidden": false, - "row": 0, - "width": 11 - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "source": [ "# Supported ``Elements``\n", "\n", @@ -100,25 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 0, - "height": 12, - "hidden": false, - "row": 6, - "width": 11 - }, - "report_default": {} - } - } - }, - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", @@ -145,9 +98,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", @@ -159,21 +110,7 @@ }, { "cell_type": "markdown", - "metadata": { - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "hidden": true - }, - "report_default": { - "hidden": true - } - } - } - } - }, + "metadata": {}, "source": [ "Luckily, because elements are just containers for data and associated metadata, not plots, HoloViews can generate entirely different types of visualizations from the same data structure when appropriate. For instance, in the plot on the left below you can see the result of applying a `decimate()` operation acting on the `points` object, which will automatically downsample this million-point dataset to at most 1000 points at any time as you zoom in or out:" ] @@ -181,24 +118,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 7, - "height": 11, - "hidden": false, - "row": 20, - "width": 4 - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "outputs": [], "source": [ "decimate(points) + datashade(points) + datashade(paths)" @@ -231,22 +151,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "hidden": true - }, - "report_default": { - "hidden": true - } - } - } - } - }, + "metadata": {}, "outputs": [], "source": [ "datashade(points) + dynspread(datashade(points))" @@ -264,9 +169,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "datashade(paths) + dynspread(datashade(paths))" @@ -274,23 +177,7 @@ }, { "cell_type": "markdown", - "metadata": { - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 0, - "height": 2, - "hidden": false, - "row": 59, - "width": 11 - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "source": [ "# Multidimensional plots\n", "\n", @@ -300,24 +187,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 0, - "height": 11, - "hidden": false, - "row": 61, - "width": 3 - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "outputs": [], "source": [ "%%opts RGB [width=400] {+axiswise}\n", @@ -348,9 +218,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts RGB [width=600]\n", @@ -372,22 +240,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "hidden": true - }, - "report_default": { - "hidden": true - } - } - } - } - }, + "metadata": {}, "outputs": [], "source": [ "%%opts RGB [width=300] {+axiswise}\n", @@ -397,24 +250,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 0, - "height": 4, - "hidden": false, - "row": 72, - "width": 11 - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "source": [ "You can thus very naturally explore even very large multidimensional datasets. Note that the static exported version (e.g. on anaconda.org) will only show a single frame, rather than the entire set of frames visible with a live Python server.\n", "\n", @@ -427,9 +263,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from bokeh.models import DatetimeTickFormatter\n", @@ -444,24 +278,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "extensions": { - "jupyter_dashboards": { - "version": 1, - "views": { - "grid_default": { - "col": 0, - "height": 11, - "hidden": false, - "row": 76, - "width": 9 - }, - "report_default": {} - } - } - } - }, + "metadata": {}, "outputs": [], "source": [ "%%opts RGB [finalize_hooks=[apply_formatter] width=800]\n", @@ -480,9 +297,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Overlay [finalize_hooks=[apply_formatter] width=800] \n", @@ -497,9 +312,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "rolling.function" @@ -519,9 +332,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts QuadMesh [tools=['hover']] (alpha=0 hover_alpha=0.2)\n", @@ -547,42 +358,9 @@ } ], "metadata": { - "anaconda-cloud": {}, - "extensions": { - "jupyter_dashboards": { - "activeView": "grid_default", - "version": 1, - "views": { - "grid_default": { - "cellMargin": 10, - "defaultCellHeight": 20, - "maxColumns": 12, - "name": "grid", - "type": "grid" - }, - "report_default": { - "name": "report", - "type": "report" - } - } - } - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/Configuring_HoloViews.ipynb b/examples/user_guide/Configuring_HoloViews.ipynb index c80cc09199..679da3eadd 100644 --- a/examples/user_guide/Configuring_HoloViews.ipynb +++ b/examples/user_guide/Configuring_HoloViews.ipynb @@ -106,22 +106,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/Continuous_Coordinates.ipynb b/examples/user_guide/Continuous_Coordinates.ipynb index 94f0ab4915..71f4582dfd 100644 --- a/examples/user_guide/Continuous_Coordinates.ipynb +++ b/examples/user_guide/Continuous_Coordinates.ipynb @@ -383,22 +383,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/Deploying_Bokeh_Apps.ipynb b/examples/user_guide/Deploying_Bokeh_Apps.ipynb index ee49e57d3a..ef8dc83812 100644 --- a/examples/user_guide/Deploying_Bokeh_Apps.ipynb +++ b/examples/user_guide/Deploying_Bokeh_Apps.ipynb @@ -125,9 +125,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "renderer = renderer.instance(mode='server')" @@ -206,9 +204,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "html = renderer.figure_data(hvplot)" @@ -257,9 +253,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "doc = renderer.server_doc(layout)\n", @@ -411,9 +405,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "server.stop()" @@ -641,22 +633,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python [conda env:science]", - "language": "python", - "name": "conda-env-science-py" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/Exporting_and_Archiving.ipynb b/examples/user_guide/Exporting_and_Archiving.ipynb index 4aa585f66c..30bfcf5909 100644 --- a/examples/user_guide/Exporting_and_Archiving.ipynb +++ b/examples/user_guide/Exporting_and_Archiving.ipynb @@ -270,9 +270,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import json\n", @@ -482,22 +480,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, "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.6.1" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/examples/user_guide/Plotting_with_Bokeh.ipynb b/examples/user_guide/Plotting_with_Bokeh.ipynb index 78dbda14cd..aa532d1957 100644 --- a/examples/user_guide/Plotting_with_Bokeh.ipynb +++ b/examples/user_guide/Plotting_with_Bokeh.ipynb @@ -9,10 +9,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": true, - "id": "e6a399c2-931d-445e-a80a-30ea27653f27" - }, + "metadata": {}, "source": [ "
    \n", " This tutorial contains a lot of bokeh plots, which may take a little while to load and render.\n", @@ -27,10 +24,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "23b0bc81-6d36-4fc6-b43c-4cfb13c32ef6" - }, + "metadata": {}, "source": [ "As usual, the first thing we do is initialize the HoloViews notebook extension, but we now specify the backend specifically." ] @@ -38,9 +32,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -51,11 +43,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "735ed729-9f22-44c3-8b29-323e8a453960" - }, + "metadata": {}, "outputs": [], "source": [ "hv.extension('bokeh')" @@ -63,10 +51,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "c97173e0-8eb2-437c-8316-23336a9f9d7b" - }, + "metadata": {}, "source": [ "We could instead leave the default backend as ``'matplotlib'``, and then switch only some specific cells to use bokeh using a cell magic:\n", "\n", @@ -78,10 +63,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "c0d5e9a6-258f-47c0-b6e6-0744af327c03" - }, + "metadata": {}, "source": [ "## Element Style options\n", "\n", @@ -91,11 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "d19a49d0-b715-4175-a56b-10f33c179927" - }, + "metadata": {}, "outputs": [], "source": [ "from holoviews.plotting.bokeh.element import (line_properties, fill_properties,\n", @@ -117,11 +95,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "1ec75e9b-5625-4108-b393-6f6fddcfa1fb" - }, + "metadata": {}, "outputs": [], "source": [ "curve_opts = dict(line_width=10, line_color='indianred', line_dash='dotted', line_alpha=0.5)\n", @@ -144,20 +118,14 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "a7dbd6d6-198f-4461-a344-134a54a67bba" - }, + "metadata": {}, "source": [ "### Sizing Elements" ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "367c674e-01a9-4d95-8941-83458c3cfc75" - }, + "metadata": {}, "source": [ "Sizing and aspect of Elements in bokeh are always computed in absolute pixels. To change the size or aspect of an Element set the ``width`` and ``height`` plot options." ] @@ -165,12 +133,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "31636ffa-4c06-4156-9415-167a837da843", - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points.A [width=300 height=300] Points.B [width=600 height=300]\n", @@ -179,20 +142,14 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "7a5b4269-adc2-4f7d-b91b-6715debaaf12" - }, + "metadata": {}, "source": [ "### Controlling axes" ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "cec51ba5-7648-437c-b482-a0033201e733" - }, + "metadata": {}, "source": [ "Bokeh provides a variety of options to control the axes. Here we provide a quick overview of linked plots for the same data displayed differently by applying log axes, disabling axes, rotating ticks, specifying the number of ticks, and supplying an explicit list of ticks." ] @@ -200,11 +157,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "6eb1e3f1-6a5d-4800-a75e-b13fa09e268f" - }, + "metadata": {}, "outputs": [], "source": [ "points = hv.Points(np.exp(xs)) \n", @@ -221,10 +174,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "cb20e6b1-babb-4d0b-b0e6-51a7753e3636" - }, + "metadata": {}, "source": [ "### Datetime axes" ] @@ -239,11 +189,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "5e40a09f-98ec-40a0-b2a6-15c7d1e64c64" - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Overlay [width=600 legend_position='top_left'] Curve (muted_alpha=0.5 muted_color='black')\n", @@ -274,9 +220,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [size_index='z' tools=['hover']] HeatMap [toolbar='above' tools=['hover']]\n", @@ -297,9 +241,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Overlay [show_legend=False height=400 width=600] ErrorBars (line_width=5) Scatter(alpha=0.2 size=6)\n", @@ -317,30 +259,21 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "fd1916ba-13a5-404a-8115-f63487b38689" - }, + "metadata": {}, "source": [ "## Containers" ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "1b4d7def-38d5-4872-b780-e203345e98d8" - }, + "metadata": {}, "source": [ "### Tabs" ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "fc7964ba-2dcd-48e3-b859-c8a5b09386e6" - }, + "metadata": {}, "source": [ "Using bokeh, both ``(Nd)Overlay`` and ``(Nd)Layout`` types may be displayed inside a ``tabs`` widget. This may be enabled via a plot option ``tabs``, and may even be nested inside a Layout." ] @@ -348,11 +281,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "caf6fe45-30fe-4053-b242-b4a6241d9e30" - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Overlay [tabs=True] Image [width=400 height=400]\n", @@ -364,30 +293,21 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "da0f093f-182c-4db1-9ba3-b9c0c18f2df8" - }, + "metadata": {}, "source": [ "Another reason to use ``tabs`` is that some Layout combinations may not be able to be displayed directly using HoloViews. For example, it is not currently possible to display a ``GridSpace`` as part of a ``Layout`` in any backend, and this combination will automatically switch to a ``tab`` representation for the bokeh backend." ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "a7b248c0-b8f6-443c-816a-4c212c2eb718" - }, + "metadata": {}, "source": [ "### Marginals\n" ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "d1f0abbf-6a6f-4700-883a-9ab604a62071" - }, + "metadata": {}, "source": [ "The Bokeh backend also supports marginal plots to generate adjoined plots. The most convenient way to build an AdjointLayout is with the ``.hist()`` method." ] @@ -395,11 +315,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "b87c3c95-e073-427a-b84d-7f370f4f7023" - }, + "metadata": {}, "outputs": [], "source": [ "points = hv.Points(np.random.randn(500,2))\n", @@ -408,10 +324,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "8c3ad886-bff5-4b5f-af1e-39cb10faa00d" - }, + "metadata": {}, "source": [ "When the histogram represents a quantity that is mapped to a value dimension with a corresponding colormap, it will automatically share the colormap, making it useful as a colorbar for that dimension as well as a histogram." ] @@ -419,11 +332,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "bd398ce3-991b-4985-9b3e-32faad7e0af2" - }, + "metadata": {}, "outputs": [], "source": [ "img.hist(num_bins=100, dimension=['x', 'y'], weight_dimension='z', mean_weighted=True) +\\\n", @@ -432,10 +341,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "b2da1a91-c36a-4962-a837-12897e1e7498" - }, + "metadata": {}, "source": [ "## HoloMaps" ] @@ -450,11 +356,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "91d49de6-7ed6-43ff-bf06-e6d8bb439a90" - }, + "metadata": {}, "outputs": [], "source": [ "hmap = hv.HoloMap({phase: img.clone(np.sin(x**2+y**2+phase))\n", @@ -464,20 +366,14 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "aec37542-5975-4468-ad19-06c3e5f0b407" - }, + "metadata": {}, "source": [ "## Tools: Interactive widgets" ] }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "2bee6761-63ac-40b9-9eb4-c9ff568f75ac" - }, + "metadata": {}, "source": [ "#### Hover tools" ] @@ -492,11 +388,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "f9d2df76-be40-498a-afe1-730790603088" - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [tools=['hover']] (size=5) HeatMap [tools=['hover']] Histogram [tools=['hover']] Layout [shared_axes=False]\n", @@ -509,11 +401,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true, - "focus": false, - "id": "79c02062-97c6-46e2-9f90-954001962c4c" - }, + "metadata": {}, "source": [ "#### Selection tools" ] @@ -528,12 +416,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "fc473384-8f85-4560-a656-5d6c2929ae30", - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Points [tools=['box_select', 'lasso_select', 'tap']] (size=10 nonselection_color='red' color='blue')\n", @@ -542,10 +425,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "fba3095a-bebb-4d97-b602-82e4bf67df06" - }, + "metadata": {}, "source": [ "#### Selection widget with shared axes and linked brushing" ] @@ -562,9 +442,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\\t')" @@ -580,9 +458,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter [tools=['box_select', 'lasso_select']] Layout [shared_axes=True shared_datasource=True]\n", @@ -592,10 +468,7 @@ }, { "cell_type": "markdown", - "metadata": { - "focus": false, - "id": "818135f9-ae0c-4eb9-a3c5-5fb5a86196a7" - }, + "metadata": {}, "source": [ "A gridmatrix is a clear use case for linked plotting. This operation plots any combination of numeric variables against each other, in a grid, and selecting datapoints in any plot will highlight them in all of them. Such linking can thus reveal how values in a particular range (e.g. very large outliers along one dimension) relate to each of the other dimensions." ] @@ -603,12 +476,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true, - "focus": false, - "id": "3494a694-f7e1-4c26-a58e-5fc0969fac08", - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "%%opts Scatter [tools=['box_select', 'lasso_select', 'hover'] border=0] Histogram {+axiswise}\n", @@ -626,22 +494,9 @@ } ], "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3" } }, "nbformat": 4, From 68bbae27c0261bb02a0eb158f9ec0ad0187b5edd Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 27 Jun 2017 13:01:37 +0100 Subject: [PATCH 99/99] Fixed bug in Gapminder app --- examples/gallery/apps/bokeh/gapminder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/gallery/apps/bokeh/gapminder.py b/examples/gallery/apps/bokeh/gapminder.py index d5a3092501..b7198de6ac 100644 --- a/examples/gallery/apps/bokeh/gapminder.py +++ b/examples/gallery/apps/bokeh/gapminder.py @@ -37,8 +37,8 @@ gapminder_ds = ds.redim(**dimensions).to(hv.Points, kdims, vdims, 'Year') # Define annotations -text = ds.clone({yr: hv.Text(1.2, 25, str(int(yr)), fontsize=30) - for yr in gapminder_ds.keys()}) +text = gapminder_ds.clone({yr: hv.Text(1.2, 25, str(int(yr)), fontsize=30) + for yr in gapminder_ds.keys()}) # Define options opts = {'plot': dict(width=1000, height=600,tools=['hover'], size_index='Population',

    iat(*i1ax7(6j-n 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 z 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

H8{e{%-wz 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 Q%9!|$>3jHQ8*x6!lIIe6b| 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