{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6a764d92",
   "metadata": {},
   "source": [
    "# Representation Learning\n",
    "\n",
    "Often it is very hard either to find similarities within data or even to classify data as belonging to different labels when the data contains so many features. One particular example are images which may contain millions of pixels. Even low-dimensional data may not be easy to visualize in a 2D plane, so bringing the dominant effects in a 2D plane for visualization is in itself a very helpful starting point.\n",
    "\n",
    "There are different methods to obtain another view of the data, by performing linear or even non-linear combinations of the data features. The price being paid by such methods is that the new representation of the data may not be that straightforward to digest, loosing therefore some of its scientific interpretation. On the other hand, if one understands the assumptions made in such methods, one can easily imagine the mathematical process required to transform to and from this new view and gain insight from the new view without loosing track of the scientific background.\n",
    "\n",
    "We are going to go through a few methods of obtaining an alternative view of the data here and what their assumptions might be."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fce4d8e8",
   "metadata": {},
   "source": [
    "We start by loading the necessary Python modules. If you have not yet installed them, run the following cell to install them with pip:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "44ca341e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: numpy in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (1.19.2)\n",
      "Requirement already satisfied: scikit-learn in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (0.24.2)\n",
      "Requirement already satisfied: pandas in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (1.1.5)\n",
      "Requirement already satisfied: matplotlib in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (3.3.4)\n",
      "Requirement already satisfied: scipy>=0.19.1 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from scikit-learn) (1.5.2)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from scikit-learn) (2.2.0)\n",
      "Requirement already satisfied: joblib>=0.11 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from scikit-learn) (1.0.1)\n",
      "Requirement already satisfied: python-dateutil>=2.7.3 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from pandas) (2.8.2)\n",
      "Requirement already satisfied: pytz>=2017.2 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from pandas) (2021.3)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (3.0.4)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (1.3.1)\n",
      "Requirement already satisfied: cycler>=0.10 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (0.11.0)\n",
      "Requirement already satisfied: pillow>=6.2.0 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from matplotlib) (8.3.1)\n",
      "Requirement already satisfied: six>=1.5 in /home/daniloefl/miniconda3/envs/mltut/lib/python3.6/site-packages (from python-dateutil>=2.7.3->pandas) (1.16.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install numpy scikit-learn pandas matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "300cf8d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib notebook\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.decomposition import PCA"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ecd6a69",
   "metadata": {},
   "source": [
    "Let's generate the fake data now to have something to cluster."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4959a292",
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = np.random.RandomState(0)\n",
    "n_samples = 500\n",
    "cov = [[3, 3], [3, 4]]\n",
    "data = rng.multivariate_normal(mean=[0, 0], cov=cov, size=n_samples)\n",
    "data = pd.DataFrame(data, columns=[\"x1\", \"x2\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8295e8a",
   "metadata": {},
   "source": [
    "Let's print out the dataset read first."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "024fb65a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-3.123062</td>\n",
       "      <td>-3.267402</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.775958</td>\n",
       "      <td>-0.929101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.582416</td>\n",
       "      <td>-4.072345</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.492453</td>\n",
       "      <td>-1.920361</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.041529</td>\n",
       "      <td>0.381166</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>495</th>\n",
       "      <td>-0.821492</td>\n",
       "      <td>-0.782416</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>496</th>\n",
       "      <td>1.197165</td>\n",
       "      <td>1.665481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>497</th>\n",
       "      <td>-0.691309</td>\n",
       "      <td>-0.383494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>498</th>\n",
       "      <td>0.279317</td>\n",
       "      <td>0.428408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>499</th>\n",
       "      <td>2.082251</td>\n",
       "      <td>2.082815</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>500 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           x1        x2\n",
       "0   -3.123062 -3.267402\n",
       "1   -2.775958 -0.929101\n",
       "2   -2.582416 -4.072345\n",
       "3   -1.492453 -1.920361\n",
       "4   -0.041529  0.381166\n",
       "..        ...       ...\n",
       "495 -0.821492 -0.782416\n",
       "496  1.197165  1.665481\n",
       "497 -0.691309 -0.383494\n",
       "498  0.279317  0.428408\n",
       "499  2.082251  2.082815\n",
       "\n",
       "[500 rows x 2 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c178424",
   "metadata": {},
   "source": [
    "We can plot this fairly easily using Matplotlib."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e63b38c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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\" width=\"800\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8, 8))\n",
    "data.plot.scatter(x=\"x1\", y=\"x2\", alpha=0.3, ax=ax)\n",
    "ax.set(xlabel=\"$x_1$\", ylabel=r\"$x_2$\", title=\"\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bba01cd6",
   "metadata": {},
   "source": [
    "Clearly there is a strong correlation in this data. One could almost predict $y$ using $x$ alone by fitting a line in the $xy$-plane. Therefore, it may be easier to provide a representation on which only one variable is present but retaining the maximum information possible. This is possible using several methods, which rely on several underlying assumptions. Let us start with Principal Component Analysis.\n",
    "\n",
    "In Principal Component Analysis, we set ourselves the objective of maximizing the variance of the data in our new representation. That is, imagine our new representation is given by $p_1$ and $p_2$ and we define them such that $p$ is a linear combination of $x$. The criteria used to find how to make such a linear combination shall be that the variance of $p_1$ is maximal, when we want to find out how to combine $x_1$ and $x_2$ to obtain $p_1$. This can be similarly done for $p_2$ and any other component. Instead of finding $p$ directly for each sample, we will find the direction $u_1$ on which we should project $x$ using $u_1^T x$ to obtain the new space. As we are only interested in the direction of $u_1$, we define it as normalized vector, so $u_1^T u_1 = 1$.\n",
    "\n",
    "The mean data value is $\\overline{x} = \\frac{1}{N} \\sum_k x^{(k)}$, where $x^{(k)}$ refers to the vector $(x_1, x_2)$ for the $k$-th sample point. The mean of the projected data in this new dimension $u_1$ is $u_1^T \\overline{x}$. The variance of the projected data in the direction $u_1$ is:\n",
    "\n",
    "$\\frac{1}{N}\\sum_k\\left(u_1^T x^{(k)} - u_1^T \\overline{x}\\right) = u_1^T S u_1$,\n",
    "\n",
    "where $S = \\frac{1}{N}\\left(x^{(k)} - \\overline{x}\\right)\\left(x^{x(k)} - \\overline{x}\\right)^T$ is the covariance matrix of the data.\n",
    "\n",
    "We maximize the variance of the data projected in the direction $u_1$, while imposing a restriction on the maximization procedure, such that $u_1$ is normalized to 1. This can be done by maximizing the following function:\n",
    "\n",
    "$u_1^T S u_1 + \\lambda_1 (1 - u_1^T u_1)$,\n",
    "\n",
    "where $\\lambda_1$ is a Lagrange multiplier used to enforce the condition that $u_1^T u_1$ is 1.\n",
    "\n",
    "Calculating the derivative relative to $u_1$ and setting it to zero to find the maximum we see that:\n",
    "\n",
    "$S u_1 = \\lambda_1 u_1$,\n",
    "\n",
    "which is an eigenvalue problem! That is, the direction $u_1$, which maximizes the variance of the projected data is the eigenvector of the covariance matrix $S$. Moreover, if we multiply this equation by $u_1^T$ on the left and use $u_1^T u_1 = 1$, we obtain $\\lambda_1 = u_1^T S u_1$. That is, $\\lambda_1$ is the variance of the data projected in the direction $u_1$.\n",
    "\n",
    "This gives a simple recipe to find the directions with largest variance: we find the eigenvectors of the covariance matrix $S$ which have highest eigenvalues. By sorting the eigenvalues, we can easily choose which of the directions of the new representations are more important to analyse. We can also discard directions that have low eigenvalues, as they contribute little to the variations observed in the data.\n",
    "\n",
    "Naturally, we do not need to write the code to perform all those steps, as scikit-learn implements them for us:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "0837b3ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "8798f857",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(n_components=2)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.fit(data.loc[:, [\"x1\", \"x2\"]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cc8fc1f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_t = pca.transform(data.loc[:, [\"x1\", \"x2\"]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "88982b21",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.loc[:, \"pca1\"] = data_t[:, 0]\n",
    "data.loc[:, \"pca2\"] = data_t[:, 1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ac27316",
   "metadata": {},
   "source": [
    "We can start by plotting how the data looks like after this transformation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "333581b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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W6elS5fqv/7rv9S7d29t27atw88KID4I6IAHAiG2sLBQzc3Namxs1PLly9WvXz997nOf0969eyVJvXr10siRIyN67d/85jdyHEdbt26VdPLg49FHH+3wdwMB77zzztPRo0eD/m348OEaMWJEm+2Io0eP1pe//OWWldzAd/vhD38Y9LzAxMEf//jHlp+NGjVKjuMoJycn6LlTp05V165d20xgLF68WI7j6K233pIkPfvss3Icp93gGe5rSScC+oABA/SPf/yj5Wd79+5V165dNXXq1JafhbvF/fjx42pubta6devkOI4qKipa/q29Le6tA/qkSZPkOI42bdoU9Lxx48apS5cu+utf/yrp5N/vwgsvbDmolaSioiI5jqP09PR2Py8AxNvevXvlOI5+9rOftfu8n/70p3IcR3//+98lnQzhjz32WJvntg7o7733nhzH0cSJE4Oel56eHrSCLLkHdMdxtGjRoqDfv+6663T++ee7fubPPvtMzc3N+sMf/qAvfelLQRPA4QT0rVu3ynEc3X///UE/X7BgQZvP3dqxY8fU3Nysa665Jmj8jWSL+7Fjx3T06FENGzaszWcAkDgEdMADra/iHnhceOGFQefcRRrQGxsbdcYZZ+jf//3fW352/PhxnXfeeTr77LODtkOHEgh4rQfm6upqOY6jZ599Vs3NzUGPP//5z3IcR1VVVUHfbfHixW1ef8iQIUHb7UeNGqW+ffu2ed7ll1+uiy66qM17NTY2qkuXLnrooYckqSX4fve731VGRkbIK9qH+1qSXA8aBw4cqNtvv73lv9sL6Dt27NDPf/5zDRgwQF26dAn6+77++ustz4skoF966aX62te+1uZ5mzZtkuM4Sk1NlXTy7zdp0qSg5zU1NclxHE2bNi3k+wFAooQb0H/yk5/IcRzt27dP0skQfupEZ0DrgB4Yl0pLS4Oe19zcrNNOOy2sgN6lS5c2F1idNGmSevXqFfSznJwcXXPNNfr85z/fZkwPTLZL4QX0wOcuKSnp8HNLUmpqqkaMGKGePXsGve/w4cNbntNeQG9ubtYTTzyhCy64oOXCsoHH9773vXY/K4D4IaADHgiE2Ndee03FxcUqKyvTnj172jwv0i3ur7zyihzH0QsvvKCPP/645TF58mQ5jqOVK1e2+/uBgPf0008H/TwvLy/khMKpj8B5b4HvFuriPt/+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brD6pHHZZZdp5MiRHT72iU98wuqb8hw5ckQ/+9nPdPbZZ2vjxo2mDych77//foe/67KyMn3hC1/Qf/7nf1p/XeGNN97YZXvlXXfd1WVVHeiN6/U9XVw5b6SLi+ejdHL5XJcOLp8/YS8COoy48847NXjwYM2fP18bNmzQLbfcooEDB2rXrl2mDy0hLm2BbN2e+PWvf11btmzRtm3b2l62aX2szaRJk1RRUaG77rpL/fv3V11dnelDCzRy5EgNGDBAixcv7tC2+/btM31oSXFli97q1av1kY98RA8//LCqqqr0wgsv6IQTTtDUqVNNHxoc51J9TxeXzhvp4uL5KJ2idq5LB1fOn7AXAR1GHDhwQNnZ2Ro4cKBOOukkXXXVVc7cxb09lwZwkydPDrzW0EZPP/20zj33XB133HH63Oc+Z/0jXILadvLkyaYPLSkuDTBeffVVfepTn1JWVpYuvvhi7uKOULhU39PFtfNGurh2PkqnqJ3r0sGl8yfs5FeFBQAAAADAUgR0AAAAAAAsQEAHAAAAAMACBHQAAAAAACxAQAcAAAAAwAIEdAAAAAAALEBABwAAAADAAgR0AAAAAAAsQEAHAAAAAMACBHTAYcOHD1csFlMsFtNHPvIRnXfeecrOztYHH3zQ4fNmzJihK6+8UieffLL69++vT3/60xo7dqx27tzZ4fP27dunU045Raeeeqr27duXybcSWcOHD9e1117b6+e9+eab+va3v62zzjpLsVhMr7zySgaODgAAADYhoAMOGz58uIYNG6Zt27Zp8+bNeuGFF3T88cdrxIgRbZ8zevRo9enTR/fcc4/eeust1dbW6i9/+Yu++93v6vHHH+/w/fLy8vSVr3xF//Iv/6KpU6dm+u1EUrwB/bXXXtP999+vgoICAjoAWGratGnKysrSli1b2j52yy236NOf/rSampoMHhmAqCCgAw7rLvzdeuutGjRokCRp1apVisViXYJ4q7///e8d/v+rX/2qJkyYoPHjx+trX/taXMcwadIkffKTn9Rxxx2nQYMG6Wc/+1nbv23atEnXXHON+vfvr5NOOknf//73tX379rZ/z8nJ0aWXXqpJkybpn/7pn9S/f3+NGDFChw4d0rhx4/TRj35UZ555ph566KEOPzMWi+mPf/yjhg0bpn79+mnIkCF66aWXOnzOunXr9LWvfU39+vXTaaedpttuu0179uzp0na///3vNWjQIJ122mm6/fbbdeDAgbbPaWlp0S9/+UudffbZOuGEE3TZZZdp0aJFbf8+efJkDRgwQK+//rouvvhi9e/fX0OHDtXWrVvb3l/rDofWV/uvD0JABwA7HTlyRJdccknbue43v/mNPvaxj3UI7ACQCgI64LDuAvqoUaN0+umnS5LuuOMOnXjiiR1CZ5Dq6mplZWVp165d2rlzp7KyslRTU9Pj1/zxj39Uv3799Pjjj+udd97R6tWr9X//93+Sjg5iPvvZz+orX/mKiouLtXLlSn3uc5/TlVde2fb1OTk5OvHEE3X99ddr/fr1mjNnjo477jgNHTpUo0aN0oYNG/Tcc88pFotpxYoVbV8Xi8V0+umna+LEiXrnnXf061//Wn369FFFRYUkae/evTr77LP13e9+V2VlZVqwYIHOO+88DR8+vEPbnXzyyRoxYoQqKyv16quv6oQTTtCf/vSnts/50Y9+pC9/+ctasmSJqqur9fvf/15ZWVnauHGjpKMBvW/fvrrqqqtUVFSkkpISfeITn9CPfvQjSdKePXv0gx/8oG2Xw7Zt29TS0tLr74KADgD2evXVV5WVlaWHH35Yp556qsrLy9v+7Tvf+Y5OOeUUfe973zN4hABcRkAHHNY5oK9atUqnn366fvCDH0iSvvnNb+qSSy6J63uNHj1a3/nOd9r+/9prr9X999/f49ecffbZgZ/zl7/8RX369NHmzZvbPrZ+/XrFYjGtXr1a0tGAfsIJJ+j9999v+5yhQ4dqyJAhOnz4cNvHLrroIj3yyCNt/x+LxTps45ekL37xixo5cqQk6U9/+pNOPfXUDtfiz5s3T8cee2zbCv7w4cN17rnn6tChQ22f8/3vf18//OEPJR2dsDjmmGPU0NDQ4ef827/9m+677z5JRwN6LBZTdXV1278//fTT+uhHP9r2//FucW+PgA4AdvvsZz+r4447TosXL+7w8YULF2rOnDkEdABJI6ADDhs+fLj69Omj/v37KysrS8cee6yuu+46/e1vf5MkDRs2TJdeemmv3+fQoUMaPHiwZsyY0faxl19+WR/72Mc6BNj2/va3vykWi2nhwoXd/vsTTzyhIUOGdPn4KaecoilTpkg6GtA/+clPdvj3m266Sd/61rc6fOyKK67QL37xi7b/j8Vibd+j1V133aWvfvWrkqRf/OIXbf/dqqmpSbFYTG+++aako23X+efccccdbVv7X3rpJcViMfXv37/D6yMf+UjbBMjkyZN1wgkndPgeM2fO1DHHHNP2/wR0AIiW119/Xccff7z69OmjysrKLv++aNEiAjqApBHQAYcNHz5cV111laqqqlRXV9dlK3u8W9znzZunWCymPn36dHjFYjG99tpr3X7N+++/32NAf/zxx3Xeeed1+fiAAQP0/EzEw34AAAU3SURBVPPPS/rwGvTO76lzoL3yyit15513tv1/UEBvDdft/7tVa0BfsmRJ4M+5884727bgv/jii+rTp482bNigqqqqDq9t27ZJ+vAa9PZeeeUVxWIfllYCOgBER0lJiU466SQ9//zz+ta3vqXrr7++y+cQ0AGkgoAOOKy38Ldy5cq4bhL33e9+VzfccIPKyso6vH784x/3OMgYMmRIUlvci4qKJKUW0Fu3s7f60pe+lPAW954C+jvvvNMh0HcnnoB+22236dvf/nbg9+gOAR0A7FNbW6tBgwbp4YcfliQVFxfrmGOOUXFxcYfPI6ADSAUBHXBYPKuz//M//6M+ffrol7/8pZYvX666ujq98cYbuv766/X4449rx44d6tu3rwoLC7t87V/+8hf17dtXO3bs6PZ7//nPf1a/fv30xBNPaOPGjSopKdGTTz4p6cObxP3rv/6rSkpKtGrVKn3+85/vcpO4ZAP6GWecoUmTJumdd97RmDFjdOyxx2r9+vWSjt4k7qyzztL3vvc9lZWVaeHChfr4xz/e5SZxPQV0Sfrxj3+sIUOGqKCgQO+++65Wr16t3NxczZs3T1J8Af3hhx/WOeecow0bNqixsTFwN8OePXtUWlqq0tJSxWIx/eEPf1Bpaak2bdrU7ecDADJn586duvjii/Vf//VfHT5+zTXXaOjQoR0+RkAHkAoCOuCweLdP5+fn64orrtBJJ52k/v3765JLLtFvf/tb/f3vf9f//u//6pRTTuk2OB48eFCnnXaaHnvsscDvPWHCBF100UXq27evzjrrLI0aNart3+J9zFpv76m7gP7000/rG9/4hrKysnTuuedq+vTpHb4m3sestdc5oB84cEBjxozRkCFD1LdvXw0aNEjXXXed1q1bJym+gL5jxw594xvf0IknntjjY9YWLVrU5ZFssVisw6QCAMB+BHQAqSCgA3AOW8ABADa6+uqrdcYZZ+j444/X4MGD255aAgDxIqADcA4BHQAAAFFEQAfgHAI6AAAAooiADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABQjoAAAAAABYgIAOAAAAAIAFCOgAAAAAAFiAgA4AAAAAgAUI6AAAAAAAWICADgAAAACABf5/ISAf19tL1bMAAAAASUVORK5CYII=\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(10, 10), ncols=2)\n",
    "data.plot.scatter(x=\"pca1\", y=\"pca2\", alpha=0.3, ax=ax[0])\n",
    "data.plot.scatter(x=\"x1\", y=\"x2\", alpha=0.3, ax=ax[1])\n",
    "ax[0].set(xlabel=\"PCA component 1\", ylabel=r\"PCA component 2\", title=\"PCA representation\")\n",
    "ax[1].set(xlabel=\"$x_1$\", ylabel=r\"$x_2$\", title=\"Original data\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54e538c6",
   "metadata": {},
   "source": [
    "It is interesting to understand how many PCA components are necessary to explain the variance of the data. This is easily obtainable from the PCA object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "fa5ebbce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAYAAABNo9TkAAAgAElEQVR4nOzda5DeZX3/8Xs3JEsIIQkRCgkBEqQCVSFQLS0pIQlCsKhEheJhTBQHkWiVcnBEC9oCGhUV2wIVR7RYEImIloNEDqIoBBwdPAAaNVZsgaiQcJYEPv8H/LOyLofgIb8vXK/XzOdB7r137ys7XA/e2QO9AAAAAJ3rdX0AAAAAQKADAABACQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBABwAAgAIEOgAAABQg0AEAAKAAgQ4AAAAFCHQAAAAoQKADAABAAQIdAAAAChDoADytnXnmmen1eo+7K6+88k/+2suXL1+v7/vH0Ov1cvzxx3fy2o9l+fLl6fV6OfPMM7s+CgB0RqAD8LS2NnTPPPPMXHPNNcO2atWqP/lr/z6RvWLFilxzzTV54IEH/vgHWwfVAv2BBx7INddckxUrVnR9FADojEAH4GltbSRff/31nb12V18F/0NUCfQ1a9Z09o8UAFCNQAfgaW1dA/2cc85Jr9fLv/7rvw55/Ljjjkt/f3+WLFmS5Lffar1o0aKccMIJmTJlSgYGBrLbbrvlsssue8zXfnSgL1myJC996UszefLkDAwMZLvttsuhhx6aX/7yl0/6vjNnzsxf/MVf5LrrrsuMGTMyevToTJ06Ne973/vy0EMPDXn/VatW5cgjj8y2226bkSNHZtKkSXnb296We+65Z9jz3vjGN2bTTTfNmDFjsu++++aHP/zhkwb6ihUrMnLkyLz73e8e9rabbropvV4vp5xyyuBz3/zmN2fHHXfMmDFjstlmm2XWrFn52te+NuT9Hv25/Zd/+Zdsu+22GTFiRC655JLH/Bb3ZcuWZcGCBXn2s5+d0aNHZ9KkSdl///3z3e9+d8jHvfLKK9Pr9XL22Wfn2GOPzZZbbpmxY8dmzpw5ufnmm4ed/5JLLsns2bOzySabZPTo0dlhhx1y0kknDXnO9ddfn5e85CWZMGFCBgYGsssuu+Tcc8993M8XAPwxCHQAntbWhu61116b1atXD9maNWuGPPewww7LqFGjBmP+8ssvT39//5AIXRuKU6ZMyYwZM/L5z38+5513Xl7wghdk5MiR+eY3vznstR8d2aeddlre97735Utf+lKuuuqqfPrTn87OO++c5zznOXnwwQef8H1nzpyZiRMnZvvtt8/pp5+er3zlKzn88MPT6/Xy6U9/evB59957b3bZZZc861nPyoc//OFcdtllOeWUUzJu3LjMnj07Dz/8cJLk4YcfzqxZszIwMJATTzwxS5YsyfHHH59p06at01fQ582blylTpgz7x4Fjjjkmo0aNyq9+9askyc0335w3v/nN+exnP5uvfvWrufDCC3PIIYekv79/yO8AWPu5nTx5cmbNmpXFixdnyZIlWb58+WMG+lVXXZUjjzwyixcvzlVXXZUvfOELOeCAAzJ69Ogh4b020Lfddtu85jWvyUUXXZRzzjknW2+9dbbffvsh/x184hOfSF9fX/baa6+cffbZueyyy3Lqqafm8MMPH3zOFVdckVGjRuVv//Zvc+655+bLX/5yFixY4GfkAfiTE+gAPK090S+JGzFixJDnPvDAA5k+fXqmTp2aG2+8MX/2Z3+WmTNnDgm4taE4adKk3H///YOP33XXXdl0002z9957D3vtx/sW94cffjirV6/O//zP/6TX6+WLX/ziE77vzJkz0+v1snTp0iEfZ6eddsq+++47+Of3ve996e/vH/ZdA4sXL06v18vFF1+c5JGvFD/6K91rnXjiiesU6F/60pfS6/UGv7sgeeRb0idNmpRXvOIVj/t+a9asyerVqzNnzpzMmzdv8PG1n9vttttuyD9WPPptTxTAa9asyYMPPpjtt98+RxxxxODjawP9xS9+8ZDnf+5zn0uv18s111yTJLn77ruzySabZMaMGYP/iPFYdthhh0yfPj2rV68e8vj++++fLbfcctg/WADAH4tAB+BpbW3o/ud//meuv/76IfvWt7417PnLli3LJptskg033DCbb755/u///m/I29eG4lve8pZh7zt//vyMGjVqMOgfK7Jvv/32vOlNb8pWW22V/v7+If9g8P73v3/YuX830LfYYothr3vwwQdnhx12GPzzHnvskec///nDvmPg7rvvTl9fX4455pgkj3ylu9frDX6l+3f/jk8W6KtXr84WW2yRV73qVYOPXXTRRen1ernooouGPPe0007L9OnTMzAwMOTv/Ohzr33dR8f1777t0YG+evXqnHjiidlxxx0zcuTIIR937ty5g89bG+inn376kI958803p9fr5bOf/WyS5NJLLx38VvjHs2zZsvR6vXzoQx8a9vk99dRT0+v1cuONNz7h5w0Afl8CHYCntd/nl8T93d/93ZOG4gknnDDsbe94xzvS6/WycuXKIa+9NrIfeuih7Lzzztlss83ysY99LFdeeWWuu+66XHvttcOC+Il+Bv13zZ8/P9tss83gn5/97Gc/4f9a7g1veEOS5JBDDskGG2ww7OPdf//96/xL4o4++uhsuOGGufPOO5MkBx54YLbccssh33Vw8sknp9fr5bDDDsuFF16Ya6+9Ntdff33mzp075NxrP7cf+MAHhr3OYwX6W9/61vT39+ed73xnvvzlL2fp0qW5/vrrs/POO2fmzJmDz1sb6Oedd94TfszPfOYz6fV6w342/tGuvvrqJ/zcPtn7A8AfQqAD8LT2VAP9jDPOSK/Xywtf+MKMHDky11577ZC3/yFfQb/hhhvS6/XyqU99asj7rf2q7B8r0Hffffc873nPG/YdA2u39mP+oV9BT5Ibb7wxvV4vp512Wu64444MDAzkHe94x5DnTJ8+PXvttdew991jjz0eM9A/+MEPDnvuYwX6hAkTsmDBgmHPnTx58u8V6OvyFfS1X3V/5zvf+bif37vuuutx3x8A/hACHYCntacS6N/97nczevTovO51r8tvfvOb7Lbbbtlmm21yxx13DD7nyX4Gfc6cOcNee20Qf/e7302v18s555wz5HWPOuqoP2qgn3DCCdloo43y05/+9An/vn/oz6Cv9Vd/9Vd54QtfmH/7t39Lr9cb9pvRd9111yE/I5888o8V/f39f1Cgb7rppnnTm9405HkXXnhher3e7xXod999d8aNG5c999zzCX8Gffvttx/28+wAsD4IdACe1taG7plnnplrrrlm2FasWJEkueeee7LDDjtkp512Gvxfkf3kJz/JuHHj8rKXvWzw4/3ub3E///zzs3jx4rzgBS/IBhtskKuvvnrYa6+N7AcffDDbbbddttlmm5x99tn58pe/nIULF+bP//zP/6iBfs8992T69OnZaqutcvLJJ+crX/lKLr300pxxxhk58MADB78r4KGHHsqee+6ZgYGBnHTSSU/5t7iv9R//8R/p9XrZaqut8jd/8zfD3n7cccelr68vxx13XC6//PKceuqp2WKLLQY/F7/7uV3XQH/d616XgYGBfOQjH8nll1+eD3zgA9lss82y1VZb/V6BnjzyW9x7vV5mz56dc845J1dccUU+/vGPZ+HChYPPueKKKzIwMJB99tknZ5999uBvkD/ppJPyyle+cp0+ZwDw+xDoADytPdFvce/1ejnjjDOSJK997Wuz0UYb5Qc/+MGQ9z/vvPPS6/XykY98JMnQ/1f3e9/73my11VYZNWpUpk+fnksvvfQxX/vRkX3jjTfmRS96UcaOHZsJEybkwAMPzM9//vM/aqAnj0T6u9/97jznOc/JqFGjMm7cuDzvec/LEUcckdtuu23weStXrswb3vCGjB8/PhtttFFe9KIXDX4b97oG+qpVqzJ69Oghn89H+81vfpOjjjoqkydPzoYbbphdd901F1xwwbBzP9VAv/POO3PIIYdk8803z0YbbZQZM2bk61//embOnPl7B3qSXHzxxZk5c2bGjBmTjTbaKDvttFMWLVo05Dk33HBDDjrooGy++eYZOXJktthii8yePXvYL6IDgD8mgQ4Aj/JEEQkA8Kck0AHgUQQ6ANAVgQ4AjyLQAYCuCHQAAAAoQKADAABAAQIdAAAAChDoAAAAUIBAb8xDDz2UW265JStXrsyqVavMzMzMzKzRrVy5MrfcckseeuihrjOF/0+gN+aWW25Jr9czMzMzMzNLr9fLLbfc0nWm8P8J9MasXLly8BJ2/S92ZmZmZmbW3dZ+8W7lypVdZwr/n0BvzKpVq9Lr9bJq1aqujwIAAHRIG9Qj0BvjEgIAAIk2qEigN8YlBAAAEm1QkUBvjEsIAAAk2qAigd4YlxAAAEi0QUUCvTEuIQAAkGiDigR6Y1xCAAAg0QYVCfTGuIQAAECiDSoS6I1xCQEAgEQbVCTQG+MSAgAAiTaoSKA3xiUEAAASbVCRQG+MSwgAACTaoCKB3hiXEAAASLRBRQK9MS4hAACQaIOKBHpjXEIAACDRBhUJ9Ma4hAAAQKINKhLojXEJAQCARBtUJNAb4xICAACJNqhIoDfGJQQAABJtUJFAb4xLCAAAJNqgIoHeGJcQAABItEFFAr0xLiEAAJBog4oEemNcQgAAINEGFQn0xriEAABAog0qEuiNcQkBAIBEG1Qk0BvjEgIAAIk2qEigN8YlBAAAEm1QkUBvjEsIAAAk2qAigd4YlxAAAEi0QUUCvTEuIQAAkGiDigR6Y1xCAAAg0QYVCfTGuIQAAECiDSoS6I1xCQEAgEQbVCTQG7P2Ek55++eyzTsufMYNAABYNwK9HoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4YgQ4AACQCvSKB3hiBDgAAJAK9IoHeGIEOAAAkAr0igd4Y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RKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABADXNRf8AACAASURBVIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBXJNAbI9ABAIBEoFck0Bsj0AEAgESgVyTQGyPQAQCARKBX1ESgX3XVVVm9evWwx1evXp2rrrqqgxN1xyUEAAASbVBRE4He39+f22+/fdjjv/rVr9Lf39/BibrjEgIAAIk2qKiJQO/r68uKFSuGPf7DH/4wY8eO7eBE3XEJAQCARBtU9IwO9Hnz5mXevHnp7+/Pi1/84sE/z5s3Ly996Uuz7bbbZt999+36mOuVSwgAACTaoKJndKAvWLAgCxYsSF9fX/7+7/9+8M8LFizIoYcempNOOim//OUvuz7meuUSAgAAiTao6Bkd6Gu95z3vyT333NP1MUpwCQEAgEQbVNREoPNbLiEAAJBog4qaCPTbbrstr33ta7PllltmxIgR6e/vH7KWuIQAAECiDSpqItDnzp2bnXbaKaeeemq+8IUv5IILLhiylriEAABAog0qaiLQN95443znO9/p+hgluIQAAECiDSpqItB33HHHfPvb3+76GCW4hAAAQKINKmoi0C+99NLss88+Wb58eddH6ZxLCAAAJNqgoiYCffz48Rk1alT6+/uz8cYbZ8KECUPWEpcQAABItEFFTQT6pz71qSdcS1xCAAAg0QYVNRHo/JZLCAAAJNqgomYC/cc//nHe9a535eCDD87tt9+eJLnkkkvy/e9/v+OTrV8uIQAAkGiDipoI9K9+9asZPXp09t5774waNSo/+clPkiSLFi3KK17xio5Pt365hAAAQKINKmoi0HffffecfPLJSR75f6KvDfTrrrsukyZN6vJo651LCAAAJNqgoiYCfcyYMfnpT3+aZGigL1++PAMDA10ebb1zCQEAgEQbVNREoE+ePDnf+MY3kgwN9PPPPz/Tpk3r8mjrnUsIAAAk2qCiJgL96KOPzowZM3Lrrbdm7NixWbZsWa6++upMmzYt73nPe7o+3nrlEgIAAIk2qKiJQH/wwQfz6le/Ov39/enr68vIkSPT39+f1772tVmzZk3Xx1uvXEIAACDRBhU1Eehr/fjHP855552Xc889Nz/60Y+6Pk4nXEIAACDRBhU1Fei4hAAAwCO0QT1NBPqaNWvyiU98Iq961asyZ86czJo1a8ha4hICAACJNqioiUBfuHBhxowZk4MOOihve9vb8va3v33IWuISAgAAiTaoqIlAnzhxYi666KKuj1GCSwgAACTaoKImAn3LLbfMD3/4w66PUYJLCAAAJNqgoiYC/UMf+lAOP/zwPPzww10fpXMuIQAAkGiDipoI9AMOOCDjxo3L1KlTs//++2fevHlD1hKXEAAASLRBRU0E+oIFC55wLXEJAQCARBtU1ESg81suIQAAkGiDipoK9BUrVuTrX/96rr766qxYsaLr43TCJQQAABJtUFETgX7PPffk9a9/fUaMGJG+vr709fVlgw02yBve8Ibce++9XR9vvXIJAQCARBtU1ESgH3rooZk2bVouvvjirFq1KqtWrcpFF12U7bbbLocddljXx1uvXEIAACDRBhU1EegTJ07MlVdeOezxK664Is961rPW/4E65BICAACJNqioiUAfPXp0brzxxmGPf//7389GG23UwYm64xICAACJNqioiUCfPXt2DjzwwNx///2Dj91333058MADM2fOnA5Ptv65hAAAQKINKmoi0L/3ve9l8uTJmThxYmbPnp05c+Zk4sSJmTx5cr7//e93fbz1yiUEAAASbVBRE4GePPIV849//OP5x3/8xxxxxBE544wzct9993V9rPXOJQQAABJtUFEzgc4jXEIAACDRBhU1E+g333xzFi5cOPgt7gsXLsxNN93U9bHWO5cQAABItEFFTQT6eeedlw022CC77757jjjiiBxxxBH567/+62ywwQb53Oc+1/Xx1iuXEAAASLRBRU0E+tSpU/NP//RPwx4/7rjjMnXq1A5O1B2XEAAASLRBRU0E+ujRo7Ns2bJhj//oRz/K6NGjOzhRd1xCAAAg0QYVNRHo++23Xz75yU8Oe/yTn/xk9tlnnw5O1B2XEAAASLRBRU0E+mmnnZbNNtssCxcuzFlnnZWzzjorCxcuzOabb57TTjstX/ziFwf3TOcSAgAA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joVOBAZ6NQ4++OA4/fTT+z22zz77+CZxTcZAbx7vvvtunHnmmbHjjjvG888/X/o4vM8+/elPx4QJE0ofg03w2muvxbx58/p10EEHxUknneR7RzShVatWxU477RSXXnpp6aOwCU444YR1vnxs0qRJ63xWHf6TDPRK/PPHrN12220xf/78mDRpUnR0dMSSJUtKH41N9Prrr0dPT0/09PREo9GIa665Jnp6evwIvQ+4008/PbbZZpt45JFH+v1YnzfffLP00dhEF154YcycOTMWL14cc+fOjSlTpsQWW2wRDz74YOmjsZl5iXvzOPfcc+ORRx6JRYsWxeOPPx7HHHNMDB482P9HfcA98cQTMXDgwLj88sujt7c37rnnnthqq63i7rvvLn00KmagV+T666+Pzs7O2HLLLePAAw/045qaxO9+97toNBrr5LNxH2zru6aNRiNuv/320kdjE51yyil9/xYPHz48jjjiCOO8SRnozWP8+PExcuTIaG1tjR133DHGjRvn+0Y0iV/96lex7777RltbW+y9996+izvFGegAAACQgIEOAAAACRjoAAAAkICBDgAAAAkY6AAAAJCAgQ4AAAAJGOgAAACQgIEOAAAACRjoANDEGo1GTJ8+vfQxAIANYKADQGHHHHNMHHHEEet92+zZs6PRaMQf//jH/9dzL1u2LFatWrUpxwMA/kMMdAAobPr06TFgwIBYsmTJOm+bOHFiHHDAARv9nKtXr94cRwMA/oMMdAAo7J133okRI0bEJZdc0u/xv//97zF48OC45JJL4vjjj4+ddtop2tvbY999942f/OQn/d63q6srzjzzzPj2t78dw4YNizFjxkTEui9xP//882OPPfaI9vb22G233eLiiy+Ot99+u+/t3d3dMXr06Pjxj38cnZ2dsfXWW8f48ePjtdde63uftWvXxve+97348Ic/HFtuuWXssssuMXXq1L63v/TSS3HcccfFtttuG0OHDo0vfvGLsXjx4s35VwYATclAB4AEJk+eHKNGjYp3332377E77rgj2tra4qWXXoof/OAH0dPTEwsXLowf/ehH0dLSEo8//njf+3Z1dcWgQYNi8uTJ8eyzz8YzzzwTEesO9O9+97sxa9asWLx4cdx///0xYsSIuPLKK/ve3t3dHYMGDYpx48bFvHnzYubMmbHDDjvElClT+t7n/PPPjyFDhsQdd9wRCxYsiN///vdxyy23RMQ/Pqiwxx57xCmnnBJz586N+fPnx9e+9rXYa6+9fFYfAN6DgQ4ACTzzzDPRaDTit7/9bd9jY8aMiRNOOGG97//5z38+zj333L5fd3V1rfel8O/1TeK+//3vx8c+9rG+X3d3d8dWW23V7zPmkydPjo9//OMREfHaa69FW1tb3yD/d7fddlvstdde/T7QsHr16mhvb4/f/OY3/+s5AAADHQDS+OQnPxknnXRSREQsWLAgBgwYEA899FCsWbMmpk6dGvvtt18MHTo0Ojo6YuDAgfHVr3617/d2dXXFxIkT13nOfx/o9957bxx66KExYsSI6OjoiLa2thg+fHjf27u7u+MjH/lIv+e45pprYrfddouIiDlz5kSj0YhFixat989wxhlnREtLS3R0dPRrwIABccMNN/z//3IAoAIGOgAkcdttt0V7e3usXLkyLrroor6XvF955ZUxbNiwuOuuu+Kpp56K3t7eOProo2Ps2LF9v7erqyvOOeecdZ7zXwf6Y489Fi0tLTF16tR48skn4/nnn4/LLrssttlmm773/+fXoP+ra6+9Njo7OyMiYu7cuf/nQD/ttNPi4IMPjt7e3nVasWLFpv4VAUBTM9ABIInXX389Bg0aFDfeeGPsvPPOcemll0bEP34M2ymnnNL3fmvXro0999xzowf6VVddFbvvvnu/t5966qkbNdDfeuutaG9v/19f4n7zzTfHkCFDYuXKlRvxJwcAIgx0AEjl1FNPjSFDhsQWW2wRL7zwQkRETJo0KXbZZZeYNWtWzJ8/PyZOnBhbb731Rg/0X/7ylzFw4MCYNm1aLFiwIH74wx/G0KFDN2qgR0RccsklMWTIkLjzzjtjwYIF8dhjj8Wtt94aEf/zTeIOP/zwmDlzZixatCgeeeSROPvss2Pp0qWb7e8JAJqRgQ4AicyePTsajUZ85jOf6Xvs5ZdfjrFjx8agQYNi++23j4svvjhOPvnkjR7oEf/4hm/Dhg2LQYMGxfjx4+Paa6/d6IG+du3amDp1anR2dkZra2vsuuuuccUVV/S9fdmyZXHyySfHdtttF21tbbH77rvHN77xDZ9VB4D3YKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACRgoAMAAEACBjoAAAAkYKADAABAAgY6AAAAJGCgAwAAQAIGOgAAACTwX4bHXNYRYvPHAAAAAElFTkSuQmCC\" width=\"1000\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10,10))\n",
    "plt.barh([\"PCA 1\", \"PCA 2\"], pca.explained_variance_)\n",
    "plt.gca().set(xlabel=\"Variance\", ylabel=\"Component\", title=\"Explained variance\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff6b13e3",
   "metadata": {},
   "source": [
    "Clearly the zeroth PCA component holds most of the variance and we could therefore use this component to closely determine where a data sample point should be if we dropped the other component. This is equivalent to fitting a line and using the projection of the point in the line to characterize the data, instead of using the two coordinates.\n",
    "\n",
    "While this may seem superfluous in this simple case, if one has hundreds of variables, PCA provides a simple and almost automatic way to reduce the amount of features being examined, by concentrating most of the variance in a few variables. Which variables to choose, can be decided from the `explained_variance_` attribute."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7bcb1e2c",
   "metadata": {},
   "source": [
    "## Other representation learning methods\n",
    "\n",
    "While PCA is a great method for both data visualization and choosing a latent space to condense the information contained in the data, there are many other available, which differ on the assumptions made. Here are some of them and easy-to-read and practical references on how to use them and which assumptions they entail.\n",
    "\n",
    "  * Kernel PCA: While PCA does a great job at finding the directions where most of the variance is, it focuses on making only *linear* combinations of the features to find the new representation directions. A straightforward method to generalise this idea to non-linear transformations is to apply a non-linear transformation to the data features and after that apply PCA. This is similar to what Kernel PCA does, generalizing the PCA idea. Of course, a non-linearity transformation needs to be chosen for this and this adds extra assumptions in the model. Some more on this can be read here: https://scikit-learn.org/stable/modules/decomposition.html#kernel-pca\n",
    "  \n",
    "  * Independent Component Analysis: PCA  looks for the direction containing most of the variance, but this is not always the optimal representation of the data for all goals. In some cases, independence is much more important than decorrelation and this is where the Independent Component Analysis comes in. The ICA also assumes that the new representation can be built from a linear combination of the existing data, but it assumes additionally each observed feature comes from a linear combination of independent latent representations we want to discover. Since independence is a very strong requirement, it is imposed through various different proxy methods. One set of methods focuses on reducing the mutual information (as defined in statistics) between the new features, while an alternative imposes non-Gaussianity requirements on the underlying latent features to be discovered. Since Gaussians do not have statistical moments above the second-order moment (covariance), one can require for example, the fourth order statistical moment (kurtosis) to be maximized in the new representation. More on the scikit-learn implementation can be found here: https://scikit-learn.org/stable/modules/decomposition.html#ica .\n",
    "  \n",
    "  * t-SNE embedding: If the objective is only to visualize the data, there are many alternative solutions which focus on reducing the dimensionality of the data into a 2D representation. The t-SNE method assumes that a Gaussian probability can be used to model similarity between data points in N dimensions and that one should maintain that similarity measure when projecting the data in two dimensions, assuming however that the 2D data points' similarity can be represented with a t-Student distribution. Full details on the method can be seen here: https://jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf It can be easily tried in scikit-learn following the procedure here: https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18c90048",
   "metadata": {},
   "source": [
    "### Contact us at the EuXFEL Data Analysis group at any time if you need help analysing your data!\n",
    "\n",
    "#### Data Analysis group: da@xfel.eu"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e4f0d770",
   "metadata": {},
   "outputs": [],
   "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.6.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}