Format: application/octet-stream
1 {
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "---\n",
8 "\n",
9 "_You are currently looking at **version 1.1** of this notebook. To download notebooks and datafiles, as well as get help on Jupyter notebooks in the Coursera platform, visit the [Jupyter Notebook FAQ](https://www.coursera.org/learn/python-machine-learning/resources/bANLa) course resource._\n",
10 "\n",
11 "---"
12 ]
13 },
14 {
15 "cell_type": "markdown",
16 "metadata": {},
17 "source": [
18 "# Applied Machine Learning: Module 2 (Supervised Learning, Part I)"
19 ]
20 },
21 {
22 "cell_type": "markdown",
23 "metadata": {},
24 "source": [
25 "## Preamble and Review"
26 ]
27 },
28 {
29 "cell_type": "code",
30 "execution_count": 1,
31 "metadata": {},
32 "outputs": [
33 {
34 "name": "stdout",
35 "output_type": "stream",
36 "text": [
37 "Accuracy of K-NN classifier on training set: 0.95\n",
38 "Accuracy of K-NN classifier on test set: 1.00\n",
39 "Predicted fruit type for [[5.5, 2.2, 10, 0.7]] is mandarin\n"
40 ]
41 }
42 ],
43 "source": [
44 "%matplotlib notebook\n",
45 "import numpy as np\n",
46 "import pandas as pd\n",
47 "import seaborn as sn\n",
48 "import matplotlib.pyplot as plt\n",
49 "\n",
50 "from sklearn.model_selection import train_test_split\n",
51 "from sklearn.neighbors import KNeighborsClassifier\n",
52 "\n",
53 "np.set_printoptions(precision=2)\n",
54 "\n",
55 "\n",
56 "fruits = pd.read_table('readonly/fruit_data_with_colors.txt')\n",
57 "\n",
58 "feature_names_fruits = ['height', 'width', 'mass', 'color_score']\n",
59 "X_fruits = fruits[feature_names_fruits]\n",
60 "y_fruits = fruits['fruit_label']\n",
61 "target_names_fruits = ['apple', 'mandarin', 'orange', 'lemon']\n",
62 "\n",
63 "X_fruits_2d = fruits[['height', 'width']]\n",
64 "y_fruits_2d = fruits['fruit_label']\n",
65 "\n",
66 "X_train, X_test, y_train, y_test = train_test_split(X_fruits, y_fruits, random_state=0)\n",
67 "\n",
68 "# Scaling normalizes the data to a certain range to speed up computations:\n",
69 "from sklearn.preprocessing import MinMaxScaler\n",
70 "scaler = MinMaxScaler()\n",
71 "X_train_scaled = scaler.fit_transform(X_train)\n",
72 "# we must apply the scaling to the test set that we computed for the training set\n",
73 "X_test_scaled = scaler.transform(X_test)\n",
74 "\n",
75 "knn = KNeighborsClassifier(n_neighbors = 5)\n",
76 "knn.fit(X_train_scaled, y_train)\n",
77 "print('Accuracy of K-NN classifier on training set: {:.2f}'\n",
78 " .format(knn.score(X_train_scaled, y_train)))\n",
79 "print('Accuracy of K-NN classifier on test set: {:.2f}'\n",
80 " .format(knn.score(X_test_scaled, y_test)))\n",
81 "\n",
82 "example_fruit = [[5.5, 2.2, 10, 0.70]]\n",
83 "example_fruit_scaled = scaler.transform(example_fruit)\n",
84 "print('Predicted fruit type for ', example_fruit, ' is ', \n",
85 " target_names_fruits[knn.predict(example_fruit_scaled)[0]-1])"
86 ]
87 },
88 {
89 "cell_type": "markdown",
90 "metadata": {},
91 "source": [
92 "## Datasets"
93 ]
94 },
95 {
96 "cell_type": "code",
97 "execution_count": 2,
98 "metadata": {
99 "scrolled": false
100 },
101 "outputs": [
102 {
103 "data": {
104 "application/javascript": [
105 "/* Put everything inside the global mpl namespace */\n",
106 "window.mpl = {};\n",
107 "\n",
108 "\n",
109 "mpl.get_websocket_type = function() {\n",
110 " if (typeof(WebSocket) !== 'undefined') {\n",
111 " return WebSocket;\n",
112 " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
113 " return MozWebSocket;\n",
114 " } else {\n",
115 " alert('Your browser does not have WebSocket support.' +\n",
116 " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
117 " 'Firefox 4 and 5 are also supported but you ' +\n",
118 " 'have to enable WebSockets in about:config.');\n",
119 " };\n",
120 "}\n",
121 "\n",
122 "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
123 " this.id = figure_id;\n",
124 "\n",
125 " this.ws = websocket;\n",
126 "\n",
127 " this.supports_binary = (this.ws.binaryType != undefined);\n",
128 "\n",
129 " if (!this.supports_binary) {\n",
130 " var warnings = document.getElementById(\"mpl-warnings\");\n",
131 " if (warnings) {\n",
132 " warnings.style.display = 'block';\n",
133 " warnings.textContent = (\n",
134 " \"This browser does not support binary websocket messages. \" +\n",
135 " \"Performance may be slow.\");\n",
136 " }\n",
137 " }\n",
138 "\n",
139 " this.imageObj = new Image();\n",
140 "\n",
141 " this.context = undefined;\n",
142 " this.message = undefined;\n",
143 " this.canvas = undefined;\n",
144 " this.rubberband_canvas = undefined;\n",
145 " this.rubberband_context = undefined;\n",
146 " this.format_dropdown = undefined;\n",
147 "\n",
148 " this.image_mode = 'full';\n",
149 "\n",
150 " this.root = $('<div/>');\n",
151 " this._root_extra_style(this.root)\n",
152 " this.root.attr('style', 'display: inline-block');\n",
153 "\n",
154 " $(parent_element).append(this.root);\n",
155 "\n",
156 " this._init_header(this);\n",
157 " this._init_canvas(this);\n",
158 " this._init_toolbar(this);\n",
159 "\n",
160 " var fig = this;\n",
161 "\n",
162 " this.waiting = false;\n",
163 "\n",
164 " this.ws.onopen = function () {\n",
165 " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
166 " fig.send_message(\"send_image_mode\", {});\n",
167 " if (mpl.ratio != 1) {\n",
168 " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
169 " }\n",
170 " fig.send_message(\"refresh\", {});\n",
171 " }\n",
172 "\n",
173 " this.imageObj.onload = function() {\n",
174 " if (fig.image_mode == 'full') {\n",
175 " // Full images could contain transparency (where diff images\n",
176 " // almost always do), so we need to clear the canvas so that\n",
177 " // there is no ghosting.\n",
178 " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
179 " }\n",
180 " fig.context.drawImage(fig.imageObj, 0, 0);\n",
181 " };\n",
182 "\n",
183 " this.imageObj.onunload = function() {\n",
184 " this.ws.close();\n",
185 " }\n",
186 "\n",
187 " this.ws.onmessage = this._make_on_message_function(this);\n",
188 "\n",
189 " this.ondownload = ondownload;\n",
190 "}\n",
191 "\n",
192 "mpl.figure.prototype._init_header = function() {\n",
193 " var titlebar = $(\n",
194 " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
195 " 'ui-helper-clearfix\"/>');\n",
196 " var titletext = $(\n",
197 " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
198 " 'text-align: center; padding: 3px;\"/>');\n",
199 " titlebar.append(titletext)\n",
200 " this.root.append(titlebar);\n",
201 " this.header = titletext[0];\n",
202 "}\n",
203 "\n",
204 "\n",
205 "\n",
206 "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
207 "\n",
208 "}\n",
209 "\n",
210 "\n",
211 "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
212 "\n",
213 "}\n",
214 "\n",
215 "mpl.figure.prototype._init_canvas = function() {\n",
216 " var fig = this;\n",
217 "\n",
218 " var canvas_div = $('<div/>');\n",
219 "\n",
220 " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
221 "\n",
222 " function canvas_keyboard_event(event) {\n",
223 " return fig.key_event(event, event['data']);\n",
224 " }\n",
225 "\n",
226 " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
227 " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
228 " this.canvas_div = canvas_div\n",
229 " this._canvas_extra_style(canvas_div)\n",
230 " this.root.append(canvas_div);\n",
231 "\n",
232 " var canvas = $('<canvas/>');\n",
233 " canvas.addClass('mpl-canvas');\n",
234 " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
235 "\n",
236 " this.canvas = canvas[0];\n",
237 " this.context = canvas[0].getContext(\"2d\");\n",
238 "\n",
239 " var backingStore = this.context.backingStorePixelRatio ||\n",
240 "\tthis.context.webkitBackingStorePixelRatio ||\n",
241 "\tthis.context.mozBackingStorePixelRatio ||\n",
242 "\tthis.context.msBackingStorePixelRatio ||\n",
243 "\tthis.context.oBackingStorePixelRatio ||\n",
244 "\tthis.context.backingStorePixelRatio || 1;\n",
245 "\n",
246 " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
247 "\n",
248 " var rubberband = $('<canvas/>');\n",
249 " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
250 "\n",
251 " var pass_mouse_events = true;\n",
252 "\n",
253 " canvas_div.resizable({\n",
254 " start: function(event, ui) {\n",
255 " pass_mouse_events = false;\n",
256 " },\n",
257 " resize: function(event, ui) {\n",
258 " fig.request_resize(ui.size.width, ui.size.height);\n",
259 " },\n",
260 " stop: function(event, ui) {\n",
261 " pass_mouse_events = true;\n",
262 " fig.request_resize(ui.size.width, ui.size.height);\n",
263 " },\n",
264 " });\n",
265 "\n",
266 " function mouse_event_fn(event) {\n",
267 " if (pass_mouse_events)\n",
268 " return fig.mouse_event(event, event['data']);\n",
269 " }\n",
270 "\n",
271 " rubberband.mousedown('button_press', mouse_event_fn);\n",
272 " rubberband.mouseup('button_release', mouse_event_fn);\n",
273 " // Throttle sequential mouse events to 1 every 20ms.\n",
274 " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
275 "\n",
276 " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
277 " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
278 "\n",
279 " canvas_div.on(\"wheel\", function (event) {\n",
280 " event = event.originalEvent;\n",
281 " event['data'] = 'scroll'\n",
282 " if (event.deltaY < 0) {\n",
283 " event.step = 1;\n",
284 " } else {\n",
285 " event.step = -1;\n",
286 " }\n",
287 " mouse_event_fn(event);\n",
288 " });\n",
289 "\n",
290 " canvas_div.append(canvas);\n",
291 " canvas_div.append(rubberband);\n",
292 "\n",
293 " this.rubberband = rubberband;\n",
294 " this.rubberband_canvas = rubberband[0];\n",
295 " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
296 " this.rubberband_context.strokeStyle = \"#000000\";\n",
297 "\n",
298 " this._resize_canvas = function(width, height) {\n",
299 " // Keep the size of the canvas, canvas container, and rubber band\n",
300 " // canvas in synch.\n",
301 " canvas_div.css('width', width)\n",
302 " canvas_div.css('height', height)\n",
303 "\n",
304 " canvas.attr('width', width * mpl.ratio);\n",
305 " canvas.attr('height', height * mpl.ratio);\n",
306 " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
307 "\n",
308 " rubberband.attr('width', width);\n",
309 " rubberband.attr('height', height);\n",
310 " }\n",
311 "\n",
312 " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
313 " // upon first draw.\n",
314 " this._resize_canvas(600, 600);\n",
315 "\n",
316 " // Disable right mouse context menu.\n",
317 " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
318 " return false;\n",
319 " });\n",
320 "\n",
321 " function set_focus () {\n",
322 " canvas.focus();\n",
323 " canvas_div.focus();\n",
324 " }\n",
325 "\n",
326 " window.setTimeout(set_focus, 100);\n",
327 "}\n",
328 "\n",
329 "mpl.figure.prototype._init_toolbar = function() {\n",
330 " var fig = this;\n",
331 "\n",
332 " var nav_element = $('<div/>')\n",
333 " nav_element.attr('style', 'width: 100%');\n",
334 " this.root.append(nav_element);\n",
335 "\n",
336 " // Define a callback function for later on.\n",
337 " function toolbar_event(event) {\n",
338 " return fig.toolbar_button_onclick(event['data']);\n",
339 " }\n",
340 " function toolbar_mouse_event(event) {\n",
341 " return fig.toolbar_button_onmouseover(event['data']);\n",
342 " }\n",
343 "\n",
344 " for(var toolbar_ind in mpl.toolbar_items) {\n",
345 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
346 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
347 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
348 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
349 "\n",
350 " if (!name) {\n",
351 " // put a spacer in here.\n",
352 " continue;\n",
353 " }\n",
354 " var button = $('<button/>');\n",
355 " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
356 " 'ui-button-icon-only');\n",
357 " button.attr('role', 'button');\n",
358 " button.attr('aria-disabled', 'false');\n",
359 " button.click(method_name, toolbar_event);\n",
360 " button.mouseover(tooltip, toolbar_mouse_event);\n",
361 "\n",
362 " var icon_img = $('<span/>');\n",
363 " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
364 " icon_img.addClass(image);\n",
365 " icon_img.addClass('ui-corner-all');\n",
366 "\n",
367 " var tooltip_span = $('<span/>');\n",
368 " tooltip_span.addClass('ui-button-text');\n",
369 " tooltip_span.html(tooltip);\n",
370 "\n",
371 " button.append(icon_img);\n",
372 " button.append(tooltip_span);\n",
373 "\n",
374 " nav_element.append(button);\n",
375 " }\n",
376 "\n",
377 " var fmt_picker_span = $('<span/>');\n",
378 "\n",
379 " var fmt_picker = $('<select/>');\n",
380 " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
381 " fmt_picker_span.append(fmt_picker);\n",
382 " nav_element.append(fmt_picker_span);\n",
383 " this.format_dropdown = fmt_picker[0];\n",
384 "\n",
385 " for (var ind in mpl.extensions) {\n",
386 " var fmt = mpl.extensions[ind];\n",
387 " var option = $(\n",
388 " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
389 " fmt_picker.append(option)\n",
390 " }\n",
391 "\n",
392 " // Add hover states to the ui-buttons\n",
393 " $( \".ui-button\" ).hover(\n",
394 " function() { $(this).addClass(\"ui-state-hover\");},\n",
395 " function() { $(this).removeClass(\"ui-state-hover\");}\n",
396 " );\n",
397 "\n",
398 " var status_bar = $('<span class=\"mpl-message\"/>');\n",
399 " nav_element.append(status_bar);\n",
400 " this.message = status_bar[0];\n",
401 "}\n",
402 "\n",
403 "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
404 " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
405 " // which will in turn request a refresh of the image.\n",
406 " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
407 "}\n",
408 "\n",
409 "mpl.figure.prototype.send_message = function(type, properties) {\n",
410 " properties['type'] = type;\n",
411 " properties['figure_id'] = this.id;\n",
412 " this.ws.send(JSON.stringify(properties));\n",
413 "}\n",
414 "\n",
415 "mpl.figure.prototype.send_draw_message = function() {\n",
416 " if (!this.waiting) {\n",
417 " this.waiting = true;\n",
418 " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
419 " }\n",
420 "}\n",
421 "\n",
422 "\n",
423 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
424 " var format_dropdown = fig.format_dropdown;\n",
425 " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
426 " fig.ondownload(fig, format);\n",
427 "}\n",
428 "\n",
429 "\n",
430 "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
431 " var size = msg['size'];\n",
432 " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
433 " fig._resize_canvas(size[0], size[1]);\n",
434 " fig.send_message(\"refresh\", {});\n",
435 " };\n",
436 "}\n",
437 "\n",
438 "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
439 " var x0 = msg['x0'] / mpl.ratio;\n",
440 " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
441 " var x1 = msg['x1'] / mpl.ratio;\n",
442 " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
443 " x0 = Math.floor(x0) + 0.5;\n",
444 " y0 = Math.floor(y0) + 0.5;\n",
445 " x1 = Math.floor(x1) + 0.5;\n",
446 " y1 = Math.floor(y1) + 0.5;\n",
447 " var min_x = Math.min(x0, x1);\n",
448 " var min_y = Math.min(y0, y1);\n",
449 " var width = Math.abs(x1 - x0);\n",
450 " var height = Math.abs(y1 - y0);\n",
451 "\n",
452 " fig.rubberband_context.clearRect(\n",
453 " 0, 0, fig.canvas.width, fig.canvas.height);\n",
454 "\n",
455 " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
456 "}\n",
457 "\n",
458 "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
459 " // Updates the figure title.\n",
460 " fig.header.textContent = msg['label'];\n",
461 "}\n",
462 "\n",
463 "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
464 " var cursor = msg['cursor'];\n",
465 " switch(cursor)\n",
466 " {\n",
467 " case 0:\n",
468 " cursor = 'pointer';\n",
469 " break;\n",
470 " case 1:\n",
471 " cursor = 'default';\n",
472 " break;\n",
473 " case 2:\n",
474 " cursor = 'crosshair';\n",
475 " break;\n",
476 " case 3:\n",
477 " cursor = 'move';\n",
478 " break;\n",
479 " }\n",
480 " fig.rubberband_canvas.style.cursor = cursor;\n",
481 "}\n",
482 "\n",
483 "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
484 " fig.message.textContent = msg['message'];\n",
485 "}\n",
486 "\n",
487 "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
488 " // Request the server to send over a new figure.\n",
489 " fig.send_draw_message();\n",
490 "}\n",
491 "\n",
492 "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
493 " fig.image_mode = msg['mode'];\n",
494 "}\n",
495 "\n",
496 "mpl.figure.prototype.updated_canvas_event = function() {\n",
497 " // Called whenever the canvas gets updated.\n",
498 " this.send_message(\"ack\", {});\n",
499 "}\n",
500 "\n",
501 "// A function to construct a web socket function for onmessage handling.\n",
502 "// Called in the figure constructor.\n",
503 "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
504 " return function socket_on_message(evt) {\n",
505 " if (evt.data instanceof Blob) {\n",
506 " /* FIXME: We get \"Resource interpreted as Image but\n",
507 " * transferred with MIME type text/plain:\" errors on\n",
508 " * Chrome. But how to set the MIME type? It doesn't seem\n",
509 " * to be part of the websocket stream */\n",
510 " evt.data.type = \"image/png\";\n",
511 "\n",
512 " /* Free the memory for the previous frames */\n",
513 " if (fig.imageObj.src) {\n",
514 " (window.URL || window.webkitURL).revokeObjectURL(\n",
515 " fig.imageObj.src);\n",
516 " }\n",
517 "\n",
518 " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
519 " evt.data);\n",
520 " fig.updated_canvas_event();\n",
521 " fig.waiting = false;\n",
522 " return;\n",
523 " }\n",
524 " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
525 " fig.imageObj.src = evt.data;\n",
526 " fig.updated_canvas_event();\n",
527 " fig.waiting = false;\n",
528 " return;\n",
529 " }\n",
530 "\n",
531 " var msg = JSON.parse(evt.data);\n",
532 " var msg_type = msg['type'];\n",
533 "\n",
534 " // Call the \"handle_{type}\" callback, which takes\n",
535 " // the figure and JSON message as its only arguments.\n",
536 " try {\n",
537 " var callback = fig[\"handle_\" + msg_type];\n",
538 " } catch (e) {\n",
539 " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
540 " return;\n",
541 " }\n",
542 "\n",
543 " if (callback) {\n",
544 " try {\n",
545 " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
546 " callback(fig, msg);\n",
547 " } catch (e) {\n",
548 " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
549 " }\n",
550 " }\n",
551 " };\n",
552 "}\n",
553 "\n",
554 "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
555 "mpl.findpos = function(e) {\n",
556 " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
557 " var targ;\n",
558 " if (!e)\n",
559 " e = window.event;\n",
560 " if (e.target)\n",
561 " targ = e.target;\n",
562 " else if (e.srcElement)\n",
563 " targ = e.srcElement;\n",
564 " if (targ.nodeType == 3) // defeat Safari bug\n",
565 " targ = targ.parentNode;\n",
566 "\n",
567 " // jQuery normalizes the pageX and pageY\n",
568 " // pageX,Y are the mouse positions relative to the document\n",
569 " // offset() returns the position of the element relative to the document\n",
570 " var x = e.pageX - $(targ).offset().left;\n",
571 " var y = e.pageY - $(targ).offset().top;\n",
572 "\n",
573 " return {\"x\": x, \"y\": y};\n",
574 "};\n",
575 "\n",
576 "/*\n",
577 " * return a copy of an object with only non-object keys\n",
578 " * we need this to avoid circular references\n",
579 " * http://stackoverflow.com/a/24161582/3208463\n",
580 " */\n",
581 "function simpleKeys (original) {\n",
582 " return Object.keys(original).reduce(function (obj, key) {\n",
583 " if (typeof original[key] !== 'object')\n",
584 " obj[key] = original[key]\n",
585 " return obj;\n",
586 " }, {});\n",
587 "}\n",
588 "\n",
589 "mpl.figure.prototype.mouse_event = function(event, name) {\n",
590 " var canvas_pos = mpl.findpos(event)\n",
591 "\n",
592 " if (name === 'button_press')\n",
593 " {\n",
594 " this.canvas.focus();\n",
595 " this.canvas_div.focus();\n",
596 " }\n",
597 "\n",
598 " var x = canvas_pos.x * mpl.ratio;\n",
599 " var y = canvas_pos.y * mpl.ratio;\n",
600 "\n",
601 " this.send_message(name, {x: x, y: y, button: event.button,\n",
602 " step: event.step,\n",
603 " guiEvent: simpleKeys(event)});\n",
604 "\n",
605 " /* This prevents the web browser from automatically changing to\n",
606 " * the text insertion cursor when the button is pressed. We want\n",
607 " * to control all of the cursor setting manually through the\n",
608 " * 'cursor' event from matplotlib */\n",
609 " event.preventDefault();\n",
610 " return false;\n",
611 "}\n",
612 "\n",
613 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
614 " // Handle any extra behaviour associated with a key event\n",
615 "}\n",
616 "\n",
617 "mpl.figure.prototype.key_event = function(event, name) {\n",
618 "\n",
619 " // Prevent repeat events\n",
620 " if (name == 'key_press')\n",
621 " {\n",
622 " if (event.which === this._key)\n",
623 " return;\n",
624 " else\n",
625 " this._key = event.which;\n",
626 " }\n",
627 " if (name == 'key_release')\n",
628 " this._key = null;\n",
629 "\n",
630 " var value = '';\n",
631 " if (event.ctrlKey && event.which != 17)\n",
632 " value += \"ctrl+\";\n",
633 " if (event.altKey && event.which != 18)\n",
634 " value += \"alt+\";\n",
635 " if (event.shiftKey && event.which != 16)\n",
636 " value += \"shift+\";\n",
637 "\n",
638 " value += 'k';\n",
639 " value += event.which.toString();\n",
640 "\n",
641 " this._key_event_extra(event, name);\n",
642 "\n",
643 " this.send_message(name, {key: value,\n",
644 " guiEvent: simpleKeys(event)});\n",
645 " return false;\n",
646 "}\n",
647 "\n",
648 "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
649 " if (name == 'download') {\n",
650 " this.handle_save(this, null);\n",
651 " } else {\n",
652 " this.send_message(\"toolbar_button\", {name: name});\n",
653 " }\n",
654 "};\n",
655 "\n",
656 "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
657 " this.message.textContent = tooltip;\n",
658 "};\n",
659 "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",
660 "\n",
661 "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
662 "\n",
663 "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
664 " // Create a \"websocket\"-like object which calls the given IPython comm\n",
665 " // object with the appropriate methods. Currently this is a non binary\n",
666 " // socket, so there is still some room for performance tuning.\n",
667 " var ws = {};\n",
668 "\n",
669 " ws.close = function() {\n",
670 " comm.close()\n",
671 " };\n",
672 " ws.send = function(m) {\n",
673 " //console.log('sending', m);\n",
674 " comm.send(m);\n",
675 " };\n",
676 " // Register the callback with on_msg.\n",
677 " comm.on_msg(function(msg) {\n",
678 " //console.log('receiving', msg['content']['data'], msg);\n",
679 " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
680 " ws.onmessage(msg['content']['data'])\n",
681 " });\n",
682 " return ws;\n",
683 "}\n",
684 "\n",
685 "mpl.mpl_figure_comm = function(comm, msg) {\n",
686 " // This is the function which gets called when the mpl process\n",
687 " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
688 "\n",
689 " var id = msg.content.data.id;\n",
690 " // Get hold of the div created by the display call when the Comm\n",
691 " // socket was opened in Python.\n",
692 " var element = $(\"#\" + id);\n",
693 " var ws_proxy = comm_websocket_adapter(comm)\n",
694 "\n",
695 " function ondownload(figure, format) {\n",
696 " window.open(figure.imageObj.src);\n",
697 " }\n",
698 "\n",
699 " var fig = new mpl.figure(id, ws_proxy,\n",
700 " ondownload,\n",
701 " element.get(0));\n",
702 "\n",
703 " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
704 " // web socket which is closed, not our websocket->open comm proxy.\n",
705 " ws_proxy.onopen();\n",
706 "\n",
707 " fig.parent_element = element.get(0);\n",
708 " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
709 " if (!fig.cell_info) {\n",
710 " console.error(\"Failed to find cell for figure\", id, fig);\n",
711 " return;\n",
712 " }\n",
713 "\n",
714 " var output_index = fig.cell_info[2]\n",
715 " var cell = fig.cell_info[0];\n",
716 "\n",
717 "};\n",
718 "\n",
719 "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
720 " var width = fig.canvas.width/mpl.ratio\n",
721 " fig.root.unbind('remove')\n",
722 "\n",
723 " // Update the output cell to use the data from the current canvas.\n",
724 " fig.push_to_output();\n",
725 " var dataURL = fig.canvas.toDataURL();\n",
726 " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
727 " // the notebook keyboard shortcuts fail.\n",
728 " IPython.keyboard_manager.enable()\n",
729 " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
730 " fig.close_ws(fig, msg);\n",
731 "}\n",
732 "\n",
733 "mpl.figure.prototype.close_ws = function(fig, msg){\n",
734 " fig.send_message('closing', msg);\n",
735 " // fig.ws.close()\n",
736 "}\n",
737 "\n",
738 "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
739 " // Turn the data on the canvas into data in the output cell.\n",
740 " var width = this.canvas.width/mpl.ratio\n",
741 " var dataURL = this.canvas.toDataURL();\n",
742 " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
743 "}\n",
744 "\n",
745 "mpl.figure.prototype.updated_canvas_event = function() {\n",
746 " // Tell IPython that the notebook contents must change.\n",
747 " IPython.notebook.set_dirty(true);\n",
748 " this.send_message(\"ack\", {});\n",
749 " var fig = this;\n",
750 " // Wait a second, then push the new image to the DOM so\n",
751 " // that it is saved nicely (might be nice to debounce this).\n",
752 " setTimeout(function () { fig.push_to_output() }, 1000);\n",
753 "}\n",
754 "\n",
755 "mpl.figure.prototype._init_toolbar = function() {\n",
756 " var fig = this;\n",
757 "\n",
758 " var nav_element = $('<div/>')\n",
759 " nav_element.attr('style', 'width: 100%');\n",
760 " this.root.append(nav_element);\n",
761 "\n",
762 " // Define a callback function for later on.\n",
763 " function toolbar_event(event) {\n",
764 " return fig.toolbar_button_onclick(event['data']);\n",
765 " }\n",
766 " function toolbar_mouse_event(event) {\n",
767 " return fig.toolbar_button_onmouseover(event['data']);\n",
768 " }\n",
769 "\n",
770 " for(var toolbar_ind in mpl.toolbar_items){\n",
771 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
772 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
773 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
774 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
775 "\n",
776 " if (!name) { continue; };\n",
777 "\n",
778 " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
779 " button.click(method_name, toolbar_event);\n",
780 " button.mouseover(tooltip, toolbar_mouse_event);\n",
781 " nav_element.append(button);\n",
782 " }\n",
783 "\n",
784 " // Add the status bar.\n",
785 " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
786 " nav_element.append(status_bar);\n",
787 " this.message = status_bar[0];\n",
788 "\n",
789 " // Add the close button to the window.\n",
790 " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
791 " 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",
792 " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
793 " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
794 " buttongrp.append(button);\n",
795 " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
796 " titlebar.prepend(buttongrp);\n",
797 "}\n",
798 "\n",
799 "mpl.figure.prototype._root_extra_style = function(el){\n",
800 " var fig = this\n",
801 " el.on(\"remove\", function(){\n",
802 "\tfig.close_ws(fig, {});\n",
803 " });\n",
804 "}\n",
805 "\n",
806 "mpl.figure.prototype._canvas_extra_style = function(el){\n",
807 " // this is important to make the div 'focusable\n",
808 " el.attr('tabindex', 0)\n",
809 " // reach out to IPython and tell the keyboard manager to turn it's self\n",
810 " // off when our div gets focus\n",
811 "\n",
812 " // location in version 3\n",
813 " if (IPython.notebook.keyboard_manager) {\n",
814 " IPython.notebook.keyboard_manager.register_events(el);\n",
815 " }\n",
816 " else {\n",
817 " // location in version 2\n",
818 " IPython.keyboard_manager.register_events(el);\n",
819 " }\n",
820 "\n",
821 "}\n",
822 "\n",
823 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
824 " var manager = IPython.notebook.keyboard_manager;\n",
825 " if (!manager)\n",
826 " manager = IPython.keyboard_manager;\n",
827 "\n",
828 " // Check for shift+enter\n",
829 " if (event.shiftKey && event.which == 13) {\n",
830 " this.canvas_div.blur();\n",
831 " // select the cell after this one\n",
832 " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
833 " IPython.notebook.select(index + 1);\n",
834 " }\n",
835 "}\n",
836 "\n",
837 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
838 " fig.ondownload(fig, null);\n",
839 "}\n",
840 "\n",
841 "\n",
842 "mpl.find_output_cell = function(html_output) {\n",
843 " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
844 " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
845 " // IPython event is triggered only after the cells have been serialised, which for\n",
846 " // our purposes (turning an active figure into a static one), is too late.\n",
847 " var cells = IPython.notebook.get_cells();\n",
848 " var ncells = cells.length;\n",
849 " for (var i=0; i<ncells; i++) {\n",
850 " var cell = cells[i];\n",
851 " if (cell.cell_type === 'code'){\n",
852 " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
853 " var data = cell.output_area.outputs[j];\n",
854 " if (data.data) {\n",
855 " // IPython >= 3 moved mimebundle to data attribute of output\n",
856 " data = data.data;\n",
857 " }\n",
858 " if (data['text/html'] == html_output) {\n",
859 " return [cell, data, j];\n",
860 " }\n",
861 " }\n",
862 " }\n",
863 " }\n",
864 "}\n",
865 "\n",
866 "// Register the function which deals with the matplotlib target/channel.\n",
867 "// The kernel may be null if the page has been refreshed.\n",
868 "if (IPython.notebook.kernel != null) {\n",
869 " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
870 "}\n"
871 ],
872 "text/plain": [
873 "<IPython.core.display.Javascript object>"
874 ]
875 },
876 "metadata": {},
877 "output_type": "display_data"
878 },
879 {
880 "data": {
881 "text/html": [
882 "<img src=\"data:image/png;base64,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\" width=\"800\">"
883 ],
884 "text/plain": [
885 "<IPython.core.display.HTML object>"
886 ]
887 },
888 "metadata": {},
889 "output_type": "display_data"
890 },
891 {
892 "data": {
893 "application/javascript": [
894 "/* Put everything inside the global mpl namespace */\n",
895 "window.mpl = {};\n",
896 "\n",
897 "\n",
898 "mpl.get_websocket_type = function() {\n",
899 " if (typeof(WebSocket) !== 'undefined') {\n",
900 " return WebSocket;\n",
901 " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
902 " return MozWebSocket;\n",
903 " } else {\n",
904 " alert('Your browser does not have WebSocket support.' +\n",
905 " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
906 " 'Firefox 4 and 5 are also supported but you ' +\n",
907 " 'have to enable WebSockets in about:config.');\n",
908 " };\n",
909 "}\n",
910 "\n",
911 "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
912 " this.id = figure_id;\n",
913 "\n",
914 " this.ws = websocket;\n",
915 "\n",
916 " this.supports_binary = (this.ws.binaryType != undefined);\n",
917 "\n",
918 " if (!this.supports_binary) {\n",
919 " var warnings = document.getElementById(\"mpl-warnings\");\n",
920 " if (warnings) {\n",
921 " warnings.style.display = 'block';\n",
922 " warnings.textContent = (\n",
923 " \"This browser does not support binary websocket messages. \" +\n",
924 " \"Performance may be slow.\");\n",
925 " }\n",
926 " }\n",
927 "\n",
928 " this.imageObj = new Image();\n",
929 "\n",
930 " this.context = undefined;\n",
931 " this.message = undefined;\n",
932 " this.canvas = undefined;\n",
933 " this.rubberband_canvas = undefined;\n",
934 " this.rubberband_context = undefined;\n",
935 " this.format_dropdown = undefined;\n",
936 "\n",
937 " this.image_mode = 'full';\n",
938 "\n",
939 " this.root = $('<div/>');\n",
940 " this._root_extra_style(this.root)\n",
941 " this.root.attr('style', 'display: inline-block');\n",
942 "\n",
943 " $(parent_element).append(this.root);\n",
944 "\n",
945 " this._init_header(this);\n",
946 " this._init_canvas(this);\n",
947 " this._init_toolbar(this);\n",
948 "\n",
949 " var fig = this;\n",
950 "\n",
951 " this.waiting = false;\n",
952 "\n",
953 " this.ws.onopen = function () {\n",
954 " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
955 " fig.send_message(\"send_image_mode\", {});\n",
956 " if (mpl.ratio != 1) {\n",
957 " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
958 " }\n",
959 " fig.send_message(\"refresh\", {});\n",
960 " }\n",
961 "\n",
962 " this.imageObj.onload = function() {\n",
963 " if (fig.image_mode == 'full') {\n",
964 " // Full images could contain transparency (where diff images\n",
965 " // almost always do), so we need to clear the canvas so that\n",
966 " // there is no ghosting.\n",
967 " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
968 " }\n",
969 " fig.context.drawImage(fig.imageObj, 0, 0);\n",
970 " };\n",
971 "\n",
972 " this.imageObj.onunload = function() {\n",
973 " this.ws.close();\n",
974 " }\n",
975 "\n",
976 " this.ws.onmessage = this._make_on_message_function(this);\n",
977 "\n",
978 " this.ondownload = ondownload;\n",
979 "}\n",
980 "\n",
981 "mpl.figure.prototype._init_header = function() {\n",
982 " var titlebar = $(\n",
983 " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
984 " 'ui-helper-clearfix\"/>');\n",
985 " var titletext = $(\n",
986 " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
987 " 'text-align: center; padding: 3px;\"/>');\n",
988 " titlebar.append(titletext)\n",
989 " this.root.append(titlebar);\n",
990 " this.header = titletext[0];\n",
991 "}\n",
992 "\n",
993 "\n",
994 "\n",
995 "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
996 "\n",
997 "}\n",
998 "\n",
999 "\n",
1000 "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
1001 "\n",
1002 "}\n",
1003 "\n",
1004 "mpl.figure.prototype._init_canvas = function() {\n",
1005 " var fig = this;\n",
1006 "\n",
1007 " var canvas_div = $('<div/>');\n",
1008 "\n",
1009 " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
1010 "\n",
1011 " function canvas_keyboard_event(event) {\n",
1012 " return fig.key_event(event, event['data']);\n",
1013 " }\n",
1014 "\n",
1015 " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
1016 " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
1017 " this.canvas_div = canvas_div\n",
1018 " this._canvas_extra_style(canvas_div)\n",
1019 " this.root.append(canvas_div);\n",
1020 "\n",
1021 " var canvas = $('<canvas/>');\n",
1022 " canvas.addClass('mpl-canvas');\n",
1023 " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
1024 "\n",
1025 " this.canvas = canvas[0];\n",
1026 " this.context = canvas[0].getContext(\"2d\");\n",
1027 "\n",
1028 " var backingStore = this.context.backingStorePixelRatio ||\n",
1029 "\tthis.context.webkitBackingStorePixelRatio ||\n",
1030 "\tthis.context.mozBackingStorePixelRatio ||\n",
1031 "\tthis.context.msBackingStorePixelRatio ||\n",
1032 "\tthis.context.oBackingStorePixelRatio ||\n",
1033 "\tthis.context.backingStorePixelRatio || 1;\n",
1034 "\n",
1035 " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
1036 "\n",
1037 " var rubberband = $('<canvas/>');\n",
1038 " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
1039 "\n",
1040 " var pass_mouse_events = true;\n",
1041 "\n",
1042 " canvas_div.resizable({\n",
1043 " start: function(event, ui) {\n",
1044 " pass_mouse_events = false;\n",
1045 " },\n",
1046 " resize: function(event, ui) {\n",
1047 " fig.request_resize(ui.size.width, ui.size.height);\n",
1048 " },\n",
1049 " stop: function(event, ui) {\n",
1050 " pass_mouse_events = true;\n",
1051 " fig.request_resize(ui.size.width, ui.size.height);\n",
1052 " },\n",
1053 " });\n",
1054 "\n",
1055 " function mouse_event_fn(event) {\n",
1056 " if (pass_mouse_events)\n",
1057 " return fig.mouse_event(event, event['data']);\n",
1058 " }\n",
1059 "\n",
1060 " rubberband.mousedown('button_press', mouse_event_fn);\n",
1061 " rubberband.mouseup('button_release', mouse_event_fn);\n",
1062 " // Throttle sequential mouse events to 1 every 20ms.\n",
1063 " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
1064 "\n",
1065 " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
1066 " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
1067 "\n",
1068 " canvas_div.on(\"wheel\", function (event) {\n",
1069 " event = event.originalEvent;\n",
1070 " event['data'] = 'scroll'\n",
1071 " if (event.deltaY < 0) {\n",
1072 " event.step = 1;\n",
1073 " } else {\n",
1074 " event.step = -1;\n",
1075 " }\n",
1076 " mouse_event_fn(event);\n",
1077 " });\n",
1078 "\n",
1079 " canvas_div.append(canvas);\n",
1080 " canvas_div.append(rubberband);\n",
1081 "\n",
1082 " this.rubberband = rubberband;\n",
1083 " this.rubberband_canvas = rubberband[0];\n",
1084 " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
1085 " this.rubberband_context.strokeStyle = \"#000000\";\n",
1086 "\n",
1087 " this._resize_canvas = function(width, height) {\n",
1088 " // Keep the size of the canvas, canvas container, and rubber band\n",
1089 " // canvas in synch.\n",
1090 " canvas_div.css('width', width)\n",
1091 " canvas_div.css('height', height)\n",
1092 "\n",
1093 " canvas.attr('width', width * mpl.ratio);\n",
1094 " canvas.attr('height', height * mpl.ratio);\n",
1095 " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
1096 "\n",
1097 " rubberband.attr('width', width);\n",
1098 " rubberband.attr('height', height);\n",
1099 " }\n",
1100 "\n",
1101 " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
1102 " // upon first draw.\n",
1103 " this._resize_canvas(600, 600);\n",
1104 "\n",
1105 " // Disable right mouse context menu.\n",
1106 " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
1107 " return false;\n",
1108 " });\n",
1109 "\n",
1110 " function set_focus () {\n",
1111 " canvas.focus();\n",
1112 " canvas_div.focus();\n",
1113 " }\n",
1114 "\n",
1115 " window.setTimeout(set_focus, 100);\n",
1116 "}\n",
1117 "\n",
1118 "mpl.figure.prototype._init_toolbar = function() {\n",
1119 " var fig = this;\n",
1120 "\n",
1121 " var nav_element = $('<div/>')\n",
1122 " nav_element.attr('style', 'width: 100%');\n",
1123 " this.root.append(nav_element);\n",
1124 "\n",
1125 " // Define a callback function for later on.\n",
1126 " function toolbar_event(event) {\n",
1127 " return fig.toolbar_button_onclick(event['data']);\n",
1128 " }\n",
1129 " function toolbar_mouse_event(event) {\n",
1130 " return fig.toolbar_button_onmouseover(event['data']);\n",
1131 " }\n",
1132 "\n",
1133 " for(var toolbar_ind in mpl.toolbar_items) {\n",
1134 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
1135 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
1136 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
1137 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
1138 "\n",
1139 " if (!name) {\n",
1140 " // put a spacer in here.\n",
1141 " continue;\n",
1142 " }\n",
1143 " var button = $('<button/>');\n",
1144 " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
1145 " 'ui-button-icon-only');\n",
1146 " button.attr('role', 'button');\n",
1147 " button.attr('aria-disabled', 'false');\n",
1148 " button.click(method_name, toolbar_event);\n",
1149 " button.mouseover(tooltip, toolbar_mouse_event);\n",
1150 "\n",
1151 " var icon_img = $('<span/>');\n",
1152 " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
1153 " icon_img.addClass(image);\n",
1154 " icon_img.addClass('ui-corner-all');\n",
1155 "\n",
1156 " var tooltip_span = $('<span/>');\n",
1157 " tooltip_span.addClass('ui-button-text');\n",
1158 " tooltip_span.html(tooltip);\n",
1159 "\n",
1160 " button.append(icon_img);\n",
1161 " button.append(tooltip_span);\n",
1162 "\n",
1163 " nav_element.append(button);\n",
1164 " }\n",
1165 "\n",
1166 " var fmt_picker_span = $('<span/>');\n",
1167 "\n",
1168 " var fmt_picker = $('<select/>');\n",
1169 " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
1170 " fmt_picker_span.append(fmt_picker);\n",
1171 " nav_element.append(fmt_picker_span);\n",
1172 " this.format_dropdown = fmt_picker[0];\n",
1173 "\n",
1174 " for (var ind in mpl.extensions) {\n",
1175 " var fmt = mpl.extensions[ind];\n",
1176 " var option = $(\n",
1177 " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
1178 " fmt_picker.append(option)\n",
1179 " }\n",
1180 "\n",
1181 " // Add hover states to the ui-buttons\n",
1182 " $( \".ui-button\" ).hover(\n",
1183 " function() { $(this).addClass(\"ui-state-hover\");},\n",
1184 " function() { $(this).removeClass(\"ui-state-hover\");}\n",
1185 " );\n",
1186 "\n",
1187 " var status_bar = $('<span class=\"mpl-message\"/>');\n",
1188 " nav_element.append(status_bar);\n",
1189 " this.message = status_bar[0];\n",
1190 "}\n",
1191 "\n",
1192 "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
1193 " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
1194 " // which will in turn request a refresh of the image.\n",
1195 " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
1196 "}\n",
1197 "\n",
1198 "mpl.figure.prototype.send_message = function(type, properties) {\n",
1199 " properties['type'] = type;\n",
1200 " properties['figure_id'] = this.id;\n",
1201 " this.ws.send(JSON.stringify(properties));\n",
1202 "}\n",
1203 "\n",
1204 "mpl.figure.prototype.send_draw_message = function() {\n",
1205 " if (!this.waiting) {\n",
1206 " this.waiting = true;\n",
1207 " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
1208 " }\n",
1209 "}\n",
1210 "\n",
1211 "\n",
1212 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
1213 " var format_dropdown = fig.format_dropdown;\n",
1214 " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
1215 " fig.ondownload(fig, format);\n",
1216 "}\n",
1217 "\n",
1218 "\n",
1219 "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
1220 " var size = msg['size'];\n",
1221 " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
1222 " fig._resize_canvas(size[0], size[1]);\n",
1223 " fig.send_message(\"refresh\", {});\n",
1224 " };\n",
1225 "}\n",
1226 "\n",
1227 "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
1228 " var x0 = msg['x0'] / mpl.ratio;\n",
1229 " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
1230 " var x1 = msg['x1'] / mpl.ratio;\n",
1231 " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
1232 " x0 = Math.floor(x0) + 0.5;\n",
1233 " y0 = Math.floor(y0) + 0.5;\n",
1234 " x1 = Math.floor(x1) + 0.5;\n",
1235 " y1 = Math.floor(y1) + 0.5;\n",
1236 " var min_x = Math.min(x0, x1);\n",
1237 " var min_y = Math.min(y0, y1);\n",
1238 " var width = Math.abs(x1 - x0);\n",
1239 " var height = Math.abs(y1 - y0);\n",
1240 "\n",
1241 " fig.rubberband_context.clearRect(\n",
1242 " 0, 0, fig.canvas.width, fig.canvas.height);\n",
1243 "\n",
1244 " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
1245 "}\n",
1246 "\n",
1247 "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
1248 " // Updates the figure title.\n",
1249 " fig.header.textContent = msg['label'];\n",
1250 "}\n",
1251 "\n",
1252 "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
1253 " var cursor = msg['cursor'];\n",
1254 " switch(cursor)\n",
1255 " {\n",
1256 " case 0:\n",
1257 " cursor = 'pointer';\n",
1258 " break;\n",
1259 " case 1:\n",
1260 " cursor = 'default';\n",
1261 " break;\n",
1262 " case 2:\n",
1263 " cursor = 'crosshair';\n",
1264 " break;\n",
1265 " case 3:\n",
1266 " cursor = 'move';\n",
1267 " break;\n",
1268 " }\n",
1269 " fig.rubberband_canvas.style.cursor = cursor;\n",
1270 "}\n",
1271 "\n",
1272 "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
1273 " fig.message.textContent = msg['message'];\n",
1274 "}\n",
1275 "\n",
1276 "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
1277 " // Request the server to send over a new figure.\n",
1278 " fig.send_draw_message();\n",
1279 "}\n",
1280 "\n",
1281 "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
1282 " fig.image_mode = msg['mode'];\n",
1283 "}\n",
1284 "\n",
1285 "mpl.figure.prototype.updated_canvas_event = function() {\n",
1286 " // Called whenever the canvas gets updated.\n",
1287 " this.send_message(\"ack\", {});\n",
1288 "}\n",
1289 "\n",
1290 "// A function to construct a web socket function for onmessage handling.\n",
1291 "// Called in the figure constructor.\n",
1292 "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
1293 " return function socket_on_message(evt) {\n",
1294 " if (evt.data instanceof Blob) {\n",
1295 " /* FIXME: We get \"Resource interpreted as Image but\n",
1296 " * transferred with MIME type text/plain:\" errors on\n",
1297 " * Chrome. But how to set the MIME type? It doesn't seem\n",
1298 " * to be part of the websocket stream */\n",
1299 " evt.data.type = \"image/png\";\n",
1300 "\n",
1301 " /* Free the memory for the previous frames */\n",
1302 " if (fig.imageObj.src) {\n",
1303 " (window.URL || window.webkitURL).revokeObjectURL(\n",
1304 " fig.imageObj.src);\n",
1305 " }\n",
1306 "\n",
1307 " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
1308 " evt.data);\n",
1309 " fig.updated_canvas_event();\n",
1310 " fig.waiting = false;\n",
1311 " return;\n",
1312 " }\n",
1313 " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
1314 " fig.imageObj.src = evt.data;\n",
1315 " fig.updated_canvas_event();\n",
1316 " fig.waiting = false;\n",
1317 " return;\n",
1318 " }\n",
1319 "\n",
1320 " var msg = JSON.parse(evt.data);\n",
1321 " var msg_type = msg['type'];\n",
1322 "\n",
1323 " // Call the \"handle_{type}\" callback, which takes\n",
1324 " // the figure and JSON message as its only arguments.\n",
1325 " try {\n",
1326 " var callback = fig[\"handle_\" + msg_type];\n",
1327 " } catch (e) {\n",
1328 " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
1329 " return;\n",
1330 " }\n",
1331 "\n",
1332 " if (callback) {\n",
1333 " try {\n",
1334 " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
1335 " callback(fig, msg);\n",
1336 " } catch (e) {\n",
1337 " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
1338 " }\n",
1339 " }\n",
1340 " };\n",
1341 "}\n",
1342 "\n",
1343 "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
1344 "mpl.findpos = function(e) {\n",
1345 " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
1346 " var targ;\n",
1347 " if (!e)\n",
1348 " e = window.event;\n",
1349 " if (e.target)\n",
1350 " targ = e.target;\n",
1351 " else if (e.srcElement)\n",
1352 " targ = e.srcElement;\n",
1353 " if (targ.nodeType == 3) // defeat Safari bug\n",
1354 " targ = targ.parentNode;\n",
1355 "\n",
1356 " // jQuery normalizes the pageX and pageY\n",
1357 " // pageX,Y are the mouse positions relative to the document\n",
1358 " // offset() returns the position of the element relative to the document\n",
1359 " var x = e.pageX - $(targ).offset().left;\n",
1360 " var y = e.pageY - $(targ).offset().top;\n",
1361 "\n",
1362 " return {\"x\": x, \"y\": y};\n",
1363 "};\n",
1364 "\n",
1365 "/*\n",
1366 " * return a copy of an object with only non-object keys\n",
1367 " * we need this to avoid circular references\n",
1368 " * http://stackoverflow.com/a/24161582/3208463\n",
1369 " */\n",
1370 "function simpleKeys (original) {\n",
1371 " return Object.keys(original).reduce(function (obj, key) {\n",
1372 " if (typeof original[key] !== 'object')\n",
1373 " obj[key] = original[key]\n",
1374 " return obj;\n",
1375 " }, {});\n",
1376 "}\n",
1377 "\n",
1378 "mpl.figure.prototype.mouse_event = function(event, name) {\n",
1379 " var canvas_pos = mpl.findpos(event)\n",
1380 "\n",
1381 " if (name === 'button_press')\n",
1382 " {\n",
1383 " this.canvas.focus();\n",
1384 " this.canvas_div.focus();\n",
1385 " }\n",
1386 "\n",
1387 " var x = canvas_pos.x * mpl.ratio;\n",
1388 " var y = canvas_pos.y * mpl.ratio;\n",
1389 "\n",
1390 " this.send_message(name, {x: x, y: y, button: event.button,\n",
1391 " step: event.step,\n",
1392 " guiEvent: simpleKeys(event)});\n",
1393 "\n",
1394 " /* This prevents the web browser from automatically changing to\n",
1395 " * the text insertion cursor when the button is pressed. We want\n",
1396 " * to control all of the cursor setting manually through the\n",
1397 " * 'cursor' event from matplotlib */\n",
1398 " event.preventDefault();\n",
1399 " return false;\n",
1400 "}\n",
1401 "\n",
1402 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
1403 " // Handle any extra behaviour associated with a key event\n",
1404 "}\n",
1405 "\n",
1406 "mpl.figure.prototype.key_event = function(event, name) {\n",
1407 "\n",
1408 " // Prevent repeat events\n",
1409 " if (name == 'key_press')\n",
1410 " {\n",
1411 " if (event.which === this._key)\n",
1412 " return;\n",
1413 " else\n",
1414 " this._key = event.which;\n",
1415 " }\n",
1416 " if (name == 'key_release')\n",
1417 " this._key = null;\n",
1418 "\n",
1419 " var value = '';\n",
1420 " if (event.ctrlKey && event.which != 17)\n",
1421 " value += \"ctrl+\";\n",
1422 " if (event.altKey && event.which != 18)\n",
1423 " value += \"alt+\";\n",
1424 " if (event.shiftKey && event.which != 16)\n",
1425 " value += \"shift+\";\n",
1426 "\n",
1427 " value += 'k';\n",
1428 " value += event.which.toString();\n",
1429 "\n",
1430 " this._key_event_extra(event, name);\n",
1431 "\n",
1432 " this.send_message(name, {key: value,\n",
1433 " guiEvent: simpleKeys(event)});\n",
1434 " return false;\n",
1435 "}\n",
1436 "\n",
1437 "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
1438 " if (name == 'download') {\n",
1439 " this.handle_save(this, null);\n",
1440 " } else {\n",
1441 " this.send_message(\"toolbar_button\", {name: name});\n",
1442 " }\n",
1443 "};\n",
1444 "\n",
1445 "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
1446 " this.message.textContent = tooltip;\n",
1447 "};\n",
1448 "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",
1449 "\n",
1450 "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
1451 "\n",
1452 "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
1453 " // Create a \"websocket\"-like object which calls the given IPython comm\n",
1454 " // object with the appropriate methods. Currently this is a non binary\n",
1455 " // socket, so there is still some room for performance tuning.\n",
1456 " var ws = {};\n",
1457 "\n",
1458 " ws.close = function() {\n",
1459 " comm.close()\n",
1460 " };\n",
1461 " ws.send = function(m) {\n",
1462 " //console.log('sending', m);\n",
1463 " comm.send(m);\n",
1464 " };\n",
1465 " // Register the callback with on_msg.\n",
1466 " comm.on_msg(function(msg) {\n",
1467 " //console.log('receiving', msg['content']['data'], msg);\n",
1468 " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
1469 " ws.onmessage(msg['content']['data'])\n",
1470 " });\n",
1471 " return ws;\n",
1472 "}\n",
1473 "\n",
1474 "mpl.mpl_figure_comm = function(comm, msg) {\n",
1475 " // This is the function which gets called when the mpl process\n",
1476 " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
1477 "\n",
1478 " var id = msg.content.data.id;\n",
1479 " // Get hold of the div created by the display call when the Comm\n",
1480 " // socket was opened in Python.\n",
1481 " var element = $(\"#\" + id);\n",
1482 " var ws_proxy = comm_websocket_adapter(comm)\n",
1483 "\n",
1484 " function ondownload(figure, format) {\n",
1485 " window.open(figure.imageObj.src);\n",
1486 " }\n",
1487 "\n",
1488 " var fig = new mpl.figure(id, ws_proxy,\n",
1489 " ondownload,\n",
1490 " element.get(0));\n",
1491 "\n",
1492 " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
1493 " // web socket which is closed, not our websocket->open comm proxy.\n",
1494 " ws_proxy.onopen();\n",
1495 "\n",
1496 " fig.parent_element = element.get(0);\n",
1497 " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
1498 " if (!fig.cell_info) {\n",
1499 " console.error(\"Failed to find cell for figure\", id, fig);\n",
1500 " return;\n",
1501 " }\n",
1502 "\n",
1503 " var output_index = fig.cell_info[2]\n",
1504 " var cell = fig.cell_info[0];\n",
1505 "\n",
1506 "};\n",
1507 "\n",
1508 "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
1509 " var width = fig.canvas.width/mpl.ratio\n",
1510 " fig.root.unbind('remove')\n",
1511 "\n",
1512 " // Update the output cell to use the data from the current canvas.\n",
1513 " fig.push_to_output();\n",
1514 " var dataURL = fig.canvas.toDataURL();\n",
1515 " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
1516 " // the notebook keyboard shortcuts fail.\n",
1517 " IPython.keyboard_manager.enable()\n",
1518 " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
1519 " fig.close_ws(fig, msg);\n",
1520 "}\n",
1521 "\n",
1522 "mpl.figure.prototype.close_ws = function(fig, msg){\n",
1523 " fig.send_message('closing', msg);\n",
1524 " // fig.ws.close()\n",
1525 "}\n",
1526 "\n",
1527 "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
1528 " // Turn the data on the canvas into data in the output cell.\n",
1529 " var width = this.canvas.width/mpl.ratio\n",
1530 " var dataURL = this.canvas.toDataURL();\n",
1531 " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
1532 "}\n",
1533 "\n",
1534 "mpl.figure.prototype.updated_canvas_event = function() {\n",
1535 " // Tell IPython that the notebook contents must change.\n",
1536 " IPython.notebook.set_dirty(true);\n",
1537 " this.send_message(\"ack\", {});\n",
1538 " var fig = this;\n",
1539 " // Wait a second, then push the new image to the DOM so\n",
1540 " // that it is saved nicely (might be nice to debounce this).\n",
1541 " setTimeout(function () { fig.push_to_output() }, 1000);\n",
1542 "}\n",
1543 "\n",
1544 "mpl.figure.prototype._init_toolbar = function() {\n",
1545 " var fig = this;\n",
1546 "\n",
1547 " var nav_element = $('<div/>')\n",
1548 " nav_element.attr('style', 'width: 100%');\n",
1549 " this.root.append(nav_element);\n",
1550 "\n",
1551 " // Define a callback function for later on.\n",
1552 " function toolbar_event(event) {\n",
1553 " return fig.toolbar_button_onclick(event['data']);\n",
1554 " }\n",
1555 " function toolbar_mouse_event(event) {\n",
1556 " return fig.toolbar_button_onmouseover(event['data']);\n",
1557 " }\n",
1558 "\n",
1559 " for(var toolbar_ind in mpl.toolbar_items){\n",
1560 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
1561 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
1562 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
1563 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
1564 "\n",
1565 " if (!name) { continue; };\n",
1566 "\n",
1567 " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
1568 " button.click(method_name, toolbar_event);\n",
1569 " button.mouseover(tooltip, toolbar_mouse_event);\n",
1570 " nav_element.append(button);\n",
1571 " }\n",
1572 "\n",
1573 " // Add the status bar.\n",
1574 " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
1575 " nav_element.append(status_bar);\n",
1576 " this.message = status_bar[0];\n",
1577 "\n",
1578 " // Add the close button to the window.\n",
1579 " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
1580 " 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",
1581 " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
1582 " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
1583 " buttongrp.append(button);\n",
1584 " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
1585 " titlebar.prepend(buttongrp);\n",
1586 "}\n",
1587 "\n",
1588 "mpl.figure.prototype._root_extra_style = function(el){\n",
1589 " var fig = this\n",
1590 " el.on(\"remove\", function(){\n",
1591 "\tfig.close_ws(fig, {});\n",
1592 " });\n",
1593 "}\n",
1594 "\n",
1595 "mpl.figure.prototype._canvas_extra_style = function(el){\n",
1596 " // this is important to make the div 'focusable\n",
1597 " el.attr('tabindex', 0)\n",
1598 " // reach out to IPython and tell the keyboard manager to turn it's self\n",
1599 " // off when our div gets focus\n",
1600 "\n",
1601 " // location in version 3\n",
1602 " if (IPython.notebook.keyboard_manager) {\n",
1603 " IPython.notebook.keyboard_manager.register_events(el);\n",
1604 " }\n",
1605 " else {\n",
1606 " // location in version 2\n",
1607 " IPython.keyboard_manager.register_events(el);\n",
1608 " }\n",
1609 "\n",
1610 "}\n",
1611 "\n",
1612 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
1613 " var manager = IPython.notebook.keyboard_manager;\n",
1614 " if (!manager)\n",
1615 " manager = IPython.keyboard_manager;\n",
1616 "\n",
1617 " // Check for shift+enter\n",
1618 " if (event.shiftKey && event.which == 13) {\n",
1619 " this.canvas_div.blur();\n",
1620 " // select the cell after this one\n",
1621 " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
1622 " IPython.notebook.select(index + 1);\n",
1623 " }\n",
1624 "}\n",
1625 "\n",
1626 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
1627 " fig.ondownload(fig, null);\n",
1628 "}\n",
1629 "\n",
1630 "\n",
1631 "mpl.find_output_cell = function(html_output) {\n",
1632 " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
1633 " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
1634 " // IPython event is triggered only after the cells have been serialised, which for\n",
1635 " // our purposes (turning an active figure into a static one), is too late.\n",
1636 " var cells = IPython.notebook.get_cells();\n",
1637 " var ncells = cells.length;\n",
1638 " for (var i=0; i<ncells; i++) {\n",
1639 " var cell = cells[i];\n",
1640 " if (cell.cell_type === 'code'){\n",
1641 " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
1642 " var data = cell.output_area.outputs[j];\n",
1643 " if (data.data) {\n",
1644 " // IPython >= 3 moved mimebundle to data attribute of output\n",
1645 " data = data.data;\n",
1646 " }\n",
1647 " if (data['text/html'] == html_output) {\n",
1648 " return [cell, data, j];\n",
1649 " }\n",
1650 " }\n",
1651 " }\n",
1652 " }\n",
1653 "}\n",
1654 "\n",
1655 "// Register the function which deals with the matplotlib target/channel.\n",
1656 "// The kernel may be null if the page has been refreshed.\n",
1657 "if (IPython.notebook.kernel != null) {\n",
1658 " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
1659 "}\n"
1660 ],
1661 "text/plain": [
1662 "<IPython.core.display.Javascript object>"
1663 ]
1664 },
1665 "metadata": {},
1666 "output_type": "display_data"
1667 },
1668 {
1669 "data": {
1670 "text/html": [
1671 "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAgAElEQVR4XuydfbwcVX3/vzO7N/cSAjVoQEM0PNydvUkIIkGwtgoWrLQWKhZrW2ypWkChqD9tVWpbq/YBWmqtEh/QqqjQh58FkfrzCRSR+kQDSCDJzl6eSohIECQJyeVmd87vdS67YbPZvTsz3+/MOWfmc/+xJfM98z3vz5mz53POmTMe4Q8EQAAEQAAEQAAEQAAEQAAEciLg5XQf3AYEQAAEQAAEQAAEQAAEQAAECAYEjQAEQAAEQAAEQAAEQAAEQCA3AjAguaHGjUAABEAABEAABEAABEAABGBA0AZAAARAAARAAARAAARAAARyIwADkhtq3AgEQAAEQAAEQAAEQAAEQAAGBG0ABEAABEAABEAABEAABEAgNwIwILmhxo1AAARAAARAAARAAARAAARgQNAGQAAEQAAEQAAEQAAEQAAEciMAA5IbatwIBEAABEAABEAABEAABEAABgRtAARAAARAAARAAARAAARAIDcCMCC5ocaNQAAEQAAEQAAEQAAEQAAEYEDQBkAABEAABEAABEAABEAABHIjAAOSG2rcCARAAARAAARAAARAAARAAAYEbQAEQAAEQAAEQAAEQAAEQCA3AjAguaHGjUAABEAABEAABEAABEAABGBA0AZAAARAAARAAARAAARAAARyIwADkhtq3AgEQAAEQAAEQAAEQAAEQAAGBG0ABEAABEAABEAABEAABEAgNwIwILmhxo1AAARAAARAAARAAARAAARgQNAGQAAEQAAEQAAEQAAEQAAEciMAA5IbatwIBEAABEAABEAABEAABEAABgRtAARAAARAAARAAARAAARAIDcCMCC5ocaNQAAEQAAEQAAEQAAEQAAEYEDQBkAABEAABEAABEAABEAABHIjAAOSG2rcCARAAARAAARAAARAAARAAAYEbQAEQAAEQAAEQAAEQAAEQCA3AjAguaHGjUAABEAABEAABEAABEAABGBA0AZAAARAAARAAARAAARAAARyIwADkhtq3AgEQAAEQAAEQAAEQAAEQAAGBG0ABEAABEAABEAABEAABEAgNwIwILmhxo1AAARAAARAAARAAARAAARgQNAGQAAEQAAEQAAEQAAEQAAEciMAA5IbatwIBEAABEAABEAABEAABEAABgRtAARAAARA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\" width=\"800\">"
1672 ],
1673 "text/plain": [
1674 "<IPython.core.display.HTML object>"
1675 ]
1676 },
1677 "metadata": {},
1678 "output_type": "display_data"
1679 },
1680 {
1681 "data": {
1682 "application/javascript": [
1683 "/* Put everything inside the global mpl namespace */\n",
1684 "window.mpl = {};\n",
1685 "\n",
1686 "\n",
1687 "mpl.get_websocket_type = function() {\n",
1688 " if (typeof(WebSocket) !== 'undefined') {\n",
1689 " return WebSocket;\n",
1690 " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
1691 " return MozWebSocket;\n",
1692 " } else {\n",
1693 " alert('Your browser does not have WebSocket support.' +\n",
1694 " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
1695 " 'Firefox 4 and 5 are also supported but you ' +\n",
1696 " 'have to enable WebSockets in about:config.');\n",
1697 " };\n",
1698 "}\n",
1699 "\n",
1700 "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
1701 " this.id = figure_id;\n",
1702 "\n",
1703 " this.ws = websocket;\n",
1704 "\n",
1705 " this.supports_binary = (this.ws.binaryType != undefined);\n",
1706 "\n",
1707 " if (!this.supports_binary) {\n",
1708 " var warnings = document.getElementById(\"mpl-warnings\");\n",
1709 " if (warnings) {\n",
1710 " warnings.style.display = 'block';\n",
1711 " warnings.textContent = (\n",
1712 " \"This browser does not support binary websocket messages. \" +\n",
1713 " \"Performance may be slow.\");\n",
1714 " }\n",
1715 " }\n",
1716 "\n",
1717 " this.imageObj = new Image();\n",
1718 "\n",
1719 " this.context = undefined;\n",
1720 " this.message = undefined;\n",
1721 " this.canvas = undefined;\n",
1722 " this.rubberband_canvas = undefined;\n",
1723 " this.rubberband_context = undefined;\n",
1724 " this.format_dropdown = undefined;\n",
1725 "\n",
1726 " this.image_mode = 'full';\n",
1727 "\n",
1728 " this.root = $('<div/>');\n",
1729 " this._root_extra_style(this.root)\n",
1730 " this.root.attr('style', 'display: inline-block');\n",
1731 "\n",
1732 " $(parent_element).append(this.root);\n",
1733 "\n",
1734 " this._init_header(this);\n",
1735 " this._init_canvas(this);\n",
1736 " this._init_toolbar(this);\n",
1737 "\n",
1738 " var fig = this;\n",
1739 "\n",
1740 " this.waiting = false;\n",
1741 "\n",
1742 " this.ws.onopen = function () {\n",
1743 " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
1744 " fig.send_message(\"send_image_mode\", {});\n",
1745 " if (mpl.ratio != 1) {\n",
1746 " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
1747 " }\n",
1748 " fig.send_message(\"refresh\", {});\n",
1749 " }\n",
1750 "\n",
1751 " this.imageObj.onload = function() {\n",
1752 " if (fig.image_mode == 'full') {\n",
1753 " // Full images could contain transparency (where diff images\n",
1754 " // almost always do), so we need to clear the canvas so that\n",
1755 " // there is no ghosting.\n",
1756 " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
1757 " }\n",
1758 " fig.context.drawImage(fig.imageObj, 0, 0);\n",
1759 " };\n",
1760 "\n",
1761 " this.imageObj.onunload = function() {\n",
1762 " this.ws.close();\n",
1763 " }\n",
1764 "\n",
1765 " this.ws.onmessage = this._make_on_message_function(this);\n",
1766 "\n",
1767 " this.ondownload = ondownload;\n",
1768 "}\n",
1769 "\n",
1770 "mpl.figure.prototype._init_header = function() {\n",
1771 " var titlebar = $(\n",
1772 " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
1773 " 'ui-helper-clearfix\"/>');\n",
1774 " var titletext = $(\n",
1775 " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
1776 " 'text-align: center; padding: 3px;\"/>');\n",
1777 " titlebar.append(titletext)\n",
1778 " this.root.append(titlebar);\n",
1779 " this.header = titletext[0];\n",
1780 "}\n",
1781 "\n",
1782 "\n",
1783 "\n",
1784 "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
1785 "\n",
1786 "}\n",
1787 "\n",
1788 "\n",
1789 "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
1790 "\n",
1791 "}\n",
1792 "\n",
1793 "mpl.figure.prototype._init_canvas = function() {\n",
1794 " var fig = this;\n",
1795 "\n",
1796 " var canvas_div = $('<div/>');\n",
1797 "\n",
1798 " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
1799 "\n",
1800 " function canvas_keyboard_event(event) {\n",
1801 " return fig.key_event(event, event['data']);\n",
1802 " }\n",
1803 "\n",
1804 " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
1805 " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
1806 " this.canvas_div = canvas_div\n",
1807 " this._canvas_extra_style(canvas_div)\n",
1808 " this.root.append(canvas_div);\n",
1809 "\n",
1810 " var canvas = $('<canvas/>');\n",
1811 " canvas.addClass('mpl-canvas');\n",
1812 " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
1813 "\n",
1814 " this.canvas = canvas[0];\n",
1815 " this.context = canvas[0].getContext(\"2d\");\n",
1816 "\n",
1817 " var backingStore = this.context.backingStorePixelRatio ||\n",
1818 "\tthis.context.webkitBackingStorePixelRatio ||\n",
1819 "\tthis.context.mozBackingStorePixelRatio ||\n",
1820 "\tthis.context.msBackingStorePixelRatio ||\n",
1821 "\tthis.context.oBackingStorePixelRatio ||\n",
1822 "\tthis.context.backingStorePixelRatio || 1;\n",
1823 "\n",
1824 " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
1825 "\n",
1826 " var rubberband = $('<canvas/>');\n",
1827 " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
1828 "\n",
1829 " var pass_mouse_events = true;\n",
1830 "\n",
1831 " canvas_div.resizable({\n",
1832 " start: function(event, ui) {\n",
1833 " pass_mouse_events = false;\n",
1834 " },\n",
1835 " resize: function(event, ui) {\n",
1836 " fig.request_resize(ui.size.width, ui.size.height);\n",
1837 " },\n",
1838 " stop: function(event, ui) {\n",
1839 " pass_mouse_events = true;\n",
1840 " fig.request_resize(ui.size.width, ui.size.height);\n",
1841 " },\n",
1842 " });\n",
1843 "\n",
1844 " function mouse_event_fn(event) {\n",
1845 " if (pass_mouse_events)\n",
1846 " return fig.mouse_event(event, event['data']);\n",
1847 " }\n",
1848 "\n",
1849 " rubberband.mousedown('button_press', mouse_event_fn);\n",
1850 " rubberband.mouseup('button_release', mouse_event_fn);\n",
1851 " // Throttle sequential mouse events to 1 every 20ms.\n",
1852 " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
1853 "\n",
1854 " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
1855 " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
1856 "\n",
1857 " canvas_div.on(\"wheel\", function (event) {\n",
1858 " event = event.originalEvent;\n",
1859 " event['data'] = 'scroll'\n",
1860 " if (event.deltaY < 0) {\n",
1861 " event.step = 1;\n",
1862 " } else {\n",
1863 " event.step = -1;\n",
1864 " }\n",
1865 " mouse_event_fn(event);\n",
1866 " });\n",
1867 "\n",
1868 " canvas_div.append(canvas);\n",
1869 " canvas_div.append(rubberband);\n",
1870 "\n",
1871 " this.rubberband = rubberband;\n",
1872 " this.rubberband_canvas = rubberband[0];\n",
1873 " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
1874 " this.rubberband_context.strokeStyle = \"#000000\";\n",
1875 "\n",
1876 " this._resize_canvas = function(width, height) {\n",
1877 " // Keep the size of the canvas, canvas container, and rubber band\n",
1878 " // canvas in synch.\n",
1879 " canvas_div.css('width', width)\n",
1880 " canvas_div.css('height', height)\n",
1881 "\n",
1882 " canvas.attr('width', width * mpl.ratio);\n",
1883 " canvas.attr('height', height * mpl.ratio);\n",
1884 " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
1885 "\n",
1886 " rubberband.attr('width', width);\n",
1887 " rubberband.attr('height', height);\n",
1888 " }\n",
1889 "\n",
1890 " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
1891 " // upon first draw.\n",
1892 " this._resize_canvas(600, 600);\n",
1893 "\n",
1894 " // Disable right mouse context menu.\n",
1895 " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
1896 " return false;\n",
1897 " });\n",
1898 "\n",
1899 " function set_focus () {\n",
1900 " canvas.focus();\n",
1901 " canvas_div.focus();\n",
1902 " }\n",
1903 "\n",
1904 " window.setTimeout(set_focus, 100);\n",
1905 "}\n",
1906 "\n",
1907 "mpl.figure.prototype._init_toolbar = function() {\n",
1908 " var fig = this;\n",
1909 "\n",
1910 " var nav_element = $('<div/>')\n",
1911 " nav_element.attr('style', 'width: 100%');\n",
1912 " this.root.append(nav_element);\n",
1913 "\n",
1914 " // Define a callback function for later on.\n",
1915 " function toolbar_event(event) {\n",
1916 " return fig.toolbar_button_onclick(event['data']);\n",
1917 " }\n",
1918 " function toolbar_mouse_event(event) {\n",
1919 " return fig.toolbar_button_onmouseover(event['data']);\n",
1920 " }\n",
1921 "\n",
1922 " for(var toolbar_ind in mpl.toolbar_items) {\n",
1923 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
1924 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
1925 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
1926 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
1927 "\n",
1928 " if (!name) {\n",
1929 " // put a spacer in here.\n",
1930 " continue;\n",
1931 " }\n",
1932 " var button = $('<button/>');\n",
1933 " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
1934 " 'ui-button-icon-only');\n",
1935 " button.attr('role', 'button');\n",
1936 " button.attr('aria-disabled', 'false');\n",
1937 " button.click(method_name, toolbar_event);\n",
1938 " button.mouseover(tooltip, toolbar_mouse_event);\n",
1939 "\n",
1940 " var icon_img = $('<span/>');\n",
1941 " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
1942 " icon_img.addClass(image);\n",
1943 " icon_img.addClass('ui-corner-all');\n",
1944 "\n",
1945 " var tooltip_span = $('<span/>');\n",
1946 " tooltip_span.addClass('ui-button-text');\n",
1947 " tooltip_span.html(tooltip);\n",
1948 "\n",
1949 " button.append(icon_img);\n",
1950 " button.append(tooltip_span);\n",
1951 "\n",
1952 " nav_element.append(button);\n",
1953 " }\n",
1954 "\n",
1955 " var fmt_picker_span = $('<span/>');\n",
1956 "\n",
1957 " var fmt_picker = $('<select/>');\n",
1958 " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
1959 " fmt_picker_span.append(fmt_picker);\n",
1960 " nav_element.append(fmt_picker_span);\n",
1961 " this.format_dropdown = fmt_picker[0];\n",
1962 "\n",
1963 " for (var ind in mpl.extensions) {\n",
1964 " var fmt = mpl.extensions[ind];\n",
1965 " var option = $(\n",
1966 " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
1967 " fmt_picker.append(option)\n",
1968 " }\n",
1969 "\n",
1970 " // Add hover states to the ui-buttons\n",
1971 " $( \".ui-button\" ).hover(\n",
1972 " function() { $(this).addClass(\"ui-state-hover\");},\n",
1973 " function() { $(this).removeClass(\"ui-state-hover\");}\n",
1974 " );\n",
1975 "\n",
1976 " var status_bar = $('<span class=\"mpl-message\"/>');\n",
1977 " nav_element.append(status_bar);\n",
1978 " this.message = status_bar[0];\n",
1979 "}\n",
1980 "\n",
1981 "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
1982 " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
1983 " // which will in turn request a refresh of the image.\n",
1984 " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
1985 "}\n",
1986 "\n",
1987 "mpl.figure.prototype.send_message = function(type, properties) {\n",
1988 " properties['type'] = type;\n",
1989 " properties['figure_id'] = this.id;\n",
1990 " this.ws.send(JSON.stringify(properties));\n",
1991 "}\n",
1992 "\n",
1993 "mpl.figure.prototype.send_draw_message = function() {\n",
1994 " if (!this.waiting) {\n",
1995 " this.waiting = true;\n",
1996 " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
1997 " }\n",
1998 "}\n",
1999 "\n",
2000 "\n",
2001 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
2002 " var format_dropdown = fig.format_dropdown;\n",
2003 " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
2004 " fig.ondownload(fig, format);\n",
2005 "}\n",
2006 "\n",
2007 "\n",
2008 "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
2009 " var size = msg['size'];\n",
2010 " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
2011 " fig._resize_canvas(size[0], size[1]);\n",
2012 " fig.send_message(\"refresh\", {});\n",
2013 " };\n",
2014 "}\n",
2015 "\n",
2016 "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
2017 " var x0 = msg['x0'] / mpl.ratio;\n",
2018 " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
2019 " var x1 = msg['x1'] / mpl.ratio;\n",
2020 " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
2021 " x0 = Math.floor(x0) + 0.5;\n",
2022 " y0 = Math.floor(y0) + 0.5;\n",
2023 " x1 = Math.floor(x1) + 0.5;\n",
2024 " y1 = Math.floor(y1) + 0.5;\n",
2025 " var min_x = Math.min(x0, x1);\n",
2026 " var min_y = Math.min(y0, y1);\n",
2027 " var width = Math.abs(x1 - x0);\n",
2028 " var height = Math.abs(y1 - y0);\n",
2029 "\n",
2030 " fig.rubberband_context.clearRect(\n",
2031 " 0, 0, fig.canvas.width, fig.canvas.height);\n",
2032 "\n",
2033 " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
2034 "}\n",
2035 "\n",
2036 "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
2037 " // Updates the figure title.\n",
2038 " fig.header.textContent = msg['label'];\n",
2039 "}\n",
2040 "\n",
2041 "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
2042 " var cursor = msg['cursor'];\n",
2043 " switch(cursor)\n",
2044 " {\n",
2045 " case 0:\n",
2046 " cursor = 'pointer';\n",
2047 " break;\n",
2048 " case 1:\n",
2049 " cursor = 'default';\n",
2050 " break;\n",
2051 " case 2:\n",
2052 " cursor = 'crosshair';\n",
2053 " break;\n",
2054 " case 3:\n",
2055 " cursor = 'move';\n",
2056 " break;\n",
2057 " }\n",
2058 " fig.rubberband_canvas.style.cursor = cursor;\n",
2059 "}\n",
2060 "\n",
2061 "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
2062 " fig.message.textContent = msg['message'];\n",
2063 "}\n",
2064 "\n",
2065 "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
2066 " // Request the server to send over a new figure.\n",
2067 " fig.send_draw_message();\n",
2068 "}\n",
2069 "\n",
2070 "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
2071 " fig.image_mode = msg['mode'];\n",
2072 "}\n",
2073 "\n",
2074 "mpl.figure.prototype.updated_canvas_event = function() {\n",
2075 " // Called whenever the canvas gets updated.\n",
2076 " this.send_message(\"ack\", {});\n",
2077 "}\n",
2078 "\n",
2079 "// A function to construct a web socket function for onmessage handling.\n",
2080 "// Called in the figure constructor.\n",
2081 "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
2082 " return function socket_on_message(evt) {\n",
2083 " if (evt.data instanceof Blob) {\n",
2084 " /* FIXME: We get \"Resource interpreted as Image but\n",
2085 " * transferred with MIME type text/plain:\" errors on\n",
2086 " * Chrome. But how to set the MIME type? It doesn't seem\n",
2087 " * to be part of the websocket stream */\n",
2088 " evt.data.type = \"image/png\";\n",
2089 "\n",
2090 " /* Free the memory for the previous frames */\n",
2091 " if (fig.imageObj.src) {\n",
2092 " (window.URL || window.webkitURL).revokeObjectURL(\n",
2093 " fig.imageObj.src);\n",
2094 " }\n",
2095 "\n",
2096 " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
2097 " evt.data);\n",
2098 " fig.updated_canvas_event();\n",
2099 " fig.waiting = false;\n",
2100 " return;\n",
2101 " }\n",
2102 " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
2103 " fig.imageObj.src = evt.data;\n",
2104 " fig.updated_canvas_event();\n",
2105 " fig.waiting = false;\n",
2106 " return;\n",
2107 " }\n",
2108 "\n",
2109 " var msg = JSON.parse(evt.data);\n",
2110 " var msg_type = msg['type'];\n",
2111 "\n",
2112 " // Call the \"handle_{type}\" callback, which takes\n",
2113 " // the figure and JSON message as its only arguments.\n",
2114 " try {\n",
2115 " var callback = fig[\"handle_\" + msg_type];\n",
2116 " } catch (e) {\n",
2117 " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
2118 " return;\n",
2119 " }\n",
2120 "\n",
2121 " if (callback) {\n",
2122 " try {\n",
2123 " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
2124 " callback(fig, msg);\n",
2125 " } catch (e) {\n",
2126 " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
2127 " }\n",
2128 " }\n",
2129 " };\n",
2130 "}\n",
2131 "\n",
2132 "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
2133 "mpl.findpos = function(e) {\n",
2134 " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
2135 " var targ;\n",
2136 " if (!e)\n",
2137 " e = window.event;\n",
2138 " if (e.target)\n",
2139 " targ = e.target;\n",
2140 " else if (e.srcElement)\n",
2141 " targ = e.srcElement;\n",
2142 " if (targ.nodeType == 3) // defeat Safari bug\n",
2143 " targ = targ.parentNode;\n",
2144 "\n",
2145 " // jQuery normalizes the pageX and pageY\n",
2146 " // pageX,Y are the mouse positions relative to the document\n",
2147 " // offset() returns the position of the element relative to the document\n",
2148 " var x = e.pageX - $(targ).offset().left;\n",
2149 " var y = e.pageY - $(targ).offset().top;\n",
2150 "\n",
2151 " return {\"x\": x, \"y\": y};\n",
2152 "};\n",
2153 "\n",
2154 "/*\n",
2155 " * return a copy of an object with only non-object keys\n",
2156 " * we need this to avoid circular references\n",
2157 " * http://stackoverflow.com/a/24161582/3208463\n",
2158 " */\n",
2159 "function simpleKeys (original) {\n",
2160 " return Object.keys(original).reduce(function (obj, key) {\n",
2161 " if (typeof original[key] !== 'object')\n",
2162 " obj[key] = original[key]\n",
2163 " return obj;\n",
2164 " }, {});\n",
2165 "}\n",
2166 "\n",
2167 "mpl.figure.prototype.mouse_event = function(event, name) {\n",
2168 " var canvas_pos = mpl.findpos(event)\n",
2169 "\n",
2170 " if (name === 'button_press')\n",
2171 " {\n",
2172 " this.canvas.focus();\n",
2173 " this.canvas_div.focus();\n",
2174 " }\n",
2175 "\n",
2176 " var x = canvas_pos.x * mpl.ratio;\n",
2177 " var y = canvas_pos.y * mpl.ratio;\n",
2178 "\n",
2179 " this.send_message(name, {x: x, y: y, button: event.button,\n",
2180 " step: event.step,\n",
2181 " guiEvent: simpleKeys(event)});\n",
2182 "\n",
2183 " /* This prevents the web browser from automatically changing to\n",
2184 " * the text insertion cursor when the button is pressed. We want\n",
2185 " * to control all of the cursor setting manually through the\n",
2186 " * 'cursor' event from matplotlib */\n",
2187 " event.preventDefault();\n",
2188 " return false;\n",
2189 "}\n",
2190 "\n",
2191 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
2192 " // Handle any extra behaviour associated with a key event\n",
2193 "}\n",
2194 "\n",
2195 "mpl.figure.prototype.key_event = function(event, name) {\n",
2196 "\n",
2197 " // Prevent repeat events\n",
2198 " if (name == 'key_press')\n",
2199 " {\n",
2200 " if (event.which === this._key)\n",
2201 " return;\n",
2202 " else\n",
2203 " this._key = event.which;\n",
2204 " }\n",
2205 " if (name == 'key_release')\n",
2206 " this._key = null;\n",
2207 "\n",
2208 " var value = '';\n",
2209 " if (event.ctrlKey && event.which != 17)\n",
2210 " value += \"ctrl+\";\n",
2211 " if (event.altKey && event.which != 18)\n",
2212 " value += \"alt+\";\n",
2213 " if (event.shiftKey && event.which != 16)\n",
2214 " value += \"shift+\";\n",
2215 "\n",
2216 " value += 'k';\n",
2217 " value += event.which.toString();\n",
2218 "\n",
2219 " this._key_event_extra(event, name);\n",
2220 "\n",
2221 " this.send_message(name, {key: value,\n",
2222 " guiEvent: simpleKeys(event)});\n",
2223 " return false;\n",
2224 "}\n",
2225 "\n",
2226 "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
2227 " if (name == 'download') {\n",
2228 " this.handle_save(this, null);\n",
2229 " } else {\n",
2230 " this.send_message(\"toolbar_button\", {name: name});\n",
2231 " }\n",
2232 "};\n",
2233 "\n",
2234 "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
2235 " this.message.textContent = tooltip;\n",
2236 "};\n",
2237 "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",
2238 "\n",
2239 "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
2240 "\n",
2241 "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
2242 " // Create a \"websocket\"-like object which calls the given IPython comm\n",
2243 " // object with the appropriate methods. Currently this is a non binary\n",
2244 " // socket, so there is still some room for performance tuning.\n",
2245 " var ws = {};\n",
2246 "\n",
2247 " ws.close = function() {\n",
2248 " comm.close()\n",
2249 " };\n",
2250 " ws.send = function(m) {\n",
2251 " //console.log('sending', m);\n",
2252 " comm.send(m);\n",
2253 " };\n",
2254 " // Register the callback with on_msg.\n",
2255 " comm.on_msg(function(msg) {\n",
2256 " //console.log('receiving', msg['content']['data'], msg);\n",
2257 " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
2258 " ws.onmessage(msg['content']['data'])\n",
2259 " });\n",
2260 " return ws;\n",
2261 "}\n",
2262 "\n",
2263 "mpl.mpl_figure_comm = function(comm, msg) {\n",
2264 " // This is the function which gets called when the mpl process\n",
2265 " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
2266 "\n",
2267 " var id = msg.content.data.id;\n",
2268 " // Get hold of the div created by the display call when the Comm\n",
2269 " // socket was opened in Python.\n",
2270 " var element = $(\"#\" + id);\n",
2271 " var ws_proxy = comm_websocket_adapter(comm)\n",
2272 "\n",
2273 " function ondownload(figure, format) {\n",
2274 " window.open(figure.imageObj.src);\n",
2275 " }\n",
2276 "\n",
2277 " var fig = new mpl.figure(id, ws_proxy,\n",
2278 " ondownload,\n",
2279 " element.get(0));\n",
2280 "\n",
2281 " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
2282 " // web socket which is closed, not our websocket->open comm proxy.\n",
2283 " ws_proxy.onopen();\n",
2284 "\n",
2285 " fig.parent_element = element.get(0);\n",
2286 " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
2287 " if (!fig.cell_info) {\n",
2288 " console.error(\"Failed to find cell for figure\", id, fig);\n",
2289 " return;\n",
2290 " }\n",
2291 "\n",
2292 " var output_index = fig.cell_info[2]\n",
2293 " var cell = fig.cell_info[0];\n",
2294 "\n",
2295 "};\n",
2296 "\n",
2297 "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
2298 " var width = fig.canvas.width/mpl.ratio\n",
2299 " fig.root.unbind('remove')\n",
2300 "\n",
2301 " // Update the output cell to use the data from the current canvas.\n",
2302 " fig.push_to_output();\n",
2303 " var dataURL = fig.canvas.toDataURL();\n",
2304 " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
2305 " // the notebook keyboard shortcuts fail.\n",
2306 " IPython.keyboard_manager.enable()\n",
2307 " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
2308 " fig.close_ws(fig, msg);\n",
2309 "}\n",
2310 "\n",
2311 "mpl.figure.prototype.close_ws = function(fig, msg){\n",
2312 " fig.send_message('closing', msg);\n",
2313 " // fig.ws.close()\n",
2314 "}\n",
2315 "\n",
2316 "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
2317 " // Turn the data on the canvas into data in the output cell.\n",
2318 " var width = this.canvas.width/mpl.ratio\n",
2319 " var dataURL = this.canvas.toDataURL();\n",
2320 " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
2321 "}\n",
2322 "\n",
2323 "mpl.figure.prototype.updated_canvas_event = function() {\n",
2324 " // Tell IPython that the notebook contents must change.\n",
2325 " IPython.notebook.set_dirty(true);\n",
2326 " this.send_message(\"ack\", {});\n",
2327 " var fig = this;\n",
2328 " // Wait a second, then push the new image to the DOM so\n",
2329 " // that it is saved nicely (might be nice to debounce this).\n",
2330 " setTimeout(function () { fig.push_to_output() }, 1000);\n",
2331 "}\n",
2332 "\n",
2333 "mpl.figure.prototype._init_toolbar = function() {\n",
2334 " var fig = this;\n",
2335 "\n",
2336 " var nav_element = $('<div/>')\n",
2337 " nav_element.attr('style', 'width: 100%');\n",
2338 " this.root.append(nav_element);\n",
2339 "\n",
2340 " // Define a callback function for later on.\n",
2341 " function toolbar_event(event) {\n",
2342 " return fig.toolbar_button_onclick(event['data']);\n",
2343 " }\n",
2344 " function toolbar_mouse_event(event) {\n",
2345 " return fig.toolbar_button_onmouseover(event['data']);\n",
2346 " }\n",
2347 "\n",
2348 " for(var toolbar_ind in mpl.toolbar_items){\n",
2349 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
2350 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
2351 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
2352 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
2353 "\n",
2354 " if (!name) { continue; };\n",
2355 "\n",
2356 " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
2357 " button.click(method_name, toolbar_event);\n",
2358 " button.mouseover(tooltip, toolbar_mouse_event);\n",
2359 " nav_element.append(button);\n",
2360 " }\n",
2361 "\n",
2362 " // Add the status bar.\n",
2363 " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
2364 " nav_element.append(status_bar);\n",
2365 " this.message = status_bar[0];\n",
2366 "\n",
2367 " // Add the close button to the window.\n",
2368 " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
2369 " 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",
2370 " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
2371 " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
2372 " buttongrp.append(button);\n",
2373 " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
2374 " titlebar.prepend(buttongrp);\n",
2375 "}\n",
2376 "\n",
2377 "mpl.figure.prototype._root_extra_style = function(el){\n",
2378 " var fig = this\n",
2379 " el.on(\"remove\", function(){\n",
2380 "\tfig.close_ws(fig, {});\n",
2381 " });\n",
2382 "}\n",
2383 "\n",
2384 "mpl.figure.prototype._canvas_extra_style = function(el){\n",
2385 " // this is important to make the div 'focusable\n",
2386 " el.attr('tabindex', 0)\n",
2387 " // reach out to IPython and tell the keyboard manager to turn it's self\n",
2388 " // off when our div gets focus\n",
2389 "\n",
2390 " // location in version 3\n",
2391 " if (IPython.notebook.keyboard_manager) {\n",
2392 " IPython.notebook.keyboard_manager.register_events(el);\n",
2393 " }\n",
2394 " else {\n",
2395 " // location in version 2\n",
2396 " IPython.keyboard_manager.register_events(el);\n",
2397 " }\n",
2398 "\n",
2399 "}\n",
2400 "\n",
2401 "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
2402 " var manager = IPython.notebook.keyboard_manager;\n",
2403 " if (!manager)\n",
2404 " manager = IPython.keyboard_manager;\n",
2405 "\n",
2406 " // Check for shift+enter\n",
2407 " if (event.shiftKey && event.which == 13) {\n",
2408 " this.canvas_div.blur();\n",
2409 " // select the cell after this one\n",
2410 " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
2411 " IPython.notebook.select(index + 1);\n",
2412 " }\n",
2413 "}\n",
2414 "\n",
2415 "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
2416 " fig.ondownload(fig, null);\n",
2417 "}\n",
2418 "\n",
2419 "\n",
2420 "mpl.find_output_cell = function(html_output) {\n",
2421 " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
2422 " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
2423 " // IPython event is triggered only after the cells have been serialised, which for\n",
2424 " // our purposes (turning an active figure into a static one), is too late.\n",
2425 " var cells = IPython.notebook.get_cells();\n",
2426 " var ncells = cells.length;\n",
2427 " for (var i=0; i<ncells; i++) {\n",
2428 " var cell = cells[i];\n",
2429 " if (cell.cell_type === 'code'){\n",
2430 " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
2431 " var data = cell.output_area.outputs[j];\n",
2432 " if (data.data) {\n",
2433 " // IPython >= 3 moved mimebundle to data attribute of output\n",
2434 " data = data.data;\n",
2435 " }\n",
2436 " if (data['text/html'] == html_output) {\n",
2437 " return [cell, data, j];\n",
2438 " }\n",
2439 " }\n",
2440 " }\n",
2441 " }\n",
2442 "}\n",
2443 "\n",
2444 "// Register the function which deals with the matplotlib target/channel.\n",
2445 "// The kernel may be null if the page has been refreshed.\n",
2446 "if (IPython.notebook.kernel != null) {\n",
2447 " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
2448 "}\n"
2449 ],
2450 "text/plain": [
2451 "<IPython.core.display.Javascript object>"
2452 ]
2453 },
2454 "metadata": {},
2455 "output_type": "display_data"
2456 },
2457 {
2458 "data": {
2459 "text/html": [
2460 "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAgAElEQVR4XuydB5gkRfnGv+qe2bx7e0c+QA5up2cPJCgCEiQcUQRBUEkSFCQn5QARJJpICkg6cuZ/BAVJikRBlKiIHDc9ewTJ8e4274Su//OtPcfc7s7O1lZvb9fMO8/j48Ntf/VV/753avrtrqoWhA8IgAAIgAAIgAAIgAAIgAAIhERAhJQHaUAABEAABEAABEAABEAABECAYEAgAhAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAEQAAEYECgARAAARAAARAAARAAARAAgdAIwICEhhqJQAAEQAAEQAAEQAAE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\" width=\"800\">"
2461 ],
2462 "text/plain": [
2463 "<IPython.core.display.HTML object>"
2464 ]
2465 },
2466 "metadata": {},
2467 "output_type": "display_data"
2468 },
2469 {
2470 "data": {
2471 "application/javascript": [
2472 "/* Put everything inside the global mpl namespace */\n",
2473 "window.mpl = {};\n",
2474 "\n",
2475 "\n",
2476 "mpl.get_websocket_type = function() {\n",
2477 " if (typeof(WebSocket) !== 'undefined') {\n",
2478 " return WebSocket;\n",
2479 " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
2480 " return MozWebSocket;\n",
2481 " } else {\n",
2482 " alert('Your browser does not have WebSocket support.' +\n",
2483 " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
2484 " 'Firefox 4 and 5 are also supported but you ' +\n",
2485 " 'have to enable WebSockets in about:config.');\n",
2486 " };\n",
2487 "}\n",
2488 "\n",
2489 "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
2490 " this.id = figure_id;\n",
2491 "\n",
2492 " this.ws = websocket;\n",
2493 "\n",
2494 " this.supports_binary = (this.ws.binaryType != undefined);\n",
2495 "\n",
2496 " if (!this.supports_binary) {\n",
2497 " var warnings = document.getElementById(\"mpl-warnings\");\n",
2498 " if (warnings) {\n",
2499 " warnings.style.display = 'block';\n",
2500 " warnings.textContent = (\n",
2501 " \"This browser does not support binary websocket messages. \" +\n",
2502 " \"Performance may be slow.\");\n",
2503 " }\n",
2504 " }\n",
2505 "\n",
2506 " this.imageObj = new Image();\n",
2507 "\n",
2508 " this.context = undefined;\n",
2509 " this.message = undefined;\n",
2510 " this.canvas = undefined;\n",
2511 " this.rubberband_canvas = undefined;\n",
2512 " this.rubberband_context = undefined;\n",
2513 " this.format_dropdown = undefined;\n",
2514 "\n",
2515 " this.image_mode = 'full';\n",
2516 "\n",
2517 " this.root = $('<div/>');\n",
2518 " this._root_extra_style(this.root)\n",
2519 " this.root.attr('style', 'display: inline-block');\n",
2520 "\n",
2521 " $(parent_element).append(this.root);\n",
2522 "\n",
2523 " this._init_header(this);\n",
2524 " this._init_canvas(this);\n",
2525 " this._init_toolbar(this);\n",
2526 "\n",
2527 " var fig = this;\n",
2528 "\n",
2529 " this.waiting = false;\n",
2530 "\n",
2531 " this.ws.onopen = function () {\n",
2532 " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
2533 " fig.send_message(\"send_image_mode\", {});\n",
2534 " if (mpl.ratio != 1) {\n",
2535 " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
2536 " }\n",
2537 " fig.send_message(\"refresh\", {});\n",
2538 " }\n",
2539 "\n",
2540 " this.imageObj.onload = function() {\n",
2541 " if (fig.image_mode == 'full') {\n",
2542 " // Full images could contain transparency (where diff images\n",
2543 " // almost always do), so we need to clear the canvas so that\n",
2544 " // there is no ghosting.\n",
2545 " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
2546 " }\n",
2547 " fig.context.drawImage(fig.imageObj, 0, 0);\n",
2548 " };\n",
2549 "\n",
2550 " this.imageObj.onunload = function() {\n",
2551 " this.ws.close();\n",
2552 " }\n",
2553 "\n",
2554 " this.ws.onmessage = this._make_on_message_function(this);\n",
2555 "\n",
2556 " this.ondownload = ondownload;\n",
2557 "}\n",
2558 "\n",
2559 "mpl.figure.prototype._init_header = function() {\n",
2560 " var titlebar = $(\n",
2561 " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
2562 " 'ui-helper-clearfix\"/>');\n",
2563 " var titletext = $(\n",
2564 " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
2565 " 'text-align: center; padding: 3px;\"/>');\n",
2566 " titlebar.append(titletext)\n",
2567 " this.root.append(titlebar);\n",
2568 " this.header = titletext[0];\n",
2569 "}\n",
2570 "\n",
2571 "\n",
2572 "\n",
2573 "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
2574 "\n",
2575 "}\n",
2576 "\n",
2577 "\n",
2578 "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
2579 "\n",
2580 "}\n",
2581 "\n",
2582 "mpl.figure.prototype._init_canvas = function() {\n",
2583 " var fig = this;\n",
2584 "\n",
2585 " var canvas_div = $('<div/>');\n",
2586 "\n",
2587 " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
2588 "\n",
2589 " function canvas_keyboard_event(event) {\n",
2590 " return fig.key_event(event, event['data']);\n",
2591 " }\n",
2592 "\n",
2593 " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
2594 " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
2595 " this.canvas_div = canvas_div\n",
2596 " this._canvas_extra_style(canvas_div)\n",
2597 " this.root.append(canvas_div);\n",
2598 "\n",
2599 " var canvas = $('<canvas/>');\n",
2600 " canvas.addClass('mpl-canvas');\n",
2601 " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
2602 "\n",
2603 " this.canvas = canvas[0];\n",
2604 " this.context = canvas[0].getContext(\"2d\");\n",
2605 "\n",
2606 " var backingStore = this.context.backingStorePixelRatio ||\n",
2607 "\tthis.context.webkitBackingStorePixelRatio ||\n",
2608 "\tthis.context.mozBackingStorePixelRatio ||\n",
2609 "\tthis.context.msBackingStorePixelRatio ||\n",
2610 "\tthis.context.oBackingStorePixelRatio ||\n",
2611 "\tthis.context.backingStorePixelRatio || 1;\n",
2612 "\n",
2613 " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
2614 "\n",
2615 " var rubberband = $('<canvas/>');\n",
2616 " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
2617 "\n",
2618 " var pass_mouse_events = true;\n",
2619 "\n",
2620 " canvas_div.resizable({\n",
2621 " start: function(event, ui) {\n",
2622 " pass_mouse_events = false;\n",
2623 " },\n",
2624 " resize: function(event, ui) {\n",
2625 " fig.request_resize(ui.size.width, ui.size.height);\n",
2626 " },\n",
2627 " stop: function(event, ui) {\n",
2628 " pass_mouse_events = true;\n",
2629 " fig.request_resize(ui.size.width, ui.size.height);\n",
2630 " },\n",
2631 " });\n",
2632 "\n",
2633 " function mouse_event_fn(event) {\n",
2634 " if (pass_mouse_events)\n",
2635 " return fig.mouse_event(event, event['data']);\n",
2636 " }\n",
2637 "\n",
2638 " rubberband.mousedown('button_press', mouse_event_fn);\n",
2639 " rubberband.mouseup('button_release', mouse_event_fn);\n",
2640 " // Throttle sequential mouse events to 1 every 20ms.\n",
2641 " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
2642 "\n",
2643 " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
2644 " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
2645 "\n",
2646 " canvas_div.on(\"wheel\", function (event) {\n",
2647 " event = event.originalEvent;\n",
2648 " event['data'] = 'scroll'\n",
2649 " if (event.deltaY < 0) {\n",
2650 " event.step = 1;\n",
2651 " } else {\n",
2652 " event.step = -1;\n",
2653 " }\n",
2654 " mouse_event_fn(event);\n",
2655 " });\n",
2656 "\n",
2657 " canvas_div.append(canvas);\n",
2658 " canvas_div.append(rubberband);\n",
2659 "\n",
2660 " this.rubberband = rubberband;\n",
2661 " this.rubberband_canvas = rubberband[0];\n",
2662 " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
2663 " this.rubberband_context.strokeStyle = \"#000000\";\n",
2664 "\n",
2665 " this._resize_canvas = function(width, height) {\n",
2666 " // Keep the size of the canvas, canvas container, and rubber band\n",
2667 " // canvas in synch.\n",
2668 " canvas_div.css('width', width)\n",
2669 " canvas_div.css('height', height)\n",
2670 "\n",
2671 " canvas.attr('width', width * mpl.ratio);\n",
2672 " canvas.attr('height', height * mpl.ratio);\n",
2673 " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
2674 "\n",
2675 " rubberband.attr('width', width);\n",
2676 " rubberband.attr('height', height);\n",
2677 " }\n",
2678 "\n",
2679 " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
2680 " // upon first draw.\n",
2681 " this._resize_canvas(600, 600);\n",
2682 "\n",
2683 " // Disable right mouse context menu.\n",
2684 " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
2685 " return false;\n",
2686 " });\n",
2687 "\n",
2688 " function set_focus () {\n",
2689 " canvas.focus();\n",
2690 " canvas_div.focus();\n",
2691 " }\n",
2692 "\n",
2693 " window.setTimeout(set_focus, 100);\n",
2694 "}\n",
2695 "\n",
2696 "mpl.figure.prototype._init_toolbar = function() {\n",
2697 " var fig = this;\n",
2698 "\n",
2699 " var nav_element = $('<div/>')\n",
2700 " nav_element.attr('style', 'width: 100%');\n",
2701 " this.root.append(nav_element);\n",
2702 "\n",
2703 " // Define a callback function for later on.\n",
2704 " function toolbar_event(event) {\n",
2705 " return fig.toolbar_button_onclick(event['data']);\n",
2706 " }\n",
2707 " function toolbar_mouse_event(event) {\n",
2708 " return fig.toolbar_button_onmouseover(event['data']);\n",
2709 " }\n",
2710 "\n",
2711 " for(var toolbar_ind in mpl.toolbar_items) {\n",
2712 " var name = mpl.toolbar_items[toolbar_ind][0];\n",
2713 " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
2714 " var image = mpl.toolbar_items[toolbar_ind][2];\n",
2715 " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
2716 "\n",
2717 " if (!name) {\n",
2718 " // put a spacer in here.\n",
2719 " continue;\n",
2720 " }\n",
2721 " var button = $('<button/>');\n",
2722 " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
2723 " 'ui-button-icon-only');\n",
2724 " button.attr('role', 'button');\n",
2725 " button.attr('aria-disabled', 'false');\n",
2726 " button.click(method_name, toolbar_event);\n",
2727 " button.mouseover(tooltip, toolbar_mouse_event);\n",
2728 "\n",
2729 " var icon_img = $('<span/>');\n",
2730 " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
2731 " icon_img.addClass(image);\n",
2732 " icon_img.addClass('ui-corner-all');\n",
2733 "\n",
2734 " var tooltip_span = $('<span/>');\n",
2735 " tooltip_span.addClass('ui-button-text');\n",
2736 " tooltip_span.html(tooltip);\n",
2737 "\n",
2738 " button.append(icon_img);\n",
2739 " button.append(tooltip_span);\n",
2740 "\n",
2741 " nav_element.append(button);\n",
2742 " }\n",
2743 "\n",
2744 " var fmt_picker_span = $('<span/>');\n",
2745 "\n",
2746 " var fmt_picker = $('<select/>');\n",
2747 " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
2748 " fmt_picker_span.append(fmt_picker);\n",
2749 " nav_element.append(fmt_picker_span);\n",
2750 " this.format_dropdown = fmt_picker[0];\n",
2751 "\n",
2752 " for (var ind in mpl.extensions) {\n",
2753 " var fmt = mpl.extensions[ind];\n",
2754 " var option = $(\n",
2755 " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
2756 " fmt_picker.append(option)\n",
2757 " }\n",
2758 "\n",
2759 " // Add hover states to the ui-buttons\n",
2760 " $( \".ui-button\" ).hover(\n",
2761 " function() { $(this).addClass(\"ui-state-hover\");},\n",
2762 " function() { $(this).removeClass(\"ui-state-hover\");}\n",
2763 " );\n",
2764 "\n",
2765 " var status_bar = $('<span class=\"mpl-message\"/>');\n",
2766 " nav_element.append(status_bar);\n",
2767 " this.message = status_bar[0];\n",
2768 "}\n",
2769 "\n",
2770 "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
2771 " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
2772 " // which will in turn request a refresh of the image.\n",
2773 " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
2774 "}\n",
2775 "\n",
2776 "mpl.figure.prototype.send_message = function(type, properties) {\n",
2777 " properties['type'] = type;\n",
2778 " properties['figure_id']