Skip to content

Instantly share code, notes, and snippets.

@tirinox
Last active June 23, 2021 10:17
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save tirinox/c3246c4b8f62c9aab75034427e0fc49a to your computer and use it in GitHub Desktop.
Демонстрация анимаций в Jupyter Notebook
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Плавное появление графика"
]
},
{
"cell_type": "code",
"execution_count": 44,
"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\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the 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,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAgAElEQVR4Xu2dB5gV1f2/X3pZel3agnTpsLDYYsGfAdGoWFBRLMQ/0QQTTYhGjdGYoEaNii1iQaxYEWtQUbErLL13lt47S1t2/88Zh2Sz7u69s3vv3nPmfuZ59kH3zpz5zvs5u+/OzJkz5dAiAiIgAiIgAg4SKOdgzSpZBERABERABJDA1AlEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJGCDwFoALwCpQC7wFDC6AE1Tp/neQCAbuAqY4SRxFS0CIiACIhATAjYIrAlgvoyQagLTgfOABfmO0Ijrel9gfX2ZmX+1iIAIiIAIJCkBGwRWEP07wGPAJ/k+GANMAcb731sMnApsSNLcdNgiIAIikPQEbBNYK+BLoAuwO1867wP3Al/73/sUuBnITPoEBUAEREAEkpSATQKrAXwBjAImFMjjA+CeAgK7yb/cmH/V4YD5IiUlJb1jx45JGqsOWwREQARKRmD69OlbgYYl27pst7JFYJUAc5b1EfBgIQgCX0JMT0/Py8zUCVrZdiftTQREwHUC5cqVM+MQertwHDYIzNTwPLAduKEIaGcBI/IN4ngEyCgOsATmQvdTjSIgArYRkMCCJXIS8BUw1x9Gb7a+FUjzm3kSMJIzAzsG+MPor450/0sCCxaC1hYBERABQ0ACs6AfSGAWhKASREAEnCMggVkQmQRmQQgqQQREwDkCEpgFkUlgFoSgEkRABJwjIIFZEJkE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ZgJt88ojM0jFXKYyf2hcnpBq4rdT88YLc5/Z5azMnLNGYOaPXbP8DPgTcFb8sCW25TAKrKRTTyU2ich7D9sZmOl75r7KduCGyIfvxBpmAtTD/k3zasDH/nvujKTDsITpDMwMtinvj0I0/23uvd4FTHI8KDOAw0x8vth/DZU5tj86fkxFlh9GgZmDLcnUUzZnPN6/fGNmmN7kD81+1uaCo6jtJH+01FzADKM3y63Ah1Fsa+sq3Xwpm/tg5pfj6/4vRVvrDVpXmARmBjqYS7xmMX/0vhLlFHVBmZX1+uY+mHlrvRmBuMJ/y725zxfKJawCC2VYOigREAEREIH/EpDA1BtEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEZDA1AdEQAREQAScJCCBORmbihYBERABEfj/lf1O5KmCAGIAAAAASUVORK5CYII=\" width=\"432\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import animation\n",
"import numpy as np\n",
"\n",
"\n",
"t = np.linspace(0, 2 * np.pi, 200)\n",
"x = np.sin(t)\n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.axis([0, 2 * np.pi, -2, 2])\n",
"l, = ax.plot([], [])\n",
"\n",
"def animate(i):\n",
" l.set_data(t[:i], x[:i])\n",
" \n",
"fps = 30 # frame per sec\n",
"\n",
"ani = animation.FuncAnimation(fig, animate, frames=len(t), interval=1000.0 / fps)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Пляшушяя синусоида"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the 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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lhrXbO4I1K1b15qQZVWBzTcBsTMJdZHkBdVkC13e3bhx41q1le1/I8fABOrVq2clItnjx8nsbgI5cuSAsJKPNNWEmayiSnYwmzcE6AC64CixHJKKLgHRqskqgmzJMQlEHygdQH1WcqRs+4rzJ9I5CxYssOL/2NwTqFOnDrJly4Zx48a5P0ks73np0iUcPHgw0l22bdsWBQsWtCQ6GHuqbwDiLMsHR8eOHS0JIjb/BJ555hnI6rM9vKVLly5YuXJlpFVBMjQjQAfQBT8lAzNq1ChrG3j06NH46quvrNgO+XJh809AsgkleUGapPkPHTrUSvWXAHNK6AS2HAmClri1KVOmRNL+kyBz0QVk809AtOtE808cPnFqJK7t/fffR3h4uLXSwKZPgFvAeqzeeustNGnSxPpdO3XqlLV6JSEHEovKeSIwQ9nqlRj7vn37WtJDEgMoCSAy1z777LN6D4BHBSVABzAoIt8HyOrfhx9+aIkZy1ewZMdRiiM4TFm5EocvapMsQ67EBOYnK6a+2tixY9GmTZvg8B/gI0TqZe7cudb7Kg5z8eLFrRUsOn/OjYIOoB4z0eyUMI3Tp09b2n8VK1ZE//79GXOqhw9//vknunfvjt27d1uhLhI3ySxgTXiah9EB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0CdAB1ATFw0iABEiABEiABEggthCgAxhbniTvgwRIgARIgARIgAQ0Cfw/E2OaSzvzBWAAAAAASUVORK5CYII=\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def animate(i):\n",
" x = np.sin(t - i / len(t) * np.pi * 2) * np.sin(t * 15)\n",
" l.set_data(t, x)\n",
"\n",
"ani = animation.FuncAnimation(fig, animate, frames=len(t), interval=1000.0 / fps)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Анимация 3D"
]
},
{
"cell_type": "code",
"execution_count": 48,
"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\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the 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=\"432\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib notebook\n",
"\n",
"from mpl_toolkits.mplot3d import Axes3D \n",
"from matplotlib import cm\n",
"\n",
"# сделаем сетку\n",
"X = np.arange(-5, 5, 0.25)\n",
"Y = np.arange(-5, 5, 0.25)\n",
"X, Y = np.meshgrid(X, Y)\n",
"\n",
"# значение Z - синус квадрата расстояния\n",
"R = np.sqrt(X**2 + Y**2)\n",
"Z = np.sin(R)\n",
"\n",
"# создадим 3д оси\n",
"fig = plt.figure()\n",
"ax = Axes3D(fig)\n",
"\n",
"\n",
"def init():\n",
" # Plot the surface.\n",
" ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,\n",
" linewidth=0, antialiased=False)\n",
" return fig,\n",
"\n",
"\n",
"def animate(i):\n",
" # угл азимау : 0 от градусов до 360 градусов\n",
" ax.view_init(elev=20, azim=i)\n",
" ax.clear()\n",
" \n",
" # заодно добавим жизни графику\n",
" Z = np.sin(R + i / 360 * 2 * np.pi)\n",
" _ = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,\n",
" linewidth=0, antialiased=True)\n",
"\n",
" return fig,\n",
"\n",
"ani = animation.FuncAnimation(fig, animate,\n",
" frames=360, interval=16, blit=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Сохраним в GIFку"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ani.save('myAnimation.gif', writer='imagemagick', fps=30)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment