Skip to content
Snippets Groups Projects
AdjustedPhase1GenerationTool.ipynb 493 KiB
Newer Older
  • Learn to ignore specific revisions
  •        "}\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('matplotlib', mpl.mpl_figure_comm);\n",
           "}\n"
          ],
    
          "text/plain": [
    
           "<IPython.core.display.Javascript object>"
    
         "output_type": "display_data"
    
           "<img src=\"data:image/png;base64,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O9u6PSYoSB5yyCH2yU9+0mbOnGmtra327LPPdgWusEBY2Cv46quv2o033minn3669enTxy644AIzMzvvvPPshBNOKHpsPhDOnu21NpcGwuHDh9sVV1xR9JhDDz20bCDs06eP/epXv7Jly5Z1K9u2eb93Z2en3XXXXTZq1CjbZ5997Nhjj/XtMYxzoaC0zWWoVNiCAEhGrVepq2UPocuFWi2GfBZefA4fHf4aVLIIVFCAC7rIvPqhpWXnYbouluEa8PKvmetCJk4XwmX2IcxzmZtaCb85gEFD1INWe44aUmu5mmyUxVWC1PpvRVivpUuPeVgDhd9og7lt6wIbDMKey/W1y7/24x9tCz0HlJsLXA8ujT1JzyckEALuEplDWDi34obHVvgGuzXrN4b2/r2xcbPv497YuLnofuvWrSsKZ2beXDyVBML88FAzb8jokCFDim4rNH78eNttt93MrLIho0cddZRdeOGFXV9v2LDB+vbtWxQId9llF7vtttuKnve4446zM888M/T1LbRkyRKTZE899VS378W9cmyUFQWT5npR1Ei9nVlUiwvOUrVc6MDlZ9VqkSXXnteom8D7teDnLzaDjv3y+/0bSiqZhxnUCxn0mrn2lDm/vgH7EBaKqyfL9fdu7+gMrNfCUm4z90oaV8IeU6vPUi3/VrgsCBQWOss1UPgdY6WvQ7n6KP3++EfaQj9TadviwaXxJum/pQRCwF1iq4zmT2wbN7/jG+zK9f6te/Nt3/use7M4OG7bts322GMP++pXv2rLli2zWbNm2ZFHHtktEL773e+2qVOn2vPPP2/f/va3rX///vbaa6+ZmdlPfvITu/POO23ZsmX27LPP2oknnmhHHXWUmXmLyuy77772+c9/3hYvXmwPPfSQHXDAAaGLyowZM8b22Wcfmz17ti1atMhOOeUU69+/f1EgPOigg+zss8+2tWvX2vr13knzvvvus549e9q4cePs2WeftdbWVvvzn/9sP/7xj83M7MYbb7Trr7/eFi9ebMuXL7eLLrrI+vbt27U4TqFG3kokTNRFYkoXrCh30YXaiWNBlVr2ELoEhWqH1UUV1JP0U599Q4Na8PPHFnTsVa3sWSKoFzIoGAVdfMf9+ta6JyvK7z1p7srA99qER9vsojsWOfUMutaZ6wqu9dpWoFyDnsuCQEFBJGhuX7749QpX8zoENZxU2hhWqyH7tViUx6X3nx5CIL0S34fwzU1bnANhYe+faw+hmdmDDz5oI0aMsN69e9vhhx9ujzzySLdAeMstt9hRRx1lvXr1skMPPdQeeuihrsf//Oc/txEjRljfvn1t0KBBdvLJJ9uKFSu6vh9124kNGzbYF7/4RWtpabEhQ4bYTTfd1G0O4d13320HHnig9ezZs2jbifvuu8+OO+4469u3r7W0tNhRRx3VtZLoHXfcYUcffbS1tLRYv3797JhjjrGZM2f6vu7NGAgrmd+Utn2UmklcW5jUagVI156BKEM+qxWlN8slcAcde60CkusQ0PzFsN9nsmixihhf31r2ZF34lwXOgTA/RL2a1zzSe3XMjte13GPiWk01iGsvWD4YBQ37DxruWy4QBtV9rV+HuFcXDhOlpzFs8apyQ0aZQwikW+KBcPM727qGhkYJhFHmEKK7ZgyEUReJSeM+Ss0kzt61WrSkR+11qfViO0Fcg4PrSoelx17LobxRFpXJf+78Lr6TfH1r0XsSJRCW7uNXSSh1WRgn6uqZhY9L4rWv5H0XdUGgsAaKcgG8lq9DvRY0i3JOcznPlDYw1HsVagIh4C7xQGiWXy20IzdfsMNe/ccmp7DnusooumvGQBh1kRh6COsvyd61SiTdQ+LKJThEWfq+UK17L0rr+Nf3+i+hXzoUN6kAWHqshcdUaX0HXfCffPVfI4UQVy4L47gM8Ttr8vyaHE8lKnnfRW3UCwrF//dksp/revUQur5eUUYiFH5W6/W5zSMQAu7qEgjN8vsJvtMV+lzDXunj4KYZA2Eli0Ok9YK/mdT7IqKctB9fkEqH5MYxlLfwNYxrqLCvjpe8PQlDFpUpPEa/46q0ZzToZ8WxIJfLuc91gZ/xj7bV7LiiqOR9UUmjXmEDRb4kvUhLvRY0c+1RjWvl3bgRCAF3dQuEfgh78UlrIHTdULtSlczDyeoFPxCm0iG5cS+Uk1jvyFMTd+xFOG73wG0n8n436wXf47pqVmWbwUfZnqMWyp37XLcAGV7lSr+VqvR9V0mj3oLV67uGN7oGyVqq13QF16CX1RW4CYSAu1QFQsQnjXWa1P6Fad4SA0hSpUNy4xzKG8d2I91E2Jg+77wpT/teBH/v1so3g0+6sSns3FfJfM6kVfq+i/o613v+eL2mK0QJelncb5hACLgjEDaJtNVpVlscgayrNJTEGWZi31NtxaPFYTBfVswOfEjUBUqyyGWV0TRseB53iE7D/PF6TVeIEvSy1rhKIATcEQibRNrqNKtzEgDEI9YL/wp6CM2aY1/S/OseNIS03oEwKWmYP16v6QpZC3quCISAOwJhk0hbnTZD6zuAFHlqohcC82GwzBzCvJmta502g8+6sCGkzYiMPucAACAASURBVLL1DvPHu5vZutZ+NHVhJt//BELAHYGwSaStTus9ZwNA83llTZstfuwee2VNfVbOTLvxj3QfucHWO80r6z3kBELAHYGwSaStTtMwZwNA84h9nmKDOPvm+ZlbPAS11wijeAiEgDsCYYixY8faEUcc0fX1yJEj7eSTT67jEVUujXWahjkbABofDVBueJ2Q96OpC30D4UV3LKr3oTkjEALuCIQhSgNhR0eHvfHGGzV9jhtvvNEGDBhQ05/pJ611ypwNAHFjiLobXifk0UMINJemD4Tbt2+3d955x/d7pYEwDs0eCAEgbmxz44YeQhRiDiHQPJIJhB0veftAlVniu1befvttGzVqlO21117Wu3dv+/CHP2zz5s0zM7OHH37YJNmMGTPsn/7pn2yXXXaxhx9+2MzMfvGLX9i73vUu69+/v5155pk2evTo0CGjxx9/vI0aNcouvPBCGzhwoO299942duzYomO5/PLL7X3ve5/tuuuutv/++9vZZ59tb775ZtGxFJb8499++2274IILbL/99rNdd93VjjrqqK7jNDN78cUX7cQTT7Tdd9/ddt11Vzv00ENt+vTpga8JgRBAs6Lnyx1D+VEoy6vsEggBd/EHwqcm7tj/adzuzkt9V+N//ud/bL/99rMZM2bYc889ZyNHjrSBAwfa66+/3hXCDj/8cHvggQesra3NXn/9dbv11lutd+/edv3119uSJUvsxz/+se22225lA2FLS4uNGzfOli5dahMnTrQePXrYAw880HWf3/72t/bQQw/ZihUrbNasWXbIIYfY2WefbWZmmzdvtiuvvNJaWlps7dq1tnbt2q6w+M1vftOOO+44mz17trW1tdlll11mvXv3tqVLl5qZ2Wc+8xn7xCc+YYsWLbLly5fbPffcY48++mjga0IgBNCs6PmKhqH8aAQEQsBdvIGwws2Aq/HWW2/ZLrvsYn/605+6btuyZYvtt99+9utf/7orEN55551Fjzv22GPtO9/5TtFtRx99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\" width=\"900\">"
    
          "text/plain": [
    
           "<IPython.core.display.HTML object>"
    
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "source": [
    
        "pl.figure(figsize=(9,3))\n",
    
        "pl.subplot(2,1,1)\n",
    
        "pl.plot(h_dt,h_abs,'.',h_dt,h_ord,'.')\n",
    
        "pl.legend(('absolutes','ordinates'))\n",
    
        "pl.subplot(2,1,2)\n",
    
        "pl.plot(h_dt,np.asarray(h_abs) - np.asarray(h_ord),'.')\n",
        "pl.legend(('baselines',))\n",
        "\n",
        "# re-formats dates for better presentation\n",
        "pl.gcf().autofmt_xdate()"
    
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Plot of D absolutes, ordinates, baselines\n",
    
        "Absolutes represent the field magnitude as measured by the overhauser (with the pier correction applied), and field direction measured by the theodolite.  Ordinates represent the variometer's reading of the field corresponding to the nearest times absolute measurements were taken. Baselines, or the difference between absolutes and ordinates, are presented in the bottom plot. All vertical axis units are degrees from surveyed geographic north."
    
       "execution_count": 9,
    
       "metadata": {
        "collapsed": false
       },
       "outputs": [
        {
         "data": {
    
          "application/javascript": [
           "/* Put everything inside the global mpl namespace */\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('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",
           "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 = $('<div/>');\n",
           "    this._root_extra_style(this.root)\n",
           "    this.root.attr('style', 'display: inline-block');\n",
           "\n",
           "    $(parent_element).append(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 (mpl.ratio != 1) {\n",
           "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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",
           "        this.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 = $(\n",
           "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
           "        'ui-helper-clearfix\"/>');\n",
           "    var titletext = $(\n",
           "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
           "        'text-align: center; padding: 3px;\"/>');\n",
           "    titlebar.append(titletext)\n",
           "    this.root.append(titlebar);\n",
           "    this.header = titletext[0];\n",
           "}\n",
           "\n",
           "\n",
           "\n",
           "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
           "\n",
           "}\n",
           "\n",
           "\n",
           "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
           "\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._init_canvas = function() {\n",
           "    var fig = this;\n",
           "\n",
           "    var canvas_div = $('<div/>');\n",
           "\n",
           "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
           "\n",
           "    function canvas_keyboard_event(event) {\n",
           "        return fig.key_event(event, event['data']);\n",
           "    }\n",
           "\n",
           "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
           "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
           "    this.canvas_div = canvas_div\n",
           "    this._canvas_extra_style(canvas_div)\n",
           "    this.root.append(canvas_div);\n",
           "\n",
           "    var canvas = $('<canvas/>');\n",
           "    canvas.addClass('mpl-canvas');\n",
           "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
           "\n",
           "    this.canvas = canvas[0];\n",
           "    this.context = canvas[0].getContext(\"2d\");\n",
           "\n",
    
           "    var backingStore = this.context.backingStorePixelRatio ||\n",
           "\tthis.context.webkitBackingStorePixelRatio ||\n",
           "\tthis.context.mozBackingStorePixelRatio ||\n",
           "\tthis.context.msBackingStorePixelRatio ||\n",
           "\tthis.context.oBackingStorePixelRatio ||\n",
           "\tthis.context.backingStorePixelRatio || 1;\n",
           "\n",
           "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
           "\n",
    
           "    var rubberband = $('<canvas/>');\n",
           "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
           "\n",
           "    var pass_mouse_events = true;\n",
           "\n",
           "    canvas_div.resizable({\n",
           "        start: function(event, ui) {\n",
           "            pass_mouse_events = false;\n",
           "        },\n",
           "        resize: function(event, ui) {\n",
           "            fig.request_resize(ui.size.width, ui.size.height);\n",
           "        },\n",
           "        stop: function(event, ui) {\n",
           "            pass_mouse_events = true;\n",
           "            fig.request_resize(ui.size.width, ui.size.height);\n",
           "        },\n",
           "    });\n",
           "\n",
           "    function mouse_event_fn(event) {\n",
           "        if (pass_mouse_events)\n",
           "            return fig.mouse_event(event, event['data']);\n",
           "    }\n",
           "\n",
           "    rubberband.mousedown('button_press', mouse_event_fn);\n",
           "    rubberband.mouseup('button_release', mouse_event_fn);\n",
           "    // Throttle sequential mouse events to 1 every 20ms.\n",
           "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
           "\n",
           "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
           "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
           "\n",
           "    canvas_div.on(\"wheel\", function (event) {\n",
           "        event = event.originalEvent;\n",
           "        event['data'] = 'scroll'\n",
           "        if (event.deltaY < 0) {\n",
           "            event.step = 1;\n",
           "        } else {\n",
           "            event.step = -1;\n",
           "        }\n",
           "        mouse_event_fn(event);\n",
           "    });\n",
           "\n",
           "    canvas_div.append(canvas);\n",
           "    canvas_div.append(rubberband);\n",
           "\n",
           "    this.rubberband = rubberband;\n",
           "    this.rubberband_canvas = rubberband[0];\n",
           "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
           "    this.rubberband_context.strokeStyle = \"#000000\";\n",
           "\n",
           "    this._resize_canvas = function(width, height) {\n",
           "        // Keep the size of the canvas, canvas container, and rubber band\n",
           "        // canvas in synch.\n",
           "        canvas_div.css('width', width)\n",
           "        canvas_div.css('height', height)\n",
           "\n",
    
           "        canvas.attr('width', width * mpl.ratio);\n",
           "        canvas.attr('height', height * mpl.ratio);\n",
           "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
    
           "\n",
           "        rubberband.attr('width', width);\n",
           "        rubberband.attr('height', height);\n",
           "    }\n",
           "\n",
           "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
           "    // upon first draw.\n",
           "    this._resize_canvas(600, 600);\n",
           "\n",
           "    // Disable right mouse context menu.\n",
           "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('<div/>')\n",
           "    nav_element.attr('style', 'width: 100%');\n",
           "    this.root.append(nav_element);\n",
           "\n",
           "    // Define a callback function for later on.\n",
           "    function toolbar_event(event) {\n",
           "        return fig.toolbar_button_onclick(event['data']);\n",
           "    }\n",
           "    function toolbar_mouse_event(event) {\n",
           "        return fig.toolbar_button_onmouseover(event['data']);\n",
           "    }\n",
           "\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",
           "            // put a spacer in here.\n",
           "            continue;\n",
           "        }\n",
           "        var button = $('<button/>');\n",
           "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
           "                        'ui-button-icon-only');\n",
           "        button.attr('role', 'button');\n",
           "        button.attr('aria-disabled', 'false');\n",
           "        button.click(method_name, toolbar_event);\n",
           "        button.mouseover(tooltip, toolbar_mouse_event);\n",
           "\n",
           "        var icon_img = $('<span/>');\n",
           "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
           "        icon_img.addClass(image);\n",
           "        icon_img.addClass('ui-corner-all');\n",
           "\n",
           "        var tooltip_span = $('<span/>');\n",
           "        tooltip_span.addClass('ui-button-text');\n",
           "        tooltip_span.html(tooltip);\n",
           "\n",
           "        button.append(icon_img);\n",
           "        button.append(tooltip_span);\n",
           "\n",
           "        nav_element.append(button);\n",
           "    }\n",
           "\n",
           "    var fmt_picker_span = $('<span/>');\n",
           "\n",
           "    var fmt_picker = $('<select/>');\n",
           "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
           "    fmt_picker_span.append(fmt_picker);\n",
           "    nav_element.append(fmt_picker_span);\n",
           "    this.format_dropdown = fmt_picker[0];\n",
           "\n",
           "    for (var ind in mpl.extensions) {\n",
           "        var fmt = mpl.extensions[ind];\n",
           "        var option = $(\n",
           "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
           "        fmt_picker.append(option)\n",
           "    }\n",
           "\n",
           "    // Add hover states to the ui-buttons\n",
           "    $( \".ui-button\" ).hover(\n",
           "        function() { $(this).addClass(\"ui-state-hover\");},\n",
           "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
           "    );\n",
           "\n",
           "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
           "    nav_element.append(status_bar);\n",
           "    this.message = status_bar[0];\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",
           "\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",
           "\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]);\n",
           "        fig.send_message(\"refresh\", {});\n",
           "    };\n",
           "}\n",
           "\n",
           "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
    
           "    var x0 = msg['x0'] / mpl.ratio;\n",
           "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
           "    var x1 = msg['x1'] / mpl.ratio;\n",
           "    var y1 = (fig.canvas.height - msg['y1']) / mpl.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, 0, fig.canvas.width, fig.canvas.height);\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",
           "    {\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.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",
           "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
           "                evt.data);\n",
           "            fig.updated_canvas_event();\n",
           "            fig.waiting = false;\n",
           "            return;\n",
           "        }\n",
           "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\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(\"No handler for the '\" + msg_type + \"' message type: \", msg);\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(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\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",
           "    if (e.target)\n",
           "        targ = e.target;\n",
           "    else if (e.srcElement)\n",
           "        targ = e.srcElement;\n",
           "    if (targ.nodeType == 3) // defeat Safari bug\n",
           "        targ = targ.parentNode;\n",
           "\n",
           "    // jQuery normalizes the pageX and pageY\n",
           "    // pageX,Y are the mouse positions relative to the document\n",
           "    // offset() returns the position of the element relative to the document\n",
           "    var x = e.pageX - $(targ).offset().left;\n",
           "    var y = e.pageY - $(targ).offset().top;\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",
           "    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",
           "    {\n",
           "        this.canvas.focus();\n",
           "        this.canvas_div.focus();\n",
           "    }\n",
           "\n",
    
           "    var x = canvas_pos.x * mpl.ratio;\n",
           "    var y = canvas_pos.y * mpl.ratio;\n",
    
           "\n",
           "    this.send_message(name, {x: x, y: y, button: event.button,\n",
           "                             step: event.step,\n",
           "                             guiEvent: simpleKeys(event)});\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",
           "\n",
           "    // Prevent repeat events\n",
           "    if (name == 'key_press')\n",
           "    {\n",
           "        if (event.which === this._key)\n",
           "            return;\n",
           "        else\n",
           "            this._key = event.which;\n",
           "    }\n",
           "    if (name == 'key_release')\n",
           "        this._key = null;\n",
           "\n",
           "    var value = '';\n",
           "    if (event.ctrlKey && event.which != 17)\n",
           "        value += \"ctrl+\";\n",
           "    if (event.altKey && event.which != 18)\n",
           "        value += \"alt+\";\n",
           "    if (event.shiftKey && event.which != 16)\n",
           "        value += \"shift+\";\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,\n",
           "                             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",
           "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\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"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\";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 overriden (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 = $(\"#\" + id);\n",
           "    var ws_proxy = comm_websocket_adapter(comm)\n",
           "\n",
           "    function ondownload(figure, format) {\n",
           "        window.open(figure.imageObj.src);\n",
           "    }\n",
           "\n",
           "    var fig = new mpl.figure(id, ws_proxy,\n",
           "                           ondownload,\n",
           "                           element.get(0));\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.get(0);\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",
           "\n",
           "    var output_index = fig.cell_info[2]\n",
           "    var cell = fig.cell_info[0];\n",
           "\n",
           "};\n",
           "\n",
           "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
    
           "    var width = fig.canvas.width/mpl.ratio\n",
    
           "    fig.root.unbind('remove')\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).html('<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/mpl.ratio\n",
    
           "    var dataURL = this.canvas.toDataURL();\n",
    
           "    this.cell_info[1]['text/html'] = '<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 () { fig.push_to_output() }, 1000);\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._init_toolbar = function() {\n",
           "    var fig = this;\n",
           "\n",
           "    var nav_element = $('<div/>')\n",
           "    nav_element.attr('style', 'width: 100%');\n",
           "    this.root.append(nav_element);\n",
           "\n",
           "    // Define a callback function for later on.\n",
           "    function toolbar_event(event) {\n",
           "        return fig.toolbar_button_onclick(event['data']);\n",
           "    }\n",
           "    function toolbar_mouse_event(event) {\n",
           "        return fig.toolbar_button_onmouseover(event['data']);\n",
           "    }\n",
           "\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) { continue; };\n",
           "\n",
           "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
           "        button.click(method_name, toolbar_event);\n",
           "        button.mouseover(tooltip, toolbar_mouse_event);\n",
           "        nav_element.append(button);\n",
           "    }\n",
           "\n",
           "    // Add the status bar.\n",
           "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
           "    nav_element.append(status_bar);\n",
           "    this.message = status_bar[0];\n",
           "\n",
           "    // Add the close button to the window.\n",
           "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
           "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
           "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
           "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
           "    buttongrp.append(button);\n",
           "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
           "    titlebar.prepend(buttongrp);\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._root_extra_style = function(el){\n",
           "    var fig = this\n",
           "    el.on(\"remove\", function(){\n",
           "\tfig.close_ws(fig, {});\n",
           "    });\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._canvas_extra_style = function(el){\n",
           "    // this is important to make the div 'focusable\n",
           "    el.attr('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",
           "    }\n",
           "    else {\n",
           "        // location in version 2\n",
           "        IPython.keyboard_manager.register_events(el);\n",
           "    }\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",
           "    // 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",
           "\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('matplotlib', mpl.mpl_figure_comm);\n",
           "}\n"
          ],
    
          "text/plain": [
    
           "<IPython.core.display.Javascript object>"
    
         "output_type": "display_data"
    
           "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4QAAAEsCAYAAACbnn2RAAAgAElEQVR4nO3deZwU9Z3/8bdyDOcgiBdIOOIRTNRks2Iwm2DiGndXjZpsTKJmEdfkpzFEjSGQRGUSo8bbVRMNMR544X0BXqBCBAPIjSPHcOOMESRDlEEQ+Pz+qOmhuqequqqnr6p+PR+P7wOmu7rr2/Wprq53nRIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQZntJ6iupmkaj0Wg0Go1GS1DrK2ddF0CAvpKMRqPRaDQajUZLYOsrAIGqJdn69etty5YtNFoi2xtvr7H/e2G+vfH2moIMTytcLfLVlq17z16ev8qWrXuv5NMgro1pSKPR4tTWr1+fCoTVJV7XBspetSTbsmWLFVt9Y5PNqNto9Y1NLY8tWLfZxk2vswXrNhe9P2ibx+astfPunWWPzVkb6XVTahvsV08ttCm1DQXp188enW/9R09saT97dH5eh89VrtOrnET9DGGnbdTlgNeyxG3C7LU2oHmcA0ZPtAmz0/sbdXxh5tm2LsuiTtsow0+pbbBLHplrd0xd7jnNvKZntmkYtb9e0zDoPZL821DoZWAu48/2ncqHfNa0GP0tR+X4ud19KnX/tmzZQiAEQipJIJwwe23aiuGE2WtDryyW+sezUtz44jt2wo2v2Y0vvpN12K9cNzWtdl+5bmqocZzxhzfSXnfGH95oa7fTLFi3Oe39U81vBSTq8LnKdXqVk7CfIfV9HTetLtS0jRrIvZYlbvWNTS1BJtUGjJ7YsoISdXxh5tm2blSIOn9EGT6z/5nTzGt6ZpuGfuP3C3he0zDzPYZc/Urg9CzEBqgF6zZbzbOLrebZJbZg3eaWcYx6dH6ocYXpU+ZyNdv8lPmeUT93thVyr/GPfXZx4Hcql2nvDn8L1m22U26bHvo7ki04Tpi91gaOcd5n4Binv1HXE1KfqeaZxYHzh7sfQf3yG3+2frmnbZjPHVSnKIL65X4uap9Sy41UXYqNQAiEV/RAWN/Y5LliGGZlsdABAo4jrnghbTofccULvsM+NmetZ+2yrSxMqW3wfF0+g/6NL73jOY6bX1rqOXxNxopQqv3m2SV561Ou06uchP0MXuEjs909fWXL8FEDud+yxL3y+9yCDZ7DPL/g3cjjCzPPtnWjQtT5I8rwfv1PTTO/6Tn+zdW+09Bv/F/47Utpf6dCYlAfMtu3//iG7/T0eu9sgn4/MkNn1HGFCeWZy9XDfuU9jtT8lPmeg8ZE+9wTZq+1Ac2vGeCxQh6lFkHhP1vICTttvb4j2Tau1Dc2tYRBv5ZtPSHzM4WZPzJf4+6X33yWbf3Frx9+nzuoTlEE9StoGR62T6k2YExu/WsLAiEQXtED4f0zV4X+EXKvLBYjQMDZgu01nf32FJ537yzP4c+/b3bgeH711ELP113+9KK8fZbxM71XZB94c7Xn8DXPLvEc/jfP5S8Q5jq9ykmYzxB2ZdO9EjhuuvdeRPdywM1vWTJ+5uqWYZ5f+K7nMBMXvht5fGHm2agbIXKZtrkOf8kjc33rcPvU5Xbb1GWez501bqbn43e8utx3/F7tsTlr7ZIJ80IP33/0RBv12ILQ7x0k6PcjTOgMGleYUO63XPWbn/zeM+zn9lo5d+/VNfOfn73a+JmrQ/UpM+REmbaZG97CbFyZUbcx1HsH7ZHL9rqwn2HBus2+85lf/VP9CjNt3Z87zLIvjKDvRZhleJg+udvEhe9G6l9bEQiB8IoeCG96eWnoHwj3wqYYAQJmJ9z4mud0PvGm1zyHL+c9hGFWityKcchopewhDLOymbmFOer091uW3PzynvDlebhj85bqQuwhjLoRIpdpm+vwd0xdHlCLeb5h7aSbX/edzmGDS//RTki9/VX/Pni1C8bPCf3eQfzC8KUT5vluGAg7rjCh3G+56jc/hQ3afp87zHwYZQ/hzS8vDd0n9/chyrTN3PAWZoNNmD2E/Ud7ryfs3LnTLn1olh33uxd82++fX2j3/3VZ4DCp9sBfl9s1zy3wfO6sP07zff9t27bZzx4O7kfq/bdt22bbtm2zP06p9Rzmzim1LcOEaX79/f3zC32fi9ond5s8f22k/mVrO3fuDPzeEwiB8IoeCP1Wwkbck/5jk7myyB7C4oi6h9CsfM8hNPM+vyRIMS4qUwnnEPp9X8dNq7O7p6/0DV1Rpn/YQBc0D+T7HMKoGyG8FOocwqBDuoL2CGQ7/zNz/J//zUuewz82Z22kUwZS/QozXLYNKn5h+I5Xl5d0D+GxV7/iOT+1dQ9h2D3VYQ7rTtU6bJ/c4SvKtM383kb5fg8aMynrfJSye/duq6+vt9raWpszf5G9PGOub5u3cLEtWLQkcJhUW7Boic1buNjzub/NXej7/mH6kXr/2tpaq62t9e2Te5gwza+/8xYu9n0uap9S7ZUZc23xkrcj9S9Mq6+vt927d3t+DwiEQHgluaiM30rYgnWbA1cWOYewOKKcQ5jy2Jy1dv59s3O6yMPlTy8qaLCvb2yymXWbQq+UZ5sP8yHX6VVOsn2GXL+vUaZ/2EAXNA9ErXe2eTbqRggvUeePsMNnXvQhsy5+Ncs2nTPHHxRSw1xUzD2OzOnpd35ikGznXJXiHMLUctVvfmrLOYRR9n67x+8VEN21DjrPzSt8hZ22ft/bXL7fWTfaNIfBTZs2WVNTk729bqMtWP33Vm3phk0te6JWNWxOey7zNasaNrcMu3TDJs/38Xs81fz6kfn+fn3yGiZMC+pX5nNR+5RqC1f/3Ro+2JLXvYNNTU22adOmllDohUAIhFey207kutJdjAABZ4v2iTeFu8oo4KcY39diBPioom6EKKb6xia7fepy+9mj83yvKuhVs6jTOSikek2fBes222+eXWK/eW5Jq3FkDp/LBpVsQT1z/KlxjHp0fqhxhelT1OVq5ntG+dy5Hu0wpbbB/t/4OfaLJxZ41trdh7AbfVLzTuaRQKfeNj3r/JTL99tvHt65c2dLGHT74KOPbfXGj+zdfzTZhs1bbUvTjlbvuXX7J/b+Pz+2rds/8fzbbUvTDs/38Xs8sx8ffPRx4Pv79SlXQf1yPxe1T9s/2WUfbnP+LZRUKPQ6fJRACIRXskAIAEAxlXNQL4RibCyJutGnlBtwtm3bZrW1tdbUVBn1rwRNTU1WW+ucO5mJQAiERyAEAACJlwqEXuEB8RRUUwIhEB6BEAAAJB6BMHkIhEB+EAgBAEDiJTkQrl692iTZ/Pn5vzJ2yvDhw+20004r2PvngkAI5AeBEAAAJB6BsG1yCYSS7Omnny5QjwiEQL4QCAEAQOIRCNuGQAgkF4EQAAAkXr4DYX1jk82o21i0q9a+8MIL9uUvf9l69OhhvXr1spNPPtnq6urMbE8gfOSRR2zo0KFWVVVln/3sZ+31119vef3mzZvtrLPOst69e1unTp3skEMOsXvuuafl+UWLFtnXvvY169Spk/Xq1ct++MMf2ocfftjyfGYg7N+/v91yyy1pfTz66KNt7NixLc/LCWQmyfr3798y3DPPPGNf+MIXrKqqygYOHGg1NTX2ySd7bmcxduxY69evn3Xs2NEOOuggGzlypOc0IRAC+UEgBAAAiZfPQJjtvpaF8MQTT9iTTz5py5cvt/nz59upp55qRx55pO3ataslEB588MH2xBNPWG1trZ1//vnWvXv3lvsuXnTRRfb5z3/e5syZY6tXr7ZXXnnFnnvuOTMz27p1q/Xp08e+9a1v2eLFi23q1Kk2cOBAGz58eMv4owbC999/3yTZvffeaw0NDfb++++bmdlf//pXq66utvvuu89WrlxpL7/8sg0YMMBqamrMzOzxxx+36upqmzx5sq1du9ZmzZpl48aN85wmBEIgPwiEAAAg8fIVCOsbm1rCYKoNGjOp6Pe3TAWuxYsXtwTC3//+9y3Pf/LJJ3bwwQfbddddZ2Zmp556qo0YMcLzvcaNG2c9e/a0jz76qOWxSZMm2d57723vvfeemUUPhGbeh4yecMIJds0116Q99sADD9hBBx1kZmY33XSTHXbYYbZjx46s04BACOQHgRAAACRevgLhjLqNaWEw1WbWbcpTT70tX77cvve979nAgQOte/fu1rVrV5NkkyZNagmE06ZNS3vN6aefbueee66ZmU2ePNk6d+5sRx99tI0aNcpmzJjRMtyll15qxx9/fNprGxsb094zX4Ewdchq165dW1qnTp1Mkm3dutXWrVtn/fr1s4MPPtjOP/98e+qpp9IOJ3UjEAL5QSAEAACJF/c9hIcffrh94xvfsClTplhtba0tWbKkJXAFBUL3XsH333/f7r33Xjv77LOtU6dOdtlll5mZ2SWXXGJf+9rX0l6bCoTTp083s9aBcODAgXbzzTenveaII47IGgg7depk1113na1YsaJV27Vrl5mZNTU12bPPPmsjR460Aw880IYOHeq5x5BACOQHgRAAACRevs8hHDRmUksYLPQ5hJs2bUoLZ2bOuXjKCISpw0PNnENG+/Xrl/aY21133WXdu3c3s9wOGR0yZIiNGjWq5e8tW7ZY586d0wJhhw4d7Iknnkgb73HHHWfnnXde6M++dOlSk2Rz585t9RyBEMgPAiEAAEi8QlxldGbdpqKcO7hr1y7bd9997ZxzzrEVK1bY1KlT7ZhjjmkVCD/1qU/ZU089Ze+884796Ec/sm7dutnGjRvNzOyKK66wZ555xlasWGFLliyxU045xYYMGWJmzkVlDjroIPv2t79tixcvtldffdUGDRoUeFGZMWPG2IEHHmjTp0+3RYsW2emnn27dunVLC4SHHnqoXXjhhdbQ0GCbN282M7MXX3zR2rdvbzU1NbZkyRKrra21Rx55xH7961+bmdm9995rd999ty1evNhWrlxpl19+uXXu3Lnl4jhuBEIgPwiEAAAg8eJ+H8JXXnnFBg8ebFVVVXbUUUfZ66+/3ioQPvzwwzZkyBDr2LGjHXHEEfbqq6+2vP6qq66ywYMHW+fOna1Xr1522mmn2apVq1qej3rbiS1bttiZZ55p1dXV1q9fP7vvvvtanUP43HPP2SGHHGLt27dPu+3Eiy++aMcdd5x17tzZqqurbciQIS1XEn366aft2GOPterqauvatat96UtfsilTpnhOEwIhkB8EQgAAkHhxD4RojUAI5AeBEAAAJB6BMHkIhEB+EAgBAEDiEQiTh0AI5AeBEAAAJB6BMHkIhEB+EAgBAEDiEQiTh0AI5AeBEAAAJB6BMHkIhEB+EAgBAEDiEQiTh0AI5AeBEAAAJB6BMHkIhEB+EAgBAEDiEQiTh0AI5AeBEAAAJB6B0Gzs2LF29NFHt/w9fPhwO+2000rYo7YhEAL5QSAEAACJRyBsHQgbGxvtH//4R17Hce+991qPHj3y+p5+CISAVCNnRne3pRHfg0AIAAASr1IC4e7du+2TTz7xfC4zEBYCgRAorhpJSyQd6Gq9I74HgRAAACRenAPhxx9/bCNHjrT99tvPqqqq7Mtf/rLNnj3bzMxee+01k2STJ0+2f/mXf7EOHTrYa6+9ZmZm1157re2///7WrVs3O++882z06NGBh4wOGzbMRo4caaNGjbKePXvaAQccYGPHjk3ry0033WSf+9znrEuXLnbwwQfbhRdeaB9++GFaX9wt9fqPP/7YLrvsMuvTp4916dLFhgwZ0tJPM7M1a9bYKaecYvvss4916dLFjjjiCJs0aVLgdCEQAk4gXNDG9yAQAgCAxMt7IGzcYLZqmvNvgf30pz+1Pn362OTJk+3tt9+24cOHW8+ePe2DDz5oCWFHHXWUvfzyy1ZXV2cffPCBPfroo1ZVVWV33323LV261H79619b9+7dswbC6upqq6mpseXLl9v9999ve+21l7388sstw9xyyy326quv2qpVq2zq1Kl2+OGH24UXXmhmZtu3b7dbb73VqqurraGhwRoaGlrC4vnnn2/HHXecTZ8+3erq6uyGG26wqqoqW758uZmZnXzyyXbiiSfaokWLbOXKlfb888/btGnTAqcLgRBwAuFWSfWSVkl6SNKnIr4HgRAAACReXgPh3PvNavYxG1vt/Dv3/ra/p4+PPvrIOnToYA899FDLYzt27LA+ffrY9ddf3xIIn3nmmbTXDR061H784x+nPXbsscdmDYT/9m//lvaaY445xkaPHu3bv8cff9z23Xfflr+9Dhldu3attWvXzt599920x0844QT75S9/aWZmRx55pNXU1PiOxwuBEJD+U9J3JB0l6SRJMyWtldQ94DVVcr4YqdZXBEIAAJBweQuEjRv2hMFUq+lZsD2FCxcuNEm2Zs2atMdPP/10GzFiREsg3LAhffz77LOP3X9/elC95JJLsgbCzBD5zW9+00aMGNHy9yuvvGJf//rXrU+fPtatWzfr1KmTSbKPPvrIzLwD4cSJE02Sde3aNa21b9/ezjzzTDMz+/Of/2zt27e34447zq688kpbuHBh1mlDIARa20fSFkn/GzBMjVpfiIZACAAAEi1vgXDVtPQwmGqrpuenoxkWLFhgkmzt2rVpj5922ml23nnntQTCzKuF7rPPPjZ+/Pi0x8IEwosvvrjVeIYPH25mZqtXr7aqqiq75JJL7M0337Rly5bZX/7yl7TxewXCCRMmWLt27Wzp0qW2YsWKtNbQ0NAy3Lp16+zOO++0M844wzp06GC33XZb4LQhEALe5ki6NuB59hACAICKE9c9hB999JF17Nix1SGjffv2tRtuuME3EHodMvqlL32pTYHwiSeesPbt29uuXbtanr/qqqvSxv/QQw9Zt27d0t5j2bJlJsmmTw8fmseMGWNHHnlk4DAEQqC1bpI2S/pphNdwDiEAAEi8/J9D2HNPGCzgOYRmZhdffLH16dPHXnjhhbSLymzevNk3EE6YMME6depk99xzjy1btsyuvPLKUBeVCQqEqb2Vt956q61cudLGjx9vffv2TRv/jBkzTJJNmTLFNm7c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VUYBuBEIk4NACOQHgRBA4tU3NtnMuk3sGQQQ60A4bNgwu/jii0s2/uHDh9tpp51WNv0hEAL5QSAEAAAVg0CYu8xA+MEHH9g///nPkvWHQAjkB4EQAABUDAJh7jIDYakRCIH8IBACAICKkc9AWN/YZDPqNhbtcPRhw4bZRRddZBdddJFVV1fbvvvua5dffnnLzdkfeOAB++IXv2jdunWzAw44wL7//e/b3//+95bXb9682c466yzr3bu3derUyQ455BC75557Wp5ft26dfec737EePXpYr1697Jvf/KatXr265flsh4z279/frr76ahsxYoR169bN+vXrZ3/605/SPkO2cbz22mt2zDHHWJcuXaxHjx523HHH2Zo1azynB4EQyA8CIQAAqBj5CoQTZq9tuYrxwDETi3LBqmHDhlm3bt3s4osvtqVLl9qDDz5oXbp0sXHjxpmZ2V/+8hebPHmyrVy50t58800bOnSo/ed//mfL6y+66CL7/Oc/b3PmzLHVq1fbK6+8Ys8995yZme3YscMGDx5s5513ni1atMhqa2vtrLPOssMPP9y2b99uZuECYa9evewPf/iDrVixwq699lrbe++97Z133gk1jk8++cR69OhhP//5z62urs5qa2vtvvvus7VrvactgRDIDwIhAACoGPkIhKW6pc2wYcNs8ODBLXsEzcxGjx5tgwcP9hx+zpw5Jsk+/PBDMzM79dRTbcSIEZ7DPvDAA3b44Yenvff27dutc+fO9tJLL5lZuEB4zjnntPy9e/du23///e3OO+8MNY4PPvjAJNnrr78eanoQCIH8IBACAICKkY9AOKNuY1oYTLWZdZvy2NPWhg0b1irQPfPMM9a+fXvbuXOnvfXWW3bKKadYv379rFu3btalSxeTZG+//baZmU2ePNk6d+5sRx99tI0aNcpmzJjR8j4///nPrV27dta1a9e0ttdee9kf//hHMwsXCK+//vq0/h111FH2m9/8JvQ4zj33XKuqqrJTTjnFbr31Vquvr/edHgRCID8IhAAAoGLEfQ+hXyD86KOPbN9997WzzjrLpk+fbu+884699NJLJsnmz5/fMvz7779v9957r5199tnWqVMnu+yyy8zM7IILLrAhQ4bYihUrWrXGxkYzCxcIb7nllrT+HX300TZ27NjQ4zAzmzdvnl1zzTU2dOhQ69atm7355pue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\" width=\"900\">"
    
          "text/plain": [
    
           "<IPython.core.display.HTML object>"
    
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "source": [
    
        "pl.figure(figsize=(9,3))\n",
    
        "pl.subplot(2,1,1)\n",
    
        "pl.plot(d_dt,d_abs,'.',d_dt,d_ord,'.')\n",
    
        "pl.legend(('absolutes','ordinates'))\n",
    
        "pl.subplot(2,1,2)\n",
    
        "pl.plot(d_dt,np.asarray(d_abs) - np.asarray(d_ord),'.')\n",
        "pl.legend(('baselines',))\n",
        "\n",
        "# re-formats dates for better presentation\n",
        "pl.gcf().autofmt_xdate()"
    
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Plot of Z absolutes, ordinates, baselines\n",
    
        "Absolutes represent the field magnitude as measured by the overhauser (with the pier correction applied), and field direction measured by the theodolite.  Ordinates represent the variometer's reading of the field corresponding to the nearest times absolute measurements were taken. Baselines, or the difference between absolutes and ordinates, are presented in the bottom plot. All vertical axis units are nanoteslas."
    
       "execution_count": 10,
    
       "metadata": {
        "collapsed": false
       },
       "outputs": [
        {
         "data": {
    
          "application/javascript": [
           "/* Put everything inside the global mpl namespace */\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('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",
           "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 = $('<div/>');\n",
           "    this._root_extra_style(this.root)\n",
           "    this.root.attr('style', 'display: inline-block');\n",
           "\n",
           "    $(parent_element).append(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 (mpl.ratio != 1) {\n",
           "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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",
           "        this.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 = $(\n",
           "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
           "        'ui-helper-clearfix\"/>');\n",
           "    var titletext = $(\n",
           "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
           "        'text-align: center; padding: 3px;\"/>');\n",
           "    titlebar.append(titletext)\n",
           "    this.root.append(titlebar);\n",
           "    this.header = titletext[0];\n",
           "}\n",
           "\n",
           "\n",
           "\n",
           "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
           "\n",
           "}\n",
           "\n",
           "\n",
           "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
           "\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._init_canvas = function() {\n",
           "    var fig = this;\n",
           "\n",
           "    var canvas_div = $('<div/>');\n",
           "\n",
           "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
           "\n",
           "    function canvas_keyboard_event(event) {\n",
           "        return fig.key_event(event, event['data']);\n",
           "    }\n",
           "\n",
           "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
           "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",