Created
April 25, 2019 12:44
-
-
Save apetenchea/6c1bac3ca2dcbcece6ce789f44bec36f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Vizialize data from a 3-neuron hidden layer\n", | |
"https://playground.tensorflow.org/#activation=tanh&batchSize=10&dataset=circle®Dataset=reg-plane&learningRate=0.03®ularizationRate=0&noise=0&networkShape=3&seed=0.47308&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTimesY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from mpl_toolkits import mplot3d" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib notebook\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"upper = 10\n", | |
"lower = -10\n", | |
"X = np.random.random_sample((100, 2)) * (upper - lower) + lower\n", | |
"Y = np.array([X[index][0] * X[index][1] > 0 for index in range(len(X))])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/javascript": [ | |
"/* Put everything inside the global mpl namespace */\n", | |
"window.mpl = {};\n", | |
"\n", | |
"\n", | |
"mpl.get_websocket_type = function() {\n", | |
" if (typeof(WebSocket) !== 'undefined') {\n", | |
" return WebSocket;\n", | |
" } else if (typeof(MozWebSocket) !== 'undefined') {\n", | |
" return MozWebSocket;\n", | |
" } else {\n", | |
" alert('Your browser does not have WebSocket support.' +\n", | |
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", | |
" 'Firefox 4 and 5 are also supported but you ' +\n", | |
" 'have to enable WebSockets in about:config.');\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", | |
" this.id = figure_id;\n", | |
"\n", | |
" this.ws = websocket;\n", | |
"\n", | |
" this.supports_binary = (this.ws.binaryType != undefined);\n", | |
"\n", | |
" if (!this.supports_binary) {\n", | |
" var warnings = document.getElementById(\"mpl-warnings\");\n", | |
" if (warnings) {\n", | |
" warnings.style.display = 'block';\n", | |
" warnings.textContent = (\n", | |
" \"This browser does not support binary websocket messages. \" +\n", | |
" \"Performance may be slow.\");\n", | |
" }\n", | |
" }\n", | |
"\n", | |
" this.imageObj = new Image();\n", | |
"\n", | |
" this.context = undefined;\n", | |
" this.message = undefined;\n", | |
" this.canvas = undefined;\n", | |
" this.rubberband_canvas = undefined;\n", | |
" this.rubberband_context = undefined;\n", | |
" this.format_dropdown = undefined;\n", | |
"\n", | |
" this.image_mode = 'full';\n", | |
"\n", | |
" this.root = $('<div/>');\n", | |
" this._root_extra_style(this.root)\n", | |
" this.root.attr('style', 'display: inline-block');\n", | |
"\n", | |
" $(parent_element).append(this.root);\n", | |
"\n", | |
" this._init_header(this);\n", | |
" this._init_canvas(this);\n", | |
" this._init_toolbar(this);\n", | |
"\n", | |
" var fig = this;\n", | |
"\n", | |
" this.waiting = false;\n", | |
"\n", | |
" this.ws.onopen = function () {\n", | |
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", | |
" fig.send_message(\"send_image_mode\", {});\n", | |
" if (mpl.ratio != 1) {\n", | |
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", | |
" }\n", | |
" fig.send_message(\"refresh\", {});\n", | |
" }\n", | |
"\n", | |
" this.imageObj.onload = function() {\n", | |
" if (fig.image_mode == 'full') {\n", | |
" // Full images could contain transparency (where diff images\n", | |
" // almost always do), so we need to clear the canvas so that\n", | |
" // there is no ghosting.\n", | |
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", | |
" }\n", | |
" fig.context.drawImage(fig.imageObj, 0, 0);\n", | |
" };\n", | |
"\n", | |
" this.imageObj.onunload = function() {\n", | |
" fig.ws.close();\n", | |
" }\n", | |
"\n", | |
" this.ws.onmessage = this._make_on_message_function(this);\n", | |
"\n", | |
" this.ondownload = ondownload;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_header = function() {\n", | |
" var titlebar = $(\n", | |
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", | |
" 'ui-helper-clearfix\"/>');\n", | |
" var titletext = $(\n", | |
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", | |
" 'text-align: center; padding: 3px;\"/>');\n", | |
" titlebar.append(titletext)\n", | |
" this.root.append(titlebar);\n", | |
" this.header = titletext[0];\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", | |
"\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", | |
"\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_canvas = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var canvas_div = $('<div/>');\n", | |
"\n", | |
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", | |
"\n", | |
" function canvas_keyboard_event(event) {\n", | |
" return fig.key_event(event, event['data']);\n", | |
" }\n", | |
"\n", | |
" canvas_div.keydown('key_press', canvas_keyboard_event);\n", | |
" canvas_div.keyup('key_release', canvas_keyboard_event);\n", | |
" this.canvas_div = canvas_div\n", | |
" this._canvas_extra_style(canvas_div)\n", | |
" this.root.append(canvas_div);\n", | |
"\n", | |
" var canvas = $('<canvas/>');\n", | |
" canvas.addClass('mpl-canvas');\n", | |
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", | |
"\n", | |
" this.canvas = canvas[0];\n", | |
" this.context = canvas[0].getContext(\"2d\");\n", | |
"\n", | |
" var backingStore = this.context.backingStorePixelRatio ||\n", | |
"\tthis.context.webkitBackingStorePixelRatio ||\n", | |
"\tthis.context.mozBackingStorePixelRatio ||\n", | |
"\tthis.context.msBackingStorePixelRatio ||\n", | |
"\tthis.context.oBackingStorePixelRatio ||\n", | |
"\tthis.context.backingStorePixelRatio || 1;\n", | |
"\n", | |
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", | |
"\n", | |
" var rubberband = $('<canvas/>');\n", | |
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", | |
"\n", | |
" var pass_mouse_events = true;\n", | |
"\n", | |
" canvas_div.resizable({\n", | |
" start: function(event, ui) {\n", | |
" pass_mouse_events = false;\n", | |
" },\n", | |
" resize: function(event, ui) {\n", | |
" fig.request_resize(ui.size.width, ui.size.height);\n", | |
" },\n", | |
" stop: function(event, ui) {\n", | |
" pass_mouse_events = true;\n", | |
" fig.request_resize(ui.size.width, ui.size.height);\n", | |
" },\n", | |
" });\n", | |
"\n", | |
" function mouse_event_fn(event) {\n", | |
" if (pass_mouse_events)\n", | |
" return fig.mouse_event(event, event['data']);\n", | |
" }\n", | |
"\n", | |
" rubberband.mousedown('button_press', mouse_event_fn);\n", | |
" rubberband.mouseup('button_release', mouse_event_fn);\n", | |
" // Throttle sequential mouse events to 1 every 20ms.\n", | |
" rubberband.mousemove('motion_notify', mouse_event_fn);\n", | |
"\n", | |
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n", | |
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n", | |
"\n", | |
" canvas_div.on(\"wheel\", function (event) {\n", | |
" event = event.originalEvent;\n", | |
" event['data'] = 'scroll'\n", | |
" if (event.deltaY < 0) {\n", | |
" event.step = 1;\n", | |
" } else {\n", | |
" event.step = -1;\n", | |
" }\n", | |
" mouse_event_fn(event);\n", | |
" });\n", | |
"\n", | |
" canvas_div.append(canvas);\n", | |
" canvas_div.append(rubberband);\n", | |
"\n", | |
" this.rubberband = rubberband;\n", | |
" this.rubberband_canvas = rubberband[0];\n", | |
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n", | |
" this.rubberband_context.strokeStyle = \"#000000\";\n", | |
"\n", | |
" this._resize_canvas = function(width, height) {\n", | |
" // Keep the size of the canvas, canvas container, and rubber band\n", | |
" // canvas in synch.\n", | |
" canvas_div.css('width', width)\n", | |
" canvas_div.css('height', height)\n", | |
"\n", | |
" canvas.attr('width', width * mpl.ratio);\n", | |
" canvas.attr('height', height * mpl.ratio);\n", | |
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", | |
"\n", | |
" rubberband.attr('width', width);\n", | |
" rubberband.attr('height', height);\n", | |
" }\n", | |
"\n", | |
" // Set the figure to an initial 600x600px, this will subsequently be updated\n", | |
" // upon first draw.\n", | |
" this._resize_canvas(600, 600);\n", | |
"\n", | |
" // Disable right mouse context menu.\n", | |
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", | |
" return false;\n", | |
" });\n", | |
"\n", | |
" function set_focus () {\n", | |
" canvas.focus();\n", | |
" canvas_div.focus();\n", | |
" }\n", | |
"\n", | |
" window.setTimeout(set_focus, 100);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_toolbar = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var nav_element = $('<div/>')\n", | |
" nav_element.attr('style', 'width: 100%');\n", | |
" this.root.append(nav_element);\n", | |
"\n", | |
" // Define a callback function for later on.\n", | |
" function toolbar_event(event) {\n", | |
" return fig.toolbar_button_onclick(event['data']);\n", | |
" }\n", | |
" function toolbar_mouse_event(event) {\n", | |
" return fig.toolbar_button_onmouseover(event['data']);\n", | |
" }\n", | |
"\n", | |
" for(var toolbar_ind in mpl.toolbar_items) {\n", | |
" var name = mpl.toolbar_items[toolbar_ind][0];\n", | |
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", | |
" var image = mpl.toolbar_items[toolbar_ind][2];\n", | |
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n", | |
"\n", | |
" if (!name) {\n", | |
" // put a spacer in here.\n", | |
" continue;\n", | |
" }\n", | |
" var button = $('<button/>');\n", | |
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", | |
" 'ui-button-icon-only');\n", | |
" button.attr('role', 'button');\n", | |
" button.attr('aria-disabled', 'false');\n", | |
" button.click(method_name, toolbar_event);\n", | |
" button.mouseover(tooltip, toolbar_mouse_event);\n", | |
"\n", | |
" var icon_img = $('<span/>');\n", | |
" icon_img.addClass('ui-button-icon-primary ui-icon');\n", | |
" icon_img.addClass(image);\n", | |
" icon_img.addClass('ui-corner-all');\n", | |
"\n", | |
" var tooltip_span = $('<span/>');\n", | |
" tooltip_span.addClass('ui-button-text');\n", | |
" tooltip_span.html(tooltip);\n", | |
"\n", | |
" button.append(icon_img);\n", | |
" button.append(tooltip_span);\n", | |
"\n", | |
" nav_element.append(button);\n", | |
" }\n", | |
"\n", | |
" var fmt_picker_span = $('<span/>');\n", | |
"\n", | |
" var fmt_picker = $('<select/>');\n", | |
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", | |
" fmt_picker_span.append(fmt_picker);\n", | |
" nav_element.append(fmt_picker_span);\n", | |
" this.format_dropdown = fmt_picker[0];\n", | |
"\n", | |
" for (var ind in mpl.extensions) {\n", | |
" var fmt = mpl.extensions[ind];\n", | |
" var option = $(\n", | |
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", | |
" fmt_picker.append(option)\n", | |
" }\n", | |
"\n", | |
" // Add hover states to the ui-buttons\n", | |
" $( \".ui-button\" ).hover(\n", | |
" function() { $(this).addClass(\"ui-state-hover\");},\n", | |
" function() { $(this).removeClass(\"ui-state-hover\");}\n", | |
" );\n", | |
"\n", | |
" var status_bar = $('<span class=\"mpl-message\"/>');\n", | |
" nav_element.append(status_bar);\n", | |
" this.message = status_bar[0];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", | |
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", | |
" // which will in turn request a refresh of the image.\n", | |
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.send_message = function(type, properties) {\n", | |
" properties['type'] = type;\n", | |
" properties['figure_id'] = this.id;\n", | |
" this.ws.send(JSON.stringify(properties));\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.send_draw_message = function() {\n", | |
" if (!this.waiting) {\n", | |
" this.waiting = true;\n", | |
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype.handle_save = function(fig, msg) {\n", | |
" var format_dropdown = fig.format_dropdown;\n", | |
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", | |
" fig.ondownload(fig, format);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n", | |
" var size = msg['size'];\n", | |
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", | |
" fig._resize_canvas(size[0], size[1]);\n", | |
" fig.send_message(\"refresh\", {});\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", | |
" var x0 = msg['x0'] / mpl.ratio;\n", | |
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", | |
" var x1 = msg['x1'] / mpl.ratio;\n", | |
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", | |
" x0 = Math.floor(x0) + 0.5;\n", | |
" y0 = Math.floor(y0) + 0.5;\n", | |
" x1 = Math.floor(x1) + 0.5;\n", | |
" y1 = Math.floor(y1) + 0.5;\n", | |
" var min_x = Math.min(x0, x1);\n", | |
" var min_y = Math.min(y0, y1);\n", | |
" var width = Math.abs(x1 - x0);\n", | |
" var height = Math.abs(y1 - y0);\n", | |
"\n", | |
" fig.rubberband_context.clearRect(\n", | |
" 0, 0, fig.canvas.width, fig.canvas.height);\n", | |
"\n", | |
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", | |
" // Updates the figure title.\n", | |
" fig.header.textContent = msg['label'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", | |
" var cursor = msg['cursor'];\n", | |
" switch(cursor)\n", | |
" {\n", | |
" case 0:\n", | |
" cursor = 'pointer';\n", | |
" break;\n", | |
" case 1:\n", | |
" cursor = 'default';\n", | |
" break;\n", | |
" case 2:\n", | |
" cursor = 'crosshair';\n", | |
" break;\n", | |
" case 3:\n", | |
" cursor = 'move';\n", | |
" break;\n", | |
" }\n", | |
" fig.rubberband_canvas.style.cursor = cursor;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_message = function(fig, msg) {\n", | |
" fig.message.textContent = msg['message'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n", | |
" // Request the server to send over a new figure.\n", | |
" fig.send_draw_message();\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", | |
" fig.image_mode = msg['mode'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.updated_canvas_event = function() {\n", | |
" // Called whenever the canvas gets updated.\n", | |
" this.send_message(\"ack\", {});\n", | |
"}\n", | |
"\n", | |
"// A function to construct a web socket function for onmessage handling.\n", | |
"// Called in the figure constructor.\n", | |
"mpl.figure.prototype._make_on_message_function = function(fig) {\n", | |
" return function socket_on_message(evt) {\n", | |
" if (evt.data instanceof Blob) {\n", | |
" /* FIXME: We get \"Resource interpreted as Image but\n", | |
" * transferred with MIME type text/plain:\" errors on\n", | |
" * Chrome. But how to set the MIME type? It doesn't seem\n", | |
" * to be part of the websocket stream */\n", | |
" evt.data.type = \"image/png\";\n", | |
"\n", | |
" /* Free the memory for the previous frames */\n", | |
" if (fig.imageObj.src) {\n", | |
" (window.URL || window.webkitURL).revokeObjectURL(\n", | |
" fig.imageObj.src);\n", | |
" }\n", | |
"\n", | |
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", | |
" evt.data);\n", | |
" fig.updated_canvas_event();\n", | |
" fig.waiting = false;\n", | |
" return;\n", | |
" }\n", | |
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", | |
" fig.imageObj.src = evt.data;\n", | |
" fig.updated_canvas_event();\n", | |
" fig.waiting = false;\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" var msg = JSON.parse(evt.data);\n", | |
" var msg_type = msg['type'];\n", | |
"\n", | |
" // Call the \"handle_{type}\" callback, which takes\n", | |
" // the figure and JSON message as its only arguments.\n", | |
" try {\n", | |
" var callback = fig[\"handle_\" + msg_type];\n", | |
" } catch (e) {\n", | |
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" if (callback) {\n", | |
" try {\n", | |
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", | |
" callback(fig, msg);\n", | |
" } catch (e) {\n", | |
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", | |
" }\n", | |
" }\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", | |
"mpl.findpos = function(e) {\n", | |
" //this section is from http://www.quirksmode.org/js/events_properties.html\n", | |
" var targ;\n", | |
" if (!e)\n", | |
" e = window.event;\n", | |
" if (e.target)\n", | |
" targ = e.target;\n", | |
" else if (e.srcElement)\n", | |
" targ = e.srcElement;\n", | |
" if (targ.nodeType == 3) // defeat Safari bug\n", | |
" targ = targ.parentNode;\n", | |
"\n", | |
" // jQuery normalizes the pageX and pageY\n", | |
" // pageX,Y are the mouse positions relative to the document\n", | |
" // offset() returns the position of the element relative to the document\n", | |
" var x = e.pageX - $(targ).offset().left;\n", | |
" var y = e.pageY - $(targ).offset().top;\n", | |
"\n", | |
" return {\"x\": x, \"y\": y};\n", | |
"};\n", | |
"\n", | |
"/*\n", | |
" * return a copy of an object with only non-object keys\n", | |
" * we need this to avoid circular references\n", | |
" * http://stackoverflow.com/a/24161582/3208463\n", | |
" */\n", | |
"function simpleKeys (original) {\n", | |
" return Object.keys(original).reduce(function (obj, key) {\n", | |
" if (typeof original[key] !== 'object')\n", | |
" obj[key] = original[key]\n", | |
" return obj;\n", | |
" }, {});\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.mouse_event = function(event, name) {\n", | |
" var canvas_pos = mpl.findpos(event)\n", | |
"\n", | |
" if (name === 'button_press')\n", | |
" {\n", | |
" this.canvas.focus();\n", | |
" this.canvas_div.focus();\n", | |
" }\n", | |
"\n", | |
" var x = canvas_pos.x * mpl.ratio;\n", | |
" var y = canvas_pos.y * mpl.ratio;\n", | |
"\n", | |
" this.send_message(name, {x: x, y: y, button: event.button,\n", | |
" step: event.step,\n", | |
" guiEvent: simpleKeys(event)});\n", | |
"\n", | |
" /* This prevents the web browser from automatically changing to\n", | |
" * the text insertion cursor when the button is pressed. We want\n", | |
" * to control all of the cursor setting manually through the\n", | |
" * 'cursor' event from matplotlib */\n", | |
" event.preventDefault();\n", | |
" return false;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
" // Handle any extra behaviour associated with a key event\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.key_event = function(event, name) {\n", | |
"\n", | |
" // Prevent repeat events\n", | |
" if (name == 'key_press')\n", | |
" {\n", | |
" if (event.which === this._key)\n", | |
" return;\n", | |
" else\n", | |
" this._key = event.which;\n", | |
" }\n", | |
" if (name == 'key_release')\n", | |
" this._key = null;\n", | |
"\n", | |
" var value = '';\n", | |
" if (event.ctrlKey && event.which != 17)\n", | |
" value += \"ctrl+\";\n", | |
" if (event.altKey && event.which != 18)\n", | |
" value += \"alt+\";\n", | |
" if (event.shiftKey && event.which != 16)\n", | |
" value += \"shift+\";\n", | |
"\n", | |
" value += 'k';\n", | |
" value += event.which.toString();\n", | |
"\n", | |
" this._key_event_extra(event, name);\n", | |
"\n", | |
" this.send_message(name, {key: value,\n", | |
" guiEvent: simpleKeys(event)});\n", | |
" return false;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", | |
" if (name == 'download') {\n", | |
" this.handle_save(this, null);\n", | |
" } else {\n", | |
" this.send_message(\"toolbar_button\", {name: name});\n", | |
" }\n", | |
"};\n", | |
"\n", | |
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", | |
" this.message.textContent = tooltip;\n", | |
"};\n", | |
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", | |
"\n", | |
"mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", | |
"\n", | |
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", | |
" // Create a \"websocket\"-like object which calls the given IPython comm\n", | |
" // object with the appropriate methods. Currently this is a non binary\n", | |
" // socket, so there is still some room for performance tuning.\n", | |
" var ws = {};\n", | |
"\n", | |
" ws.close = function() {\n", | |
" comm.close()\n", | |
" };\n", | |
" ws.send = function(m) {\n", | |
" //console.log('sending', m);\n", | |
" comm.send(m);\n", | |
" };\n", | |
" // Register the callback with on_msg.\n", | |
" comm.on_msg(function(msg) {\n", | |
" //console.log('receiving', msg['content']['data'], msg);\n", | |
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n", | |
" ws.onmessage(msg['content']['data'])\n", | |
" });\n", | |
" return ws;\n", | |
"}\n", | |
"\n", | |
"mpl.mpl_figure_comm = function(comm, msg) {\n", | |
" // This is the function which gets called when the mpl process\n", | |
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n", | |
"\n", | |
" var id = msg.content.data.id;\n", | |
" // Get hold of the div created by the display call when the Comm\n", | |
" // socket was opened in Python.\n", | |
" var element = $(\"#\" + id);\n", | |
" var ws_proxy = comm_websocket_adapter(comm)\n", | |
"\n", | |
" function ondownload(figure, format) {\n", | |
" window.open(figure.imageObj.src);\n", | |
" }\n", | |
"\n", | |
" var fig = new mpl.figure(id, ws_proxy,\n", | |
" ondownload,\n", | |
" element.get(0));\n", | |
"\n", | |
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", | |
" // web socket which is closed, not our websocket->open comm proxy.\n", | |
" ws_proxy.onopen();\n", | |
"\n", | |
" fig.parent_element = element.get(0);\n", | |
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", | |
" if (!fig.cell_info) {\n", | |
" console.error(\"Failed to find cell for figure\", id, fig);\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" var output_index = fig.cell_info[2]\n", | |
" var cell = fig.cell_info[0];\n", | |
"\n", | |
"};\n", | |
"\n", | |
"mpl.figure.prototype.handle_close = function(fig, msg) {\n", | |
" var width = fig.canvas.width/mpl.ratio\n", | |
" fig.root.unbind('remove')\n", | |
"\n", | |
" // Update the output cell to use the data from the current canvas.\n", | |
" fig.push_to_output();\n", | |
" var dataURL = fig.canvas.toDataURL();\n", | |
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n", | |
" // the notebook keyboard shortcuts fail.\n", | |
" IPython.keyboard_manager.enable()\n", | |
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", | |
" fig.close_ws(fig, msg);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.close_ws = function(fig, msg){\n", | |
" fig.send_message('closing', msg);\n", | |
" // fig.ws.close()\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", | |
" // Turn the data on the canvas into data in the output cell.\n", | |
" var width = this.canvas.width/mpl.ratio\n", | |
" var dataURL = this.canvas.toDataURL();\n", | |
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.updated_canvas_event = function() {\n", | |
" // Tell IPython that the notebook contents must change.\n", | |
" IPython.notebook.set_dirty(true);\n", | |
" this.send_message(\"ack\", {});\n", | |
" var fig = this;\n", | |
" // Wait a second, then push the new image to the DOM so\n", | |
" // that it is saved nicely (might be nice to debounce this).\n", | |
" setTimeout(function () { fig.push_to_output() }, 1000);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_toolbar = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var nav_element = $('<div/>')\n", | |
" nav_element.attr('style', 'width: 100%');\n", | |
" this.root.append(nav_element);\n", | |
"\n", | |
" // Define a callback function for later on.\n", | |
" function toolbar_event(event) {\n", | |
" return fig.toolbar_button_onclick(event['data']);\n", | |
" }\n", | |
" function toolbar_mouse_event(event) {\n", | |
" return fig.toolbar_button_onmouseover(event['data']);\n", | |
" }\n", | |
"\n", | |
" for(var toolbar_ind in mpl.toolbar_items){\n", | |
" var name = mpl.toolbar_items[toolbar_ind][0];\n", | |
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", | |
" var image = mpl.toolbar_items[toolbar_ind][2];\n", | |
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n", | |
"\n", | |
" if (!name) { continue; };\n", | |
"\n", | |
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", | |
" button.click(method_name, toolbar_event);\n", | |
" button.mouseover(tooltip, toolbar_mouse_event);\n", | |
" nav_element.append(button);\n", | |
" }\n", | |
"\n", | |
" // Add the status bar.\n", | |
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", | |
" nav_element.append(status_bar);\n", | |
" this.message = status_bar[0];\n", | |
"\n", | |
" // Add the close button to the window.\n", | |
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", | |
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", | |
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n", | |
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n", | |
" buttongrp.append(button);\n", | |
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", | |
" titlebar.prepend(buttongrp);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._root_extra_style = function(el){\n", | |
" var fig = this\n", | |
" el.on(\"remove\", function(){\n", | |
"\tfig.close_ws(fig, {});\n", | |
" });\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._canvas_extra_style = function(el){\n", | |
" // this is important to make the div 'focusable\n", | |
" el.attr('tabindex', 0)\n", | |
" // reach out to IPython and tell the keyboard manager to turn it's self\n", | |
" // off when our div gets focus\n", | |
"\n", | |
" // location in version 3\n", | |
" if (IPython.notebook.keyboard_manager) {\n", | |
" IPython.notebook.keyboard_manager.register_events(el);\n", | |
" }\n", | |
" else {\n", | |
" // location in version 2\n", | |
" IPython.keyboard_manager.register_events(el);\n", | |
" }\n", | |
"\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
" var manager = IPython.notebook.keyboard_manager;\n", | |
" if (!manager)\n", | |
" manager = IPython.keyboard_manager;\n", | |
"\n", | |
" // Check for shift+enter\n", | |
" if (event.shiftKey && event.which == 13) {\n", | |
" this.canvas_div.blur();\n", | |
" event.shiftKey = false;\n", | |
" // Send a \"J\" for go to next cell\n", | |
" event.which = 74;\n", | |
" event.keyCode = 74;\n", | |
" manager.command_mode();\n", | |
" manager.handle_keydown(event);\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_save = function(fig, msg) {\n", | |
" fig.ondownload(fig, null);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.find_output_cell = function(html_output) {\n", | |
" // Return the cell and output element which can be found *uniquely* in the notebook.\n", | |
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", | |
" // IPython event is triggered only after the cells have been serialised, which for\n", | |
" // our purposes (turning an active figure into a static one), is too late.\n", | |
" var cells = IPython.notebook.get_cells();\n", | |
" var ncells = cells.length;\n", | |
" for (var i=0; i<ncells; i++) {\n", | |
" var cell = cells[i];\n", | |
" if (cell.cell_type === 'code'){\n", | |
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n", | |
" var data = cell.output_area.outputs[j];\n", | |
" if (data.data) {\n", | |
" // IPython >= 3 moved mimebundle to data attribute of output\n", | |
" data = data.data;\n", | |
" }\n", | |
" if (data['text/html'] == html_output) {\n", | |
" return [cell, data, j];\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"// Register the function which deals with the matplotlib target/channel.\n", | |
"// The kernel may be null if the page has been refreshed.\n", | |
"if (IPython.notebook.kernel != null) {\n", | |
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", | |
"}\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.Javascript object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<img src=\"data:image/png;base64,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\" width=\"640\">" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.PathCollection at 0x19f21bbb470>" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"plt.scatter(X[Y][:,0], X[Y][:,1], color='blue')\n", | |
"plt.scatter(X[~Y][:,0], X[~Y][:,1], color='orange')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def activation(x, w, b):\n", | |
" result = (np.dot(x, w) + b).flatten()\n", | |
" result = result * (result > 0)\n", | |
" return result" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"n1 = activation(X, np.array([[-1.2], [-0.37]]), -0.045)\n", | |
"n2 = activation(X, np.array([[-0.87], [1.3]]), -0.22)\n", | |
"n3 = activation(X, np.array([[0.15], [1.6]]), -0.011)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/javascript": [ | |
"/* Put everything inside the global mpl namespace */\n", | |
"window.mpl = {};\n", | |
"\n", | |
"\n", | |
"mpl.get_websocket_type = function() {\n", | |
" if (typeof(WebSocket) !== 'undefined') {\n", | |
" return WebSocket;\n", | |
" } else if (typeof(MozWebSocket) !== 'undefined') {\n", | |
" return MozWebSocket;\n", | |
" } else {\n", | |
" alert('Your browser does not have WebSocket support.' +\n", | |
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", | |
" 'Firefox 4 and 5 are also supported but you ' +\n", | |
" 'have to enable WebSockets in about:config.');\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", | |
" this.id = figure_id;\n", | |
"\n", | |
" this.ws = websocket;\n", | |
"\n", | |
" this.supports_binary = (this.ws.binaryType != undefined);\n", | |
"\n", | |
" if (!this.supports_binary) {\n", | |
" var warnings = document.getElementById(\"mpl-warnings\");\n", | |
" if (warnings) {\n", | |
" warnings.style.display = 'block';\n", | |
" warnings.textContent = (\n", | |
" \"This browser does not support binary websocket messages. \" +\n", | |
" \"Performance may be slow.\");\n", | |
" }\n", | |
" }\n", | |
"\n", | |
" this.imageObj = new Image();\n", | |
"\n", | |
" this.context = undefined;\n", | |
" this.message = undefined;\n", | |
" this.canvas = undefined;\n", | |
" this.rubberband_canvas = undefined;\n", | |
" this.rubberband_context = undefined;\n", | |
" this.format_dropdown = undefined;\n", | |
"\n", | |
" this.image_mode = 'full';\n", | |
"\n", | |
" this.root = $('<div/>');\n", | |
" this._root_extra_style(this.root)\n", | |
" this.root.attr('style', 'display: inline-block');\n", | |
"\n", | |
" $(parent_element).append(this.root);\n", | |
"\n", | |
" this._init_header(this);\n", | |
" this._init_canvas(this);\n", | |
" this._init_toolbar(this);\n", | |
"\n", | |
" var fig = this;\n", | |
"\n", | |
" this.waiting = false;\n", | |
"\n", | |
" this.ws.onopen = function () {\n", | |
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", | |
" fig.send_message(\"send_image_mode\", {});\n", | |
" if (mpl.ratio != 1) {\n", | |
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", | |
" }\n", | |
" fig.send_message(\"refresh\", {});\n", | |
" }\n", | |
"\n", | |
" this.imageObj.onload = function() {\n", | |
" if (fig.image_mode == 'full') {\n", | |
" // Full images could contain transparency (where diff images\n", | |
" // almost always do), so we need to clear the canvas so that\n", | |
" // there is no ghosting.\n", | |
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", | |
" }\n", | |
" fig.context.drawImage(fig.imageObj, 0, 0);\n", | |
" };\n", | |
"\n", | |
" this.imageObj.onunload = function() {\n", | |
" fig.ws.close();\n", | |
" }\n", | |
"\n", | |
" this.ws.onmessage = this._make_on_message_function(this);\n", | |
"\n", | |
" this.ondownload = ondownload;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_header = function() {\n", | |
" var titlebar = $(\n", | |
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", | |
" 'ui-helper-clearfix\"/>');\n", | |
" var titletext = $(\n", | |
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", | |
" 'text-align: center; padding: 3px;\"/>');\n", | |
" titlebar.append(titletext)\n", | |
" this.root.append(titlebar);\n", | |
" this.header = titletext[0];\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", | |
"\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", | |
"\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_canvas = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var canvas_div = $('<div/>');\n", | |
"\n", | |
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", | |
"\n", | |
" function canvas_keyboard_event(event) {\n", | |
" return fig.key_event(event, event['data']);\n", | |
" }\n", | |
"\n", | |
" canvas_div.keydown('key_press', canvas_keyboard_event);\n", | |
" canvas_div.keyup('key_release', canvas_keyboard_event);\n", | |
" this.canvas_div = canvas_div\n", | |
" this._canvas_extra_style(canvas_div)\n", | |
" this.root.append(canvas_div);\n", | |
"\n", | |
" var canvas = $('<canvas/>');\n", | |
" canvas.addClass('mpl-canvas');\n", | |
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", | |
"\n", | |
" this.canvas = canvas[0];\n", | |
" this.context = canvas[0].getContext(\"2d\");\n", | |
"\n", | |
" var backingStore = this.context.backingStorePixelRatio ||\n", | |
"\tthis.context.webkitBackingStorePixelRatio ||\n", | |
"\tthis.context.mozBackingStorePixelRatio ||\n", | |
"\tthis.context.msBackingStorePixelRatio ||\n", | |
"\tthis.context.oBackingStorePixelRatio ||\n", | |
"\tthis.context.backingStorePixelRatio || 1;\n", | |
"\n", | |
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", | |
"\n", | |
" var rubberband = $('<canvas/>');\n", | |
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", | |
"\n", | |
" var pass_mouse_events = true;\n", | |
"\n", | |
" canvas_div.resizable({\n", | |
" start: function(event, ui) {\n", | |
" pass_mouse_events = false;\n", | |
" },\n", | |
" resize: function(event, ui) {\n", | |
" fig.request_resize(ui.size.width, ui.size.height);\n", | |
" },\n", | |
" stop: function(event, ui) {\n", | |
" pass_mouse_events = true;\n", | |
" fig.request_resize(ui.size.width, ui.size.height);\n", | |
" },\n", | |
" });\n", | |
"\n", | |
" function mouse_event_fn(event) {\n", | |
" if (pass_mouse_events)\n", | |
" return fig.mouse_event(event, event['data']);\n", | |
" }\n", | |
"\n", | |
" rubberband.mousedown('button_press', mouse_event_fn);\n", | |
" rubberband.mouseup('button_release', mouse_event_fn);\n", | |
" // Throttle sequential mouse events to 1 every 20ms.\n", | |
" rubberband.mousemove('motion_notify', mouse_event_fn);\n", | |
"\n", | |
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n", | |
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n", | |
"\n", | |
" canvas_div.on(\"wheel\", function (event) {\n", | |
" event = event.originalEvent;\n", | |
" event['data'] = 'scroll'\n", | |
" if (event.deltaY < 0) {\n", | |
" event.step = 1;\n", | |
" } else {\n", | |
" event.step = -1;\n", | |
" }\n", | |
" mouse_event_fn(event);\n", | |
" });\n", | |
"\n", | |
" canvas_div.append(canvas);\n", | |
" canvas_div.append(rubberband);\n", | |
"\n", | |
" this.rubberband = rubberband;\n", | |
" this.rubberband_canvas = rubberband[0];\n", | |
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n", | |
" this.rubberband_context.strokeStyle = \"#000000\";\n", | |
"\n", | |
" this._resize_canvas = function(width, height) {\n", | |
" // Keep the size of the canvas, canvas container, and rubber band\n", | |
" // canvas in synch.\n", | |
" canvas_div.css('width', width)\n", | |
" canvas_div.css('height', height)\n", | |
"\n", | |
" canvas.attr('width', width * mpl.ratio);\n", | |
" canvas.attr('height', height * mpl.ratio);\n", | |
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", | |
"\n", | |
" rubberband.attr('width', width);\n", | |
" rubberband.attr('height', height);\n", | |
" }\n", | |
"\n", | |
" // Set the figure to an initial 600x600px, this will subsequently be updated\n", | |
" // upon first draw.\n", | |
" this._resize_canvas(600, 600);\n", | |
"\n", | |
" // Disable right mouse context menu.\n", | |
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", | |
" return false;\n", | |
" });\n", | |
"\n", | |
" function set_focus () {\n", | |
" canvas.focus();\n", | |
" canvas_div.focus();\n", | |
" }\n", | |
"\n", | |
" window.setTimeout(set_focus, 100);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_toolbar = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var nav_element = $('<div/>')\n", | |
" nav_element.attr('style', 'width: 100%');\n", | |
" this.root.append(nav_element);\n", | |
"\n", | |
" // Define a callback function for later on.\n", | |
" function toolbar_event(event) {\n", | |
" return fig.toolbar_button_onclick(event['data']);\n", | |
" }\n", | |
" function toolbar_mouse_event(event) {\n", | |
" return fig.toolbar_button_onmouseover(event['data']);\n", | |
" }\n", | |
"\n", | |
" for(var toolbar_ind in mpl.toolbar_items) {\n", | |
" var name = mpl.toolbar_items[toolbar_ind][0];\n", | |
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", | |
" var image = mpl.toolbar_items[toolbar_ind][2];\n", | |
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n", | |
"\n", | |
" if (!name) {\n", | |
" // put a spacer in here.\n", | |
" continue;\n", | |
" }\n", | |
" var button = $('<button/>');\n", | |
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", | |
" 'ui-button-icon-only');\n", | |
" button.attr('role', 'button');\n", | |
" button.attr('aria-disabled', 'false');\n", | |
" button.click(method_name, toolbar_event);\n", | |
" button.mouseover(tooltip, toolbar_mouse_event);\n", | |
"\n", | |
" var icon_img = $('<span/>');\n", | |
" icon_img.addClass('ui-button-icon-primary ui-icon');\n", | |
" icon_img.addClass(image);\n", | |
" icon_img.addClass('ui-corner-all');\n", | |
"\n", | |
" var tooltip_span = $('<span/>');\n", | |
" tooltip_span.addClass('ui-button-text');\n", | |
" tooltip_span.html(tooltip);\n", | |
"\n", | |
" button.append(icon_img);\n", | |
" button.append(tooltip_span);\n", | |
"\n", | |
" nav_element.append(button);\n", | |
" }\n", | |
"\n", | |
" var fmt_picker_span = $('<span/>');\n", | |
"\n", | |
" var fmt_picker = $('<select/>');\n", | |
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", | |
" fmt_picker_span.append(fmt_picker);\n", | |
" nav_element.append(fmt_picker_span);\n", | |
" this.format_dropdown = fmt_picker[0];\n", | |
"\n", | |
" for (var ind in mpl.extensions) {\n", | |
" var fmt = mpl.extensions[ind];\n", | |
" var option = $(\n", | |
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", | |
" fmt_picker.append(option)\n", | |
" }\n", | |
"\n", | |
" // Add hover states to the ui-buttons\n", | |
" $( \".ui-button\" ).hover(\n", | |
" function() { $(this).addClass(\"ui-state-hover\");},\n", | |
" function() { $(this).removeClass(\"ui-state-hover\");}\n", | |
" );\n", | |
"\n", | |
" var status_bar = $('<span class=\"mpl-message\"/>');\n", | |
" nav_element.append(status_bar);\n", | |
" this.message = status_bar[0];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", | |
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", | |
" // which will in turn request a refresh of the image.\n", | |
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.send_message = function(type, properties) {\n", | |
" properties['type'] = type;\n", | |
" properties['figure_id'] = this.id;\n", | |
" this.ws.send(JSON.stringify(properties));\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.send_draw_message = function() {\n", | |
" if (!this.waiting) {\n", | |
" this.waiting = true;\n", | |
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype.handle_save = function(fig, msg) {\n", | |
" var format_dropdown = fig.format_dropdown;\n", | |
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", | |
" fig.ondownload(fig, format);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n", | |
" var size = msg['size'];\n", | |
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", | |
" fig._resize_canvas(size[0], size[1]);\n", | |
" fig.send_message(\"refresh\", {});\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", | |
" var x0 = msg['x0'] / mpl.ratio;\n", | |
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", | |
" var x1 = msg['x1'] / mpl.ratio;\n", | |
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", | |
" x0 = Math.floor(x0) + 0.5;\n", | |
" y0 = Math.floor(y0) + 0.5;\n", | |
" x1 = Math.floor(x1) + 0.5;\n", | |
" y1 = Math.floor(y1) + 0.5;\n", | |
" var min_x = Math.min(x0, x1);\n", | |
" var min_y = Math.min(y0, y1);\n", | |
" var width = Math.abs(x1 - x0);\n", | |
" var height = Math.abs(y1 - y0);\n", | |
"\n", | |
" fig.rubberband_context.clearRect(\n", | |
" 0, 0, fig.canvas.width, fig.canvas.height);\n", | |
"\n", | |
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", | |
" // Updates the figure title.\n", | |
" fig.header.textContent = msg['label'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", | |
" var cursor = msg['cursor'];\n", | |
" switch(cursor)\n", | |
" {\n", | |
" case 0:\n", | |
" cursor = 'pointer';\n", | |
" break;\n", | |
" case 1:\n", | |
" cursor = 'default';\n", | |
" break;\n", | |
" case 2:\n", | |
" cursor = 'crosshair';\n", | |
" break;\n", | |
" case 3:\n", | |
" cursor = 'move';\n", | |
" break;\n", | |
" }\n", | |
" fig.rubberband_canvas.style.cursor = cursor;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_message = function(fig, msg) {\n", | |
" fig.message.textContent = msg['message'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n", | |
" // Request the server to send over a new figure.\n", | |
" fig.send_draw_message();\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", | |
" fig.image_mode = msg['mode'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.updated_canvas_event = function() {\n", | |
" // Called whenever the canvas gets updated.\n", | |
" this.send_message(\"ack\", {});\n", | |
"}\n", | |
"\n", | |
"// A function to construct a web socket function for onmessage handling.\n", | |
"// Called in the figure constructor.\n", | |
"mpl.figure.prototype._make_on_message_function = function(fig) {\n", | |
" return function socket_on_message(evt) {\n", | |
" if (evt.data instanceof Blob) {\n", | |
" /* FIXME: We get \"Resource interpreted as Image but\n", | |
" * transferred with MIME type text/plain:\" errors on\n", | |
" * Chrome. But how to set the MIME type? It doesn't seem\n", | |
" * to be part of the websocket stream */\n", | |
" evt.data.type = \"image/png\";\n", | |
"\n", | |
" /* Free the memory for the previous frames */\n", | |
" if (fig.imageObj.src) {\n", | |
" (window.URL || window.webkitURL).revokeObjectURL(\n", | |
" fig.imageObj.src);\n", | |
" }\n", | |
"\n", | |
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", | |
" evt.data);\n", | |
" fig.updated_canvas_event();\n", | |
" fig.waiting = false;\n", | |
" return;\n", | |
" }\n", | |
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", | |
" fig.imageObj.src = evt.data;\n", | |
" fig.updated_canvas_event();\n", | |
" fig.waiting = false;\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" var msg = JSON.parse(evt.data);\n", | |
" var msg_type = msg['type'];\n", | |
"\n", | |
" // Call the \"handle_{type}\" callback, which takes\n", | |
" // the figure and JSON message as its only arguments.\n", | |
" try {\n", | |
" var callback = fig[\"handle_\" + msg_type];\n", | |
" } catch (e) {\n", | |
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" if (callback) {\n", | |
" try {\n", | |
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", | |
" callback(fig, msg);\n", | |
" } catch (e) {\n", | |
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", | |
" }\n", | |
" }\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", | |
"mpl.findpos = function(e) {\n", | |
" //this section is from http://www.quirksmode.org/js/events_properties.html\n", | |
" var targ;\n", | |
" if (!e)\n", | |
" e = window.event;\n", | |
" if (e.target)\n", | |
" targ = e.target;\n", | |
" else if (e.srcElement)\n", | |
" targ = e.srcElement;\n", | |
" if (targ.nodeType == 3) // defeat Safari bug\n", | |
" targ = targ.parentNode;\n", | |
"\n", | |
" // jQuery normalizes the pageX and pageY\n", | |
" // pageX,Y are the mouse positions relative to the document\n", | |
" // offset() returns the position of the element relative to the document\n", | |
" var x = e.pageX - $(targ).offset().left;\n", | |
" var y = e.pageY - $(targ).offset().top;\n", | |
"\n", | |
" return {\"x\": x, \"y\": y};\n", | |
"};\n", | |
"\n", | |
"/*\n", | |
" * return a copy of an object with only non-object keys\n", | |
" * we need this to avoid circular references\n", | |
" * http://stackoverflow.com/a/24161582/3208463\n", | |
" */\n", | |
"function simpleKeys (original) {\n", | |
" return Object.keys(original).reduce(function (obj, key) {\n", | |
" if (typeof original[key] !== 'object')\n", | |
" obj[key] = original[key]\n", | |
" return obj;\n", | |
" }, {});\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.mouse_event = function(event, name) {\n", | |
" var canvas_pos = mpl.findpos(event)\n", | |
"\n", | |
" if (name === 'button_press')\n", | |
" {\n", | |
" this.canvas.focus();\n", | |
" this.canvas_div.focus();\n", | |
" }\n", | |
"\n", | |
" var x = canvas_pos.x * mpl.ratio;\n", | |
" var y = canvas_pos.y * mpl.ratio;\n", | |
"\n", | |
" this.send_message(name, {x: x, y: y, button: event.button,\n", | |
" step: event.step,\n", | |
" guiEvent: simpleKeys(event)});\n", | |
"\n", | |
" /* This prevents the web browser from automatically changing to\n", | |
" * the text insertion cursor when the button is pressed. We want\n", | |
" * to control all of the cursor setting manually through the\n", | |
" * 'cursor' event from matplotlib */\n", | |
" event.preventDefault();\n", | |
" return false;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
" // Handle any extra behaviour associated with a key event\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.key_event = function(event, name) {\n", | |
"\n", | |
" // Prevent repeat events\n", | |
" if (name == 'key_press')\n", | |
" {\n", | |
" if (event.which === this._key)\n", | |
" return;\n", | |
" else\n", | |
" this._key = event.which;\n", | |
" }\n", | |
" if (name == 'key_release')\n", | |
" this._key = null;\n", | |
"\n", | |
" var value = '';\n", | |
" if (event.ctrlKey && event.which != 17)\n", | |
" value += \"ctrl+\";\n", | |
" if (event.altKey && event.which != 18)\n", | |
" value += \"alt+\";\n", | |
" if (event.shiftKey && event.which != 16)\n", | |
" value += \"shift+\";\n", | |
"\n", | |
" value += 'k';\n", | |
" value += event.which.toString();\n", | |
"\n", | |
" this._key_event_extra(event, name);\n", | |
"\n", | |
" this.send_message(name, {key: value,\n", | |
" guiEvent: simpleKeys(event)});\n", | |
" return false;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", | |
" if (name == 'download') {\n", | |
" this.handle_save(this, null);\n", | |
" } else {\n", | |
" this.send_message(\"toolbar_button\", {name: name});\n", | |
" }\n", | |
"};\n", | |
"\n", | |
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", | |
" this.message.textContent = tooltip;\n", | |
"};\n", | |
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", | |
"\n", | |
"mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", | |
"\n", | |
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", | |
" // Create a \"websocket\"-like object which calls the given IPython comm\n", | |
" // object with the appropriate methods. Currently this is a non binary\n", | |
" // socket, so there is still some room for performance tuning.\n", | |
" var ws = {};\n", | |
"\n", | |
" ws.close = function() {\n", | |
" comm.close()\n", | |
" };\n", | |
" ws.send = function(m) {\n", | |
" //console.log('sending', m);\n", | |
" comm.send(m);\n", | |
" };\n", | |
" // Register the callback with on_msg.\n", | |
" comm.on_msg(function(msg) {\n", | |
" //console.log('receiving', msg['content']['data'], msg);\n", | |
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n", | |
" ws.onmessage(msg['content']['data'])\n", | |
" });\n", | |
" return ws;\n", | |
"}\n", | |
"\n", | |
"mpl.mpl_figure_comm = function(comm, msg) {\n", | |
" // This is the function which gets called when the mpl process\n", | |
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n", | |
"\n", | |
" var id = msg.content.data.id;\n", | |
" // Get hold of the div created by the display call when the Comm\n", | |
" // socket was opened in Python.\n", | |
" var element = $(\"#\" + id);\n", | |
" var ws_proxy = comm_websocket_adapter(comm)\n", | |
"\n", | |
" function ondownload(figure, format) {\n", | |
" window.open(figure.imageObj.src);\n", | |
" }\n", | |
"\n", | |
" var fig = new mpl.figure(id, ws_proxy,\n", | |
" ondownload,\n", | |
" element.get(0));\n", | |
"\n", | |
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", | |
" // web socket which is closed, not our websocket->open comm proxy.\n", | |
" ws_proxy.onopen();\n", | |
"\n", | |
" fig.parent_element = element.get(0);\n", | |
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", | |
" if (!fig.cell_info) {\n", | |
" console.error(\"Failed to find cell for figure\", id, fig);\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" var output_index = fig.cell_info[2]\n", | |
" var cell = fig.cell_info[0];\n", | |
"\n", | |
"};\n", | |
"\n", | |
"mpl.figure.prototype.handle_close = function(fig, msg) {\n", | |
" var width = fig.canvas.width/mpl.ratio\n", | |
" fig.root.unbind('remove')\n", | |
"\n", | |
" // Update the output cell to use the data from the current canvas.\n", | |
" fig.push_to_output();\n", | |
" var dataURL = fig.canvas.toDataURL();\n", | |
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n", | |
" // the notebook keyboard shortcuts fail.\n", | |
" IPython.keyboard_manager.enable()\n", | |
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", | |
" fig.close_ws(fig, msg);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.close_ws = function(fig, msg){\n", | |
" fig.send_message('closing', msg);\n", | |
" // fig.ws.close()\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", | |
" // Turn the data on the canvas into data in the output cell.\n", | |
" var width = this.canvas.width/mpl.ratio\n", | |
" var dataURL = this.canvas.toDataURL();\n", | |
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.updated_canvas_event = function() {\n", | |
" // Tell IPython that the notebook contents must change.\n", | |
" IPython.notebook.set_dirty(true);\n", | |
" this.send_message(\"ack\", {});\n", | |
" var fig = this;\n", | |
" // Wait a second, then push the new image to the DOM so\n", | |
" // that it is saved nicely (might be nice to debounce this).\n", | |
" setTimeout(function () { fig.push_to_output() }, 1000);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_toolbar = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var nav_element = $('<div/>')\n", | |
" nav_element.attr('style', 'width: 100%');\n", | |
" this.root.append(nav_element);\n", | |
"\n", | |
" // Define a callback function for later on.\n", | |
" function toolbar_event(event) {\n", | |
" return fig.toolbar_button_onclick(event['data']);\n", | |
" }\n", | |
" function toolbar_mouse_event(event) {\n", | |
" return fig.toolbar_button_onmouseover(event['data']);\n", | |
" }\n", | |
"\n", | |
" for(var toolbar_ind in mpl.toolbar_items){\n", | |
" var name = mpl.toolbar_items[toolbar_ind][0];\n", | |
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", | |
" var image = mpl.toolbar_items[toolbar_ind][2];\n", | |
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n", | |
"\n", | |
" if (!name) { continue; };\n", | |
"\n", | |
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", | |
" button.click(method_name, toolbar_event);\n", | |
" button.mouseover(tooltip, toolbar_mouse_event);\n", | |
" nav_element.append(button);\n", | |
" }\n", | |
"\n", | |
" // Add the status bar.\n", | |
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", | |
" nav_element.append(status_bar);\n", | |
" this.message = status_bar[0];\n", | |
"\n", | |
" // Add the close button to the window.\n", | |
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", | |
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", | |
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n", | |
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n", | |
" buttongrp.append(button);\n", | |
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", | |
" titlebar.prepend(buttongrp);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._root_extra_style = function(el){\n", | |
" var fig = this\n", | |
" el.on(\"remove\", function(){\n", | |
"\tfig.close_ws(fig, {});\n", | |
" });\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._canvas_extra_style = function(el){\n", | |
" // this is important to make the div 'focusable\n", | |
" el.attr('tabindex', 0)\n", | |
" // reach out to IPython and tell the keyboard manager to turn it's self\n", | |
" // off when our div gets focus\n", | |
"\n", | |
" // location in version 3\n", | |
" if (IPython.notebook.keyboard_manager) {\n", | |
" IPython.notebook.keyboard_manager.register_events(el);\n", | |
" }\n", | |
" else {\n", | |
" // location in version 2\n", | |
" IPython.keyboard_manager.register_events(el);\n", | |
" }\n", | |
"\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
" var manager = IPython.notebook.keyboard_manager;\n", | |
" if (!manager)\n", | |
" manager = IPython.keyboard_manager;\n", | |
"\n", | |
" // Check for shift+enter\n", | |
" if (event.shiftKey && event.which == 13) {\n", | |
" this.canvas_div.blur();\n", | |
" event.shiftKey = false;\n", | |
" // Send a \"J\" for go to next cell\n", | |
" event.which = 74;\n", | |
" event.keyCode = 74;\n", | |
" manager.command_mode();\n", | |
" manager.handle_keydown(event);\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_save = function(fig, msg) {\n", | |
" fig.ondownload(fig, null);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.find_output_cell = function(html_output) {\n", | |
" // Return the cell and output element which can be found *uniquely* in the notebook.\n", | |
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", | |
" // IPython event is triggered only after the cells have been serialised, which for\n", | |
" // our purposes (turning an active figure into a static one), is too late.\n", | |
" var cells = IPython.notebook.get_cells();\n", | |
" var ncells = cells.length;\n", | |
" for (var i=0; i<ncells; i++) {\n", | |
" var cell = cells[i];\n", | |
" if (cell.cell_type === 'code'){\n", | |
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n", | |
" var data = cell.output_area.outputs[j];\n", | |
" if (data.data) {\n", | |
" // IPython >= 3 moved mimebundle to data attribute of output\n", | |
" data = data.data;\n", | |
" }\n", | |
" if (data['text/html'] == html_output) {\n", | |
" return [cell, data, j];\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"// Register the function which deals with the matplotlib target/channel.\n", | |
"// The kernel may be null if the page has been refreshed.\n", | |
"if (IPython.notebook.kernel != null) {\n", | |
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", | |
"}\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.Javascript object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4nOzdeXTrdZ0//ugAgxvjqIPLOCqiOMAF5aLinSMqDAIqeF2+esEFhlEE54u4oI6CjLOIzjDC8fhl/MoM/hwP+MUzOpi2SZdsTbd0SZtmT5o06ZKkaZtm+zRt0jbp8/dH5/MhadLbLfl8mnufj3Ne5+htms+n6cL7mffyUoGIiIiIiEgmKqVvgIiIiIiIzh4MIEREREREJBsGECIiIiIikg0DCBERERERyYYBhIiIiIiIZMMAQkREREREsmEAISIiIiIi2TCAEBERERGRbBhAiIiIiIhINgwgREREREQkGwYQIiIiIiKSDQMIERERERHJhgGEiIiIiIhkwwBCRERERESyYQAhIiIiIiLZMIAQEREREZFsGECIiIiIiEg2DCBERERERCQbBhAiIiIiIpINAwgREREREcmGAYSIiIiIiGTDAEJERERERLJhACEiIiIiItkwgBARERERkWwYQIiIiIiISDYMIEREREREJBsGECIiIiIikg0DCBERERERyYYBhIiIiIiIZMMAQkREREREsmEAISIiIiIi2TCAEBERERGRbBhAiIiIiIhINgwgREREREQkGwYQIiIiIiKSDQMIERERERHJhgGEiIiIiIhkwwBCRERERESyYQAhIiIiIiLZMIAQEREREZFsGECIiIiIiEg2DCBERERERCQbBhAiIiIiIpINAwgREREREcmGAYSIiIiIiGTDAEJERERERLJhACEiIiIiItkwgBARERERkWwYQIiIiIiISDYMIEREREREJBsGECIiIiIikg0DCBERERERyYYBhIiIiIiIZMMAQkREREREsmEAISIiIiIi2TCAEBERERGRbBhAiIiIiIhINgwgREREREQkGwYQIiIiIiKSDQMIERERERHJhgGEiIiIiIhkwwBCRERERESyYQAhIiIiIiLZMIAQEREREZFsGECIiIiIiEg2DCBERERERCQbBhAiIiIiIpINAwgREREREcmGAYSIiIiIiGTDAEJERERERLJhACEiIiIiItkwgBARERERkWwYQIiIiIiISDYMIEREREREJBsGECIiIiIikg0DCBERERERyYYBhIiIiIiIZMMAQkREREREsmEAISIiIiIi2TCAEBERERGRbBhAiIiIiIhINgwgREREREQkGwYQIiIiIiKSDQMIERERERHJhgGEiIiIiIhkwwBCRERERESyYQAhIiIiIiLZMIAQEREREZFsGECIiIiIiEg2DCBERERERCQbBhAiIiIiIpINAwgREREREcmGAYSIiIiIiGTDAEJERERERLJhACEiIiIiItkwgBARERERkWwYQIiIiIiISDYMIEREREREJBsGECIiIiIikg0DCBERERERyYYBhIiIiIiIZMMAQkREREREsmEAISIiIiIi2TCAEBERERGRbBhAiIiIiIhINgwgREREREQkGwYQIiIiIiKSDQMIERERERHJhgGEiIiIiIhkwwBCRERERESyYQAhIiIiIiLZMIAQEREREZFsGECIiIiIiEg2DCBERERERCQbBhAiIiIiIpINAwgREREREcmGAYSIiIiIiGTDAEJERERERLJhACEiIiIiItkwgBARERERkWwYQIiIiIiISDYMIEREREREJBsGECIiIiIikg0DCBERERERyYYBhIiIiIiIZMMAQkREZ7zNzU2USiUUi0Wsr69jY2MDpVIJm5ubSt8aEdFZhwGEiIjOCGLI2NjYwNraGgqFAlZXV5HL5SAIAjKZDNLpNNLpNARBwOrqKvL5PNbW1rCxsYFischQQkQkAwYQIiJqGpubmygWi1LIyOfzWFlZwfLyMrLZrBQyUqkUkskkkskklpaWpP+dSqUqAsjKyopUYiApFAqcJSEiaiAGECIiOjK2L5UqFAoVISOTyVSFjKWlJSlkiAEjnU4jk8kgm80im81CEISKWl1dRaFQkJ4/n89jdXW1IpSI/788lHCWhIjo8BhAiIhIVntdKpVKpU4bMsQwUitg7FblAaRWlYcSzpIQEdUXAwgREdWduFRqfX19T0ulpqam0NbWhkgkIgWP3WYxDlO7BZDTBZLdQglnSYiITo8BhIiI9q3WUilxYH6QpVKzs7NQq9WYm5ura9CoVwDZyyxJT08PXC4XZ0mIiHbBAEJERDWdbqnU9lmM3ZZK7TaLEYlEmi6AbC+dTge73c5ZEiKiXTCAEBGdxWotlSrfi7HbLEa9lkqdKQHE4XBwLwkR0S4YQIiIzmDlsxjbl0qVb/guDxmxWAxqtRqTk5M1T5VqRCA4EwJIV1dXVQDhXhIiomoMIERETW77UilxgLtbb4ydlkrNz89DrVZjenpaljBwJgUQp9N56L0k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15K8l5qamuBwOES1FpdY0WgUfr8f33//Pa688kosWLCAXaNiGAaHHHIIrrvuOrz++utoamrCxMQEJRsUuwwoAaF9e7wjAAAgAElEQVSg2MUQj8fR09ODN954A6eeeioYhsHixYtx1113oba2ltccjo6OJoUFEvF6KTRgZM3MaDSyU4WKigre2o3QZGO2IpqXxPT1UppODQ0Nwel08sTTxMkpm3udTdZGLtc/HRmxWCwlQ0bIuiLX0YxkvQhNatPRbVitVrhcLphMpiTNhRhE+MRZSy6X480338TNN9/M6vHI79hLL70UN998My666CI2i+Poo4+GQqEQ+muBgqLooASEoqSxfft2bNiwAcuWLcOCBQuwbNkybNiwgTp8pIl4PA6bzYann34aRx55JBiGwZFHHoknnngCBoOB11ilmiqYzWbRrabMlrNRVVXFNmB1dXVwOp2C2YFmWiSjI1X6eins+pP3ETd0craMC27Whl6vnzZro729vSj5DKnICDERKBUykirrpampCa2trQX/LBDdhtfrTdJtkMlGOrqNVMGHxdK9RKNRTExMwGKxYOPGjVizZg3OOOMMdsIxf/58nH766bj//vuxadMmtLa2Ytu2bbzpxtatW1FfX4+1a9ciEAgI+C1AQSEMKAGhKGmsXbsWDMPgrrvuwsaNG3HXXXeBYRg88MADQl9ayWH79u2QyWS45557sHjxYjAMg5/97Gd49dVX0d7eniReN5lMvHwOIRr5bNeoUq04yeXykpoqJKavE/F3Ka3KEVtZ7om2SqWCxWKBwWCATCbjkY2GhgYYDAbR5KbsLGSko6MDKpWK/Szkyxo3k7yNXF7PcDjM0x7lO/iQrFJ9/fXXeOaZZ3DppZeyvyMZhsHy5ctx88034+2334ZSqaRp4hQUaYASEIqShd1ux5w5c/Dwww/z/vzhhx/GnDlzYLfbBbqy0sfmzZvx9ddf45prrsGCBQswd+5crFq1Cp988gkvTZqI17VabcEb+UJpNsbHx5OmCiSwUei1jnSLiL8T09ezXXEqRnGzNkwmE+8knGuBazKZEAwGRU+qdgYywrXGJZ/nhoYG2O32tFzZuHkbSqUy67yNXIroXrINPoxGoxgaGoJUKsWrr76K66+/HkcddRRLNvbff39cccUV+OMf/4jKykoMDg5SskFBkQUoAaEoWaxbtw4Mw8Dv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\" width=\"640\">" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<mpl_toolkits.mplot3d.art3d.Path3DCollection at 0x19f21fdcf98>" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"fig = plt.figure()\n", | |
"ax = plt.axes(projection='3d')\n", | |
"ax.scatter3D(n1[Y], n2[Y], n3[Y], color='blue')\n", | |
"ax.scatter3D(n1[~Y], n2[~Y], n3[~Y], color='orange')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<mpl_toolkits.mplot3d.art3d.Poly3DCollection at 0x19f2365c4e0>" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"b = 0\n", | |
"w = np.array([1.1, -1.5, 1.5])\n", | |
"xlim, ylim = ax.get_xlim(), ax.get_ylim() \n", | |
"XY = np.mgrid[xlim[0]:xlim[1]:2j, ylim[0]:ylim[1]:2j] \n", | |
"ax.plot_surface(*XY, (-b -XY[0]*w[0] -XY[1]*w[1]) / w[2], alpha=.25)" | |
] | |
} | |
], | |
"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.8" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment