{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Azimuthal averaging in log-scaled bins\n",
    "\n",
    "PyFAI has been optimized for histogramming data on uniform bins. \n",
    "Neverthless one can perform this histogramming in a different space. \n",
    "This cookbook explains how to choose the proper radial unit. \n",
    "\n",
    "First of all we will generate an image with some realistic noise and integrate it. \n",
    "Then we will observe the effects of the output space and finally we will create our own output space.\n",
    "\n",
    "## Guinier-like scatterer image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib nbagg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#import ipympl\n",
    "from matplotlib import pyplot as plt\n",
    "import numpy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyFAI, pyFAI.azimuthalIntegrator\n",
    "from pyFAI.gui import jupyter\n",
    "det = pyFAI.detector_factory(\"Pilatus100k\")\n",
    "ai = pyFAI.azimuthalIntegrator.AzimuthalIntegrator(dist=1, detector=det)\n",
    "ai.wavelength=1e-10\n",
    "q = ai.array_from_unit(unit=\"q_nm^-1\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Guinier-like scatterer\n",
    "I = 1e6*numpy.exp(-q**2/2)\n",
    "#Add some noise to make it look real\n",
    "Y = numpy.random.poisson(I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\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",
       "        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 = $(\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\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\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 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 = $(\"#\" + 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",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\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>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAJACAYAAAA6rgFWAAAgAElEQVR4nOydaZgV1bm2F9BN9+5magZpZGgmQQREUCCAICDIKCKDNpM4IIiIQ0IrahRPCESjUXGIAjEmoiiaRPSYxNmIGkVEE4N6eSQhKonBnO8g4AAGeL8f3XtTu/ZaVWtVrbWq9q7nvq71w22DndPXidx53+d9GAEAAAAAAAASA4v6GwAAAAAAAADYAwIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAAAAACQICAAAAAAAAAAJAgIAAAAAAABAgoAAAAAAAAAAkCAgAAAAAIRUVVVRVVVV4r8HAAAoJCAAAABgkYMHD9KaNWto2LBhVFFRQUVFRdSqVSvq3bs3XXDBBfTEE09Y/X5OOeUUYkz8rwIbf/iOw/cAAABJAgIAAACWOHjwII0dO5YYY9SsWTOaNWsWXXXVVXTFFVfQaaedRqlUioYMGWL1e4rDH779voft27fT9u3bjX4PAACQJCAAAABgiXXr1hFjjPr06UNffPFFzt//6quv6MUXX7T6PeWDAAAAANAL/hsXAAAssXDhQmKM0W233eb7tffeey8xxuiGG27g/v3PPvuMioqKqFevXpnPli1bRowxeumll+ixxx6j/v37UyqVooqKCjr77LNp586dma/dsWMHMca475RTTsl8XVoAvvzyS1qyZAm1b9+eGjZsSF26dKEbb7yRDh8+zP3+3njjDZo6dSq1bt2aiouLqV27djR//nz6xz/+Efh74PHII4/QyJEjqaKigkpKSqiqqoqqq6tpy5Ytvv83BgCApAIBAAAAS3z/+98nxhgtXLjQ92v37dtHTZo0ofbt29PBgwdz/v6KFSuIMUZ33nln5rO0AEyfPp1KSkpo+vTptGTJEho6dCgxxujYY4+l/fv3ExHR7t27admyZVRVVUWMMVq2bFnm3X///Znfs6qqio4++mgaMmQIderUiebPn08XX3wxHX300UJBue+++6hBgwZUVlZG1dXVVFNTQ5MnT6b69etTmzZt6OOPP1b+HtwCcPjwYZo7dy4xxqhly5Z0wQUX0NKlS2n27NnUtm1bWrZsme//jQEAIKlAAAAAwBJvv/02FRcXU7169Wj27Nn061//mv7+978Lv37RokXEGKP//u//zvr88OHD1KlTJyorK8taJUoLQOPGjendd9/N+jUzZswgxhht2LAh63OZFSDGGI0bN46+/vrrzOe7du2ipk2bUtOmTenbb7/NfP7hhx9ScXExdenSJWviQET0/PPPU/369Wny5MnK34NbAFavXk2MMerfv3/OOtXBgwfpn//8p/D3AwCApAMBAAAAi2zYsIEqKyuz1l2aN29OkydPpieffDLra7dt20aMMZo4cWLW508//TQxxui8887L+jwtANdee23OP/fFF18kxhh973vfy/pcVgA++uijnL93zjnnEGOM/vKXv2Q+u/zyy4kxRk899RT395s8eTI1aNCA9u7dq/Q9uAWgV69exBijt99+W/jrAAAA8IEAAACAZb799lt65pln6LrrrqOJEydSs2bNMjJwzjnnZO3VDxs2jBo0aECffPJJ5rMpU6YQY4w2b96c9fumBeDxxx/P+Wd+9NFHxBij888/P+tzmT98N23alPv3rr32WmKM0aZNmzKfDRw4kBhjVFNTk7XSk36DBw8mxhi99dZbSt+DUwC+/PJLYoxR69athb8GAACAGAgAAABEzMGDB2nDhg1UXl6e8wf4Rx55hBhjdP311xPRkfDvCSeckPP7OEPAbtKB27lz52Z9HuYKEO+f17VrV2Gw1/n+8Ic/BP4edu7cSYwx6tevn/DXAAAAEAMBAACAmJAOCS9evDjz2bfffkutW7emtm3b0sGDBzPh33vuuSfn18dBAE488URijNGePXs8/7OG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Z88991zOH3h27txJxcXFtGjRosxnhw8fpqFDh1K7du3o4MGD5v7DFBivvfZazh8S/+d//odKSkpo1qxZmc/ws4kHBw8epD59+lD37t0zn+FnEz1nn302jRw5kk455ZQcARg3bhy1adOG9uzZk/ls7dq1xBijZ555JvMZ/v0EgDoQACBFTU0NNWjQIOu/iImIVq5cSYwx+uSTTyL6zpKDlwAcddRRNH369JzPu3XrRqeeemrmr++++25ijNF7772X9XXr168nxhj+1zIN9OvXj/r165f5a10/m8rKSqqqqjL2fdtk7ty5xBijHTt2WP3nTpw4kVq3bp35a/z/TbS8/PLL1KBBA3r33XdzBGDPnj1UVFRENTU1Wb/mwIED1KhRI7rgggsyn+HfTwCoAwEAUowaNYp69OiR8/nzzz9PjDHubi3Qi0gAdu7cSYwxuummm3J+zezZs6l58+aZv543bx6Vl5fT4cOHs75u+/btxBijO+64w8j3ngQYY1mvfv36mdxGdXV1zter/myaN28OAVDkyy+/pH//+9+0fft2uvXWW6lBgwY0c+ZMIsL/30TNwYMH6fjjj6cFCxYQEeUIwKuvvkqMMdqwYUPOrz355JOzJBv/fgJAHQgAkKJnz540cuTInM/fe+89YozRvffeG8F3lSxEApD+/IEHHsj5NTU1NcQYo/379xMR0YQJE6hz5845X/fVV18RY4yWLl1q5HtPAs4//E+aNImuueYaGjFiROazK664IuvrVX82CxYsoO3bt1v5z2Kaf/7zn/TBBx/Qt99+a/Sfs2DBgiwhmzZtGv3f//0fEeH/b6LmrrvuoqZNm2YC124BeOyxx4gxRps2bcr5tdOnT6fKysrMX+PfTwCoAwEAUnTu3JnGjRuX8/lf//pXYozRbbfdFsF3lSxEArBp0ybh/1J23XXXEWOMdu/eTUREI0eO5P4vZYcOHSLGGF122WVGvvckkP6D5qBBgzI74emfTb169ahevXpZ/4s3fjbm+eCDD+i5556jX/7ylzRhwgQ688wz6V//+hcR4f9vouR///d/qXnz5nTLLbdkPnMLwAMPPECMMdq8eXPOr58zZw41bdo089f49xMA6kAAgBT4X1iiBxOA+PLZZ59lBOAf//hH5vP0z+boo48mxhg9+uijmb+X/tkMGTKEmjRpQvXr16fi4mJauXJl5udF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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(2)\n",
    "jupyter.display(I, ax=ax[0], label=\"Synthetic\")\n",
    "jupyter.display(I, ax=ax[1], label=\"Poissonian \")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\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",
       "        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 = $(\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\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\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 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 = $(\"#\" + 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",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\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>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAJACAYAAAA6rgFWAAAgAElEQVR4nOzdeVhU9f4H8C+L4K64JJqK+5KZpqlpvxLNtLSbWVmWXe1227y2WaiVtxlwwg3XXNGKbqV1b90krTT1Zm6sAioCiSKCCoIoOwwwM+/fH8WRcViPzHxh5v16nvM81zNnzvkMfm5+3sxZBIiIiIiIyGEI2QUQEREREZHtMAAQERERETkQBgAiIiIiIgfCAEBERERE5EAYAIiIiIiIHAgDABERERGRA2EAICIiIiJyIAwAREREREQOhAGAiIiIiMiBMAAQERERETkQBgAiIiIiIgfCAEBERERE5EAYAIiIiIiIHAgDABERERGRA2EAICIiIiJyIAwAREREREQOhAGAiIiIiMiBMAAQERERETkQBgAiIiIiIgfCAEBERERE5EAYAIiIiIiIHAgDABERERGRA2EAICIiIiJyIAwAREREREQOhAGAiIiIiMiBMAAQERERETkQBgAiIiIiIgfCAEBERERE5EAYAIiIiIiIHAgDABERERGRA2EAICIiIiJyIAwAREREREQOhAGAiIiIiMiBMAAQERERETkQBgAiIiIiIgfCAEBERERE5EAYAIiIiIiIHAgDABERERGRA2EAICIiIiJyIAwAREREREQOhAGAiIiIiMiBMAAQERERETkQBgAiIiIiIgfCAEBE1IDMnj0bQggkJyfLLqVRGjt2LITgP21ERNXhfyWJiAB8++23eP311/F///d/aNWqFYQQmDlzZpXbHzx4EEIIs6VZs2bw9PTE/fffDx8fH0RHR9e5jvoKAEFBQRBCICgo6Jb209DU9PNhACAiqhn/K0lEBGDIkCEQQqBly5YYMGBArQOAl5cXtFottFot3n//fbz00ksYNmyYEgqee+455Ofn17qOtLQ0JCQkoLS09JY+j6MGgJSUFCQkJNi2KCKiRoYBgIgIwK+//orExESYTCZluK9NABg7dmylr8fExGDw4MEQQuDhhx+2UtVVc9QAQERENWMAICK6SX0EAADIyMhAx44dIYTAzp07a3Xsygbc5ORkCCEwe/ZsJCcn45lnnkH79u3h7u6O4cOHY/fu3Wb7KD8NprKl4n7LysqwceNGjBo1Cq1atUKzZs0wdOhQrF+/Hkaj0aI2k8mEtWvXYuDAgXB3d0eXLl0wd+5c5OTk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p06ddNFFF5kuJeLccccd6t27t6655hoCQBCUBoA5c+aYLgWoEAEgTA0fPlxRUVHKzc31Wz9u3DhZlqVdu3YZqiwyEQBqhi5duqhLly6my4hYN910k84991zTZUSU5cuXKyoqShs3biQABMnJAeDHH39UYWGh6ZKAAASAMNWnTx917NgxYP2yZctkWRbn4gYZAcC8kpISnXfeebr++utNlxIxjh49qpycHH333Xd68cUXFRUVpbvuust0WRGjqKhIl19+uYYOHSpJBIAgKQ0ADRs2lGVZioqKUq9evbR27VrTpQE2AkCYSkxMVO/evQPWb968WZZlKTU11UBVkYsAYN6sWbNkWZZef/1106VEjKFDh9oXP9auXVu33XabfvjhB9NlRYxXXnlFjRo10oEDByQRAILl888/14ABA/T6669r/vz5Gj9+vJo2bap69eppw4YNpssDJBEAwla7du3Ur1+/gPUZGRmyLEuTJ082UFXkIgCYtWXLFsXGxqpHjx4qKioyXU7E2LJli5YuXaq///3v+u1vf6tbb71V+/fvN11WRDh48KDi4uL0/PPP2+sIAOZs375d9evXV9++fU2XAkgiAIQtjgDULAQAc7KystSuXTu1bt1ae/fuNV1ORLvuuuvUtWtXlZSUmC4l7D344IPq0KGD38XwBACzBg0apLp16/JHCNQIBIAwxTUANQsBwIwjR47oiiuuUFxcnDZv3my6nIiXlpYmy7K0detW06WEtW3btql27dp6+eWXlZmZaS/du3fXhRdeqMzMTB06dMh0mRFn+PDhsiwr4OYcgAkEgDCVlJRU7l2Axo4dy12ADCAABJ/X61XPnj0VExOjlStXmi4HkqZMmSLLsrR69WrTpYS1yh5EVbo88sgjpsuMOAMGDFC9evVUXFxsuhSAABCuVq1aFfAcAJ/Ppw4dOqh79+4GK4tMBIDgKioq0u9+9zu5XC4tWrTIdDkRJzs7O2BdQUGBunTpovr16ysvL89AVZEjJydHc+fODVgSExPVpk0bzZ07Vxs3bjRdZtgqvej6ZF999ZXq1Kmj3/3udwYqAgIRAMLYwIED5XK5NHz4cKWlpemqq66Sy+XS8uXLTZcWMaZOnaqUlBQNGzZMlmWpf//+SklJUUpKio4cOWK6vLD1yCOPyLIs3XzzzQFP4pw1a5bp8sLe73//e/Xu3VvJycn2k5gvvvhiWZalF154wXR5EYtrAILj2muv1Y033qhnn31WM2bM0KOPPqqYmBg1atRI33zzjenyAEkEgLDm9XqVlJSk+Ph4RUdHq2vXrlq8eLHpsiJKQkJChYfgMzMzTZcXtq655ppKT39A9Zo9e7b69Omjc889Vy6XS02aNFGfPn00f/5806VFNAJAcLz00kvq1q2b4uLi5HK51LJlS919993avn276dIAG/9PCAAAAEQQAgAAAAAQQQgAAAAAQAQhAAAAAAARhAAAAAAARBACAAAAABBBCAAAAABABCEAAAAAABGEAAAAAABEEAIAAAAAEEEIAAAAAEAEIQAAAAAAEYQAAABACJg2bZo6d+4sl8slj8djuhwAIYwAAABACJg7d67mz5+vO+64gwAA4IwQAACgGsycOVOWZSkzM9N0KTiFiRMn6qKLLlJxcbHpUk7L0KFDyw0A06dPV+vWreXz+YJfFICQQgAAEFQbN27UgAED1KZNG0VHR6tVq1bq06ePXn755Wr5vM8//1wej0eHDx+u0mtnKhIDQHXuz+qSm5uruLg4vfHGG6ZLOW0VBQCv16tzzz1XL730UvCLAhBSCAAAgubzzz9X3bp11aFDB6WkpOjVV1+V2+3W9ddfr/bt21fLZ06aNKnCQbyy185UUVGRvF6vSkpKzvp711TVuT+ry+TJkxUbGyuv12u6lNNWUQCQpBEjRighISGi+g5A1REAAATNjTfeqObNm5f7F+Ls7Oxq+UwTAeDo0aNn9f1CRXXsz+rel5dffrnuvvvuav2MU/nVr34ly7LKXUaNGhWwfWUBYN26dbIsSx9++GE1Vw0glBEAAATNRRddpF69ep3Wtnv27NH999+vli1bqm7durrgggv04IMP6vjx45KknTt3atiwYbrwwgtVr149xcXF6bbbbvMbPj0eT7lDVWZmZqWvlX7+fffdpxYtWqhu3bq65JJL9PrrrwfUWfo+mzdv1p133qnGjRvriiuuKPcUoNJtt2/frnvvvVeNGjVSbGysBg8erGPHjgW898cff6wrr7xS0dHRateunVJTU+33qMicOXNkWZY++eSTgNdSU1NlWZY2bdrkt59P53ue6ndyqv25YcMG3XDDDTrnnHPUoEED9e7dW1988cVp7ctTmT17tjp16qTo6GhdeOGFmjt3rgYNGqRLLrmk0p/bsWOHLMvS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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "jupyter.plot1d(ai.integrate1d(I, 500),ax=ax, label=\"Synthetic\")\n",
    "ax.plot(*ai.integrate1d(Y, 500), label=\"Poissonian\")\n",
    "ax.legend()\n",
    "ax.semilogy()\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Selection of the log-space rebinning\n",
    "\n",
    "In this section we see how to switch to log-scale at the integration level (and revert back to q_nm^-1 for plotting).\n",
    "\n",
    "PyFAI does not like negative radial units. Hence log(q) has to be prohibited. I would recommend the $arcsinh$ functions which is a well behaved function from R -> R with a slope at the origin of 1 and a log-scale behaviour."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\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",
       "        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 = $(\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\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\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 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 = $(\"#\" + 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",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\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>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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q/Iqu+my0UAEAGsIAAYFewCYPn26bDab0tLSmvV71q9fr5NOOkl79+5t1u+xYuLEiercubPKyxu2D3Rr7wkAaAo5ReWaG5euV7/YpEvDar559/JBi/TW11sUseWADh+pMF0yLCIAWEMAMIgA4J8AcPvtt+vJJ5/0em39+vV65ZVXdMUVV+jEE0+UzWbmX4WysjJ16tRJH3/8cYPe39p7AgCscDqdSjhYqI8XJ+m+cStrvXn3/nErNXrRbm3Zny+Hg2U9rQEBwBoCgEEEgOYPAFu2bJHNZtOaNWu8Xg8LC9NJJ52kK6+8UhdccIGxACBJ7733nkJCQhq0xrS19wQANFSV3XUD74B58brhg5p37Lk0LFqvfbFJ38alK6eIJ+62RgQAawgABhEAmj8A/Pe//9Uf/vCHasN1VlaWSktLJUmvvfaaTwEgLCxMISEhTVZjXFycbDablixZUu97W3tPAEBdisurFLX9oN78eov+OGBhjUP/HaOX64MFidqQlqcqu8N0yWhmBABrCAAGEQCqB4BPPvlEF198sU4++WSdffbZevXVV5Wfn1/ts+PHj1eXLl30y1/+UldffbVWrFihm2++WTfffLPX+/7whz/o6aefrrOOpg4ATqdTt9xyi8444wxlZ2e7X6+oqFCPHj3UtWtXHTlyxOszHTt21H//+996v7u19wQAHC+7qEyz1+3VU9PWq1uf+dUG/i69IvXopDWaumKP9h0qMV0u/IwAYA0BwCACgHcACAsLk81m0+23365x48bpP//5j9q0aaOrr75alZWeB61MmDBBNptNN910k8aOHau3335bHTt21HnnnecVAA4cOCCbzaaxY8fWWUdz/AYgNTVVv/71r/Xggw+6X+vVq5dOOOEELV++vNr7b7/9dl155ZX1fndr7wkAkKSswjJ9vjpNj0xaU+Pe/N37LdBLM+P0bVw6N/AGOQKANQQAgwgAngCQk5Ojk08+WXfccYccDs+vbMePHy+bzaZp06ZJcl1FP/3003X11VerqqrK/b7PP/9cNpvNKwAsXrxYNptNP/30U511NNcSoMmTJ8tms2n27Nlat26d2rRpozfffLPG97744os69dRT6z1na+8JAMHrYEGpPluZqocnrq5x6L8yPEa9vtumJYlZKqtkm064EACsIQAYRADwBIAvv/xSNptN8+fP93pPRUWF2rZt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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/mntdirect/_scisoft/users/kieffer/.jupy37/lib/python3.7/site-packages/ipykernel_launcher.py:4: RuntimeWarning: invalid value encountered in log1p\n",
      "  after removing the cwd from sys.path.\n"
     ]
    }
   ],
   "source": [
    "x = numpy.linspace(-10, 10, 1000)\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x, numpy.arcsinh(x), label=\"arcsinh\")\n",
    "ax.plot(x, numpy.log1p(x), label=\"log(1+x)\")\n",
    "ax.legend()\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\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",
       "        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 = $(\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\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\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 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 = $(\"#\" + 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",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\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>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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qlXD66+/joEDB5psu3nzZgiCgCtXrhj9/LnnnsMbb7yBl19+GdOnT0dAQABatWqFJ554Qq/Niy++iEaNGqFOnTqYNWsWli9fjhdffBE1atRAQEAA6tevjwULFmDevHmoVq0amjZtarJfJSkoKIBSqcSYMWMwffp0KJVKqNVqg+26du2KVq1aSdoHETkGBgAispp9+/bByckJTk5O8PLywpQpU7B3717k5+frbTd8+HBUqlQJZ8+eNfiOonubc3NzDT47efIkBEHAr7/+Kq6TcgvQ6NGjUbt2baSmpuqtHzx4MGrUqKG376KidciQIXrbmgoAo0aN0tu2T58+eO655/TW9erVCy4uLkhISBDXxcbGwtnZ2WQAAIAhQ4bgxRdf1CsOExMTUalSJcyePVvScVryd1LS+fzwww9RuXJlxMXFiesePHiAZ555Bu+88464rqRzWZIrV67gySefxIwZM/TWjx8/HoIg6B2rMd999x0EQUBWVpbBZw8ePIAgCHjhhRdw7949cX1UVBQEQcDGjRsBFN66JggCXnrpJTx48EDcbsWKFRAEAR4eHsjIyBDXf/3113jiiSckvanH2FWWDRs2GGz3ySef4Kmnnir19xOR42AAICKrOnPmDPr06QMXFxexiHnhhRcQGhoKANBoNKhevTp69+5t8Xfm5+cjNTUVKSkpePbZZzFp0iTxs9IGAK1Wi2effRaffPIJUlJS9Jaiov7YsWPi9kVFWUREhN53mwoAZ86c0du26FfsokJRrVbjqaeewtChQw363KtXL7MBICQkBIIg4MCBA+K6lStXQhAE3Lhxo9THaenfibHzqVar4eLiYvTX+HHjxqFSpUricZd0LktSFHT+/QBv0S/7wcHBJttPmDABzs7ORj/bu3cvBEHAqlWr9NbHxsZCEARs3boVALB//34IgoA1a9bobffLL79AEATs3LlTb/33338PJycng9Bblnx9fSEIgtHbyoiIAAYAIpJJXl4ezpw5g2nTpqFq1ap48sknce3aNSQlJZX48GNxubm5mDFjBl599VU88cQTer+Kfvzxx+J2pQ0ARb/omlr+/vtvcfuiovXu3bt6320qACQlJRnd9vbt2wB0vz7PnDnToM9fffWV2QCgUqlQo0YNjB07VlzXvn17vfvpS3Oclv6dGDufiYmJEATB4Fd6AFi+fDkEQUBkZKTe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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.geometry:No fast path for space: log(1+q.nm)\n",
      "WARNING:pyFAI.geometry:No fast path for space: arcsinh(q.nm)\n",
      "WARNING:pyFAI.geometry:No fast path for space: arcsinh(q.A)\n"
     ]
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "method=\"splitpixel\"\n",
    "jupyter.plot1d(ai.integrate1d(Y, 500, method=method),ax=ax, label=\"q_nm^-1\")\n",
    "ax.semilogy()\n",
    "x,y = ai.integrate1d(Y, 500, unit=\"log(1+q.nm)_None\", method=method)\n",
    "ax.plot(numpy.exp(x)-1,y*2, label=\"log(1+q.nm)_None\")\n",
    "x,y = ai.integrate1d(Y, 500, unit=\"arcsinh(q.nm)_None\", method=method)\n",
    "ax.plot(numpy.sinh(x), y*4, label=\"arcsinh(q.nm)_None\")\n",
    "x,y = ai.integrate1d(Y, 500, unit=\"arcsinh(q.A)_None\", method=method)\n",
    "ax.plot(numpy.sinh(x)*10, y*8, label=\"arcsinh(q.A)_None\")\n",
    "\n",
    "ax.legend()\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Going to log-scale helps to reduce the noise at high $q$ as on can see in the log(1+q.nm) or arcsinh(q.nm). \n",
    "The maximum value for $q$ is only 0.56${A}$, so after taking the log scale this remain in the linear part of the curve.\n",
    "On the opposite, one would like to histogram on bins with larger numerical values. This is what we will see now. \n",
    "\n",
    "## Creation of a new radial unit\n",
    "\n",
    "Let's create the $arcsinh(q.µm)$ unit. \n",
    "$q$ in inverse micrometer has numerical values 1000 times larger than in inverse nanometer, and should emphathize the curvature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyFAI.units import eq_q, register_radial_unit\n",
    "\n",
    "register_radial_unit(\"arcsinh(q.µm)_None\",\n",
    "                     scale=1.0,\n",
    "                     label=r\"arcsinh($q$.µm)\",\n",
    "                     equation=lambda x, y, z, wavelength: numpy.arcsinh(1000*eq_q(x, y, z, wavelength))) \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\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",
       "        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 = $(\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\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\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 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 = $(\"#\" + 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",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\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>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAJACAYAAAA6rgFWAAAgAElEQVR4nOzdeVyU1eIG8DNArCqogGAqZKbAoICmZtpFrftzB7VccgEX3DIVFPdcEjXNUu/VXMstrVvmcruVpVaa93pN2yzFVBQpdy30orLz/P6wmeadjeGVd95h5vl+PucP3znzvmfGY51n3nPOK0BERERERC5DqN0AIiIiIiKyHwYAIiIiIiIXwgBARERERORCGACIiIiIiFwIAwARERERkQthACAiIiIiciEMAERERERELoQBgIiIiIjIhTAAEBERERG5EAYAIiIiIiIXwgBARERERORCGACIiIiIiFwIAwARERERkQthACAiIiIiciEMAERERERELoQBgIiIiIjIhTAAEBERERG5EAYAIiIiIiIXwgBARERERORCGACIiIiIiFwIAwARERERkQthACAiIiIiciEMAERERERELoQBgIiIiIjIhTAAEBERERG5EAYAIiIiIiIXwgBARERERORCGACIiIiIiFwIAwARERERkQthACAiIiIiciEMAERERERELoQBgIiIiIjIhTAAEBERERG5EAYAIiIiIiIXwgBARERERORCGACIiIiIiFwIAwARERERkQthACAiIiIiciEMAERERERELoQBgIiIiIjIhTAAEBERERG5EAYAIiIiIiIXwgBARERERORCGACIiBxIcnIyhBDIzs5WuylVUnx8PITg/9qIiKzhfyWJiABs374dL774Itq1a4fq1atDCIGBAwdarP/ll19CCCEpPj4+CAkJwVNPPYX09HR89913FW5HZQWAjRs3QgiBjRs3PtB5HE153w8DABFR+fhfSSIiADExMRBCoFq1aoiIiLA5AISFhWHOnDmYM2cOpk+fjpSUFDRv3lwfCgYMGIC8vDyb23H58mWcOnUKRUVFD/R5XDUA5OTk4NSpU/ZtFBFRFcMAQEQE4IsvvsCZM2dQVlamH9zbEgDi4+PNvv7999+jadOmEEKgc+fOCrXaMlcNAEREVD4GACIiI5URAADg2rVrCAoKghACu3btsuna5ga42dnZEEIgOTkZ2dnZ6NevH2rXrg0vLy+0aNEC//rXvyTn0E2DMVcMz1tcXIw33ngDrVu3RvXq1eHj44PY2FisWLECpaWlJm0rKyvD8uXLERkZCS8vL9StWxdjx47FrVu3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cf3N4dqbxfWHvyIAhAj+I2QW198srr9ZXH9zuPZmcf3hrwgAIWL37t0aMWKEdu/ebbqUkMT1N4vrbxbX3xyuvVlcf/grAgAAAAAQQggAAAAAQAghAAAAAAAhhAAAAAAAhBACAAAAABBCCABBLjMzU0OGDFHlypVVsmRJNWnSRB9//LHpskLCoUOHNHz4cLVp00YVKlSQZVmaNWuW6bJCxooVK/Tggw+qbt26ioqKUtWqVdW9e3f9+OOPpksLCampqerWrZuqVaumUqVKqWLFimrevLneffdd06WFpNGjR8uyLMXFxZkuJeh99tlnsiwrz+2bb74xXR4giQAQ9Hr06KHIyEgNGjRISUlJatasmSIjI/XFF1+YLi3obd26VZZl6bLLLlPLli0JAC7r2rWrKlWqpIceekjTpk1TQkKCLrnkEpUuXVrr1q0zXV7Qe//999WmTRuNHDlSycnJmjRpkpo3by7LspSUlGS6vJDy22+/KSoqSqVLlyYAuCA3ADz88MOaPXu217Z3717T5QGSCABBbfny5bIsS88884y9LyMjQzVq1FCzZs0MVhYaMjMztXPnTknSypUrCQAu++qrr3Ts2DGvfZs2bVKJEiV05513GqoqtGVlZal+/fqqXbu26VJCyu23365WrVqpRYsWBAAX5AaAt956y3QpQL4IAEFs8ODBioiI0IEDB7z2jx07VpZl6ddffzVUWeghAPiPRo0aqVGjRqbLCFnt27fXJZdcYrqMkLFkyRJFRERo7dq1BACXnB4ADh48qBMnTpguCfBBAAhirVu3VmxsrM/+xYsXy7IsPovrIgKAf8jOztall16qm2++2XQpIePw4cPau3evfvrpJz3//POKiIhQz549TZcVErKyslSvXj3169dPkggALskNAGXKlJFlWYqIiFDLli21cuVK06UBNgJAEIuLi1OrVq189q9fv16WZSkxMdFAVaGJAOAfZs+eLcuyNGPGDNOlhIx+/frZX4AMDw9Xt27d9Mcff5guKyS89NJLKl++vPbs2SOJAOCWr776Sl27dtWMGTM0f/58jRs3ThUrVlTJkiW1evVq0+UBkggAQa169eq65ZZbfPZv2bJFlmVp4sSJBqoKTQQA8zZu3Khy5cqpWbNmysrKMl1OyNi4caMWLVqkV155Re3atVPnzp21a9cu02UFvX379ik6OlrPPvusvY8AYM7mzZtVqlQptWnTxnQpgCQCQFDjHQD/QQAwa+fOnapevbqqVq2qtLQ00+WEtL///e9q3LixsrOzTZcS1O6//37VrFnT64vwBACzevTooeLFi/MCBPwCASCI8R0A/0EAMCc9PV0NGjRQdHS01q9fb7qckJeUlCTLsvTDDz+YLiVobdq0SeHh4XrxxRe1detWe2vatKlq1aqlrVu36vfffzddZsgZPHiwLMvyuTEHYAIBIIgNGjQoz7sAjRkzhrsAuYwAYEZGRoaaN2+uqKgoff3116bLgaRJkybJsiwtX77cdClB60wLUeVuAwYMMF1myOnatatKliypkydPmi4FIAAEs2XLlvmsA5CZmamaNWuqadOmBisLPQQA92VlZSk+Pl6RkZF6//33TZcTcnbv3u2z7/jx42rUqJFKlSqlQ4cOGagqNOzdu1dz58712eLi4nTZZZdp7ty5Wrt2rekyg1bul65P991336lYsWKKj483UBHgiwAQ5Lp3767IyEgNHjxYSUlJuvbaaxUZGaklS5aYLi0kTJ48WQkJCerfv78sy1KXLl2UkJCghIQEpaenmy4vqA0YMECWZalDhw4+q3HOnj3bdHlBr1OnTmrVqpVGjhxpr8Rcp04dWZal5557znR5IYnvALjjxhtv1K233qrRo0crOTlZjzzyiKKiolS+fHlt2LDBdHmAJAJA0MvIyNCgQYNUqVIllShRQo0bN9bChQtNlxUyYmJi8n0LfuvWrabLC2otWrQ440cgULTmzJmj1q1b65JLLlFkZKQqVKig1q1ba/78+aZLC1kEAHe88MILatKkiaKjoxUZGanKlSvrrrvu0ubNm02XBtj4/4IAAABACCEAAAAAACGEAAAAAACEEAIAAAAAEEIIAAAAAEAIIQAAAAAAIYQAAAAAAIQQAgAAAAAQQggAAAAAQAghAAAAAAAhhAAAAAAAhBACAAAAABBCCAAAAASAKVOmqGHDhoqMjNSIESNMlwMggBEAAAAIAHPnztX8+fN1++23EwAAnBMCAAAUgVmzZsmyLG3dutV0KTiLCRMmqHbt2jp58qTpUgqkX79+eQaAqVOnqmrVqsrMzHS/KAABhQAAwFVr165V165dddlll6lEiRKqUqWKWrdurRdffLFIzvfVV19pxIgR2r9/f6EeO1ehGACK8noWlQMHDig6OlozZ840XUqB5RcAMjIydMkll+iFF15wvygAAYUAAMA1X331lYoXL66aNWsqISFB06ZN0/Dhw3XzzTerRo0aRXLOZ555Jt9B/EyPnausrCxlZGQoOzv7vD+3vyrK61lUJk6cqHLlyikjI8N0KQWWXwCQpCFDhigmJiak+g5A4REAALjm1ltv1UUXXZTnK8S7d+8uknOaCACHDx8+r88XKIriehb1taxXr57uuuuuIj3H2Vx33XWyLCvPbdiwYT7HnykAfPvtt7IsS5988kkRVw0gkBEAALimdu3aatmyZYGO3b59u/r06aPKlSurePHiuvzyy3X//ffr2LFjkqRt27apf//+qlWrlkqWLKno6Gh169bNa/gcMWJEnkPV1q1bz/hY7vl79+6tiy++WMWLF1fdunU1Y8YMnzpzn2f9+vW64447dMEFF6hBgwZ5fgQo99jNmzfrnnvuUfny5VWuXDn16tVLR44c8Xnuzz77TFdddZVKlCih6tWrKzEx0X6O/Lz11luyLEuff/65z2OJiYmyLEvr1q3zus4F+T3P9jc52/VcvXq12rZtq7Jly6p06dJq1aqVvvnmmwJdy7OZM2eO6tevrxIlSqhWrVqaO3euevToobp1657x537++WdZlqWUlJQ8H2/ZsqWaN2+uVatWqW3btipTpoyqVKmiSZMmeR3XunVrXXPNNfr666/VokULRUVFqUaNGnr//fclSe+//76aNm2qqKgo1a9fX99+++1Zf6czOVMAkKTo6Gg9/PDD53QOAMGNAADANTfffLPKli3rNYDmJS0tTVWqVFFUVJQeeeQRJSYm6qmnnlJsbKz97sFbb72l+vXra/jw4UpOTtYTTzyhChUqKCYmxh6mv//+e91xxx2yLEsTJ07U7NmzNXv2bB0+fPiMj+3atUt/+9vfVLVqVT399NOaOnWq4uPj7WNPlzu01q1bVx07dtSUKVP08ssvnzEANGzYUF26dNGUKVPUt29fWZalIUOGeD3v6tWrVaJECV1++eUaP368xowZoypVqqh+/fpnDABHjx5VmTJl9MADD/g8duONNyouLs7+d2F+z7P9Tc50PVNTU1W6dGlVrlxZCQkJGj9+vKpVq6YSJUpo2bJlZ72WZ/L888/Lsix16dJFycnJeuihh1SmTBlVq1ZNt9122xl/9rXXXpNlWVq7dm2ej1esWFFXXnmlqlSp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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:pyFAI.geometry:No fast path for space: arcsinh(q.µm)\n"
     ]
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "method=\"splitpixel\"\n",
    "jupyter.plot1d(ai.integrate1d(Y, 500, method=method),ax=ax, label=\"q_nm^-1\")\n",
    "ax.semilogy()\n",
    "x,y = ai.integrate1d(Y, 500, unit=\"arcsinh(q.nm)_None\", method=method)\n",
    "ax.plot(numpy.sinh(x), y, label=\"arcsinh(q.nm)_None\")\n",
    "x,y = ai.integrate1d(Y, 500, unit=\"arcsinh(q.A)_None\", method=method)\n",
    "ax.plot(numpy.sinh(x)*10, y, label=\"arcsinh(q.A)_None\")\n",
    "x,y = ai.integrate1d(Y, 500, unit=\"arcsinh(q.µm)_None\", method=method)\n",
    "ax.plot(numpy.sinh(x)/1000, y, \".\", label=\"arcsinh(q.µm)_None\")\n",
    "\n",
    "ax.legend()\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\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",
       "        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 = $(\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\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\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 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 = $(\"#\" + 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",
       "        event.shiftKey = false;\n",
       "        // Send a \"J\" for go to next cell\n",
       "        event.which = 74;\n",
       "        event.keyCode = 74;\n",
       "        manager.command_mode();\n",
       "        manager.handle_keydown(event);\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>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot(numpy.sinh(x)/1000)\n",
    "ax.semilogy()\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Nota:* Expressing q in $µm^{-1}$ heavily distorts the curve in the low $q$ region, causing an oversampling near $q=0$. A factor 10 to 100 would have been better than the 1000 used in this example.\n",
    "\n",
    "## Conclusion\n",
    "\n",
    "We have seen how to perform azimuthal integration with variable bin-size in pyFAI, especially in the context of SAXS where it is desirable to have larger bins at large $q$ values to reduce the noise in this region."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.7 local venv",
   "language": "python",
   "name": "python3.7"
  },
  "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.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
