Skip to content

Instantly share code, notes, and snippets.

@volkanozcan
Created January 17, 2016 23:04
Show Gist options
  • Save volkanozcan/fcd3e01e3a4d6b438cfd to your computer and use it in GitHub Desktop.
Save volkanozcan/fcd3e01e3a4d6b438cfd to your computer and use it in GitHub Desktop.
spiral_var.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "import numpy as np \nfrom PIL import Image \nimport requests,json",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "%matplotlib notebook\nimport matplotlib\nimport matplotlib.pyplot as plt",
"execution_count": 17,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "angle=np.arange(720)*0.09\nx=(1+angle)*np.cos(angle)\ny=(1+angle)*np.sin(angle)",
"execution_count": 18,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "line=plt.plot(x,y,\"-\")\nplt.show()",
"execution_count": 19,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Javascript object>",
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\nmpl.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\nmpl.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 fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n this.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.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 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);\n canvas.attr('height', height);\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_rubberband = function(fig, msg) {\n var x0 = msg['x0'];\n var y0 = fig.canvas.height - msg['y0'];\n var x1 = msg['x1'];\n var y1 = fig.canvas.height - msg['y1'];\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\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.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\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.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.\nmpl.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\nmpl.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 */\nfunction 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\nmpl.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;\n var y = canvas_pos.y;\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\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.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\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.close = function() {\n comm.close()\n };\n ws.send = function(m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function(msg) {\n //console.log('receiving', msg['content']['data'], msg);\n // Pass the mpl event to the overriden (by mpl) onmessage function.\n ws.onmessage(msg['content']['data'])\n });\n return ws;\n}\n\nmpl.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\nmpl.figure.prototype.handle_close = function(fig, msg) {\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 + '\">');\n fig.close_ws(fig, msg);\n}\n\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.figure.prototype.push_to_output = function(remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.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.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/html": "<img src=\"data:image/png;base64,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\">",
"text/plain": "<IPython.core.display.HTML object>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "xt=np.arange(0,1,0.01)",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "siine,=plt.plot(xt,1*np.sin(2*np.pi*xt),\".\")\nplt.xlabel(\"t\")\nplt.ylabel(\"V\")",
"execution_count": 25,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Javascript object>",
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\nmpl.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\nmpl.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 fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n this.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.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 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);\n canvas.attr('height', height);\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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_rubberband = function(fig, msg) {\n var x0 = msg['x0'];\n var y0 = fig.canvas.height - msg['y0'];\n var x1 = msg['x1'];\n var y1 = fig.canvas.height - msg['y1'];\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\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.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\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.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.\nmpl.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\nmpl.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 */\nfunction 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\nmpl.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;\n var y = canvas_pos.y;\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\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.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\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.close = function() {\n comm.close()\n };\n ws.send = function(m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function(msg) {\n //console.log('receiving', msg['content']['data'], msg);\n // Pass the mpl event to the overriden (by mpl) onmessage function.\n ws.onmessage(msg['content']['data'])\n });\n return ws;\n}\n\nmpl.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\nmpl.figure.prototype.handle_close = function(fig, msg) {\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 + '\">');\n fig.close_ws(fig, msg);\n}\n\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.figure.prototype.push_to_output = function(remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.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.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/html": "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4Xu3dDaxtaVkf8P9AnVqUGaWtBmUgNi0OHcXa2KBt1frVi7kj1Rb8CBRs6lc6pK1TtDoqI2gotySTpmGqTVWsFQVbtQao3PoZLaYThZo6ICaKxFHEtEZnFIqDSvPOrKtnLufcs/d+9n73Wuv97WSSyb37WXut3/Osc/537fVxXbwIECBAgAABAgSGErhuqK21sQQIECBAgAABAhEADQEBAgQIECBAYDABAXCwhttcAgQIECBAgIAAaAYIECBAgAABAoMJCICDNdzmEiBAgAABAgQEQDNAgAABAgQIEBhMQAAcrOE2lwABAgQIECAgAJoBAgQIECBAgMBgAgLgYA23uQQIECBAgAABAdAMECBAgAABAgQGExAAB2u4zSVAgAABAgQICIBmgAABAgQIECAwmIAAOFjDbS4BAgQIECBAQAA0AwQIECBAgACBwQQEwMEabnMJECBAgAABAgKgGSBAgAABAgQIDCYgAA7WcJtLgAABAgQIEBAAzQABAgQIECBAYDABAXCwhttcAgQIECBAgIAAaAYIECBAgAABAoMJCICDNdzmEiBAgAABAgQEQDNAgAABAgQIEBhMQAAcrOE2lwABAgQIECAgAJoBAgQIECBAgMBgAgLgYA23uQQIECBAgAABAdAMECBAgAABAgQGExAAB2u4zSVAgAABAgQICIBmgAABAgQIECAwmIAAOFjDbS4BAgQIECBAQAA0AwQIECBAgACBwQQEwMEabnMJECBAgAABAgKgGSBAgAABAgQIDCYgAA7WcJtLgAABAgQIEBAAzQABAgQIECBAYDABAXCwhttcAgQIECBAgIAAaAYIECBAgAABAoMJCICDNdzmEiBAgAABAgQEQDNAgAABAgQIEBhMQAAcrOE2lwABAgQIECAgAJoBAgQIECBAgMBgAgLgYA23uQQIECBAgAABAdAMECBAgAABAgQGExghAH5BktuSfFySD07yAUn++Bp9/pAkdye5OL3vdUmen+T+wWbD5hIgQIAAAQIrFRghAH5WkscleUySb9sgALbA10JiC47N59VJ3pXkc1c6AzaLAAECBAgQGExghAB4paWfmuTHzwmAT0zy9iRPTXLvVNj+/+eTtL/79cHmw+YSIECAAAECKxQQAB/Z1Gck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\">",
"text/plain": "<IPython.core.display.HTML object>"
},
"metadata": {}
},
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.text.Text at 0x269d6b2828>"
},
"metadata": {},
"execution_count": 25
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "plt.show()",
"execution_count": 15,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"hide_input": false,
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"version": "3.5.1",
"pygments_lexer": "ipython3",
"file_extension": ".py",
"codemirror_mode": {
"version": 3,
"name": "ipython"
}
},
"gist": {
"id": "",
"data": {
"description": "spiral_var.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment