Created
August 18, 2020 15:42
-
-
Save thesamovar/1c44d9df9d1710999c567db907ae2554 to your computer and use it in GitHub Desktop.
2D Legend for matplotlib
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "%matplotlib notebook", | |
"execution_count": 51, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "from matplotlib import rcParams\nfrom matplotlib import pyplot as plt\nfrom matplotlib import patches\nfrom mpl_toolkits.axes_grid1.inset_locator import inset_axes\n\ndef legend2d(ax=None, width=\"15%\", height=\"15%\", loc=\"upper right\",\n nrows=None, ncols=None,\n row_labels=None, col_labels=None,\n row_header=None, col_header=None,\n title=None,\n fontsize=None,\n ):\n if ax is None:\n ax = plt.gca()\n if fontsize is None:\n fontsize = rcParams[\"legend.fontsize\"]\n lines, labels = ax.get_legend_handles_labels()\n split_labels = [label.split('/') for label in labels]\n c, r = zip(*split_labels)\n c = list(dict.fromkeys(c)) # unique elements in original order (order preserving if python 3.5+)\n r = list(dict.fromkeys(r))\n if row_labels is None:\n row_labels = r\n if col_labels is None:\n col_labels = c\n if nrows is None:\n nrows = len(row_labels)\n if ncols is None:\n ncols = len(col_labels)\n lab2pos = {}\n for i, c in enumerate(col_labels):\n for j, r in enumerate(row_labels):\n lab2pos[c+'/'+r] = (i, j)\n # construct inset axes for the legend\n axin = inset_axes(ax, width, height, loc=loc)\n for line, label in zip(lines, labels):\n i, j = lab2pos[label]\n rect = patches.Rectangle((i-0.5, j-0.5), 1.0, 1.0, ec='k', fc=line.get_color())\n axin.add_patch(rect)\n axin.set_xlim(-0.5, ncols-0.5)\n axin.set_xticks(range(ncols))\n axin.set_xticklabels(col_labels, fontsize=fontsize)\n axin.set_ylim(-0.5, nrows-0.5)\n axin.set_yticks(range(nrows))\n axin.set_yticklabels(row_labels, fontsize=fontsize)\n axin.tick_params(axis='both', which='both', length=0)\n if col_header is not None:\n axin.set_xlabel(col_header, fontsize=fontsize)\n if row_header is not None:\n axin.set_ylabel(row_header, fontsize=fontsize)\n if title is not None:\n axin.set_title(title, fontsize=fontsize)\n return axin", | |
"execution_count": 56, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "plt.figure()\n \nplt.plot([1,10,2,0], label='A/X')\nplt.plot([3,6,4,5], label='A/Y')\nplt.plot([7,2,3,5], label='B/X')\nplt.plot([2,3,3,1], label='B/Y')\nplt.legend(loc=\"upper left\")\nlegax = legend2d(col_header=\"Cols\", row_header=\"Rows\", fontsize=\"small\")", | |
"execution_count": 60, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<IPython.core.display.Javascript object>", | |
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support.' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('<div/>');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n 'ui-helper-clearfix\"/>');\n var titletext = $(\n '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n 'text-align: center; padding: 3px;\"/>');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('<div/>');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('<canvas/>');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('<canvas/>');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('<div/>')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('<button/>');\n button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n 'ui-button-icon-only');\n button.attr('role', 'button');\n button.attr('aria-disabled', 'false');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n\n var icon_img = $('<span/>');\n icon_img.addClass('ui-button-icon-primary ui-icon');\n icon_img.addClass(image);\n icon_img.addClass('ui-corner-all');\n\n var tooltip_span = $('<span/>');\n tooltip_span.addClass('ui-button-text');\n tooltip_span.html(tooltip);\n\n button.append(icon_img);\n button.append(tooltip_span);\n\n nav_element.append(button);\n }\n\n var fmt_picker_span = $('<span/>');\n\n var fmt_picker = $('<select/>');\n fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n fmt_picker_span.append(fmt_picker);\n nav_element.append(fmt_picker_span);\n this.format_dropdown = fmt_picker[0];\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = $(\n '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n fmt_picker.append(option)\n }\n\n // Add hover states to the ui-buttons\n $( \".ui-button\" ).hover(\n function() { $(this).addClass(\"ui-state-hover\");},\n function() { $(this).removeClass(\"ui-state-hover\");}\n );\n\n var status_bar = $('<span class=\"mpl-message\"/>');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n}\n\nmpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n // which will in turn request a refresh of the image.\n this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n}\n\nmpl.figure.prototype.send_message = function(type, properties) {\n properties['type'] = type;\n properties['figure_id'] = this.id;\n this.ws.send(JSON.stringify(properties));\n}\n\nmpl.figure.prototype.send_draw_message = function() {\n if (!this.waiting) {\n this.waiting = true;\n this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n }\n}\n\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n var format_dropdown = fig.format_dropdown;\n var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n fig.ondownload(fig, format);\n}\n\n\nmpl.figure.prototype.handle_resize = function(fig, msg) {\n var size = msg['size'];\n if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n fig._resize_canvas(size[0], size[1]);\n fig.send_message(\"refresh\", {});\n };\n}\n\nmpl.figure.prototype.handle_rubberband = function(fig, msg) {\n var x0 = msg['x0'] / mpl.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n var x1 = msg['x1'] / mpl.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n x0 = Math.floor(x0) + 0.5;\n y0 = Math.floor(y0) + 0.5;\n x1 = Math.floor(x1) + 0.5;\n y1 = Math.floor(y1) + 0.5;\n var min_x = Math.min(x0, x1);\n var min_y = Math.min(y0, y1);\n var width = Math.abs(x1 - x0);\n var height = Math.abs(y1 - y0);\n\n fig.rubberband_context.clearRect(\n 0, 0, fig.canvas.width, fig.canvas.height);\n\n fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n}\n\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.figure.prototype.handle_cursor = function(fig, msg) {\n var cursor = msg['cursor'];\n switch(cursor)\n {\n case 0:\n cursor = 'pointer';\n break;\n case 1:\n cursor = 'default';\n break;\n case 2:\n cursor = 'crosshair';\n break;\n case 3:\n cursor = 'move';\n break;\n }\n fig.rubberband_canvas.style.cursor = cursor;\n}\n\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.figure.prototype.updated_canvas_event = function() {\n // Called whenever the canvas gets updated.\n this.send_message(\"ack\", {});\n}\n\n// A function to construct a web socket function for onmessage handling.\n// Called in the figure constructor.\nmpl.figure.prototype._make_on_message_function = function(fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n evt.data.type = \"image/png\";\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src);\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n evt.data);\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n fig.imageObj.src = evt.data;\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n\n var msg = JSON.parse(evt.data);\n var msg_type = msg['type'];\n\n // Call the \"handle_{type}\" callback, which takes\n // the figure and JSON message as its only arguments.\n try {\n var callback = fig[\"handle_\" + msg_type];\n } catch (e) {\n console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n return;\n }\n\n if (callback) {\n try {\n // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n callback(fig, msg);\n } catch (e) {\n console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n }\n }\n };\n}\n\n// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.findpos = function(e) {\n //this section is from http://www.quirksmode.org/js/events_properties.html\n var targ;\n if (!e)\n e = window.event;\n if (e.target)\n targ = e.target;\n else if (e.srcElement)\n targ = e.srcElement;\n if (targ.nodeType == 3) // defeat Safari bug\n targ = targ.parentNode;\n\n // jQuery normalizes the pageX and pageY\n // pageX,Y are the mouse positions relative to the document\n // offset() returns the position of the element relative to the document\n var x = e.pageX - $(targ).offset().left;\n var y = e.pageY - $(targ).offset().top;\n\n return {\"x\": x, \"y\": y};\n};\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * http://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys (original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object')\n obj[key] = original[key]\n return obj;\n }, {});\n}\n\nmpl.figure.prototype.mouse_event = function(event, name) {\n var canvas_pos = mpl.findpos(event)\n\n if (name === 'button_press')\n {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n var x = canvas_pos.x * mpl.ratio;\n var y = canvas_pos.y * mpl.ratio;\n\n this.send_message(name, {x: x, y: y, button: event.button,\n step: event.step,\n guiEvent: simpleKeys(event)});\n\n /* This prevents the web browser from automatically changing to\n * the text insertion cursor when the button is pressed. We want\n * to control all of the cursor setting manually through the\n * 'cursor' event from matplotlib */\n event.preventDefault();\n return false;\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.figure.prototype.key_event = function(event, name) {\n\n // Prevent repeat events\n if (name == 'key_press')\n {\n if (event.which === this._key)\n return;\n else\n this._key = event.which;\n }\n if (name == 'key_release')\n this._key = null;\n\n var value = '';\n if (event.ctrlKey && event.which != 17)\n value += \"ctrl+\";\n if (event.altKey && event.which != 18)\n value += \"alt+\";\n if (event.shiftKey && event.which != 16)\n value += \"shift+\";\n\n value += 'k';\n value += event.which.toString();\n\n this._key_event_extra(event, name);\n\n this.send_message(name, {key: value,\n guiEvent: simpleKeys(event)});\n return false;\n}\n\nmpl.figure.prototype.toolbar_button_onclick = function(name) {\n if (name == 'download') {\n this.handle_save(this, null);\n } else {\n this.send_message(\"toolbar_button\", {name: name});\n }\n};\n\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.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\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.close = function() {\n comm.close()\n };\n ws.send = function(m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function(msg) {\n //console.log('receiving', msg['content']['data'], msg);\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(msg['content']['data'])\n });\n return ws;\n}\n\nmpl.mpl_figure_comm = function(comm, msg) {\n // This is the function which gets called when the mpl process\n // starts-up an IPython Comm through the \"matplotlib\" channel.\n\n var id = msg.content.data.id;\n // Get hold of the div created by the display call when the Comm\n // socket was opened in Python.\n var element = $(\"#\" + id);\n var ws_proxy = comm_websocket_adapter(comm)\n\n function ondownload(figure, format) {\n window.open(figure.imageObj.src);\n }\n\n var fig = new mpl.figure(id, ws_proxy,\n ondownload,\n element.get(0));\n\n // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n // web socket which is closed, not our websocket->open comm proxy.\n ws_proxy.onopen();\n\n fig.parent_element = element.get(0);\n fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n if (!fig.cell_info) {\n console.error(\"Failed to find cell for figure\", id, fig);\n return;\n }\n\n var output_index = fig.cell_info[2]\n var cell = fig.cell_info[0];\n\n};\n\nmpl.figure.prototype.handle_close = function(fig, msg) {\n var width = fig.canvas.width/mpl.ratio\n fig.root.unbind('remove')\n\n // Update the output cell to use the data from the current canvas.\n fig.push_to_output();\n var dataURL = fig.canvas.toDataURL();\n // Re-enable the keyboard manager in IPython - without this line, in FF,\n // the notebook keyboard shortcuts fail.\n IPython.keyboard_manager.enable()\n $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n fig.close_ws(fig, msg);\n}\n\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.figure.prototype.push_to_output = function(remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var width = this.canvas.width/mpl.ratio\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n}\n\nmpl.figure.prototype.updated_canvas_event = function() {\n // Tell IPython that the notebook contents must change.\n IPython.notebook.set_dirty(true);\n this.send_message(\"ack\", {});\n var fig = this;\n // Wait a second, then push the new image to the DOM so\n // that it is saved nicely (might be nice to debounce this).\n setTimeout(function () { fig.push_to_output() }, 1000);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('<div/>')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items){\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) { continue; };\n\n var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n event.shiftKey = false;\n // Send a \"J\" for go to next cell\n event.which = 74;\n event.keyCode = 74;\n manager.command_mode();\n manager.handle_keydown(event);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i<ncells; i++) {\n var cell = cells[i];\n if (cell.cell_type === 'code'){\n for (var j=0; j<cell.output_area.outputs.length; j++) {\n var data = cell.output_area.outputs[j];\n if (data.data) {\n // IPython >= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<IPython.core.display.HTML object>", | |
"text/html": "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAJACAYAAAA6rgFWAAAgAElEQVR4nOzdd3xT5f4H8FAKUlkOQNCrERFBLUtAERfDC6KIE+Q6Llxw3CuKP7wXwlDKXgoCsgTBskR2wbSlFMpsoUAp0NJFIS2UTrp3Mz6/P0JPG7tImuTJST7v1+u8XpomOd8enrbP55tzzqMAERERERG5DIXoAoiIiIiIyH4YAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAICIiIiJyIQwAREREREQuhAGAiIiIiMiFMAAQEREREbkQBgAiIiIiIhfCAEBERERE5EIYAIiIiIiIXAgDABERERGRC2EAECg7Oxs+Pj4ICwtDZGQkN27cuHHjxo0bNzO2sLAw+Pj4IDs7W/S0TlYYAATy8fGBQqHgxo0bN27cuHHjVo/Nx8dH9LROVhgABAoLC5MGregEzY0bN27cuHHjJretvJkaFhYmelonKwwAAkVGRkKhUCAyMlJ0KURERESyw7mUZRgABOKgJSIiIrIc51KWYQAQiIOWiIiIyHKcS1mGAUAgDloiIiIi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\" width=\"640\">" | |
}, | |
"metadata": {} | |
} | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"name": "conda-env-allen-py", | |
"display_name": "Python [conda env:allen]", | |
"language": "python" | |
}, | |
"language_info": { | |
"name": "python", | |
"version": "3.6.11", | |
"mimetype": "text/x-python", | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"pygments_lexer": "ipython3", | |
"nbconvert_exporter": "python", | |
"file_extension": ".py" | |
}, | |
"gist": { | |
"id": "", | |
"data": { | |
"description": "2D Legend for matplotlib", | |
"public": true | |
} | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment