Skip to content

Instantly share code, notes, and snippets.

@KuangHao95
Last active May 18, 2020 01:44
Show Gist options
  • Save KuangHao95/450ca5621659748abe0529eedc1563f4 to your computer and use it in GitHub Desktop.
Save KuangHao95/450ca5621659748abe0529eedc1563f4 to your computer and use it in GitHub Desktop.
Experiment on Anomaly Detection
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Anomaly Detection\n",
"\n",
"Some cells are adapted from: https://github.com/Vicam/Unsupervised_Anomaly_Detection\n",
"\n",
"*Kuang Hao, Research Computing, NUS IT*"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# Libraries\n",
"%matplotlib notebook\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"from sklearn import preprocessing\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.cluster import KMeans\n",
"from sklearn.ensemble import IsolationForest\n",
"from sklearn.svm import OneClassSVM\n",
"\n",
"# Libraries for RNN\n",
"from tensorflow.keras.layers import Dense, Activation, Dropout, LSTM\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.callbacks import EarlyStopping\n",
"\n",
"from warnings import simplefilter\n",
"simplefilter(action='ignore', category=FutureWarning)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Return Series of distance between each point and distance with the closest centroid\n",
"def getDistanceByPoint(data, model):\n",
" distance = pd.Series()\n",
" for i in range(0,len(data)):\n",
" Xa = np.array(data.loc[i])\n",
" Xb = model.cluster_centers_[model.labels_[i]-1]\n",
" distance.at[i] = np.linalg.norm(Xa-Xb)\n",
" return distance"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 1. Data\n",
"Dataset: https://www.kaggle.com/boltzmannbrain/nab\n",
"(ambient_temperature_system_failure.csv)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\"data/nab/realKnownCause/realKnownCause/ambient_temperature_system_failure.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 7267 entries, 0 to 7266\n",
"Data columns (total 2 columns):\n",
"timestamp 7267 non-null object\n",
"value 7267 non-null float64\n",
"dtypes: float64(1), object(1)\n",
"memory usage: 113.6+ KB\n",
"None\n"
]
}
],
"source": [
"print(df.info())"
]
},
{
"cell_type": "code",
"execution_count": 14,
"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 / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydB3RURRfHLxB6CTX0EnrvLQFChxBExAYqKigKgigWlN6LgBQRARFFRdEPkKL0GnrvLUDoiHQIPRDgO/eFt3n79vW3m2R3/3OOR83OzJv5zd03/51yb4qnT58+JSQQAAEQAAEQAAEQAAG/IZACAtBvxhodBQEQAAEQAAEQAAGBAAQgDAEEQAAEQAAEQAAE/IwABKCfDTi6CwIgAAIgAAIgAAIQgLABEAABEAABEAABEPAzAhCAfjbg6C4IgAAIgAAIgAAIQADCBkAABEAABEAABEDAzwhAAPrZgKO7IAACIAACIAACIAABCBsAARAAARAAARAAAT8jAAHoZwOO7oIACIAACIAACIAABCBsAARAAARAAARAAAT8jAAEoJ8NOLoLAiAAAiAAAiAAAhCAsAEQAAEQAAEQAAEQ8DMCEIB+NuDoLgiAAAiAAAiAAAhAAMIGQAAEQAAEQAAEQMDPCEAA+tmAo7sgAAIgAAIgAAIgAAEIGwABEAABEAABEAABPyMAAehnA47uggAIgAAIgAAIgAAEIGwABEAABEAABEAABPyMAASgnw04ugsCIAACIAACIAACEICwARAAARAAARAAARDwMwIQgH424OguCIAACIAACIAACEAAwgZAAARAAARAAARAwM8IQAD62YCjuyAAAiAAAiAAAiAAAQgbAAEQAAEQAAEQAAE/IwAB6GcDju6CAAiAAAiAAAiAAAQgbAAEQAAEQAAEQAAE/IwABKCfDTi6CwIgAAIgAAIgAAIQgLABEAABEAABEAABEPAzAhCAfjbg6C4IgAAIgAAIgAAIQADCBkAABEAABEAABEDAzwhAAPrZgKO7IAACIAACIAACIAABCBsAARAAARAAARAAAT8jAAHoZwOO7oIACIAACIAACIAABCBsAARAAARAAARAAAT8jAAEoJ8NOLoLAiAAAiAAAiAAAhCAsAEQAAEQAAEQAAEQ8DMCEIB+NuDoLgiAAAiAAAiAAAhAAMIGQAAEQAAEQAAEQMDPCEAA+tmAo7sgAAIgAAIgAAIgAAEIGwABEAABEAABEAABPyMAAehnA47uggAIgAAIgAAIgAAEIGwABEAABEAABEAABPyMAASgnw04ugsCIAACIAACIAACEICwARAAARAA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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x256764ba208>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"outliers_fraction = 0.01\n",
"# Change timestamp to datetime\n",
"df['timestamp'] = pd.to_datetime(df['timestamp'])\n",
"# \"Int\" timestamp to plot easily\n",
"df['time_epoch'] = (df['timestamp'].astype(np.int64)/100000000000).astype(np.int64)\n",
"# Change temperature to Celsius\n",
"df['value'] = (df['value'] - 32) * 5/9\n",
"# Plot the original data\n",
"df.plot(x='time_epoch', y='value')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 2. Models"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### 2.1 PCA\n",
"\n",
"PCA (Principle Component Analysis) is used to reduce the dimension of datasets. After reduction, characteristics of the original data are retained to the greatest extent (measured by covariance). The principle of PCA is to map the original data into a new low-dimensional space by constructing a new feature space. PCA can improve the computing performance of data and alleviate \"Curse of Dimensionality\"."
]
},
{
"cell_type": "code",
"execution_count": 45,
"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 / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydC9yuU5n/L1E5ZYeQskNI5RSTKZSZclaGJkUHJUrsPXv+TZiSmTBNiUyNDsgoRFTK3uTQJMd0zkjbGE0kKkxy2JRDqf3/fN+n5V3vetd9r3Xf67mf932e53d9PvtT3mcdf/e61/rd17oOyyxdunSpSYSAEBACQkAICAEhIATGBoFlRADH5llrokJACAgBISAEhIAQmEBABFALQQgIASEgBISAEBACY4aACOCYPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDMERADH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwJghIAI4Zg9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBMYMARHAMXvgmq4QEAJCQAgIASEgBEQAtQaEgBAQAkJACAgBITBmCIgAjtkD13SFgBAQAkJACAgBISACqDUgBISAEBACQkAICIExQ0AEcMweuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAiMGQIigGP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgzBAQARyzB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACY4aACOCYPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDMERADH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwJghIAI4Zg9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBMYMARHAMXvgmq4QEAJCQAgIASEgBEQAtQaEgBAQAkJACAgBITBmCIgAjtkD13SFgBAQAkJACAgBISACqDUgBISAEBACQkAICIExQ0AEcMweuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAiMGQIigGP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgzBAQARyzB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACY4aACOCYPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDMERADH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwJghIAI4Zg9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBMYMARHAMXvgmq4QEAJCQAgIASEgBEQAtQaEgBAQAkJACAgBITBmCIgAjtkD13SFgBAQAkJACAgBISACqDUgBISAEBACQkAICIExQ0AEcMweuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAiMGQIigGP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgzBAQARyzB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACY4aACOCYPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDMERADH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwJghIAI4Zg9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBMYMARHAggf+pz/9ye6880572tOeZssss0xBS6oqBISAEBACQkAIDAqBpUuX2kMPPWTPetaz7ElPetKgup1V/YgAFjyOX/7ylzZ37tyCFlRVCAgBISAEhIAQmCkEfvGLX9g666wzU93PaL8igAXwL1myxJ7+9KcbC2iVVVYpaElVhYAQEAJCQAgIgUEh8OCDD04ocB544AGbM2fOoLqdVf2IABY8DhYQCwciKAJYAKSqCgEhIASEgBAYIAI6v81EAAsWnBZQAXiqKgSEgBAQAkJghhDQ+S0CWLT0tICK4FNlISAEhIAQEAIzgoDObxHAooWnBVQEnyoLASEgBISAEJgRBHR+iwAWLTwtoCL4VFkICAEhIASEwIwgoPNbBLBo4WkBFcGnykJACAgBISAEZgQBnd8igEULTwuoCD5VFgJCQAgIASEwIwjo/BYBLFp4WkBF8KmyEBACQkAICIEZQUDntwhg0cLTAiqCT5WFgBAQAkJACMwIAjq/RQCLFp4WUBF8qiwEhIAQEAJCYEYQ0PktAli08LSAiuBTZSEgBISAEBACM4KAzm8RwKKFpwVUBJ8qCwEhIASEgBCYEQR0fo8wATz55JONfz//+c8nFtcmm2xi73//+2233Xab+O/HHnvMDjvsMDv33HPtkUcesR122MFOOukkW2eddbIXoxZQNlQqKASEgBAQAkJg1iCg83uECeBXv/pVW3bZZW3DDTecWHBnnnmmfeQjH7Hrr79+ggwecsghRpkzzjjDVl99dTv00EPtvvvus+uuu26iXo5oAeWgpDJCYLQRWLzY7Oyz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r2wnn3yy7bfffk8UX3311e3444+3Aw88MLnQtYCSEKmAEBhZBLD3C697lywxW2WVkZ2yJiYERgYBnd9jRABvueUW22ijjSa0gJtuuunEIkZLuNxyy9nnPvc5e/rTn25f+tKX7O1vf7vdcMMNtsEGGyQXuhZQEiIVEAIji8Dvf2/21KdOnd5vfmO2+uojO2VNTAiMDAI6v8eEAC5dutT23HNPu//+++2b3/zmEwuY69999tnH/vM//3OCCK644or25S9/eeJqOCaPPfaY8c8JC2ju3LkT18ir6LN/ZDYGTUQI5CDAVhDa+915p9naa+fUVhkhIARmEgERwDEhgPPnz7eLL77Yrr32WltnnXWeWHMLFiyw73//+/ahD31owgZw0aJF9rGPfWyCJG622WbT1ubRRx9txxxzzLS/iwDO5GusvoXAzCDw6KNmK6wwte9f/MLM22JmZmDqVQgIgSQCIoBjQAAheRC7a665xtZff/0nFsWtt95qG264od144422ySabPPH3HXfcceLvp5xyyrQFJA1g8p1SASEwNgjg8Rs6fNxxh9ncuWMDgSYqBIYWARHAESaAXPtC/hYuXGhXXXXVhP2fL9gCbr755hNewS94wQue+GmXXXaxdddd10499dTkwtYCSkKkAkJgZBF4+GGzPwcUeGKOt99u9pznjOyUNTEhMDII6PweYQI4b968ibAuF1xwwZTYf3PmzJmIC/iHP/zBXvjCF9raa69tJ5xwguH9i6aQuIAXXXSR7b777smFrgWUhEgFhMDIIkDIl5VXnjq9n//cbN11R3bKmpgQGBkEdH6PMAFcpiIh5+mnn27777//xCL+6U9/au9973snbAN/+9vfTlz9HnbYYVPCwtStdi2gkdkLNBEh0BiBhx6aHvLlttvM1luvcVOqIASEwIAR0Pk9wgRwEGtJC2gQKKsPITA7EXjwQbM5c6aO7Wc/M/NMjWfnwDUqISAETOe3CGDRa6AFVASfKguBoUaAoM9Pf/rUKdx6q9lznzvU09LghcBYIKDzWwSwaKFrARXBp8pCYKgReOABs1VXnTqFW24xy4ghP9Tz1uCFwCggoPNbBLBoHWsBFcGnykJgqBG4/36z1VabOoX//V+zIODAUM9RgxcCo4qAzm8RwKK1rQVUBJ8qC4GhRuC++6anffvJT8ye97yhnpYGLwTGAgGd3yKARQtdC6gIPlUWAkONwL33mj3jGVOncOCBZqed1v20vvMdMzyO3/jG7vtSD0JgFBHQ+S0CWLSutYCK4FNlITDUCPzmN2ZrrDF9CoPIBuKiXH3ve2Z/+ZdDDaMGLwRmBAGd3yKARQtPC6gIPlUWAkONwK9/bbbWWtOncOONZl52yU7m6Ajg2WebvelNnXShRoXASCOg81sEsGiBawEVwafKQmCoEfi//zN75jOnT+G668y22qrbqTkCeOaZZm95S7d9qXUhMIoI6PwWASxa11pARfCpshAYagTuvtts7bWnT+Fd7zL72Me6nZojgJ/9rNnb3tZtX2pdCIwiAjq/RQCL1rUWUBF8qiwEhhqBu+4ye9azpk9hr73MFi7sdmqOAOJwguOJRAgIgWYI6PwWAWy2YoLSWkBF8KmyEBhqBO680+zZz55ZAnjqqWbveMdQw6jBC4EZQUDntwhg0cLTAiqCT5WFwFAj8Ktfma2zzvQp7Lmn2aJF3U7NaQA//Wmzgw7qti+1LgRGEQGd3yKARetaC6gIPlUWAkONwC9/aTZ37vQp7LGH2YUXdjs1RwBPOcXsne/sti+1LgRGEQGd3yKARetaC6gIPlUWAkONAPH+1l1XBHCoH6IGP7YI6PwWASxa/FpARfCpshAYagRuv91svfXiU1i6tNupOQ3gySebHXxwt32pdSEwigjo/BYBLFrXWkBF8KmyEBhqBE46yWz+/JklgIzhkEOGGkYNXgjMCAI6v0UAixaeFlARfKosBIYagX/8R7OPfGRmCeCnPmU2b95Qw6jBC4EZQUDntwhg0cLTAiqCT5WFwFAjcPjhZiecIAI41A9Rgx9bBHR+iwAWLX4toCL4VFkIDDUChx1m9m//NrME8JOfrL6GHmpwNXgh0DECOr9FAIuWmBZQEXyqLASGGoFDDzX76EdnlgB+4hNmf/d3Qw2jBi8EZgQBnd8igEULTwuoCD5VFgJDjUAdAbzsMrMdd+xues4L+OMfN1uwoLt+1LIQGFUEdH6LABatbS2gIvhUWQgMNQJ1BJAcwWQK6UpEALtCVu2OCwI6v0UAi9a6FlARfKosBIYagWOPNXvf++JTWHFFs9/9rrvpOQK4005mX/96d/2oZSEwqgjo/BYBLFrbWkBF8KmyEBhqBK66yuwVr6ieQpfBoB0BpPcu+xnqB6TBC4EaBHR+iwAWvSBaQEXwqbIQGGoErrzS7JWvNHvhC81uumn6VLokZiKAQ710NPhZgIDObxHAomWoBVQEnyoLgaFG4IorzHbYwWyTTcz++79FAIf6YWrwY4eAzm8RwKJFrwVUBJ8qC4GhRuDyy3uevptuanbjjSKAQ/0wNfixQ0Dntwhg0aLXAiqCT5WFwNAi8Kc/ma2+utkDD5httpnZ4sUigEP7MDXwsURA57cIYNHC1wIqgk+VhcDQIvDtb5ttt11v+JtvbvbjH4sADu3D1MDHEgGd3yKARQtfC6gIPlUWAsUI/P73ZoccYrbLLmavf31xc9MagOgh22479SfnAMJft9jC7IYbRAD7j75aFALdIaDzWwSwaHVpARXBp8pCoBiBk082mzev10y/vW4ffdRshRV6bT/0kNnKK08O1w8B86IXmf3oRyKAxQ9TDQiBASKg83uECeCxxx5r559/vt188822wgor2LbbbmvHHXecbbzxxlOW2He+8x078sgj7Xvf+549+clPthe96EV26aWXTtRJiRZQCiH9LgS6ReBf/sXsqKO6IYBLlpg9/em9tn/2M7P115+cy5lnmu2/f++/t9zS7PrrB0cAIbpPetJkf/0mvt0+MbUuBGYHAjq/R5gA7rrrrrbvvvva1ltvbY8//vgEyVu8eLHddNNNttJKK02sQMgf5Y444gjbY4897ClPeYrdcMMNE///qU99anKVagElIVKBDAQOPtiMzBEf/WhGYRWZggAp1+66qxsCiIPHqqvGCeALXmB288293watAfzjH82WW04EUK+CEChBQOf3CBPAcGHcc889tuaaa9rVV19t22+//cTPL33pS22nnXayD3zgA63WkRZQK9hUyUPgl780mzu394dHHjFbfnnB0wSBLgMi33dfz9MXCTWABH/+n//p/TZoG8DHHzd78pNFAJusE5UVAiECOr/HiADecsstttFGG01oATfddFP79a9/bWuttZZ9/OMft3PPPdduvfVWe/7zn28f/OAH7WUve1n0bXnssceMf05YQHPnzrUlS5bYKqusojdMCDRG4LbbzJ773F41cseiCZTkI+ATQK6D77jD7NRTzfy/57c2teRvfmO2xhq9v/Gc1ltv8nefAFa139XVLI4v/gVFV/20xU31hMAwICACOCYEcOnSpbbnnnva/fffb9/85jcn1uZ3v/td22abbWy11VazE044YcL273Of+5yddNJJduONN06QxVCOPvpoO+aYY6b9XQRwGF732TlGEcCy5xIjetddZ7bVVmXtUvvXvzZba61eO6EGkOwfsfRvfq9dETPfOYX+uuqnHEG1IARmLwIigGNCAOfPn28XX3yxXXvttbbOOutMrMhvf/vbtt12203Y/33oQx96YpVuvvnm9qpXvcpwIglFGsDZ+zIP68h+/vNJ54J77zVbbbVhncnMjDtGAL/1relhW5qO7tJLzXbffbLWrbdOamr5K9k/YunfBkEAMRXwNcUigE2frsoLATMRwDEggAsWLLBFixbZNddcY+t7bny33XabPfe5z7WzzjrL3vzmNz/xPuyzzz623HLL2ec///nkO6IFlIRIBRII+ATwy182e+1rBVkTBGIE8A1vMDvnnCatTC8btvvTn5ptuOFkuZAAvv3tZqedNrWdrogZpgJ+SJoDDjD7zGfK5qvaQmDcEND5PcIEkGtfyN/ChQvtqquumnaly+9oAw844IApTiBbbrml7bbbblO0glUvhhbQuG0Z/Z+vTwDPOsvM+xbpf2cj2GKVrV8p+Qrb/clPzJ73vEkA99rL7IILJv/7He8w+4//mArw7bebPec5U/92//1mJ51k9qY3TbUpbPJofvtbs6c9bWoNHEOWXbZJKyorBMYbAZ3fI0wA582bZ+ecc45dcMEFU2L/zZkz54kYf//+7/9uRx11lH3mM5+ZsAE888wzJ+wBsQHcYIMNkm+HFlASIhVIIODbABJb7i1vEWS5CPhOGmGdfhNAPH6f//zJXs491+yNb5z874MO6jmf+LLDDmbf+MbUv5Gt5LzzzJ7xDLN77smd6dRyDz5oNmfO1L/hGOJ7BrdrWbWEwPggoPN7hAngMhWqgdNPP932dxFczezDH/6wfepTn7L77rvPtthiCzv++OMrvYDDV0MLaHw2i65m+v73m7koRKefPhlc+JJLzObPN/vc58xe/vKueh/udqu0f3ju4sBRImHb2Pvh+evki18023ffyf9+5zvNPv3pqT1icYLziC8QP2w9kbYk1Q9Q7dpWCKGSp62644iAzu8RJoCDWNBaQINAebT72Gwzsxtv7M2RK0RsyRBHQNDqoN2RTEegigASHPpXvypDLGx78eKe44eTL33JbJ99Jv/73/7N7NBDp/cZkjzIKZrLEgLINXLoLKQQQmXP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/IMPPsDSpUubruKll17CzjvvjOnTpwfCzwjADTbYAOeee25TuXbt2jWrZNu1YHf++ecHLClSOAj+4x//wOGHH45x48bhpJNOClhddNFFYLmbbroJZMjfKAhef/31IN1gc7B6seNL+L333sNvfvObJkwrrrgiOnXq1BywNbWxFvz4AcZn9eqrrw7SXv32t78N+uIrr7yCtdZaS30vYsxLwq619j3TaZmth++ZH/zgB8EzaAvAO++8E4ccckgg6H784x/j17/+Na6//vqg73Xt2jU4xHHHHYc//vGPwbjXuXNnnHrqqfj444+DyYvllluuWT2/za2xEoDN7Y5V0F7mKY6bAfQddsiQIYEYvPXWW71nHTZsGP70pz/hn//8Z1MuZArBzTbbLPjKawlWLXZ77LEHVlttNdxwww1NWCjMV1555YAvZ2D4ciZTzsTS+GXMOhSGFOPNzfJiRy58CX/66ae47777mhum0PZWgx9nVPjx8Ic//AG7775707n4jLJP8iNDfa94C+wxLwk79T1g//33x/rrrx+INT5/tgDkLDzFIT8+jG200UbBahRjzFI8fu973wvGQIpt2rvvvosuXbrggQcewIABA1rM89yIFyIB2Ih3pcptquRFwhnB3XbbLXhB/PznPy9r0ZIlSwLBcsopp+DMM89s+p0C8OWXXw5eKhQvPMY555zTbGaw3AutFrsLL7wQ11xzDaZNmxbM7j3//PPYZZddAqF8wAEH4F//+hfWW289PPPMM8ESnbFBgwZh1VVXLVverHIXqcnh8mJnXsJ8+XDWj7y4HMXZ1O9///s1ubY8DloNflzCZC7lRx55JFhaM7bNNtsEwd1nzJihvvcNFHfMS8KutfdAa5mvAAAJPUlEQVQ9zrhzdu+vf/1r8K6wBSDfEfzAvfvuu7HXXns19T2ueFAk0lXo0UcfDfolZ/y+853vNJXZdNNNA5FIlxhZ7QhIANaObcMcOc2LhH4XXOo1Pmv0HfLZXXfdhQMPPBBz5swJhKCx6667Duussw5WX331YNmJWUS4NPDwww83DI80DakWOwpiCmXO5vFLmUvpFCjkQ3vyySeDJZL58+eX8OTyO/0uH3rooTTNboiyebHjxXKpqX379oHv6ltvvRX4vLEPcxmpuWaxqRa/bbfdNhDGt99+e/BRRl+rQw89NJi1oXuB+l74mBfHrjX3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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Take useful feature and standardize them\n",
"data = df[['value', 'time_epoch']]\n",
"min_max_scaler = preprocessing.StandardScaler()\n",
"np_scaled = min_max_scaler.fit_transform(data)\n",
"data = pd.DataFrame(np_scaled)\n",
"# Reduce to 2 importants features, default 'auto' is too large\n",
"pca = PCA(n_components=2)\n",
"data = pca.fit_transform(data)\n",
"# Standardize these 2 new features\n",
"min_max_scaler = preprocessing.StandardScaler()\n",
"np_scaled = min_max_scaler.fit_transform(data)\n",
"data = pd.DataFrame(np_scaled)\n",
"\n",
"# Calculate with different number of centroids to see the loss plot (elbow method)\n",
"n_cluster = range(1, 20)\n",
"kmeans = [KMeans(n_clusters=i).fit(data) for i in n_cluster]\n",
"\n",
"# Choose 15 centroids arbitrarily and add these data to the central dataframe\n",
"df['cluster'] = kmeans[14].predict(data)\n",
"df['principal_feature1'] = data[0]\n",
"df['principal_feature2'] = data[1]\n",
"df['cluster'].value_counts()\n",
"\n",
"# Get the distance between each point and its nearest centroid. The biggest distances are considered as anomaly\n",
"distance = getDistanceByPoint(data, kmeans[14])\n",
"number_of_outliers = int(outliers_fraction*len(distance))\n",
"threshold = distance.nlargest(number_of_outliers).min()\n",
"df['anomaly'] = (distance >= threshold).astype(int)\n",
"\n",
"# Plot\n",
"fig, ax = plt.subplots()\n",
"a = df.loc[df['anomaly'] == 1, ['time_epoch', 'value']]\n",
"ax.plot(df['time_epoch'], df['value'], color='blue')\n",
"ax.scatter(a['time_epoch'],a['value'], color='red')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### 2.2 Isolation Forest\n",
"\n",
"Isolation Forest can be understood as an unsupervised random forest algorithm. The basic principle is to use a tree model to split the data until there is only one independent point. The faster it is divided into individual data points, the more abnormal the data is."
]
},
{
"cell_type": "code",
"execution_count": 15,
"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 / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4Xuy9CfxvU73//zZ3zMKRrlOElJmcyjGUZEhxXLmom2usG1Jc/EsqNJgzVaTMim44KEPR4JgTxT2SijT4lTJ1KKLD+T+e322d7/qu79p7rf3Zn/39fj+fz+v9eCi+nzW+9tprvfZ7vYf55s6dO9ckQkAICAEhIASEgBAQAgODwHwigAPzrDVRISAEhIAQEAJCQAgMISACqIUgBISAEBACQkAICIEBQ0AEcMAeuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAgMGAIigAP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgwBAQARywB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACA4aACOCAPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDAERAAH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwIAhIAI4YA9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBAYMARHAAXvgmq4QEAJCQAgIASEgBEQAtQaEgBAQAkJACAgBITBgCIgADtgD13SFgBAQAkJACAgBISACqDUgBISAEBACQkAICIEBQ0AEcMAeuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAgMGAIigAP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgwBAQARywB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACA4aACOCAPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDAERAAH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwIAhIAI4YA9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBAYMARHAAXvgmq4QEAJCQAgIASEgBEQAtQaEgBAQAkJACAgBITBgCIgADtgD13SFgBAQAkJACAgBISACqDUgBISAEBACQkAICIEBQ0AEcMAeuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAgMGAIigAP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgwBAQARywB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACA4aACOCAPXBNVwgIASEgBISAEBACIoBaA0JACAgBISAEhIAQGDAERAAH7IFrukJACAgBISAEhIAQEAHUGhACQkAICAEhIASEwIAhIAI4YA9c0xUCQkAICAEhIASEgAig1oAQEAJCQAgIASEgBAYMARHAAXvgmq4QEAJCQAgIASEgBEQAtQaEgBAQAkJACAgBITBgCIgADtgD13SFgBAQAkJACAgBISACqDUgBISAEBACQkAICIEBQ0AEcMAeuKYrBISAEBACQkAICAERQK0BISAEhIAQEAJCQAgMGAIigAP2wDVdISAEhIAQEAJCQAiIAGoNCAEhIASEgBAQAkJgwBAQARywB67pCgEhIASEgBAQAkJABFBrQAgIASEgBISAEBACA4aACGCDB/7SSy/Zn/70J1tiiSVsvvnma9CSqgoBISAEhIAQEAJjhcDcuXPtmWeesVe/+tU2//zzj1W3E6ofEcAGj+ORRx6xKVOmNGhBVYWAEBACQkAICIHxQuCPf/yjrbTSSuPV/bj2KwLYAP7Zs2fb0ksvbSygJZdcskFLqioEhIAQEAJCQAiMFQJPP/30kALnb3/7my211FJj1e2E6kcEsMHjYAGxcCCCIoANgFRVISAEhIAQEAJjiIDObzMRwAYLTguoAXiqKgSEgBAQAkJgnBDQ+S0C2GjpaQE1gk+VhYAQEAJCQAiMCwI6v0UAGy08LaBG8KmyEBACQkAICIFxQUDntwhgo4WnBdQIPlUWAkJACAgBITAuCOj8FgFstPC0gBrBp8pCQAgIASEgBMYFAZ3fIoCNFp4WUCP4VFkICAEhIASEwLggoPNbBLDRwtMCagSfKgsBISAEhIAQGBcEdH6LADZaeFpAjeBTZSEgBISAEBAC44KAzm8RwEYLTwuoEXyqLASEgBAQAkJgXBDQ+S0C2GjhaQE1gk+VhYAQEAJCQAiMCwI6v0UAGy08LaBG8KmyEBACQkAICIFxQUDntwhgo4WnBdQIPlUWAr2PwIsvmt18s9mf/2y24opmm21mtsACvT8vzUAI9DkCOr9FABstcS2gRvCpshDobQRmzDD72MfMHnlkeB4rrWR22mlmO+3U23PT6IVAnyOg81sEsNES1wJqBJ8qC4HeRQDy9973lo//8stFAnv36WrkA4CAzu8+JoBnnnmm8c/vfve7oaW81lpr2Wc+8xl717veNfTfzz//vB166KF2ySWX2HPPPWdbbrmlnXHGGbYSX/CZogWUCZSKCYF+QoBr3xVWMHviifJZLbus2V/+ouvgfnrumktfIaDzu48J4He/+11bYIEFbLXVVhtatBdccIGdeOKJ9vOf/3yIDO63335GmfPPP9+WXXZZO+SQQ+zJJ5+0u+++e6hejmgB5aCkMkKgzxD44Q/N3vnOeZO6wna0W20TO94+bgvYS8OT/cEPzLbcss8mr+kIgf5AQOd3HxPA2BJ95StfOUQCd955Z1t++eXtoosusl133XWo6J/+9CebMmWKXXvttbbNNttkrXAtoCyYVEgI9BcChx9udtxx8+Y0n80d+vfL7L32XpsxPNdPfMLs2GP7a+6ajRDoEwR0fg8IAXzxxRft0ksvtT322GNIA/joo48OXfmi8VtmmWXmLef11lvPdtxxRzv66KOzlrgWUBZMKiQE+guBrbYyQ7v3sjgCeI7tbXvbecNzRUt4ww39NXfNRgj0CQI6v/ucAM6aNcs23nhj++c//2mLL764XXzxxbbddtsN/f9ee+01ZAfoy9Zbb22rrLKKnXXWWdElTnm/DgsIreHs2bNtySWX7JPXQtMQAkKgEoEddzS76qpRBPBC2912t28MV50+3ezKKwWmEBACExABEcA+J4AvvPCC/eEPf7C//e1vdvnll9vZZ59tM2fOtHvuuSdKALfaaitbddVV7atf/Wp0uR511FFR7aAI4AR8uzUkIdAWAl/8otmhh44igOfaXraXnT/c60knmR1ySFujULtCQAg0QEAEsM8JYLg23vnOdw4RPOz+OrkClgawwdumqkKgXxB47jmzRRcdRQC/bvvavnbO8CyffdZs0qR+mbXmIQT6CgERwAEjgJA+rmxPO+20ISeQb3zjG7bLLrsMLeo///nPQyFg5ATSV++4JiMEuo9A4AXsbAA/aV+wL9inhvuTF3D3sVeLQqBLCIgA9jEB/OQnPzkU8w/C98wzz9i3vvUtO+644+x73/uecdVLGJirr756KAwM3sHEBHziiScUBqZLL5eaEQJ9i8CnP232+c+P0gDyh7k23/C0P/Ups899rm9h0MSEQC8jIALYxwRwn332sR/+8IdDmr2lllrK1l13Xfv4xz8+RP4QHEMOO+ywIYcQPxA0hDFXtIBykVI5IdBHCHgEkAAw878cBkYEsI+esabS9wjo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POhzt8fjUL7tNrNNNhEBHL9Vp577AQGd331MAMMF+thjj9nkyZNt5syZtvnmmw/9/Na3vtW22mor+9znPtfRetYC6gg2VfIQuPVWs003jZMMAZVGoE0CeOaZZvvvnyaAH/yg2de/PnYawFtuMdtsMxHA9OpQCSFQjoDO7wEigA8++KCtvvrqQ1rAtdde2/7617/aCiusYKeffrpdcskl9tBDD9kb3vAG+8IXvmCbuhM58fZoAWl7aYrApZea7bKLCGCnOPoE8EtfMltpJbMdd+y0tZH1cgngVluZ3XDD2BHAm282e/kbdqjTtjSN3UFRrQiBiYmAzu8BIYBz58616dOn21NPPWU3s3ua2R133GEbb7yxvfKVr7STTjppyPbvwgsvtDPOOMPuu+++IbIYyvPPP2/844QFNGXKFJs9e7YtSUAuiRCoiYAIYE3AguI+AXQ/dYsQ5RLAshl0axxh+zNnmr397cN/baufZk9GtYXAxEZABHBACOABBxxg11xzjd1yyy22EioCM7vttttsk002GbL/O+aYY+at1HXXXdfe/e53G04koRx11FF29NFHj/q7CODEftEn8uguu8yMvLGIDvL6T6otAnj99WbbbFNOsmL9hqNv63n++Mdm73iHCGD91aIaQmAYARHAASCABx54oF155ZV200032SqrrDLv6T/88MP2ute9zi666CL7AMk8X5Zdd93VFlxwQftmmN3dbEj7Jw2gtpBuIuBrmZ58sog5J8lHIEbECAdDWJgmErYbkrnxJIA/+pHZllsOz+7KK82mT28yW9UVAoOHgAhgHxNArn0hf1dccYXdeOONo650+R1t4N577z3CCWSDDTawd73rXSO0gmWvhhbQ4G0a3Z7xWWeZffjDRat/+pPZiit2u4f+bi9GxN77XjM0q02kLgGkfEgSX3zRbP75R47iiSfMuMLdfnuzhRbqbIQ/+IEZdoe+tKVt7GyEqiUEJj4COr/7mADuv//+dvHFF9tVV101IvbfUkstNS/G36mnnmpHHnmknXPOOUM2gBdccMGQPSA2gKsSyTUhWkAphPR7CgFfA/jII2b/9m+pGvrdIfCPfxSZMEIhLEvMK7cOcikCuOaaZr/85XCLEL2XXhrZA/adO+888m+u3mc+YxaxJskaIg4nW28tApgFlgoJgRIEdH73MQGcr+SO5rzzzrM999xz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FgHMtfG0gXLBp85CQAgIASEgBJqCgN7fIoC5Np42UC741FkICAEhIASEQFMQ0PtbBDDXxtMGygWfOgsBISAEhIAQaAoCen+LAObaeDNnzsRSSy2Fd999F7169co1ljoLASEgBISAEBAC5SBAAtivXz98+umn6N27dzkXbbGrtM2fP39+i82p00xn6tSp0QaSCAEhIASEgBAQAp0PASpwVlpppc438QbMWAQwB4jz5s3De++9h29+85toa2vLMVJrdjVfSNJwZr8/wi47ZnYP4Vc/fsJO2NWPQL6enWnvUff173//GyussAJ69OiRb+GdtLcIYCe9cWVMWz4S9aMs7OrHjj2FX/34CTthVz8C+Xpq7+XDr+zeIoBlI96JrqeHuf6bJezqx04EUNjlQ6D+3npu68dOz20+7JrRWwSwGah3kmvqMKz/Rgm7+rHTi0TY5UOg/t56buvHTs9tPuya0VsEsBmod5Jrzp49GxdccAFOO+00LLbYYp1k1q0xTWGX7z4Iv/rxE3bCrn4E8vXU3suHX9m9RQDLRlzXEwJCQAgIASEgBIRAkxEQAWzyDdDlhYAQEAJCQAgIASFQNgIigGUjrusJASEgBISAEBACQqDJCIgANvkG6PJCQAgIASEgBISAECgbARHAshHX9YSAEBACQkAICAEh0GQERACbfAOKuvykSZMwatQovPDCC5g+fTrGjh2L3XbbLfZyzz77LE455RT89a9/xeeff46VV14Zw4YNw3HHHdfeZ5VVVsE//vGPmjGGDx+OK664Ivr7VltthaeffrpDm7333hv//d//XdRSGz5uEdh9/fXXGDFiBG699Va8//776Nu3L37605/ijDPOaM9Cz8z0I0eOxLXXXotPPvkEm266aYTrOuus0/A1FjVgs7Ajlr/73e86LIv4/eEPfyhqqYWMWwR+rHZw5plnRmfAhx9+iIEDB+I3v/kNNt544/Y1aO/5z7wQ7LrC3su67+zNP3nyZPzgBz/Auuuui5dffrnDc3HllVdG7yG+g3iOXXrppdhyyy3b2zBq+MQTT8Ttt9+OL774AltvvTXYp7uWZivkUEkYVASwbMRLut748ePBB3PQoEEYMmRIKgF86aWXIvK3/vrrY8kllwQJIQngJZdcgsMPPzya9T//+U/MnTu3fQV/+ctfsO222+Kpp56KiJ8hgGuuuSZ++ctftrdbfPHFO1Wx7SKwO++88yIsSVJ4EP7pT3/CwQcfjHPPPRfHHHNMhNWvfvUrsN2YMWNADPkbD+a//e1vUbnBziDNwo4v4Q8++AA33nhjO0yLLroo+vTp0xlga59jEfjxA4zP6lVXXRWVvbrllluivfh///d/WHHFFbX3Es68EOy6wt7Luu/Mhp05c2b0jll99dWj588mgHfccQcOPPDAiNB9//vfxzXXXIPf/va30b7r379/NMSRRx6JBx54IDrzll56aZxwwgn4+OOPI8XFQgst1Kme3c44WRHAznjXMs6ZdYrTNIC+IffYY4+IDN58883eKx577LF48MEH8fe//729FjKJ4IYbbhh96XUFaRR2O++8M5Zbbjlcf/317bCQmC+xxBIRvtTA8OVMTKmJpfDrmH1IDEnGO5uUhR1x4Uv4008/xbhx4zobTLHzbQR+1Krw4+G+++7DTjvt1H4tPqPck/zI0N6r3gL7zAvBrivuvSz7bp999sEaa6wRkTU+ezYBpAae5JAfHkb+4z/+I7JEMb8syeMyyywTnX8k2pT33nsP/fr1w8MPP4ztt9++yzzLrboQEcBWvTMNnFeWB9pclhrBHXbYIXpBHHrooTWzmTNnTkRYjj/+eJx++untv5MAvvrqq9FLheSFY5x99tmdRoPlLrRR2F144YW4+uqr8dhjj0XavVdeeQXbbbddRJT33XdfvPnmmxgwYABefPHFyERnZNddd8VSSy1VY95s4PYobKiysDMvYb6AqPUjXjRJUZu67LLLFra+ogduBH40Yfbq1QtPPPFEZF4zsvnmm0fJ3SdOnKi9twAU98wLwa4r7r3QfUdtO7V7zz33XPSesAkg3w/8uL3rrruw++67t+87WjtIEukmNGHChGhPUuP3rW99q73NBhtsEJFEusNIikVABLBYfFti9NAHmpOl7wVNvcZnjb5DPrnzzjux33774Z133omIoJHrrrsOq666KpZffvnI7MQqIjQPPP744y2BRdZJNAo7EmISZWrz+LVMUzoJCvGh/P73v4/MJNOmTeuAJ83v9Lt89NFHs0696e3Lwo4LpbmpZ8+eke/qW2+9Ffm8cQ/TlNRZq9g0Cr/vfe97ETG+7bbboo8y+lsddNBBkeaG7gXae/FnXhp2XXHvhew7Wn222GILPPPMM9EHLf2bbQJITR7dC+iGRAyNnH/++dHHLPcd9yPdYGjpsIUfxnyH0GQsKRYBEcBi8W2J0UMeaDNRvjxnzZoVOc+feuqpuPzyyyMNlStUz/OlQv+NJOEL+Lvf/W70IqY5oLNJo7BjEMxJJ50UOUTTB5BfwTT3jh49GkOHDm1/CfPgZICIkcMOOwzvvvsuHnnkkc4GXeQWEOp6kLTv0rDzAUOnc5JB9qVZrzNKo/B744038LOf/SzyJ+XHB59DvrSpbaY/liGA2nu1Z14adl1x76XtO368brbZZjjkkENwxBFHRBDEEUDuLWqbjfCjlyZf+pvHEUD6ldMaQouJpFgERACLxbclRk97oOMmSbU+H1Z+rdlCjdRqq62Ge++9FzRRJgk1X9TA2H4eLQFK4CQahR39WkiojzrqqPYrE1865PMwlAm4ekPcfZeGXdytpIaL7gvGpzLwlrdMs0btPbOgzz77DP/617+iDwz6XPFD76GHHtLes+543JkXh11X3Htp+46+tjTZ2kEa8+bNi9x++De6uVA7KBNwyxwlsRMRAWz9e5R7hmkPdNwFzjnnnCho4e233+7QhF97VM9TM7Xwwgsnzo9m4PXWWy/y+fh//+//5V5L2QM0CjtGuPHlwqg3I3SEph/N66+/3u6Iz7Q7J598ctSEfjT0YetuQSDuvkvDzrcnZsyYEZmgmFKH5s7OKI3ae+7amWKIJrZf//rXUYS/CQLR3gPizjyDoYtdV9x7afuOZI+aY1voC0ifvrvvvjvaWwweZBDIRhttFPkJGll77bUjpYEdBMKP4L322itqQs093ZAUBFLOiSUCWA7OpV+FX/dTpkyJrsugApoaBw8eHKXFYAg+fc/ob3bTTTdFbZhvjn//zne+E/0308DQRHn00UdHxMUIH34+4DQLM7DBFppLmOduxx13xLe//e3okGBYP9PAPP/8850mrL8I7BilSkd8EmeagOlwzpcvTXMkeBT+vyGF1F7RX4ZO+p0pDUwzsOM1+VHCqGpqt/jBQn9L+qe+9tprnSoAqQj86D9KkrfWWmtFZwJdEaiV5zO+yCKLaO8lnHlp2HWVvZd137kvNNcEzN9NGhiacmkG5scYfcQZJEj3DAo/iJlJgmlg+G5iTkB+vCkNTDmUQQSwHJxLvwqJAwmfK/Q348NGQsIXJdtRLrvssoic0BeLWj36YND/jOlHevTo0T4M1fv0/yMpoR+RLdQIHnDAAVHwBw8Umu6YeoJRwJ0pH1sR2LkJZRk4QxJ91llnRb6UFJOMl/fBTgTNBKudRZqBHdN1MGqQpJrmKZJA7n1qc7gHO5MUgR8DtvjBN3Xq1Og5JFGmL1bv3r3bodHe8595adh1lb2Xdd+FEEC2ofaPmmZq9niOMf+kbQn68ssvow8S+gPaiaA723Pbmc4Ye64igJ31zmneQkAICAEhIASEgBCoEwERwDqBUzchIASEgBAQAkJACHRWBEQAO+ud07yFgBAQAkJACAgBIVAnAiKAdQKnbkJACAgBISAEhIAQ6KwIiAB21juneQsBISAEhIAQEAJCoE4ERADrBE7dhIAQEAJCQAgIASHQWREQAeysd07zFgJCQAgIASEgBIRAnQiIANYJnLoJASEgBISAEBACQqCzIiAC2FnvnOYtBISAEBACQqCLIjBp0iSMGjUqqgrCRNJjx46NEr6HCquTjBw5sqY5axSztrMEEAHULhACQkAICAEhIARaCoHx48dj8uTJGDRoUFS9JisBZDUq/s+WrbfeGhtvvHFUDUsiAqg9IASEgBAQAkJACLQwAm1tbTUEcM6cOTjjjDOi+vMsAclSc6ynvtVWW3lX8sorr2DDDTcENYtbbrllC6+2vKlJA1ge1rqSEBACQkAICAEhkBEBHwHcf//9o3r2F154IVhbnRpCEsL//d//xRprrFFzhaOPPhqsZc869pIKAiKA2glCQAgIASEgBIRAyyLgEsA33ngjInlTp06NyJ+RbbbZBptssgnOP//8DmuZPXs2+vbti1NPPRUnn3xyy66z7ImJAJaNuK4nBISAEBACQkAIBCPgEsC77roLe+21F5ZccskaorfHHnvgjjvu6PD322+/HQcddBDeffddLL/88sHX7eoNRQC7+h3W+oSAEBACQkAIdGIEXAJIgkcT8KuvvoqFFlqow8p69uxZQ/IY/NGrV6/ITCypIiACqN0gBISAEBACQkAItCwCLgF8/fXXsdZaawUFdLz11lsYMGAA7r//fuy8884tu8ZmTEwEsBmo65pCQAgIASEgBIRALAJM4TJlypTo94EDB2L06NEYPHgw+vTpg/79++OAAw6I0sRcfPHF0e8fffQRJkyYgPXWWw877rhj+7hnnnkmbrjhBrzzzjs12sLuDr8IYHffAVq/EBACQkAICIEWQ2DixIkR4XNl6NChUR6/r776Cueeey5uuukmTJs2DUsvvTQ233zzKPkzSSBl3rx5WHnllSP/v/POO6/FVtj86YgANv8eaAZCQAgIASEgBISAECgVARHAUuHWxYSAEBACQkAICAEh0HwERACbfw80AyEgBISAEBACQkAIlIqACGCpcOtiQkAICAEhIASEgBBoPgIigM2/B5qBEBACQkAICAEhIARKRUAEsFS4dTEhIASEgBAQAkJACDQfARHA5t8DzUAICAEhIASEgBAQAqUiIAJYKty6mBAQAkJACAgBISAEmo+ACGDz74FmIASEgBAQAkJACAiBUhEQASwVbl1MCAgBISAEhIAQEALNR0AEsPn3QDMQAkJACAgBISAEhECpCIgAlgq3LiYEhIAQEAJCQAgIgeYjIALY/HugGQgBISAEhIAQEAJCoFQERABLhVsXEwJCQAgIASEgBIRA8xH4/3lyoBB62LxLAAAAAElFTkSuQmCC\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Take useful feature and standardize them \n",
"data = df[['value', 'time_epoch']]\n",
"min_max_scaler = preprocessing.StandardScaler()\n",
"np_scaled = min_max_scaler.fit_transform(data)\n",
"data = pd.DataFrame(np_scaled)\n",
"# Train isolation forest \n",
"model = IsolationForest(contamination = outliers_fraction)\n",
"model.fit(data) \n",
"df['anomaly'] = pd.Series(model.predict(data))\n",
"df['anomaly'] = df['anomaly'].map( {1: 0, -1: 1} )\n",
"\n",
"# Plot\n",
"fig, ax = plt.subplots()\n",
"\n",
"a = df.loc[df['anomaly'] == 1, ['time_epoch', 'value']]\n",
"\n",
"ax.plot(df['time_epoch'], df['value'], color='blue')\n",
"ax.scatter(a['time_epoch'],a['value'], color='red')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### 2.3 SVM\n",
"\n",
"SVM (Support Vector Machine), a common classifier in supervised machine learning, is good for novelty detection (no anomalies in the train set)."
]
},
{
"cell_type": "code",
"execution_count": 16,
"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 / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydC9xlU/3/v+OayLiLZkhI7hQVlcht3CLXIYqkws8v/VAxFXLLpR/6lVRKLg3CMHKXXJLoSiPpHym3hDGGFIXn/3qfM2ueddaz9t5r733OeZ5zzuf7es2LmbPW2mt99nfv9dnf9b2MGxoaGjKJEBACQkAICAEhIASEwMAgME4EcGDutRYqBISAEBACQkAICIEGAiKAUgQhIASEgBAQAkJACAwYAiKAA3bDtVwhIASEgBAQAkJACIgASgeEgBAQAkJACAgBITBgCIgADtgN13KFgBAQAkJACAgBISACKB0QAkJACAgBISAEhMCAISACOGA3XMsVAkJACAgBISAEhIAIoHRACAgBISAEhIAQEAIDhoAI4IDdcC1XCAgBISAEhIAQEAIigNIBISAEhIAQEAJCQAgMGAIigAN2w7VcISAEhIAQEAJCQAiIAEoHhIAQEAJCQAgIASEwYAiIAA7YDddyhYAQEAJCQAgIASEgAigdEAJCQAgIASEgBITAgCEgAjhgN1zLFQJCQAgIASEgBISACKB0QAgIASEgBISAEBACA4aACOCA3XAtVwgIASEgBISAEBACIoDSASEgBISAEBACQkAIDBgCIoADdsO1XCEgBISAEBACQkAIiABKB4SAEBACQkAICAEhMGAIiAAO2A3XcoWAEBACQkAICAEhIAIoHRACQkAICAEhIASEwIAhIAI4YDdcyxUCQkAICAEhIASEgAigdEAICAEhIASEgBAQAgOGgAjggN1wLVcICAEhIASEgBAQAiKA0gEhIASEgBAQAkJACAwYAiKAA3bDtVwhIASEgBAQAkJACIgASgeEgBAQAkJACAgBITBgCIgADtgN13KFgBAQAkJACAgBISACKB0QAkJACAgBISAEhMCAISACOGA3XMsVAkJACAgBISAEhIAIoHRACAgBISAEhIAQEAIDhoAI4IDdcC1XCAgBISAEhIAQEAIigNIBISAEhIAQEAJCQAgMGAIigAN2w7VcISAEhIAQEAJCQAiIAEoHhIAQEAJCQAgIASEwYAiIAA7YDddyhYAQEAJCQAgIASEgAigdEAJCQAgIASEgBITAgCEgAjhgN1zLFQJCQAgIASEgBISACKB0QAgIASEgBISAEBACA4aACOCA3XAtVwgIASEgBISAEBACIoDSASEgBISAEBACQkAIDBgCIoADdsO1XCEgBISAEBACQkAIiABKB4SAEBACQkAICAEhMGAIiAAO2A3XcoWAEBACQkAICAEhIAIoHRACQkAICAEhIASEwIAhIAI4YDdcyxUCQkAICAEhIASEgAigdEAICAEhIASEgBAQAgOGgAjggN1wLVcICAEhIASEgBAQAiKA0gEhIASEgBAQAkJACAwYAiKAA3bDtVwhIASEgBAQAkJACIgASgeEgBAQAkJACAgBITBgCIgADtgN13KFgBAQAkJACAgBISACKB0QAkJACAgBISAEhMCAISACOGA3XMsVAkJACAgBISAEhIAIoHRACAgBISAEhIAQEAIDhoAIYI0b/tprr9kTTzxhb3jDG2zcuHE1RlJXISAEhIAQEAJCoFsIDA0N2QsvvGDLL7+8zTPPPN267Ji6jghgjdvx2GOP2cSJE2uMoK5CQAgIASEgBITAaCHw6KOP2oQJE0br8qN6XRHAGvDPnj3bFltsMUOBFl100RojqasQEAJCQAgIASHQLQSef/75hgHnueees/Hjx3frsmPqOiKANW4HCoTiQARFAGsAqa5CQAgIASEgBLqIgPZvMxHAGgonBaoBnroKASEgBISAEBglBLR/iwDWUj0pUC341FkICAEhIASEwKggoP1bBLCW4kmBasGnzkJACAgBISAERgUB7d8igLUUTwpUCz51FgJCQAgIASEwKgho/xYBrKV4UqBa8KmzEBACQkAICIFRQUD7twhgLcWTAtWCT52FgBAQAkJACIwKAtq/RQBrKZ4UqBZ86iwEhIAQEAJCYFQQ0P4tAlhL8aRAteBTZyEgBISAEBACo4KA9m8RwFqKJwWqBZ86CwEhIASEgBAYFQS0f4sA1lI8KVAt+NRZCAgBISAEhMCoIKD9WwSwluJJgWrBp85CQAgIASEgBEYFAe3fIoC1FE8KVAs+dRYCvY/Aq6+a/fSnZn/7m9lyy5m9731m887b++vSCoRAnyOg/VsEsJaKS4FqwafOQqC3EZg2zezTnzZ77LHhdUyYYHbmmWY779zba9PshUCfI6D9WwSwlopLgWrBp85CoHcRgPztskv2/C+/XCSwd++uZj4ACGj/7mMC+M1vftP485e//KWhymuuuaZ96Utfsm222abx95dfftkOP/xwu+ii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t+F69eqFYcOGoV+/fujcuTO6du1atRHjmIDdTtpAdfU8azJCQAgIASEgBGIhoPd3AxPAsWPHeoTPlcMOOwzDhw8XAYz1iKiREBACQkAICIHGQ0AEsIEJYB7bVRsoD5R1DSEgBISAEBACtUVA728RwEw7ShsoE3zqLASEgBAQAkKgEAT0/hYBzLTxtIEywafOQkAICAEhIAQKQUDvbxHATBtPGygTfOosBISAEBACQqAQBPT+FgHMtPG0gTLBp85CQAgIASEgBApBQO9vEcBMG08bKBN86iwEhIAQEAJCoBAE9P4WAcy08bSBMsGnzkJACAgBISAECkFA728RwEwbTxsoE3zqLASEgBAQAkKgEAT0/hYBzLTxtIEywafOQkAICAEhIAQKQUDvbxHATBtPGygTfOosBISAEBACQqAQBPT+FgHMtPFmzJiBpZdeGpMnT0bHjh0zjaXOQkAICAEhIASEQD4IkAB26dIFX3/9NTp16pTPRevsKk3z58+fX2dzajXTmTJlireBJEJACAgBISAEhEDrQ4AKnNVWW631TbwGMxYBzADivHnz8PHHH2OppZZCU1NThpHqv6v5WpK2M9m9Em7J8DKthVs63NhL2KXDTrilw6217jnqvr799lusssoqaNeuXfrFt+KeIoCt+OblOXX5S6RDW7gJt3QIpO+lPZcOO+GWDjdDAGlGpVuU3KHS45h3TxHAvBFvpdfT4Zjuxgk34ZYOgfS9tOfSYSfc0uEmApget6J7igAWfQdayfV1OKa7UcJNuKVDIH0v7bl02Am3dLiJAKbHreieIoBF34FWcv3Zs2fjkksuwVlnnYXFFluslcy6+GkKt3T3QLilw429hF067IRbOty059LjVnRPEcCi74CuLwSEgBAQAkJACAiBnBEQAcwZcF1OCAgBISAEhIAQEAJFIyACWPQd0PWFgBAQAkJACAgBIZAzAiKAOQOuywkBISAEhIAQEAJCoGgERACLvgO6vhAQAkJACAgBISAEckZABDBnwPO+3Lhx4zB06FBMmDAB06ZNw8iRI7H33nsHTuOll17CGWecgXfeeQfff/89unXrhmOOOQa/+93vmvusvvrq+PDDD6vGGDhwIK677jrv79tvvz1eeOGFijb9+/fHfffdlzcEqa/XEtj99NNPGDx4MO655x588sknWHnllfHrX/8a5557bnM2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ekMRwEa/w1qfEBACQkAICIFWjIBLAEnwaAJ+8803sdBCC1WsbMkll6wieQz+6Nixo2cmlpQREAHUbhACQkAICAEhIATqFgGXAL777rvo0aNHrICOSZMmoXv37njsscewxx571O0ai5iYCGARqOuaQkAICAEhIASEQCACTOEyceJE7/devXph2LBh6NevHzp37oyuXbvi4IMP9tLEXHnlld7vX3zxBZ577jlssMEG2G233ZrHPe+883Dbbbfho48+qtIWtnX4RQDb+g7Q+oWAEBACQkAI1BkCY8eO9QifK4cddpiXx+/HH3/ERRddhDvvvBNTp07Fsssui6222spL/kwSSJk3bx66devm+f8NGTKkzlZY/HREAIu/B5qBEBACQkAICAEhIARyRUAEMFe4dTEhIASEgBAQAkJACBSPgAhg8fdAMxACQkAICAEhIASEQK4IiADmCrcuJgSEgBAQAkJACAiB4hEQASz+HmgGQkAICAEhIASEgBDIFQERwFzh1sWEgBAQAkJACAgBIVA8AiKAxd8DzUAICAEhIASEgBAQArkiIAKYK9y6mBAQAkJACAgBISAEikdABLD4e6AZCAEhIASEgBAQAkIgVwREAHOFWxcTAkJACAgBISAEhEDxCIgAFn8PNAMhIASEgBAQAkJACOSKgAhgrnDrYkJACAgBISAEhIAQKB4BEcDi74FmIASEgBAQAkJACAiBXBEQAcwVbl1MCAgBISAEhIAQEALFI/D/AX5NzR973CYPAAAAAElFTkSuQmCC\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Take useful feature and standardize them \n",
"data = df[['value', 'time_epoch']]\n",
"min_max_scaler = preprocessing.StandardScaler()\n",
"np_scaled = min_max_scaler.fit_transform(data)\n",
"# Train one class SVM \n",
"model = OneClassSVM(nu=0.95 * outliers_fraction)\n",
"data = pd.DataFrame(np_scaled)\n",
"model.fit(data) \n",
"df['anomaly'] = pd.Series(model.predict(data))\n",
"df['anomaly'] = df['anomaly'].map( {1: 0, -1: 1} )\n",
"\n",
"# Plot\n",
"fig, ax = plt.subplots()\n",
"\n",
"a = df.loc[df['anomaly'] == 1, ['time_epoch', 'value']]\n",
"\n",
"ax.plot(df['time_epoch'], df['value'], color='blue')\n",
"ax.scatter(a['time_epoch'],a['value'], color='red')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### 2.4 RNN\n",
"\n",
"RNN (Recurrent Neural Networks) learn to recognize sequence in the data and then make prediction based on the previous sequence. We consider an anomaly when the next data points are distant from RNN prediction. Aggregation, size of sequence and size of prediction for anomaly are important parameters to have relevant detection."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"# Create sequence of 50 previous data points for each data points\n",
"def unroll(data,sequence_length=24):\n",
" result = []\n",
" for index in range(len(data) - sequence_length):\n",
" result.append(data[index: index + sequence_length])\n",
" return np.asarray(result)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x_train (6165, 50, 2)\n",
"y_train (6165,)\n",
"x_test (1000, 50, 2)\n",
"y_test (1000,)\n"
]
}
],
"source": [
"# Select and standardize data\n",
"data_n = df[['value', 'time_epoch']]\n",
"min_max_scaler = preprocessing.StandardScaler()\n",
"np_scaled = min_max_scaler.fit_transform(data_n)\n",
"data_n = pd.DataFrame(np_scaled)\n",
"\n",
"# Parameters and train/test size\n",
"prediction_time = 1 \n",
"testdatasize = 1000\n",
"unroll_length = 50\n",
"testdatacut = testdatasize + unroll_length + 1\n",
"\n",
"# Train data\n",
"x_train = data_n[0:-prediction_time-testdatacut].as_matrix()\n",
"y_train = data_n[prediction_time:-testdatacut ][0].as_matrix()\n",
"\n",
"# Test data\n",
"x_test = data_n[0-testdatacut:-prediction_time].as_matrix()\n",
"y_test = data_n[prediction_time-testdatacut: ][0].as_matrix()\n",
"\n",
"# Adapt the datasets for the sequence data shape\n",
"x_train = unroll(x_train,unroll_length)\n",
"x_test = unroll(x_test,unroll_length)\n",
"y_train = y_train[-x_train.shape[0]:]\n",
"y_test = y_test[-x_test.shape[0]:]\n",
"\n",
"# Shape it\n",
"print(\"x_train\", x_train.shape)\n",
"print(\"y_train\", y_train.shape)\n",
"print(\"x_test\", x_test.shape)\n",
"print(\"y_test\", y_test.shape)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"compilation time : 0.01293325424194336\n"
]
}
],
"source": [
"# Build the model\n",
"model = Sequential()\n",
"model.add(LSTM(\n",
" 128,\n",
" input_dim=x_train.shape[-1],\n",
" return_sequences=True))\n",
"model.add(Dropout(0.2))\n",
"\n",
"model.add(LSTM(\n",
" 128,\n",
" return_sequences=False))\n",
"model.add(Dropout(0.2))\n",
"\n",
"model.add(Dense(1))\n",
"model.add(Activation('linear'))\n",
"\n",
"start = time.time()\n",
"model.compile(loss='mse', optimizer='rmsprop')\n",
"print('compilation time : {}'.format(time.time() - start))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"lstm_2 (LSTM) (None, None, 128) 67072 \n",
"_________________________________________________________________\n",
"dropout_2 (Dropout) (None, None, 128) 0 \n",
"_________________________________________________________________\n",
"lstm_3 (LSTM) (None, 128) 131584 \n",
"_________________________________________________________________\n",
"dropout_3 (Dropout) (None, 128) 0 \n",
"_________________________________________________________________\n",
"dense_1 (Dense) (None, 1) 129 \n",
"_________________________________________________________________\n",
"activation_1 (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 198,785\n",
"Trainable params: 198,785\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 5548 samples, validate on 617 samples\n",
"WARNING:tensorflow:From C:\\Users\\haokuang\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
"Epoch 1/200\n",
"5548/5548 [==============================] - 8s 1ms/sample - loss: 0.5120 - val_loss: 0.8122\n",
"Epoch 2/200\n",
"5548/5548 [==============================] - 8s 1ms/sample - loss: 0.2389 - val_loss: 0.4476\n",
"Epoch 3/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.1435 - val_loss: 0.3675\n",
"Epoch 4/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.1424 - val_loss: 0.3797\n",
"Epoch 5/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1374 - val_loss: 0.3175\n",
"Epoch 6/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1308 - val_loss: 0.3102\n",
"Epoch 7/200\n",
"5548/5548 [==============================] - 9s 2ms/sample - loss: 0.1288 - val_loss: 0.2876\n",
"Epoch 8/200\n",
"5548/5548 [==============================] - 9s 2ms/sample - loss: 0.1258 - val_loss: 0.2939\n",
"Epoch 9/200\n",
"5548/5548 [==============================] - 9s 2ms/sample - loss: 0.1258 - val_loss: 0.2725\n",
"Epoch 10/200\n",
"5548/5548 [==============================] - 9s 2ms/sample - loss: 0.1301 - val_loss: 0.2839\n",
"Epoch 11/200\n",
"5548/5548 [==============================] - 9s 2ms/sample - loss: 0.1200 - val_loss: 0.2529\n",
"Epoch 12/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1228 - val_loss: 0.2523\n",
"Epoch 13/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1209 - val_loss: 0.2679\n",
"Epoch 14/200\n",
"5548/5548 [==============================] - 9s 2ms/sample - loss: 0.1147 - val_loss: 0.2314\n",
"Epoch 15/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1035 - val_loss: 0.2249\n",
"Epoch 16/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1023 - val_loss: 0.2229\n",
"Epoch 17/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.1158 - val_loss: 0.2034\n",
"Epoch 18/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.0904 - val_loss: 0.1971\n",
"Epoch 19/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.0874 - val_loss: 0.2266\n",
"Epoch 20/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.0921 - val_loss: 0.1752\n",
"Epoch 21/200\n",
"5548/5548 [==============================] - 10s 2ms/sample - loss: 0.0775 - val_loss: 0.1707\n",
"Epoch 22/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0710 - val_loss: 0.1573\n",
"Epoch 23/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0761 - val_loss: 0.1612\n",
"Epoch 24/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0789 - val_loss: 0.1435\n",
"Epoch 25/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0682 - val_loss: 0.1293\n",
"Epoch 26/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0608 - val_loss: 0.1196\n",
"Epoch 27/200\n",
"5548/5548 [==============================] - 12s 2ms/sample - loss: 0.0638 - val_loss: 0.1207\n",
"Epoch 28/200\n",
"5548/5548 [==============================] - 12s 2ms/sample - loss: 0.0666 - val_loss: 0.1186\n",
"Epoch 29/200\n",
"5548/5548 [==============================] - 13s 2ms/sample - loss: 0.0609 - val_loss: 0.1129\n",
"Epoch 30/200\n",
"5548/5548 [==============================] - 12s 2ms/sample - loss: 0.0649 - val_loss: 0.1424\n",
"Epoch 31/200\n",
"5548/5548 [==============================] - 12s 2ms/sample - loss: 0.0629 - val_loss: 0.1065\n",
"Epoch 32/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0620 - val_loss: 0.1220\n",
"Epoch 33/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0621 - val_loss: 0.1023\n",
"Epoch 34/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0602 - val_loss: 0.1169\n",
"Epoch 35/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0598 - val_loss: 0.0986\n",
"Epoch 36/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0587 - val_loss: 0.1251\n",
"Epoch 37/200\n",
"5548/5548 [==============================] - 11s 2ms/sample - loss: 0.0616 - val_loss: 0.0986\n",
"Epoch 38/200\n",
"5548/5548 [==============================] - 12s 2ms/sample - loss: 0.0575 - val_loss: 0.1245\n",
"Epoch 39/200\n",
"5548/5548 [==============================] - 12s 2ms/sample - loss: 0.0605 - val_loss: 0.0999\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x2567a7c6588>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Train the model\n",
"es = EarlyStopping(monitor='val_loss', min_delta=0, mode='auto',patience=2, verbose=0)\n",
"model.fit(\n",
" x_train,\n",
" y_train,\n",
" batch_size=2048,\n",
" epochs=200,\n",
" validation_split=0.1,\n",
" callbacks=[es])"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# Create the list of difference between prediction and test data\n",
"diff=[]\n",
"ratio=[]\n",
"p = model.predict(x_test)\n",
"\n",
"for u in range(len(y_test)):\n",
" pr = p[u][0]\n",
" ratio.append((y_test[u]/pr)-1)\n",
" diff.append(abs(y_test[u]- pr))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 7257\n",
"1 10\n",
"Name: anomaly, dtype: int64\n"
]
}
],
"source": [
"# select the most distant prediction/reality data points as anomalies\n",
"diff = pd.Series(diff)\n",
"number_of_outliers = int(outliers_fraction*len(diff))\n",
"threshold = diff.nlargest(number_of_outliers).min()\n",
"# Anomaly\n",
"test = (diff >= threshold).astype(int)\n",
"# Normal\n",
"complement = pd.Series(0, index=np.arange(len(data_n)-testdatasize))\n",
"df['anomaly'] = complement.append(test, ignore_index='True')\n",
"print(df['anomaly'].value_counts())"
]
},
{
"cell_type": "code",
"execution_count": 30,
"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 / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>');\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydCdxuU9n/r4OSITIWOUVIKWP8yyEq8xSVct5SiWRKKrwZ3kIDoRJlSISU3t7Mc6QclHojRN5TSBqVObPo/D/f57Y8617PWnuvvfd9P8+97/t3fT7nU557jb+19l6/fa1rmDZnzpw5JhECQkAICAEhIASEgBAYGQSmiQCOzFprokJACAgBISAEhIAQGENABFAbQQgIASEgBISAEBACI4aACOCILbimKwSEgBAQAkJACAgBEUDtASEgBISAEBACQkAIjBgCIoAjtuCarhAQAkJACAgBISAERAC1B4SAEBACQkAICAEhMGIIiACO2IJrukJACAgBISAEhIAQEAHUHhACQkAICAEhIASEwIghIAI4Yguu6QoBISAEhIAQEAJCQARQe0AICAEhIASEgBAQAiOGgAjgiC24pisEhIAQEAJCQAgIARFA7QEhIASEgBAQAkJACIwYAiKAI7bgmq4QEAJCQAgIASEgBEQAtQeEgBAQAkJACAgBITBiCIgAjtiCa7pCQAgIASEgBISAEBAB1B4QAkJACAgBISAEhMCIISACOGILrukKASEgBISAEBACQkAEUHtACAgBISAEhIAQEAIjhoAI4IgtuKYrBISAEBACQkAICAERQO0BISAEhIAQEAJCQAiMGAIigCO24JquEBACQkAICAEhIAREALUHhIAQEAJCQAgIASEwYgiIAI7Ygmu6QkAICAEhIASEgBAQAdQeEAJCQAgIASEgBITAiCEgAjhiC67pCgEhIASEgBAQAkJABFB7QAgIASEgBISAEBACI4aACOCILbimKwSEgBAQAkJACAgBEUDtASEgBISAEBACQkAIjBgCIoAjtuCarhAQAkJACAgBISAERAC1B4SAEBACQkAICAEhMGIIiACO2IJrukJACAgBISAEhIAQEAHUHhACQkAICAEhIASEwIghIAI4Yguu6QoBISAEhIAQEAJCQARQe0AICAEhIASEgBAQAiOGgAjgiC24pisEhIAQEAJCQAgIARFA7QEhIASEgBAQAkJACIwYAiKAI7bgmq4QEAJCQAgIASEgBEQAtQeEgBAQAkJACAgBITBiCIgAjtiCa7pCQAgIASEgBISAEBAB1B4QAkJACAgBISAEhMCIISACOGILrukKASEgBISAEBACQkAEUHtACAgBISAEhIAQEAIjhoAI4IgtuKYrBISAEBACQkAICAERQO0BISAEhIAQEAJCQAiMGAIigCO24JquEBACQkAICAEhIAREALUHhIAQEAJCQAgIASEwYgiIAI7Ygmu6QkAICAEhIASEgBAQAdQeEAJCQAgIASEgBITAiCEgAjhiC67pCgEhIASEgBAQAkJABFB7QAgIASEgBISAEBACI4aACOCILbimKwSEgBAQAkJACAgBEUDtASEgBISAEBACQkAIjBgCQ0sATzjhBOPfH/7wh7Elfd3rXmef+cxnbPPNNx/776eeesr23Xdf+973vmdPPPGEbbjhhnb88cfbMsssM2JbQNMVAkJACAgBISAERg2BoSWAF154oc0999y2wgorjK3p6aefbkcddZTdeOONY2Rw9913N8qcdtpptthii9k+++xjDzzwgN1www1j9SRCQAgIASEgBISAEBhWBIaWAMYWbNFFFx0jgdttt50tscQSdsYZZ9j2228/VvSvf/2rTZ8+3S655BLbdNNNh3W9NS8hIASEgBAQAkJACNhIEMBnn33WfvCDH9gHP/jBMQ3gPffcM3bli8ZvkUUWeX4brLbaarbtttvaoYceqq0hBISAEBACQkAICIGhRWCoCeAtt9xi66yzjj355JO24IIL2plnnmlbbLHF2P9+6EMfGrMD9GWTTTax5ZZbzr7xjW9EF5zyfp1///vfYySSK+Rp06YN7SbRxISAEBACQkAIDBMCc+bMsUceecSWXnppm2uuuYZpatlzGWoC+PTTT9sf//hHe+ihh+zss8+2k08+2WbNmmU33XRTlABuvPHGtvzyy9uJJ54YBfCQQw6RdjB7a6mgEBACQkAICIHBRuBPf/rTyDp/DjUBDLfdRhttNEbwsPurcwUcagAffvhhe8UrXmFsoIUWWmiwd7lGJwSEQG0EFl54vOrDD9duRhWFgBAYEAT++c9/jtn9oyBa2H/AB2R8kzGMkSKAkD4W/JhjjhlzAvnOd75j73nPe8Zw/tvf/jb2FVDFCYQNxMaBCIoATsZ2VR9CYGoQ8C085syZmjGoVyEgBHqHgM5vG14nkAMPPHAs5h+Ej3v+//7v/7YvfvGLdtlllxlXvYSBueiii8bCwOAdTEzA+++/v1IYGG2g3j2MakkIDDICIoCDvDoamxCojoDO7yEmgDvvvLNdeeWVY5o9tHSrrrqqfepTnxojfwiOIfvtt9+YQ4gfCBrCmCvaQLlIqZwQaDcCIoDtXj+NXgiECOj8HmICOBnbXRtoMlBWH0Jg6hEQAZz6NdAIhEAvEdD5LQLYaD9pAzWCT5WFQGsQEAFszVJpoEIgCwGd3yKAWRslVUgbqBF8qiwEWoOACGBrlkoDFQJZCOj8FgHM2igigI1gUmUh0HoERABbv4SagBDoQkAEUASw0SOhDdQIPlUWAq1BQASwNUulgQqBLAR0fosAZm0UaQAbwaTKQqD1CIgAtn4JNQEhIA1gsAdGKhB0r/e/viB6jajaEwKDiYAI4GCui0YlBOoioPNbGsC6e2esnjZQI/hUWQi0BgERwNYslQYqBLIQ0PktApi1UXQF3AgmVRYCrUdABLD1S6gJCAFdAesKuHdPgb4geoelWhICg4yACOAgr47GJgSqI6DzWxrA6rvGq6EN1Ag+VRYCrUFABLA1S6WBCoEsBHR+iwBmbRRdATeCSZWFQOsREAFs/RJqAkJAV8C6Au7dU6AviN5hqZaEwCAjIAI4yKujsQmB6gjo/JYGsPqu0RVwI8xUWQi0EQERwDaumsYsBNIIiACKADZ6PrSBGsGnykKgNQiIALZmqTRQIZCFgM5vEcCsjZIqpA3UCD5VFgKtQUAEsDVLpYEKgSwEdH6LAGZtFBHARjCpshBoPQIigK1fQk1ACHQhIAIoAtjokdAGagSfKguB1iAgAtiapdJAhUAWAjq/RQCzNoo0gI1gUmUh0HoERABbv4SagBCQBjDYA9PmzJkzR/uiHgL6gqiHm2oJgbYhIALYthXTeIVAMQI6v6UBbPSMaAM1gk+VhUBrEBABbM1SaaBCIAsBnd8igFkbRVfAjWBSZSHQegREAFu/hJqAENAVsK6Ae/cU6Auid1iqJSEwyAiIAA7y6mhsQqA6Ajq/pQGsvmu8GtpAjeBTZSHQGgREAFuzVBqoEMhCQOe3CGDWRtEVcCOYVFkItBqB737XbIcdxqcgt7lWL6cGLwTGEBABFAFs9ChoAzWCT5WFQCsQ8LV/DFgEsBXLpkEKgUIEdH6LADZ6RLSBGsGnykKgFQiIALZimTRIIVAJAZ3fIoCVNkxYWBuoEXyqLARagUBIAP/9b7Pwb62YiAYpBITA8wjo/BYBbPQ4aAM1gk+VhUArEAjJ3rPPms01VyuGrkEKASGQQEDntwhgo4dDG6gRfKosBFqBQEgA//Uvs3nmacXQNUghIAREAJN7QKngGjweIoANwFNVIdASBEIC+PTTZi94QUsGr2EKASEQRUDntzSAjR4NbaBG8KmyEGgFAiEBfPJJs3nnbcXQNUghIASkAZQGsB9PgQhgP1BVm0JgsBAICeDjj5vNN99gjVGjEQJCoBoCOr+lAay2Y4LS2kCN4FNlIdAKBEIC+NhjZvPP34qha5BCQAhIAygNYD+eAhHAfqCqNoXAYCEQEsBHHjFbcMHBGqNGIwSEQDUEdH5LA1htx0gD2AgvVRYCbUQgJIAPP2y20EJtnInGLASEgENABFAEsNHToA3UCD5VFgKtQCAkgA89ZLbwwq0YugYpBISAroB1BdyPp0AEsB+oqk0hMFgIhATwgQfMFllksMao0QgBIVANAZ3f0gBW2zG6Am6ElyoLgTYiEBLA++4zW2yxNs5EYxYCQkBXwON7YGgDQR9++OF2zjnn2OzZs22++eazGTNm2BFHHGErrbTS87O/5557bL/99rMrrrjCHnnkkbHfDjzwQNtuu+2ynhJ9QWTBpEJCoNUIhATw3nvNFl+81VPS4IXAyCOg83uINYCbbbaZzZw509Zee2175pln7KCDDrJbbrnFbrvtNltggQXGNv/GG29sDz/8sH3961+3xRdf3M4880w7+OCD7frrr7c11lij9AHRBiqFSAWEQOsRCAngPfeYvfSlrZ+WJiAERhoBnd9DTADDnX3vvffakksuabNmzbL1119/7OcFF1zQTjjhBHv/+9//fPHFFlvMjjzySNt5551LHw5toFKIVEAItB6BkAD+9a9mSy3V+mlpAkJgpBHQ+T1CBPCOO+6wFVdccUwL+PrXv35s46MlnGeeeezb3/62veQlL7H/+Z//sQ9/+MN288032/LLL1/6cGgDlUKkAkKg9QiEBPCPfzSbPr3109IEhMBII6Dze0QI4Jw5c2ybbbaxBx980K655prnNz3Xv9tvv7398Ic/HCOC888/v5111lljV8Mxeeqpp4x/TthA06dPH7tGXkiBwUb6ZaLJDy8CIQH8/e/NlltueOermQmBUUBABHBECOCee+5pF198sV177bW2zDLLPL+399prL/vf//1fO+yww8ZsAM877zw7+uijx0jiKqusMuEZOOSQQ+zQ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AxQCFRHQ+S0CWHHLdBfXBmoEnyoLgYFHwPfKDQcrDeDAL58GKASkASzYA7IBbPCAiAA2AE9VhUBNBK64wuzznzf75jfNXv3qmo0E1X7xC7M//9nsXe/q/kEEsDf4qhUhMGgI6PyWBrDRntQGagSfKguBWgg4UrbGGma/+lWtJiZUcm3eeKPZ6quP/1xEAJdYwuwf/+hN/64VxQHsLZ5qTQikEND5LQLY6OnQBmoEnyoLgVoIOJK01FJp+7yqDbs2zzjDbIcd8gggpXodQ0EEsOrKqbwQqIeAzu8hJoCHH364nXPOOTZ79mybb775bMaMGXbEEUfYSiut1LVbrrvuOjvooIPsF7/4hb3gBS+w1Vdf3S699NKxOmWiDVSGkH6vi8Dvf292xx1mm2xSt4XhredI0steZva3v/VmniKAvcFRrQiBtiCg83uICeBmm21mM2fOtLXXXtueeeaZMZJ3yy232G233WYLkNzTzCB/lDvggANs6623the+8IV28803j/3/eQn+VSLaQGUI6fe6CDhCcs01ZuutV7eV4aznsOnlFawI4HDuFc1KCKQQ0Pk9xAQwXPR7773XllxySZs1a5atv/76Yz+/6U1vso033tg+97nP1XpKtIFqwaZKGQg4QvKlL5nts09GhREq4l+T/vvfZkV2ermwiADmIqVyQmA4END5PUIE8I477rAVV1xxTAv4+te/3v7xj3/YS1/6Ujv22GPte9/7nt155532mte8xr7whS/YegmVy1NPPWX8c8IGmj59uj388MO20EILDcdToVkMBAKOkBx1lNm++w7EkAZmED7hW3xxs7POMttgg2bDc21+5ztm73vfeFtl5FI2gM1wV20hMFUIiACOCAEk290222xjDz74oF3DnZqZ/fznP7d11lnHFl10UfvSl740Zvv37W9/244//ni79dZbx8hiKIcccogdeuihE/4uAjhVj/Dw9isCmF7bkJRhrvv44832wiAQQMjkXHONz6PX5LIZQqotBIYLARHAESGAe+65p1188cV27bXX2jLLLDO2i3/2s5/ZuuuuO2b/d9hhhz2/s1dddVXbcsstDSeSUKQBHK4XwCDPxhGST3zC7CtfGeSRTv7YQgKIue6TT9YbBwr9XXc1O/30Tv2p1ABynT333CKA9VZStYRANQREAEeAAO6111523nnn2dVXX23LLbfc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xHVjLvjJkydj4403xqqrrornn3++7F3gecOzj+ce95CLLroIffr0mX1NEc+oamHT7GdU2k2vZQng2LFjwZekZ8+e6N+/fywBfO655zzyt/rqq2P++ecHCSEJ4PDhw3HQQQd5uH/88cf46aefZs/BSy+9hM033xzjx48HFw7l0EMPxd///ndcd911WHjhhfGnP/0Jn332mUdE55xzzrTzV5PrG4UNMVphhRVwxhlnzH6ueeedt2nK7NUCl7POOstbQyQx3IyfeeYZ7LvvvjjzzDNx5JFHejicd9554HVcM8SHv5Fwvfbaa1hwwQVrsgbSdtoobHiQf/TRR7j22mtnD3nuuedGp06d0j5Cza6vBTb8MOL+8re//Q1LLrkkbrrpJm8dvfLKK1hqqaVaet0kwaaI68ZfwCxxxnNt+eWX994NkwDeeuut2GuvvTylwwYbbIArrrgCI0aM8NYNy6IV9YyqFjbNfkal3cRalgCaQLVr1y6WAAYBu9NOO3lk8MYbbwzE/aijjsK9996LN954A7wHX8xFF13Uu56bFOX9999H586dcf/992PLLbdMO381v75e2PBB+HKtueaa3hdps0u1cNl2223xm9/8BldfffXsR+YHyXzzzeetE2pxeMBzLVEDTeEXOtuQGPIjpNmkXtjwuXmQsyb3XXfd1WwwBI6nGtjQckDif/fdd2ObbbaZfR++O1xP/EBo1XWTBJuir5tdd90V3bt39xQKfC9MAkjtOMkhPxx8WWmllTzrF3PaFv2McsEmb2dUkg1RBBDwyFmcCdgGkxrBrbfe2ttsDzjggAqsf/jhB+/gPuaYY3DyySd7vz/88MOeyZcav4UWWmh2mzXWWMN7AWnmazapFzb+y/Xyyy97hxcJDvE9/fTTm0bL5frRELRmzj33XFx++eV48MEHPe3eCy+8gC222MIjwbvtthveeustdOvWDc8++6xn5vNl++239wqY2+bPZlg/1Vozcdj4BzkPOWr9iAfNXtSWLrbYYs0ARcUYqoENTZwdOnTAQw895O0nvqy33npeQvoJEya07LpJgk2R1w014dTuPf74497ZZBJAnkn8sBw9ejR23HHH2euGlgaSRLrfFPmMcsUmb2dUkg1QBDAlAaSvHk29vu8W/XCC5LbbbsPuu++Od9991yOClJEjR3rmPWpwTOGBv+yyy3rq+GaTNAeW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OnTo4JmJJW0IiABqNQgBISAEhIAQEAJNi4BNAF9//XWsuOKKiQI63n77bXTr1g333HMPtt1226Z9xkYMTASwEajrnkJACAgBISAEhEAoAkzhMnXqVO/3Hj16YNiwYejbty86deqELl26YM899/TSxFx44YXe75988gkefvhhrLbaaujXr9/sfk899VRcc801ePfddyu0ha0Ovwhgq68APb8QEAJCQAgIgSZDYMKECR7hs2XgwIFeHr///e9/OPPMM3HDDTfgvffew8ILL4z11lvPS/5MEkiZNWsWunbt6vn/nXXWWU32hI0fjghg4+dAIxACQkAICAEhIASEQF0REAGsK9y6mRAQAkJACAgBISAEGo+ACGDj50AjEAJCQAgIASEgBIRAXREQAawr3LqZEBACQkAICAEhIAQaj4AIYOPnQCMQAkJACAgBISAEhEBdERABrCvcupkQEAJCQAgIASEgBBqPgAhg4+dAIxACQkAICAEhIASEQF0REAGsK9y6mRAQAkJACAgBISAEGo+ACGDj50AjEAJCQAgIASEgBIRAXREQAawr3LqZEBACQkAICAEhIAQaj4AIYOPnQCMQAkJACAgBISAEhEBdERABrCvcupkQEAJCQAgIASEgBBqPgAhg4+dAIxACQkAICAEhIASEQF0REAGsK9y6mRAQAkJACAgBISAEGo/A/wMQGAs9q02UvQAAAABJRU5ErkJggg==\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot\n",
"fig, ax = plt.subplots()\n",
"\n",
"a = df.loc[df['anomaly'] == 1, ['time_epoch', 'value']] #anomaly\n",
"\n",
"ax.plot(df['time_epoch'], df['value'], color='blue')\n",
"ax.scatter(a['time_epoch'],a['value'], color='red')\n",
"plt.axis([1.370*1e7, 1.405*1e7, 15,30])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the above result we can see that iForest and OC SVM works well for benchmarking unordered data. \n",
"\n",
"Empirically, cluster method (PCA) and iForest are good for collective unordered anomalies, Markov chains are good for sequential ordered anomalies, OC SVM is good for novelty detection, and RNN is good for contextual anomaly detection."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment