{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2017-11-27T22:05:53.048619Z", "start_time": "2017-11-27T22:05:48.068618Z" } }, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(-2, 2)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_0 = 1\n", "y_0 = 1\n", "a = 0.5\n", "an = np.linspace(0, 2 * np.pi, 100)\n", "plt.plot(1 * np.cos(an), 1 * np.sin(an))\n", "plt.axvline(x_0 + a)\n", "plt.axvline(x_0 - a)\n", "plt.axhline(y_0 + a)\n", "plt.axhline(y_0 - a)\n", "plt.ylim(-2,2)\n", "plt.xlim(-2,2)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2017-11-27T22:58:38.735705Z", "start_time": "2017-11-27T22:58:38.198703Z" }, "hide_input": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGrhJREFUeJzt3Xl8VfWd//HX5+ZmXyEJhC2EJeyrBihKcVdU1GoXpZ1W\n60xhqtal7bRaH63t/Oq0HaeOU3WmYqUutW5VFLcqKBUVUcK+L7IGgglLQhay3u/8Qfw9tKOE5J7c\nk5y8n49HHg9u7sk57wPJO4dzvud7zDmHiIgER8jvACIi4i0Vu4hIwKjYRUQCRsUuIhIwKnYRkYBR\nsYuIBEzUxW5mSWb2gZmtMbMNZvYLL4KJiEj7WLTj2M3MgFTnXLWZxQPvADc555Z5EVBERNomHO0K\n3PHfDNUtL+NbPnTXk4iIT6IudgAziwNWAEOB+51z73/GMrOB2QCpqamnjhgxwotNt2pHeQ0Ag3NT\nY7I9Eeke/OiWFStWHHTO5ba2XNSnYj61MrMsYD7wPefc+s9brqioyBUXF3u23RO58oH3AHhqztSY\nbE9Eugc/usXMVjjnilpbztNRMc65CmAxMMPL9YqIyMnzYlRMbsuROmaWDJwHbI52vSIi0j5enGPv\nAzzScp49BDztnHvJg/WKiEg7eDEqZi0w0YMsIiLiAd15KiISMCp2EZGAUbGLiASMil1EJGBU7CIi\nAaNiFxEJGBW7iEjAqNhFRAJGxS4iEjAqdhGRgFGxi4gEjCcP2mirHeU1/38u4462sfQoQMy2JyLd\nQ2fuFh2xi4gEjKdPUDpZeoKSiHR13eYJSiIi4j8Vu4hIwKjYRUQCRsUuIhIwKnYRkYBRsYuIBIyK\nXUQkYFTsIiIBo2IXEQkYFbuISMCo2EVEAkbFLiISMCp2EZGAibrYzWyAmS02s41mtsHMbvIimIiI\ntI8XD9poAn7gnFtpZunACjNb6Jzb6MG6RUSkjaI+YnfOlTrnVrb8uQrYBPSLdr0iItI+np5jN7MC\nYCLwvpfrFRGRk+dZsZtZGvAscLNz7uhnvD/bzIrNrLi8vNyrzYqIyN/xpNjNLJ7jpf64c+65z1rG\nOTfXOVfknCvKzc31YrMiIvIZvBgVY8BDwCbn3N3RRxIRkWh4ccR+OvBN4GwzW93ycZEH6xURkXaI\nerijc+4dwDzIIiIiHtCdpyIiAaNiFxEJGBW7iEjAqNhFRAJGxS4iEjAqdhGRgFGxi4gEjIpdRCRg\nVOwiIgGjYhcRCRgVu4hIwKjYRUQCRsUuIhIwKnYRkYBRsYuIBIyKXUQkYFTsIiIBo2IXEQkYFbuI\nSMCo2EVEAkbFLiISMCp2EZGAUbGLiASMil1EJGBU7CIiAaNiFxEJGBW7iEjAqNhFRALGk2I3s3lm\nVmZm671Yn4iItJ9XR+wPAzM8WpeIiEQh7MVKnHNLzKzAi3WJeMU5x8HqBvYeqaW0oo7SymMcqKzj\nSG0jFbUNVBxrpKa+iYamCPUtHyGDuJARMiMxHCItKUxqQpi0pDA5aQnkpiWSm55I74wkBmankt8z\nheSEOL93VeRTPCn2k2Fms4HZAPn5+bHarHQTdY3NbCw9yrqSSjbsr2R7WTUfltdQeazxU8slxYfo\nmZJAVkoCWSnxZKemkBgfR2I4RHxcCHA0RxzNEahvaqamvonq+ib2Hq5l1Z4KDtXU49ynt907I5Fh\nvdMZ2SeD4b3TGds/k6G5aYRCFru/AJFPiFmxO+fmAnMBioqKXCuLi5zQ0bpGlu88zLIdh3h/52E2\n7D9Kc+T4t1XP1AQKe6Uxc1wfhuSmMTA7hT6ZyfTLSiYjOYxZ+wu3qTnC4ZoG9lfWsedwLXsO1bDz\nYC1bPjrKw0t30dAUASAjKczE/B4UDezBtMIcxvXPIk5FLzESs2IXidaH5dW8sekj3thURvHuIzRH\nHAlxISbkZzFn+mDG9c9iXP9M+mQmRVXeJxKOC9ErI4leGUlMGJD1qfeamiPsPFjD6r0VrNxTwao9\nR7h70VZ+u3ArGUlhTh+aw3mjenPOiN5kpsR3SD4RULFLJ7f3cC0vrt3PgtX72XygCoAReenMmT6Y\nLxbmMjE/i6T4znGOOxwXorB3OoW90/lq0QAADtc08O72g7y9rZy3tpbz6voDhEPG1CHZXDahHxeN\nzSMlQT+G4i1PvqPM7AngTCDHzEqAO5xzD3mxbul+GpoiLNz4EX/+YDfvbj8EwMT8LO64ZBTnj86j\nX1ayzwlPXs/UBC4Z35dLxvclEnGsKangrxsO8Oq6A/zwmTXc8cJ6Lhrbh1lT8jklv4ffcSUgvBoV\nM8uL9Uj3VlHbwGPv7eaR93ZzsLqeflnJfP+8YVw+sR8Deqb4HS9qoZAxMb8HE/N7cOuMERTvPsJf\nikt4eV0pz6woYfyALL59WgEXj+vTciFXpH30f0DxXVlVHb//2w6eXL6H2oZmzhyey9VTC5g+LDew\nFxzNjEkFPZlU0JOfXTKKZ1eW8PC7u7j5qdX8x+tbuO7MoXzl1P4khFXw0nYqdvFNZW0jDyz5kHnv\n7qSx2XHZ+L7MPmMwI/Iy/I4WU6mJYb41tYB/mDKQxVvK+N2b2/nJ/HXc9+Y2fnD+cC6f2E9DJ6VN\nVOwSc80Rx1PL9/Lvr22m8lgjl47vyy3nDqMgJ9XvaL4KhYxzRvbm7BG9WLLtIL99fQs/eGYNf1y6\nk5/NHM3kQT39jihdhIpdYmr9vkpun7+ONSWVTBnUkzsuGc2ovt3rCL01ZsYZw3L54tAcFqzZz2/+\nupmvPfAeV00awG0XjtRQSWmVil1iorE5wv2Lt3Pfm9vpkZrAf101gUvH9+2w8eZBEAoZX5rYjwtG\n5/Ffb2zjwbd3sGhTGb++YiznjurtdzzpxHRlRjrc3sO1fPl/lnLPom3MHNeHRbecwWUT+qnUT1Jy\nQhy3XjiCF64/nV7pifzTo8Xc8cJ66hqb/Y4mnZSO2KVDLd5cxs1PrSbiHP/9jVO4aGwfvyN1WWP6\nZTL/+tP4979u4aF3drJ81xHmfutU+vfo+kNBxVs6YpcO4Zxj7pIP+fbDy+mXlcxL35umUvdAYjiO\nn84cxbxrith7uJYv3f8uxbsO+x1LOhkVu3iuOeL4xYsb+bdXNnPx2D48d91pDMzu3iNevHb2iN7M\nv/500hLDfP3B93l9wwG/I0knomIXTzVHHP/yzBoeXrqL73xxEPfOmthp5nIJmqG90nj++tMZ1TeD\n7z6+kudX7fM7knQSKnbxTCTi+PGza3lu1T5+eP4wbr94lG6s6WBZKQn86Z+mMLmgJ7c8vZqX15b6\nHUk6ARW7eOZXr27iLytKuPncQm44u9DvON1GWmKYeddMomhgD25+ahVLtpb7HUl8pmIXT/xp2W4e\nfHsnV08dyE3nqNRjLTkhjj9cPYkhuWlc9/hKtpdV+x1JfKRil6it3HOEny/YwFnDc/npzFEan+6T\nzOR45l0zicRwiDmPFVNV19j6F0kgqdglKpXHGrnxiVXkZSZxz1UTCWu6WV/1zUrmvq+fwq5Dtfzs\nhQ1+xxGf6KdQovLLlzZSWlnH72ZNJDNZc5h0BlOHZHP9WUOZv2qfhkF2Uyp2abf3dxzimRUlzJ4+\nWE//6WRuOGsoo/pkcPvz66mub/I7jsSYil3aJRJx3LFgA/17JHOjRsB0OgnhEHdePobyqnoeeOtD\nv+NIjKnYpV1eXlfK5gNV/GjGCJITdANSZzQxvweXju/Lg2/voKyqzu84EkMqdmkz5xy/e2Mbhb3S\nuFjzv3Rq3z9vGPVNER5dutvvKBJDKnZps/d2HGJbWTVzzhgS2GeSBkVBTirnj+rNY8t2c6xB0/x2\nFyp2abMnPthLRlKYmeN0tN4VXD21gMpjjSza9JHfUSRGVOzSJnWNzSza+BGXjO+ryb26iCmDs+mV\nnsiCNfv9jiIxomKXNlm24xDHGpv1aLYuJC5kXDgmj7e3ldPQFPE7jsSAil3aZOmHh0gIh5g6ONvv\nKNIGU4dkU9cYYW1Jhd9RJAZU7NIm60oqGZmXrtMwXczkQcd/Ea/cc8TnJBILKnZpk00HjjKqb6bf\nMaSNeqYmkJ2awI7yGr+jSAx4UuxmNsPMtpjZdjO71Yt1SudzrKGZitpG+vdI9juKtENBTio7D6rY\nu4Ooi93M4oD7gQuBUcAsMxsV7Xql8/n47sVe6Yk+J5H2yE5NoKJWU/l2B2EP1jEZ2O6c2wFgZk8C\nlwEbPVi3dCJ1jcdHVKQmevFtI7H2+kaNY+8uvDgV0w/Y+4nXJS2f+xQzm21mxWZWXF6uR3eJiHSU\nmF08dc7Ndc4VOeeKcnNzY7VZ8VB83PHpA+oadWt6VzRjdB6FvdL8jiEx4EWx7wMGfOJ1/5bPScDk\ntpxbL6+q9zmJtEfFsQYy9DCUbsGLYl8OFJrZIDNLAK4CFniwXulk0hLDpCbEsb/imN9RpB12Haxl\nYHaK3zEkBqK+CuacazKzG4DXgDhgnnNOD1sMIDNjeF46m0qr/I4ibVRd38SBo3UMzkn1O4rEgCfD\nG5xzrwCveLEu6dzG9svkLytKaGqO6MHVXUjxrsMAjB+Q5XMSiQX9ZEqbTBmcTU1DMyv3aM6RrmTZ\njsOEQ8apA/Vs2u5AxS5t8sXCHMIh4w3N7d1lOOd4bcMBJhX0JCVB9yB0Byp2aZP0pHimFebwwur9\nNDVrCtiuYP2+o+w8WMOlE/r6HUViRMUubXbVpHwOHK1j8RbdaNYV/GnZbhLDIS4ck+d3FIkRFbu0\n2Tkje5GXkcSDS3bgnPM7jpxAWVUd81ft4yun9icrJcHvOBIjKnZps/i4ENedNYQPdh1m6YeH/I4j\nJ/D7v+2gKRLhH6cN8juKxJCKXdrlykkD6JuZxK9e3URzREftndHOgzU8+t4urpw0gMG5mkqgO1Gx\nS7skhuP4ycUjWb/vKI+9t8vvOPJ3nHPcsWADieEQt5w3zO84EmMqdmm3i8f2YfqwXO56bQu7D+kB\nDp3Jk8v3smRrObdeOIJe6Ul+x5EYU7FLu5kZv7piLOG4EN97YhUNTRr+2BlsL6vily9t5LQh2Xxj\nykC/44gPVOwSlX5Zyfzmy+NYW1LJv760QaNkfHa0rpHZj60gOSGO335tPKGQ+R1JfKBil6jNGJPH\nnOmD+dOyPcx7d5ffcbqthqYI3/vzKnYfquW+r59Cn0w9m7a70v3F4okfzxjB7kO1/PLljeSkJXDZ\nhP/zEC3pQJGI44fPrOGtreX86oqxfGFwtt+RxEc6YhdPhELGf145gSmDenLLU6t5cc1+vyN1G80R\nx63PrWXBmv38aMZwZk3O9zuS+EzFLp5JTohj3jWTKCroyc1PrebJD/b4HSnwGpoi3PjkKp4uLuHG\ncwr57hlD/I4knYCKXTyVkhDmj9dMYtrQHG59bh13v75FF1Q7yJGaBq6e9wEvry3l9otG8v3zhmGm\ni6WiYpcOkJoY5g9XF3Fl0QB+9+Z25jy2gqN1jX7HCpStH1Vx2f3vsmL3Ee7+2ni+M32w35GkE1Gx\nS4eIjwvx6y+P5aczR/Hm5jIuvfcd1u+r9DtWl+ec48/v7+HS+96htqGZJ+d8gStO6e93LOlkVOzS\nYcyMf5w2iCdmf4Hahma+dP+73PvGNs3j3k7lVfVc9/hKfjJ/HZMKevLKTdM4JV9PRJL/S8UuHW5S\nQU9eu3k6F47tw28XbuWK/1nK2hI9Wu9kOed4ungv5979Fm9sKuO2C0fwyLcna6oA+Vwaxy4x0SM1\ngXtnTWTG6Dx+/uIGLrv/XWZNzudfzh9Oj1TNE/551uyt4Jcvb2T5riNMLujJv10xlqG9NFOjnJiK\nXWLq4nF9mD4sh3sWbePhpbt4cfV+vjN9MNdOG0Raor4dP7b7UA3/uXArz6/eT05aAr++YixfKxqg\nKQLkpOgnSWIuPSmen84cxVWTBvAfr2/h7oVbeWTpLq6dNoh/mDKQzJR4vyP6Zkd5Nfct3s4Lq/cT\nDhnXnTmE7545hPSk7vt3Im2nYhffFPZO54FvFrF6bwV3L9zKXa9t4b8Xb2fW5Hy+OXUgA7NT/Y4Y\nE845ln54iD++u5M3NpeRGA5xzWkFzJk+mF4ZOo8ubadiF99NGJDFo9dOZuP+o8xd8iF/XLqLP7yz\nk2lDc/j6lHzOHtGLpPg4v2N6rqyqjudX7eOZ4hK2lVWTnZrADWcN5VtTC8hNT/Q7nnRhKnbpNEb1\nzeCeqyZy20UjeWr5Xp78YA/XPb6S9MQwF4zJ49LxfZk6JJv4uK47mOtITQMLN33Eq+tKWbLtIM0R\nxyn5Wdz1lXFcMr5vIH+BSeyp2KXT6Z2RxI3nFHL9WUN5Z/tBFqzez1/XH+AvK0pITwwzfXguZw/v\nxRcLczr9qQrnHJtKq3h7Wzl/21LOB7sO0xxx9MtKZs70wXz51P4M0fNIxWNRFbuZfRX4OTASmOyc\nK/YilAhAXMg4Y1guZwzL5c7GMby1tZw3N5Xx5pYyXl5bCsDgnFSmDM5mUkEPxvXPZFBOGnE+jhyp\nb2pmw/6jrNx9hFV7Knh/52EOVtcDUNgrjX8+YzAzRvdhTL8MzesiHSbaI/b1wBXAAx5kEflcSfFx\nXDA6jwtG5xGJODbsP8p7Ow6ybMdhXlqznydaZpJMTYhjdN9MhvZOY2huGkN6pTGwZwp5mUmenuao\nqmtkz+Fa9hyqZeehGrYcqGJzaRUfllfTFDk+6Vn/HslMG5rNtMJcpg3NIS+zc//vQoIjqmJ3zm0C\ndOQhMRUKGWP7ZzK2fyazpw+hOeLYXlbNun2VrCupYP3+o7y8tpTKY5+eeCw7NYG8zCR6piaQlZJA\nj5R4UhPDJIZDJIbjiI8znINm52iOOOqbItTUN1FT30RVfRMHq+opr66nvKqeqrqmT627X1YyI/LS\nOWdkL8b2y+SUgT3o3clPE0lwxewcu5nNBmYD5OfrQQDinbiQMTwvneF56Xzl1OMTYjnnOFTTwPay\navYerqW0so7SymOUVtZRUdvI3sO1HKlt5FhDMw0nmLsmNSGO1MQwaYlhctISGZmXwfTCRHpnJDEw\nO4X8nikMzE7ROHPpVFotdjNbBOR9xlu3O+deONkNOefmAnMBioqKNEG3dCgzIyctkZy0xFYfExeJ\nOBqaI9Q3RQjZ8V8UITPi40K+nq8Xaa9Wi905d24sgoj4JRQykkJxGmoogdF1BwSLiMhniqrYzexy\nMysBpgIvm9lr3sQSEZH2inZUzHxgvkdZRETEAzoVIyISMCp2EZGAUbGLiASMil1EJGBU7CIiAaNi\nFxEJGBW7iEjAqNhFRAJGxS4iEjAqdhGRgFGxi4gEjIpdRCRgVOwiIgGjYhcRCRgVu4hIwKjYRUQC\nRsUuIhIwKnYRkYBRsYuIBIyKXUQkYFTsIiIBo2IXEQkYFbuISMCo2EVEAkbFLiISMCp2EZGAUbGL\niARMVMVuZneZ2WYzW2tm880sy6tgIiLSPtEesS8ExjjnxgFbgduijyQiItGIqtidc68755paXi4D\n+kcfSUREouHlOfZrgVc9XJ+IiLRDuLUFzGwRkPcZb93unHuhZZnbgSbg8ROsZzYwGyA/P79dYUVE\npHWtFrtz7twTvW9m1wAzgXOcc+4E65kLzAUoKir63OVERCQ6rRb7iZjZDOBHwBnOuVpvIomISDSi\nPcd+H5AOLDSz1Wb2ew8yiYhIFKI6YnfODfUqiIiIeEN3noqIBIyKXUQkYFTsIiIBo2IXEQkYFbuI\nSMCo2EVEAkbFLiISMCp2EZGAUbGLiASMil1EJGBU7CIiAaNiFxEJmKgmAWuvHeU1XPnAezHZ1sbS\nowAx256IdA+duVt0xC4iEjB2gocedZiioiJXXFwck219/Nv0qTlTY7I9Eeke/OgWM1vhnCtqbTkd\nsYuIBIyKXUQkYFTsIiIBo2IXEQkYFbuISMCo2EVEAkbFLiISMCp2EZGAUbGLiASMil1EJGBU7CIi\nAaNiFxEJGBW7iEjARFXsZvb/zGytma02s9fNrK9XwUREpH2iPWK/yzk3zjk3AXgJ+JkHmUREJApR\nFbtz7ugnXqYCsZ/cXUREPiXqB22Y2Z3At4BK4CznXPnnLDcbmN3ycgywPqoNd245wEG/Q3SgIO9f\nkPcNtH9d3XDnXHprC7Va7Ga2CMj7jLdud8698InlbgOSnHN3tLpRs+KTeQpIV6X967qCvG+g/evq\nTnb/Wn2YtXPu3JPc5uPAK0CrxS4iIh0n2lExhZ94eRmwObo4IiISrVaP2FvxazMbDkSA3cA/n+TX\nzY1yu52d9q/rCvK+gfavqzup/Yv64qmIiHQuuvNURCRgVOwiIgHjW7EHeToCM7vLzDa37N98M8vy\nO5OXzOyrZrbBzCJmFpihZWY2w8y2mNl2M7vV7zxeMrN5ZlZmZoG8f8TMBpjZYjPb2PK9eZPfmbxi\nZklm9oGZrWnZt1+0+jV+nWM3s4yP71w1sxuBUc65k7342qmZ2fnAm865JjP7DYBz7sc+x/KMmY3k\n+AXzB4AfOueKfY4UNTOLA7YC5wElwHJglnNuo6/BPGJm04Fq4FHn3Bi/83jNzPoAfZxzK80sHVgB\nfCkI/35mZkCqc67azOKBd4CbnHPLPu9rfDtiD/J0BM65151zTS0vlwH9/czjNefcJufcFr9zeGwy\nsN05t8M51wA8yfEhvIHgnFsCHPY7R0dxzpU651a2/LkK2AT08zeVN9xx1S0v41s+TtiXvp5jN7M7\nzWwv8A2CO4HYtcCrfoeQVvUD9n7idQkBKYbuxswKgInA+/4m8Y6ZxZnZaqAMWOicO+G+dWixm9ki\nM1v/GR+XATjnbnfODeD4Xas3dGQWr7W2by3L3A40cXz/upST2T+RzsbM0oBngZv/7qxAl+aca26Z\nRbc/MNnMTng6LdoblFoLE9jpCFrbNzO7BpgJnOO64M0Cbfi3C4p9wIBPvO7f8jnpIlrOPz8LPO6c\ne87vPB3BOVdhZouBGZxgIkU/R8UEdjoCM5sB/Ai41DlX63ceOSnLgUIzG2RmCcBVwAKfM8lJarnA\n+BCwyTl3t995vGRmuR+PrDOzZI5f4D9hX/o5KuZZ4FPTETjnAnGEZGbbgUTgUMunlgVlxA+AmV0O\n3AvkAhXAaufcBf6mip6ZXQTcA8QB85xzd/ocyTNm9gRwJsentf0IuMM595CvoTxkZtOAt4F1HO8U\ngJ84517xL5U3zGwc8AjHvy9DwNPOuX894dd0wbMEIiJyArrzVEQkYFTsIiIBo2IXEQkYFbuISMCo\n2EVEAkbFLiISMCp2EZGA+V+WHPGoY+whUAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import interactive\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "an = np.linspace(0, 2 * np.pi, 100)\n", "plt.plot(1 * np.cos(an), 1 * np.sin(an))\n", "plt.ylim(-2,2)\n", "plt.xlim(-2,2)\n", "\n", "def f(x_0, y_0, a):\n", " plt.plot(1 * np.cos(an), 1 * np.sin(an))\n", " plt.axvline(x_0 + a)\n", " plt.axvline(x_0 - a)\n", " plt.axhline(y_0 + a)\n", " plt.axhline(y_0 - a)\n", " plt.ylim(-3,3)\n", " plt.xlim(-3,3)\n", " plt.show()\n", "\n", "interactive_plot = interactive(f, x_0=(-2.0, 2.0), y_0=(-3.0, 3.0), a = (0,5.0))\n", "output = interactive_plot.children[-1]\n", "output.layout.height = '350px'\n", "interactive_plot" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" }, "latex_envs": { "LaTeX_envs_menu_present": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false } }, "nbformat": 4, "nbformat_minor": 2 }