{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "bccf0de3", "metadata": {}, "outputs": [], "source": [ "%matplotlib notebook\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation" ] }, { "cell_type": "code", "execution_count": 2, "id": "edacdae9", "metadata": {}, "outputs": [], "source": [ "framerate = 20\n", "time = 20\n", "dt = 1/framerate\n", "\n", "sigma = 0.1\n", "m = 1\n", "h = 1\n", "\n", "waveFunction = lambda x, t: sigma / (np.sqrt(sigma**2+(2j*h*t/m))) * np.exp(-x**2/(sigma**2+2j*h*t/m))\n", "x = np.linspace(-20, 20, 100)" ] }, { "cell_type": "code", "execution_count": 13, "id": "ad249efd", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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1Blj7LY5dcr+CICd8fOhSwIE4gt0dACMz6tDAgSaKSAANlNTLQIEellAAOzl6dt3Ah0mIAB22MC0S4BAWAEBMOxoNEaAwIYCAqBjggABAs0REACb46gKAQItEBAAW4BsEwQI9ISAANgTY7aTBLpDQADsjjnaCwIE2i/QcQEwv3f4mWeeWU8u3wl83nnnbVZzxYoV6XOf+1z6wQ9+kPLdjscff3z65je/mcaOHdv2CcyePTt96UtfSrfffntasGBB/XaFT3ziE+mf//mf09ChQzfbX34H8x133LHen//d3/1duuaaa9qyT1dffXX/+6KnTZuWrrzyynT44Ydvtpf8vugLLrig/33RX/3qVwf1vuiSO5mPpxtuuCE9/vjjadiwYekd73hHyv3tv//+m91sfhf2aaedtt6f5zvT87EXYbnooovSxRdfvF4reX/yPm5uiTgjATDC0aQHAgS6QaAjA+CnP/3p9Ld/+7f9/vmVcTvttNNm5/GZz3wm3XLLLSn/ks4vrz/jjDPqV1jdddddbZ/hbbfdlq677rp08sknp3333Tc98sgj9b598pOfTF//+te3GAD322+/9MUvfrF/neHDh6eRI0e2fJ9y/6ecckodPo844oh0xRVXpBweZs2alcaMGbNRP3fffXc6+uij60f4nHTSSel73/teHbDuv//+NGXKlJb3v+EG3/ve96aPfexj6bDDDktr1qxJ//RP/1TP5bHHHtvscZaPrc9+9rP1PvctVVgJ8ZeM3E8OgNdff336xS9+0d/fkCFD0u67775J76gzEgDb/uOhAQIEukSgIwPgWWedlfJXI8uSJUvSHnvsUYeMD3/4w/W35LMeBx54YLrnnnvSkUce2UiZlq5z2WWXpW9961vp6aef3mIAnD59eh222r3k0JfD0lVXXVW3kt/lPHHixHTmmWdu8szsRz/60fTKK6+km2++ub/1PIe8P+06g7klw+eff74OsvmMaw6um1pyAMzH5OLFi9s9jk1uPwfAG2+8MT3wwAMN9Rd1RgJgQ+OzEgECBAYU6MgAmD9WW716dZo0aVL6+Mc/ns4+++yUz2Zsaskfrb7rXe9KixYtSqNHj+5fZe+9965/Yefvjbacf/75KZ8Z/M1vfrPFAPjoo4+m119/Pe25557pfe97X/2Raj4L2Mpl1apV9Tbz2aWZM2f2b/rUU0+tw9BN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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "line, = ax.plot(x, waveFunction(x, 0))\n", "\n", "def animate(i):\n", " line.set_ydata(waveFunction(x, i * dt / 10))\n", " return line,\n", "\n", "ani = animation.FuncAnimation(\n", " fig, animate, interval=1000/framerate, blit=True, save_count = framerate * time)\n", "ani.save(\"gauss.mp4\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 56, "id": "a7aaae85", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydBXgVR/fGD+7u7h4IGkKAJEBwLbS4tlAoLoXiBA1S3KUFCqW4FIcgwUJwJ0GDB3e3/5lNZrN3772QZDf5ly/vPE+fD+7uzO7+7rns+83MeU+Mz9wIDQRAAARAAARAAARAINoQiAEBGG2+azwoCIAACIAACIAACCgEIAARCCAAAiAAAiAAAiAQzQhAAEazLxyPCwIgAAIgAAIgAAIQgIgBEAABEAABEAABEIhmBCAAo9kXjscFARAAARAAARAAAQhAxAAIgAAIgAAIgAAIRDMCEIDR7AvH44IACIAACIAACIAABCBiAARAAARAAARAAASiGQEIwGj2heNxQQAEQAAEQAAEQAACEDEAAiAAAiAAAiAAAtGMAARgNPvC8bggAAIgAAIgAAIgAAGIGAABEAABEAABEACBaEYAAjCafeF4XBAAARAAARAAARCAAEQMgAAIgAAIgAAIgEA0IwABGM2+cDwuCIAACIAACIAACEAAIgZAAARAAARAAARAIJoRgACMZl84HhcEQAAEQAAEQAAEIAARAyAAAiAAAiAAAiAQzQhAAEazLxyPCwIgAAIgAAIgAAIQgIgBEAABEAABEAABEIhmBCAAo9kXjscFARAAARAAARAAAQhAxAAIgAAIgAAIgAAIRDMCEIDR7AvH44IACIAACIAACIAABCBiAARAAARAAARAAASiGQEIwGj2heNxQQAEQAAEQAAEQAACEDEAAiAAAiAAAiAAAtGMAARgNPvC8bggAAIgAAIgAAIgAAGIGAABEAABEAABEACBaEYAAjCafeF4XBAAARAAARAAARCAAEQMgAAIgAAIgAAIgEA0IwABGM2+cDwuCIAACIAACIAACEAAIgZAAARAAARAAARAIJoRgACMZl84HhcEQAAEQAAEQAAEIAARAyAAAiAAAiAAAiAQzQhAAEazLxyPCwIgAAIgAAIgAAIQgIgBEAABEAABEAABEIhmBCAAo9kXjscFARAAARAAARAAAQhAxAAIgAAIgAAIgAAIRDMCEIDR7AvH44IACIAACIAACIAABCBiAARAAARAAARAAASiGQEIwGj2heNxQQAEQAAEQAAEQAACEDEAAiAAAiAAAiAAAtGMAARgNPvC8bggAAIgAAIgAAIgAAGI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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "ax.set_ylim(0,0.05)\n", "combined = lambda x,t: np.abs(waveFunction(x-1,t) + waveFunction(x+1,t))**2\n", "line, = ax.plot(x, combined(x, 0))\n", "\n", "def animate(i):\n", " line.set_ydata(combined(x, i * dt / 10))\n", " return line,\n", "\n", "ani = animation.FuncAnimation(\n", " fig, animate, interval=1000/framerate, blit=True, save_count = framerate * time)\n", "ani.save(\"combined.mp4\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 61, "id": "07f610ff", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function () {\n", " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert(\n", " 'Your browser does not have WebSocket support. ' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.'\n", " );\n", " }\n", "};\n", "\n", "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent =\n", " 'This browser does not support binary websocket messages. ' +\n", " 'Performance may be slow.';\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message('supports_binary', { value: fig.supports_binary });\n", " fig.send_message('send_image_mode', {});\n", " if (fig.ratio !== 1) {\n", " fig.send_message('set_device_pixel_ratio', {\n", " device_pixel_ratio: fig.ratio,\n", " });\n", " }\n", " fig.send_message('refresh', {});\n", " };\n", "\n", " this.imageObj.onload = function () {\n", " if (fig.image_mode === 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "};\n", "\n", "mpl.figure.prototype._init_header = function () {\n", " var titlebar = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\n", " return false;\n", " });\n", "\n", " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "};\n", "\n", "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", "};\n", "\n", "mpl.figure.prototype.send_message = function (type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "};\n", "\n", "mpl.figure.prototype.send_draw_message = function () {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "};\n", "\n", "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "};\n", "\n", "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "};\n", "\n", "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", " fig.rubberband_canvas.style.cursor = msg['cursor'];\n", "};\n", "\n", "mpl.figure.prototype.handle_message = function (fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "};\n", "\n", "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "};\n", "\n", "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "};\n", "\n", "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Called whenever the canvas gets updated.\n", " this.send_message('ack', {});\n", "};\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function (fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src\n", " );\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig['handle_' + msg_type];\n", " } catch (e) {\n", " console.log(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\n", " }\n", " }\n", " };\n", "};\n", "\n", "// from https://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function (e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e) {\n", " e = window.event;\n", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", "\n", " return { x: x, y: y };\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * https://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys(original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object') {\n", " obj[key] = original[key];\n", " }\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function (event, name) {\n", " var canvas_pos = mpl.findpos(event);\n", "\n", " if (name === 'button_press') {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", " // Handle any extra behaviour associated with a key event\n", "};\n", "\n", "mpl.figure.prototype.key_event = function (event, name) {\n", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", " return false;\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", " if (name === 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message('toolbar_button', { name: name });\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "var comm_websocket_adapter = function (comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(data);\n", " });\n", " return ws;\n", "};\n", "\n", "mpl.mpl_figure_comm = function (comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element;\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error('Failed to find cell for figure', id, fig);\n", " return;\n", " }\n", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable();\n", " fig.parent_element.innerHTML =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", " fig.close_ws(fig, msg);\n", "};\n", "\n", "mpl.figure.prototype.close_ws = function (fig, msg) {\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "};\n", "\n", "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "};\n", "\n", "mpl.figure.prototype.updated_canvas_event = function () {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message('ack', {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\n", " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "};\n", "\n", "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i = 0; i < ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code') {\n", " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel !== null) {\n", " IPython.notebook.kernel.comm_manager.register_target(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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RUARCAUBPb9VAfS08HQBeYJPH1YEFAFFQBFQBEJBQM9vVQA9LTxdQJ7g04cVAUVAEVAEFIFQENDzWxVATwtPF5An+PRhRUARUAQUAUUgFAT0/FYF0NPC0wXkCT59WBFQBBQBRUARCAUBPb9VAfS08HQBeYJPH1YEFAFFQBFQBEJBQM9vVQA9LTxdQJ7g04cVAUVAEVAEFIFQENDzWxVATwtPF5An+PRhRUARUAQUAUUgFAT0/FYF0NPC279/P5111lm0Y8cOypMnj6e29GFFQBFQBBQBRUARSA0CUAALFSpklYE988wzU/NSw96SVrWADcOOtm7dSsWLFzetW9ofRUARUAQUAUVAEXCAwJYtW6hYsWIOfvn3+4kqgB7mFDeHvHnz0vbt2/9RNwi5Of3TLJ867n+WpVvnW+fbw/GQNo/+U9c5PHiFCxemH3/80fLk/RNFFUAPs/5PjSHQce//R7n8db51vj1sk2nzqK5zXedps1h96qgqgB6A1A1DNwwPyydtHtV1rus8bRarh47qOtd17mH5pOWjqgB6mDbdMHTD8LB80uZRXee6ztNmsXroqK5zXecelk9aPqoKoIdpO3r0KA0aNIgeeeQRypkzp4eW0utRHbfOd3qt2OR6q+tc13lyKye9ntJ1/s9a5/bVqQpgen2r2ltFQBFQBBQBRUARUAQ8I6AKoGcItQFFQBFQBBQBRUARUATSCwFVANNrvrS3ioAioAgoAoqAIqAIeEZAFUDPEGoDioAioAgoAoqAIqAIpBcCqgCm13xpbxUBRUARUAQUAUVAEfCMgCqANgh/+OEHuueee2j69Ol04oknUuvWrenZZ5+l3LlzxwT6559/pu7du9PkyZMJ2VQtWrSgUaNGUf78+a1nVq9eTYMHD6aFCxfSd999R0WKFKE777yT7rvvvixtzps3j7p160br1q2z6hP26tWLbrnlFs8T7KSBIMaN99577720aNEiWrt2LZUtW5Y+//zzLN3Ztm0bFS1aNFsXlyxZQrVq1XLSdU+/CWvc6PSaNWvoP//5Dy1fvpzOO+88a9316NHD03icPhzUuFER56677qK5c+da38zNN99sZcmffPLJVtewxhs3bpytm9988w0VKFDAafcd/+7555+nYcOG0e7du+miiy6i5557jmrUqBHz+TfffJN69+5NWJclS5akIUOGUMuWLTN/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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "0.0018184737749986568" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = 9.1093837e-31 # electron mass\n", "t = 1e-7 # 1 s flight time\n", "d = 1e-8 # 1nm distance between slits\n", "h = 1.054571817e-34\n", "\n", "sigma = d/10\n", "zeropoint = np.pi*(sigma**4+4*h**2*t**2/m**2)/(8*d*h*t/m)\n", "\n", "waveFunction = lambda x, t: sigma / np.sqrt(sigma**2+2j*h*t/m) * np.exp(-x**2/(sigma**2+2j*h*t/m))\n", "combined = lambda x,t: np.abs(waveFunction(x-d,t)+waveFunction(x+d,t))**2\n", "x = np.linspace(-10*zeropoint, 10*zeropoint, 10000)\n", "plt.plot(x, combined(x, t))\n", "zeropoint" ] }, { "cell_type": "code", "execution_count": null, "id": "841cd99b", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.4" } }, "nbformat": 4, "nbformat_minor": 5 }