{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Goal of this notebook: reproduce a better suited version of this image." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from IPython.display import Image" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(url='https://upload.wikimedia.org/wikipedia/en/d/df/Total%2C_Average%2C_and_Marginal_Product.gif')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start with a sigmoid function" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = true;\n", "\n", " if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", " var JS_MIME_TYPE = 'application/javascript';\n", " var HTML_MIME_TYPE = 'text/html';\n", " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " var script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " var cell = handle.cell;\n", "\n", " var id = cell.output_area._bokeh_element_id;\n", " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd, {\n", " iopub: {\n", " output: function(msg) {\n", " var id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " var script_attrs = bk_div.children[0].attributes;\n", " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", "\n", " \n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " var el = document.getElementById(null);\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", " }\n", " finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.info(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(js_urls, callback) {\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = js_urls.length;\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " var s = document.createElement('script');\n", " s.src = url;\n", " s.async = false;\n", " s.onreadystatechange = s.onload = function() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", " run_callbacks()\n", " }\n", " };\n", " s.onerror = function() {\n", " console.warn(\"failed to load library \" + url);\n", " };\n", " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", " }\n", " };\n", "\n", " var js_urls = [];\n", "\n", " var inline_js = [\n", " function(Bokeh) {\n", " /* BEGIN bokeh.min.js */\n", " /*!\n", " * Copyright (c) 2012, Anaconda, Inc.\n", " * All rights reserved.\n", " * \n", " * Redistribution and use in source and binary forms, with or without modification,\n", " * are permitted provided that the following conditions are met:\n", " * \n", " * Redistributions of source code must retain the above copyright notice,\n", " * this list of conditions and the following disclaimer.\n", " * \n", " * Redistributions in binary form must reproduce the above copyright notice,\n", " * this list of conditions and the following disclaimer in the documentation\n", " * and/or other materials provided with the distribution.\n", " * \n", " * Neither the name of Anaconda nor the names of any contributors\n", " * may be used to endorse or promote products derived from this software\n", " * without specific prior written permission.\n", " * \n", " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", " * THE POSSIBILITY OF SUCH DAMAGE.\n", " */\n", " !function(t,e){var o,s,r,a,l;t.Bokeh=(o=[function(t,e,i){var n=t(148),r=t(32);i.overrides={};var o=r.clone(n);i.Models=function(t){var e=i.overrides[t]||o[t];if(null==e)throw new Error(\"Model '\"+t+\"' does not exist. This could be due to a widget\\n or a custom model not being registered before first usage.\");return e},i.Models.register=function(t,e){i.overrides[t]=e},i.Models.unregister=function(t){delete i.overrides[t]},i.Models.register_models=function(t,e,i){if(void 0===e&&(e=!1),null!=t)for(var n in t){var r=t[n];e||!o.hasOwnProperty(n)?o[n]=r:null!=i?i(n):console.warn(\"Model '\"+n+\"' was already registered\")}},i.register_models=i.Models.register_models,i.Models.registered_names=function(){return Object.keys(o)},i.index={}},function(t,e,o){var s=t(326),a=t(14),l=t(50),h=t(269),c=t(270),u=t(2);o.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",o.DEFAULT_SESSION_ID=\"default\";var _=0,p=function(){function t(t,e,i,n,r){void 0===t&&(t=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===e&&(e=o.DEFAULT_SESSION_ID),void 0===i&&(i=null),void 0===n&&(n=null),void 0===r&&(r=null),this.url=t,this.id=e,this.args_string=i,this._on_have_session_hook=n,this._on_closed_permanently_hook=r,this._number=_++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._receiver=new c.Receiver,a.logger.debug(\"Creating websocket \"+this._number+\" to '\"+this.url+\"' session '\"+this.id+\"'\")}return t.prototype.connect=function(){var i=this;if(this.closed_permanently)return s.Promise.reject(new Error(\"Cannot connect() a closed ClientConnection\"));if(null!=this.socket)return s.Promise.reject(new Error(\"Already connected\"));this._pending_replies={},this._current_handler=null;try{var t=this.url+\"?bokeh-protocol-version=1.0&bokeh-session-id=\"+this.id;return null!=this.args_string&&0=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},e.prototype.clip=function(t,e){return tthis.x1&&(t=this.x1),ethis.y1&&(e=this.y1),[t,e]},e.prototype.union=function(t){return new e({x0:n(this.x0,t.x0),y0:n(this.y0,t.y0),x1:r(this.x1,t.x1),y1:r(this.y1,t.y1)})},e}();i.BBox=o},function(t,e,i){i.delay=function(t,e){return setTimeout(t,e)};var n=\"function\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;i.defer=function(t){return n(t)},i.throttle=function(i,n,r){void 0===r&&(r={});var o,s,a,l=null,h=0,c=function(){h=!1===r.leading?0:Date.now(),l=null,a=i.apply(o,s),l||(o=s=null)};return function(){var t=Date.now();h||!1!==r.leading||(h=t);var e=n-(t-h);return o=this,s=arguments,e<=0||n2*Math.PI;)t-=2*Math.PI;return t}function l(t,e){return Math.abs(a(t-e))}function o(){return Math.random()}i.angle_norm=a,i.angle_dist=l,i.angle_between=function(t,e,i,n){var r=a(t),o=l(e,i),s=l(e,r)<=o&&l(r,i)<=o;return 1==n?!s:s},i.random=o,i.randomIn=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},i.atan2=function(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])},i.rnorm=function(t,e){for(var i,n;i=o(),n=(2*(n=o())-1)*Math.sqrt(1/Math.E*2),!(-4*i*i*Math.log(i)>=n*n););var r=n/i;return r=t+e*r},i.clamp=function(t,e,i){return ia[e][0]&&t\"'`])/g,function(t){switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}})},i.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(t,e){switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}})},i.use_strict=function(t){return\"'use strict';\\n\"+t}},function(t,e,i){i.svg_colors={indianred:\"#CD5C5C\",lightcoral:\"#F08080\",salmon:\"#FA8072\",darksalmon:\"#E9967A\",lightsalmon:\"#FFA07A\",crimson:\"#DC143C\",red:\"#FF0000\",firebrick:\"#B22222\",darkred:\"#8B0000\",pink:\"#FFC0CB\",lightpink:\"#FFB6C1\",hotpink:\"#FF69B4\",deeppink:\"#FF1493\",mediumvioletred:\"#C71585\",palevioletred:\"#DB7093\",coral:\"#FF7F50\",tomato:\"#FF6347\",orangered:\"#FF4500\",darkorange:\"#FF8C00\",orange:\"#FFA500\",gold:\"#FFD700\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",lemonchiffon:\"#FFFACD\",lightgoldenrodyellow:\"#FAFAD2\",papayawhip:\"#FFEFD5\",moccasin:\"#FFE4B5\",peachpuff:\"#FFDAB9\",palegoldenrod:\"#EEE8AA\",khaki:\"#F0E68C\",darkkhaki:\"#BDB76B\",lavender:\"#E6E6FA\",thistle:\"#D8BFD8\",plum:\"#DDA0DD\",violet:\"#EE82EE\",orchid:\"#DA70D6\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",blueviolet:\"#8A2BE2\",darkviolet:\"#9400D3\",darkorchid:\"#9932CC\",darkmagenta:\"#8B008B\",purple:\"#800080\",indigo:\"#4B0082\",slateblue:\"#6A5ACD\",darkslateblue:\"#483D8B\",mediumslateblue:\"#7B68EE\",greenyellow:\"#ADFF2F\",chartreuse:\"#7FFF00\",lawngreen:\"#7CFC00\",lime:\"#00FF00\",limegreen:\"#32CD32\",palegreen:\"#98FB98\",lightgreen:\"#90EE90\",mediumspringgreen:\"#00FA9A\",springgreen:\"#00FF7F\",mediumseagreen:\"#3CB371\",seagreen:\"#2E8B57\",forestgreen:\"#228B22\",green:\"#008000\",darkgreen:\"#006400\",yellowgreen:\"#9ACD32\",olivedrab:\"#6B8E23\",olive:\"#808000\",darkolivegreen:\"#556B2F\",mediumaquamarine:\"#66CDAA\",darkseagreen:\"#8FBC8F\",lightseagreen:\"#20B2AA\",darkcyan:\"#008B8B\",teal:\"#008080\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",lightcyan:\"#E0FFFF\",paleturquoise:\"#AFEEEE\",aquamarine:\"#7FFFD4\",turquoise:\"#40E0D0\",mediumturquoise:\"#48D1CC\",darkturquoise:\"#00CED1\",cadetblue:\"#5F9EA0\",steelblue:\"#4682B4\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",lightblue:\"#ADD8E6\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",deepskyblue:\"#00BFFF\",dodgerblue:\"#1E90FF\",cornflowerblue:\"#6495ED\",royalblue:\"#4169E1\",blue:\"#0000FF\",mediumblue:\"#0000CD\",darkblue:\"#00008B\",navy:\"#000080\",midnightblue:\"#191970\",cornsilk:\"#FFF8DC\",blanchedalmond:\"#FFEBCD\",bisque:\"#FFE4C4\",navajowhite:\"#FFDEAD\",wheat:\"#F5DEB3\",burlywood:\"#DEB887\",tan:\"#D2B48C\",rosybrown:\"#BC8F8F\",sandybrown:\"#F4A460\",goldenrod:\"#DAA520\",darkgoldenrod:\"#B8860B\",peru:\"#CD853F\",chocolate:\"#D2691E\",saddlebrown:\"#8B4513\",sienna:\"#A0522D\",brown:\"#A52A2A\",maroon:\"#800000\",white:\"#FFFFFF\",snow:\"#FFFAFA\",honeydew:\"#F0FFF0\",mintcream:\"#F5FFFA\",azure:\"#F0FFFF\",aliceblue:\"#F0F8FF\",ghostwhite:\"#F8F8FF\",whitesmoke:\"#F5F5F5\",seashell:\"#FFF5EE\",beige:\"#F5F5DC\",oldlace:\"#FDF5E6\",floralwhite:\"#FFFAF0\",ivory:\"#FFFFF0\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lavenderblush:\"#FFF0F5\",mistyrose:\"#FFE4E1\",gainsboro:\"#DCDCDC\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",silver:\"#C0C0C0\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",gray:\"#808080\",grey:\"#808080\",dimgray:\"#696969\",dimgrey:\"#696969\",lightslategray:\"#778899\",lightslategrey:\"#778899\",slategray:\"#708090\",slategrey:\"#708090\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",black:\"#000000\"},i.is_svg_color=function(t){return t in i.svg_colors}},function(t,e,s){var r=t(385),n=t(357),o=t(386),_=t(38),a=t(44);function l(t,e,i){if(a.isNumber(t)){var n=function(){switch(!1){case Math.floor(t)!=t:return\"%d\";case!(.1\");if(\"SCRIPT\"==e.tagName){var i=r.div({class:n.BOKEH_ROOT});r.replaceWith(e,i),e=i}return e}n.BOKEH_ROOT=\"bk-root\",n.inject_css=function(t){var e=r.link({href:t,rel:\"stylesheet\",type:\"text/css\"});document.body.appendChild(e)},n.inject_raw_css=function(t){var e=r.style({},t);document.body.appendChild(e)},n._resolve_element=function(t){var e=t.elementid;return null!=e?o(e):document.body},n._resolve_root_elements=function(t){var e={};if(null!=t.roots)for(var i in t.roots)e[i]=o(t.roots[i]);return e}},function(t,e,i){var d=t(50),f=t(14),r=t(25),v=t(38),m=t(44),g=t(55),y=t(54),b=t(51),n=t(55);i.add_document_standalone=n.add_document_standalone;var o=t(54);i.add_document_from_session=o.add_document_from_session;var s=t(53);i.embed_items_notebook=s.embed_items_notebook;var a=t(51);i.BOKEH_ROOT=a.BOKEH_ROOT,i.inject_css=a.inject_css,i.inject_raw_css=a.inject_raw_css,i.embed_items=function(t,e,i,n){r.defer(function(){return function(t,e,i,n){m.isString(t)&&(t=JSON.parse(v.unescape(t)));var r={};for(var o in t){var s=t[o];r[o]=d.Document.from_json(s)}for(var a=0,l=e;athis.sleft&&tthis.stop&&el||(_[r].push(c[d]),_[o].push(0));for(var d=0,f=u.length;dl||(p[r].push(u[d]),p[o].push(0));var v={major:this._format_major_labels(_[r],c)},m={major:[[],[]],minor:[[],[]]};return m.major[r]=i.v_compute(_[r]),m.minor[r]=i.v_compute(p[r]),m.major[o]=_[o],m.minor[o]=p[o],\"vertical\"==this.orientation&&(m.major[r]=g.map(m.major[r],function(t){return e-t}),m.minor[r]=g.map(m.minor[r],function(t){return e-t})),{coords:m,labels:v}},t}(r.Annotation);(i.ColorBar=m).initClass()},function(t,e,i){var n=t(58);i.Annotation=n.Annotation;var r=t(59);i.Arrow=r.Arrow;var o=t(60);i.ArrowHead=o.ArrowHead;var s=t(60);i.OpenHead=s.OpenHead;var a=t(60);i.NormalHead=a.NormalHead;var l=t(60);i.TeeHead=l.TeeHead;var h=t(60);i.VeeHead=h.VeeHead;var c=t(61);i.Band=c.Band;var u=t(62);i.BoxAnnotation=u.BoxAnnotation;var _=t(63);i.ColorBar=_.ColorBar;var p=t(65);i.Label=p.Label;var d=t(66);i.LabelSet=d.LabelSet;var f=t(67);i.Legend=f.Legend;var v=t(68);i.LegendItem=v.LegendItem;var m=t(69);i.PolyAnnotation=m.PolyAnnotation;var g=t(70);i.Slope=g.Slope;var y=t(71);i.Span=y.Span;var b=t(72);i.TextAnnotation=b.TextAnnotation;var x=t(73);i.Title=x.Title;var w=t(74);i.ToolbarPanel=w.ToolbarPanel;var k=t(75);i.Tooltip=k.Tooltip;var S=t(76);i.Whisker=S.Whisker},function(t,e,i){var n=t(387),r=t(72),a=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.warm_cache()},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;if(this.visuals.text.set_value(t),this.model.panel.is_horizontal){var e=t.measureText(this.model.text).ascent;return e}var i=t.measureText(this.model.text).width;return i},t.prototype.render=function(){if(this.model.visible||\"css\"!=this.model.render_mode||a.hide(this.el),this.model.visible){var t;switch(this.model.angle_units){case\"rad\":t=-this.model.angle;break;case\"deg\":t=-this.model.angle*Math.PI/180;break;default:throw new Error(\"unreachable code\")}var e=null!=this.model.panel?this.model.panel:this.plot_view.frame,i=this.plot_view.frame.xscales[this.model.x_range_name],n=this.plot_view.frame.yscales[this.model.y_range_name],r=\"data\"==this.model.x_units?i.compute(this.model.x):e.xview.compute(this.model.x),o=\"data\"==this.model.y_units?n.compute(this.model.y):e.yview.compute(this.model.y);r+=this.model.x_offset,o-=this.model.y_offset;var s=\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);s(this.plot_view.canvas_view.ctx,this.model.text,r,o,t)}},t}(r.TextAnnotationView);i.LabelView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\"Label\",this.prototype.default_view=s,this.mixins([\"text\",\"line:border_\",\"fill:background_\"]),this.define({x:[o.Number],x_units:[o.SpatialUnits,\"data\"],y:[o.Number],y_units:[o.SpatialUnits,\"data\"],text:[o.String],angle:[o.Angle,0],angle_units:[o.AngleUnits,\"rad\"],x_offset:[o.Number,0],y_offset:[o.Number,0],x_range_name:[o.String,\"default\"],y_range_name:[o.String,\"default\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.Label=l).initClass()},function(t,e,i){var n=t(387),r=t(72),o=t(190),c=t(5),s=t(15),a=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return n.__extends(t,r),t.prototype.initialize=function(t){if(r.prototype.initialize.call(this,t),this.set_data(this.model.source),\"css\"==this.model.render_mode)for(var e=0,i=this._text.length;eh(a-l)?(n=u(c(o,s),a),r=c(u(o,s),l)):(n=c(o,s),r=u(o,s)),[n,r]}throw new Error(\"user bounds '\"+e+\"' not understood\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"rule_coords\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=new Array(2),a=new Array(2),l=[s,a];return l[t][0]=Math.max(r,i.min),l[t][1]=Math.min(o,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"tick_coords\",{get:function(){for(var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=this.ticker.get_ticks(r,o,i,this.loc,{}),a=s.major,l=s.minor,h=[[],[]],c=[[],[]],u=[i.min,i.max],_=u[0],p=u[1],d=0;dp||(h[t].push(a[d]),h[e].push(this.loc));for(var d=0;dp||(c[t].push(l[d]),c[e].push(this.loc));return{major:h,minor:c}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"loc\",{get:function(){if(null!=this.fixed_location){if(C.isNumber(this.fixed_location))return this.fixed_location;var t=this.ranges,e=t[1];if(e instanceof a.FactorRange)return e.synthetic(this.fixed_location);throw new Error(\"unexpected\")}var i=this.ranges,n=i[1];switch(this.panel.side){case\"left\":case\"below\":return n.start;case\"right\":case\"above\":return n.end}},enumerable:!0,configurable:!0}),t}(r.GuideRenderer);(i.Axis=p).initClass()},function(t,e,i){var n=t(387),r=t(77),o=t(198),s=t(103),a=t(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){this._draw_group_separators(t,e,i)},e.prototype._draw_group_separators=function(t,e,i){var n,r=this.model.ranges[0],o=this.model.computed_bounds,s=o[0],a=o[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.model.dimension,h=(l+1)%2,c=[[],[]],u=0,_=0;_=this.scientific_limit_high||a<=this.scientific_limit_low)){n=!0;break}}var l=new Array(t.length),h=this.precision;if(null==h||f.isNumber(h))if(n)for(var c=0,u=t.length;ct.maxX&&(t.maxX=r.maxX)}for(var o=this.index.search(h.positive_y()),s=0,a=o;st.maxY&&(t.maxY=l.maxY)}return this._bounds(t)},t.prototype.get_anchor_point=function(t,e,i){var n=i[0],r=i[1];switch(t){case\"center\":return{x:this.scenterx(e,n,r),y:this.scentery(e,n,r)};default:return null}},t.prototype.sdist=function(t,e,i,n,r){var o,s;void 0===n&&(n=\"edge\"),void 0===r&&(r=!1);var a=e.length;if(\"center\"==n){var l=g.map(i,function(t){return t/2});o=new Float64Array(a);for(var h=0;h=a.length?l:a[n],s[t]=r},h=this,i=0,n=o.length;il.end;if(!i){var u=this._get_weight_to_constrain_interval(l,h);u<1&&(h.start=u*h.start+(1-u)*l.start,h.end=u*h.end+(1-u)*l.end)}if(null!=l.bounds&&\"auto\"!=l.bounds){var _=l.bounds,p=_[0],d=_[1],f=Math.abs(h.end-h.start);c?(null!=p&&p>=h.end&&(r=!0,h.end=p,(e||i)&&(h.start=p+f)),null!=d&&d<=h.start&&(r=!0,h.start=d,(e||i)&&(h.end=d-f))):(null!=p&&p>=h.start&&(r=!0,h.start=p,(e||i)&&(h.end=p+f)),null!=d&&d<=h.end&&(r=!0,h.end=d,(e||i)&&(h.start=d-f)))}}if(!(i&&r&&n))for(var v=0,m=t;vn.lod_timeout&&e.interactive_stop(n),t.request_render()},n.lod_timeout):e.interactive_stop(n)}for(var r in this.renderer_views){var o=this.renderer_views[r];if(null==this.range_update_timestamp||o instanceof C.GlyphRendererView&&o.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}this.model.frame.update_scales();var s=this.canvas_view.ctx,a=this.canvas.pixel_ratio;s.save(),s.scale(a,a),s.translate(.5,.5);var l=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(s,l),this._paint_empty(s,l),this.prepare_webgl(a,l),s.save(),this.visuals.outline_line.doit){this.visuals.outline_line.set_value(s);var h=l[0],c=l[1],u=l[2],_=l[3];h+u==this.canvas._width.value&&(u-=1),c+_==this.canvas._height.value&&(_-=1),s.strokeRect(h,c,u,_)}s.restore(),this._paint_levels(s,[\"image\",\"underlay\",\"glyph\"],l,!0),this.blit_webgl(a),this._paint_levels(s,[\"annotation\"],l,!0),this._paint_levels(s,[\"overlay\"],l,!1),null==this._initial_state_info.range&&this.set_initial_range(),s.restore(),this._has_finished||(this._has_finished=!0,this.notify_finished())}},t.prototype._paint_levels=function(t,e,i,n){t.save(),n&&(t.beginPath(),t.rect.apply(t,i),t.clip());for(var r={},o=0;ou&&(\"start\"==this.follow?r=n+c*u:\"end\"==this.follow&&(n=r-c*u)),[n,r]},t.prototype.update=function(t,e,i,n){if(!this.have_updated_interactively){var r=this.computed_renderers(),o=this._compute_plot_bounds(r,t);null!=n&&(o=this.adjust_bounds_for_aspect(o,n)),this._plot_bounds[i]=o;var s=this._compute_min_max(this._plot_bounds,e),a=s[0],l=s[1],h=this._compute_range(a,l),c=h[0],u=h[1];null!=this._initial_start&&(\"log\"==this.scale_hint?0this.end},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this._set_auto_bounds(),this.start!=this.reset_start||this.end!=this.reset_end?this.setv({start:this.reset_start,end:this.reset_end}):this.change.emit()},t}(r.Range);(i.Range1d=s).initClass()},function(t,e,i){var n=t(387),r=t(179),P=t(126),o=t(189),j=t(14),s=t(15),a=t(22),N=t(21),_=t(32),l=t(171),p={fill:{},line:{}},d={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},f={fill:{fill_alpha:.2},line:{}},h=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return n.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t);var i=this.model.glyph,n=N.includes(i.mixins,\"fill\"),r=N.includes(i.mixins,\"line\"),o=_.clone(i.attributes);function e(t){var e=_.clone(o);return n&&_.extend(e,t.fill),r&&_.extend(e,t.line),new i.constructor(e)}delete o.id,this.glyph=this.build_glyph_view(i);var s=this.model.selection_glyph;null==s?s=e({fill:{},line:{}}):\"auto\"===s&&(s=e(p)),this.selection_glyph=this.build_glyph_view(s);var a=this.model.nonselection_glyph;null==a?a=e({fill:{},line:{}}):\"auto\"===a&&(a=e(f)),this.nonselection_glyph=this.build_glyph_view(a);var l=this.model.hover_glyph;null!=l&&(this.hover_glyph=this.build_glyph_view(l));var h=this.model.muted_glyph;null!=h&&(this.muted_glyph=this.build_glyph_view(h));var c=e(d);this.decimated_glyph=this.build_glyph_view(c),this.xscale=this.plot_view.frame.xscales[this.model.x_range_name],this.yscale=this.plot_view.frame.yscales[this.model.y_range_name],this.set_data(!1)},t.prototype.build_glyph_view=function(t){return new t.default_view({model:t,renderer:this,plot_view:this.plot_view,parent:this})},t.prototype.connect_signals=function(){var e=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.request_render()}),this.connect(this.model.glyph.change,function(){return e.set_data()}),this.connect(this.model.data_source.change,function(){return e.set_data()}),this.connect(this.model.data_source.streaming,function(){return e.set_data()}),this.connect(this.model.data_source.patching,function(t){return e.set_data(!0,t)}),this.connect(this.model.data_source.selected.change,function(){return e.request_render()}),this.connect(this.model.data_source._select,function(){return e.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return e.request_render()}),this.connect(this.model.properties.view.change,function(){return e.set_data()}),this.connect(this.model.view.change,function(){return e.set_data()});var t=this.plot_model.frame,i=t.x_ranges,n=t.y_ranges;for(var r in i){var o=i[r];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}for(var s in n){var o=n[s];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}this.connect(this.model.glyph.transformchange,function(){return e.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=null);var i=Date.now(),n=this.model.data_source;this.all_indices=this.model.view.indices,this.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.glyph.set_data(n,this.all_indices,e),this.glyph.set_visuals(n),this.decimated_glyph.set_visuals(n),this.have_selection_glyphs()&&(this.selection_glyph.set_visuals(n),this.nonselection_glyph.set_visuals(n)),null!=this.hover_glyph&&this.hover_glyph.set_visuals(n),null!=this.muted_glyph&&this.muted_glyph.set_visuals(n);var r=this.plot_model.plot.lod_factor;this.decimated=[];for(var o=0,s=Math.floor(this.all_indices.length/r);ov?(o=this.decimated,_=this.decimated_glyph,p=this.decimated_glyph):(_=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,p=this.nonselection_glyph),d=this.selection_glyph,null!=this.hover_glyph&&f.length&&(o=N.difference(o,f));var m,g=null;if(l.length&&this.have_selection_glyphs()){for(var y=Date.now(),b={},x=0,w=l;xi?n.slice(-i):n}if(S.isTypedArray(t)){var r=t.length+e.length;if(null!=i&&i=Math.pow(2,i))||e<0||e>=Math.pow(2,i))},t.prototype.parent_by_tile_xyz=function(t,e,i){var n=this.tile_xyz_to_quadkey(t,e,i),r=n.substring(0,n.length-1);return this.quadkey_to_tile_xyz(r)},t.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},t.prototype.get_resolution_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e;return[n,r]},t.prototype.get_level_by_extent=function(t,e,i){for(var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=0,a=0,l=this._resolutions;ar.end)&&(this.v_axis_only=!0),(io.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan_end=function(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\"pan\",{range:this.pan_info})},e.prototype._update=function(t,e){var i,n,r,o,s,a,l=this.plot_model.frame,h=t-this.last_dx,c=e-this.last_dy,u=l.bbox.h_range,_=u.start-h,p=u.end-h,d=l.bbox.v_range,f=d.start-c,v=d.end-c,m=this.model.dimensions;\"width\"!=m&&\"both\"!=m||this.v_axis_only?(i=u.start,n=u.end,r=0):(i=_,n=p,r=-h),\"height\"!=m&&\"both\"!=m||this.h_axis_only?(o=d.start,s=d.end,a=0):(o=f,s=v,a=-c),this.last_dx=t,this.last_dy=e;var g=l.xscales,y=l.yscales,b={};for(var x in g){var w=g[x],k=w.r_invert(i,n),S=k[0],T=k[1];b[x]={start:S,end:T}}var C={};for(var A in y){var w=y[A],E=w.r_invert(o,s),S=E[0],T=E[1];C[A]={start:S,end:T}}this.pan_info={xrs:b,yrs:C,sdx:r,sdy:a},this.plot_view.update_range(this.pan_info,!0)},e}(r.GestureToolView);i.PanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\"Pan\",e.event_type=\"pan\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\"PanTool\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\"both\"]})},Object.defineProperty(t.prototype,\"tooltip\",{get:function(){return this._get_dim_tooltip(\"Pan\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"icon\",{get:function(){switch(this.dimensions){case\"both\":return\"bk-tool-icon-pan\";case\"width\":return\"bk-tool-icon-xpan\";case\"height\":return\"bk-tool-icon-ypan\"}},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.PanTool=a).initClass()},function(t,e,i){var l=t(387),n=t(243),r=t(69),o=t(5),s=t(15),a=t(21),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data={sx:[],sy:[]}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_data()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_data()},t.prototype._doubletap=function(t){var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()},t.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},t.prototype._tap=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame;n.bbox.contains(e,i)&&(this.data.sx.push(e),this.data.sy.push(i),this.model.overlay.update({xs:a.copy(this.data.sx),ys:a.copy(this.data.sy)}))},t.prototype._do_select=function(t,e,i,n){var r={type:\"poly\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.PolySelectToolView=h;var c=function(){return new r.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:{value:\"lightgrey\"},fill_alpha:{value:.5},line_color:{value:\"black\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\"Poly Select\",e.icon=\"bk-tool-icon-polygon-select\",e.event_type=\"tap\",e.default_order=11,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\"PolySelectTool\",this.prototype.default_view=h,this.define({callback:[s.Instance],overlay:[s.Instance,c]})},t}(n.SelectTool);(i.PolySelectTool=u).initClass()},function(t,e,i){var n=t(387),_=t(62),r=t(14),o=t(15),s=t(238);function p(t,e,i,n){if(null==e)return!1;var r=i.compute(e);return Math.abs(t-r)r.right)&&(o=!1)}if(null!=r.bottom&&null!=r.top){var a=n.invert(e);(ar.top)&&(o=!1)}return o}function l(t,e,i,n){var r=e.compute(t),o=e.invert(r+i);return o>=n.start&&o<=n.end?o:t}function h(t,e,i,n){var r=e.r_compute(t.start,t.end),o=r[0],s=r[1],a=e.r_invert(o+i,s+i),l=a[0],h=a[1];l>=n.start&&l<=n.end&&h>=n.start&&h<=n.end&&(t.start=l,t.end=h)}i.is_near=p,i.is_inside=d,i.compute_value=l,i.update_range=h;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.side=0,this.model.update_overlay_from_ranges()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return t.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return t.model.update_overlay_from_ranges()})},t.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=this.model.x_range,i=this.model.y_range,n=this.plot_model.frame,r=n.xscales.default,o=n.yscales.default,s=this.model.overlay,a=s.left,l=s.right,h=s.top,c=s.bottom,u=this.model.overlay.properties.line_width.value()+_.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(p(t.sx,a,r,u)?this.side=1:p(t.sx,l,r,u)?this.side=2:d(t.sx,t.sy,r,o,s)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&p(t.sy,c,o,u)&&(this.side=4),0==this.side&&p(t.sy,h,o,u)?this.side=5:d(t.sx,t.sy,r,o,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},t.prototype._pan=function(t){var e=this.plot_model.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,r=this.model.x_range,o=this.model.y_range,s=e.xscales.default,a=e.yscales.default;null!=r&&(3==this.side||7==this.side?h(r,s,i,e.x_range):1==this.side?r.start=l(r.start,s,i,e.x_range):2==this.side&&(r.end=l(r.end,s,i,e.x_range))),null!=o&&(6==this.side||7==this.side?h(o,a,n,e.y_range):4==this.side?o.start=l(o.start,a,n,e.y_range):5==this.side&&(o.end=l(o.end,a,n,e.y_range))),this.last_dx=t.deltaX,this.last_dy=t.deltaY},t.prototype._pan_end=function(t){this.side=0},t}(s.GestureToolView);i.RangeToolView=a;var c=function(){return new _.BoxAnnotation({level:\"overlay\",render_mode:\"css\",fill_color:\"lightgrey\",fill_alpha:{value:.5},line_color:{value:\"black\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\"Range Tool\",e.icon=\"bk-tool-icon-range\",e.event_type=\"pan\",e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\"RangeTool\",this.prototype.default_view=a,this.define({x_range:[o.Instance,null],x_interaction:[o.Bool,!0],y_range:[o.Instance,null],y_interaction:[o.Bool,!0],overlay:[o.Instance,c]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null},t.prototype.update_overlay_from_ranges=function(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)},t}(s.GestureTool);(i.RangeTool=u).initClass()},function(t,e,i){var y=t(387),n=t(238),o=t(176),r=t(258),s=t(15),a=t(5),b=t(3),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return y.__extends(e,t),Object.defineProperty(e.prototype,\"computed_renderers\",{get:function(){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;return r.compute_renderers(t,e,i)},enumerable:!0,configurable:!0}),e.prototype._computed_renderers_by_data_source=function(){for(var t={},e=0,i=this.computed_renderers;ee.x?-1:t.x==e.x?0:1}):r.sort(function(t,e){return t.xthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(ethis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(e==this._x_sorted[0])return this._y_sorted[0];var t=s.findLastIndex(this._x_sorted,function(t){return tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(ethis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var t;switch(this.mode){case\"after\":t=s.findLastIndex(this._x_sorted,function(t){return t<=e});break;case\"before\":t=s.findIndex(this._x_sorted,function(t){return e<=t});break;case\"center\":var i=this._x_sorted.map(function(t){return Math.abs(t-e)}),n=s.min(i);t=s.findIndex(i,function(t){return n===t});break;default:throw new Error(\"unknown mode: \"+this.mode)}return-1!=t?this._y_sorted[t]:NaN},t}(r.Interpolator);(i.StepInterpolator=a).initClass()},function(t,e,i){var n=t(387),r=t(57),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\"Transform\"},t}(r.Model);(i.Transform=o).initClass()},function(t,e,i){\"function\"!=typeof WeakMap&&t(337),\"function\"!=typeof Set&&t(327),Number.isInteger||(Number.isInteger=function(t){return\"number\"==typeof t&&isFinite(t)&&Math.floor(t)===t});var n,l,r,h,o=String.prototype;o.repeat||(o.repeat=function(t){if(null==this)throw new TypeError(\"can't convert \"+this+\" to object\");var e=\"\"+this;if((t=+t)!=t&&(t=0),t<0)throw new RangeError(\"repeat count must be non-negative\");if(t==1/0)throw new RangeError(\"repeat count must be less than infinity\");if(t=Math.floor(t),0==e.length||0==t)return\"\";if(e.length*t>=1<<28)throw new RangeError(\"repeat count must not overflow maximum string size\");for(var i=\"\";1==(1&t)&&(i+=e),0!=(t>>>=1);)e+=e;return i}),Array.from||(Array.from=(n=Object.prototype.toString,l=function(t){return\"function\"==typeof t||\"[object Function]\"===n.call(t)},r=Math.pow(2,53)-1,h=function(t){var e,i=(e=Number(t),isNaN(e)?0:0!==e&&isFinite(e)?(0Math.PI?0:1:_>Math.PI?1:0,this.lineTo(l,h),this.__addPathCommand(f(\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",{rx:i,ry:i,xAxisRotation:0,largeArcFlag:u,sweepFlag:c,endX:s,endY:a})),this.__currentPosition={x:s,y:a}}},x.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\"clipPath\"),i=l(this.__ids),n=this.__createElement(\"g\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\"id\",i),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\"clip-path\",f(\"url(#{id})\",{id:i})),t.appendChild(n),this.__currentElement=n},x.prototype.drawImage=function(){var t,e,i,n,r,o,s,a,l,h,c,u,_,p,d=Array.prototype.slice.call(arguments),f=d[0],v=0,m=0;if(3===d.length)t=d[1],e=d[2],r=f.width,o=f.height,i=r,n=o;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],r=f.width,o=f.height;else{if(9!==d.length)throw new Error(\"Inavlid number of arguments passed to drawImage: \"+arguments.length);v=d[1],m=d[2],r=d[3],o=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}s=this.__closestGroupOrSvg(),this.__currentElement;var g=\"translate(\"+t+\", \"+e+\")\";if(f instanceof x){if((a=f.getSvg().cloneNode(!0)).childNodes&&1=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){i<=t&&(this.__redo__[e]=++t)},this),this.__redo__.push(i)):u(this,\"__redo__\",l(\"c\",[i])))}),_onDelete:l(function(i){var t;i>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(i))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){i>1,a=i>>1^i,l=r>>1^n&o>>1^r,h=i&r>>1^o>>1^o;a=(i=s)&(n=a)>>2^n&(i^n)>>2,l^=i&(r=l)>>2^n&(o=h)>>2,h^=n&r>>2^(i^n)&o>>2,a=(i=s=i&i>>2^n&n>>2)&(n=a)>>4^n&(i^n)>>4,l^=i&(r=l)>>4^n&(o=h)>>4,h^=n&r>>4^(i^n)&o>>4,l^=(i=s=i&i>>4^n&n>>4)&(r=l)>>8^(n=a)&(o=h)>>8;var c=t^e,u=(n=(h^=n&r>>8^(i^n)&o>>8)^h>>1)|65535^(c|(i=l^l>>1));return((u=1431655765&((u=858993459&((u=252645135&((u=16711935&(u|u<<8))|u<<4))|u<<2))|u<<1))<<1|(c=1431655765&((c=858993459&((c=252645135&((c=16711935&(c|c<<8))|c<<4))|c<<2))|c<<1)))>>>0}return h.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");var e=new Uint8Array(t,0,2),i=e[0],n=e[1];if(251!==i)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(n>>4!=3)throw new Error(\"Got v\"+(n>>4)+\" data when expected v3.\");var r=new Uint16Array(t,2,1),o=r[0],s=new Uint32Array(t,4,1),a=s[0];return new h(a,o,l[15&n],t)},h.prototype.add=function(t,e,i,n){var r=this._pos>>2;this._indices[r]=r,this._boxes[this._pos++]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=i,this._boxes[this._pos++]=n,tthis.maxX&&(this.maxX=i),n>this.maxY&&(this.maxY=n)},h.prototype.finish=function(){var t=this;if(this._pos>>2!==this.numItems)throw new Error(\"Added \"+(this._pos>>2)+\" items when expected \"+this.numItems+\".\");for(var e=this.maxX-this.minX,i=this.maxY-this.minY,n=new Uint32Array(this.numItems),r=0;r>1],a=r-1,l=o+1;;){for(;e[++a]s;);if(l<=a)break;T(e,i,n,a,l)}t(e,i,n,r,l),t(e,i,n,l+1,o)}}(n,this._boxes,this._indices,0,this.numItems-1);for(var _=0,p=0;_>2]=y,t._boxes[t._pos++]=f,t._boxes[t._pos++]=v,t._boxes[t._pos++]=m,t._boxes[t._pos++]=g}},h.prototype.search=function(t,e,i,n,r){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");for(var o=this._boxes.length-4,s=this._levelBounds.length-1,a=[],l=[];void 0!==o;){for(var h=Math.min(o+4*this.nodeSize,this._levelBounds[s]),c=o;c>2];ithis._boxes[c+2]||e>this._boxes[c+3]||(o<4*this.numItems?(void 0===r||r(u))&&l.push(u):(a.push(u),a.push(s-1)))}s=a.pop(),o=a.pop()}return l},h},\"object\"==typeof i&&void 0!==e?e.exports=r():n.Flatbush=r()},function(t,Yt,e){\n", " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", " * http://hammerjs.github.io/\n", " *\n", " * Copyright (c) 2016 Jorik Tangelder;\n", " * Licensed under the MIT license */\n", " !function(o,a,t,x){\"use strict\";var s,l=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],e=a.createElement(\"div\"),i=\"function\",h=Math.round,w=Math.abs,k=Date.now;function c(t,e,i){return setTimeout(f(t,i),e)}function n(t,e,i){return!!Array.isArray(t)&&(u(t,i[e],i),!0)}function u(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==x)for(n=0;n\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",i=o.console&&(o.console.warn||o.console.log);return i&&i.call(o.console,r,e),n.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===x||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;ie[i]}):n.sort()),n}function M(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),o=0;ow(y.y)?y.x:y.y,e.scale=_?(m=_.pointers,it((g=n)[0],g[1],J)/it(m[0],m[1],J)):1,e.rotation=_?(f=_.pointers,nt((v=n)[1],v[0],J)+nt(f[1],f[0],J)):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!=B&&(Dw(c.y)?c.x:c.y,o=et(l,h),t.lastInterval=e}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=o}(i,e);var b=t.element;S(e.srcEvent.target,b)&&(b=e.srcEvent.target),e.target=b}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function K(t){for(var e=[],i=0;i=w(e)?t<0?V:G:e<0?U:q}function it(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function nt(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}Q.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(z(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(z(this.element),this.evWin,this.domHandler)}};var rt={mousedown:I,mousemove:2,mouseup:R},ot=\"mousedown\",st=\"mousemove mouseup\";function at(){this.evEl=ot,this.evWin=st,this.pressed=!1,Q.apply(this,arguments)}d(at,Q,{handler:function(t){var e=rt[t.type];e&I&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var lt={pointerdown:I,pointermove:2,pointerup:R,pointercancel:B,pointerout:B},ht={2:F,3:\"pen\",4:\"mouse\",5:\"kinect\"},ct=\"pointerdown\",ut=\"pointermove pointerup pointercancel\";function _t(){this.evEl=ct,this.evWin=ut,Q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ct=\"MSPointerDown\",ut=\"MSPointerMove MSPointerUp MSPointerCancel\"),d(_t,Q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=lt[n],o=ht[t.pointerType]||t.pointerType,s=o==F,a=C(e,t.pointerId,\"pointerId\");r&I&&(0===t.button||s)?a<0&&(e.push(t),a=e.length-1):r&(R|B)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),i&&e.splice(a,1))}});var pt={touchstart:I,touchmove:2,touchend:R,touchcancel:B};function dt(){this.evTarget=\"touchstart\",this.evWin=\"touchstart touchmove touchend touchcancel\",this.started=!1,Q.apply(this,arguments)}d(dt,Q,{handler:function(t){var e=pt[t.type];if(e===I&&(this.started=!0),this.started){var i=function(t,e){var i=A(t.touches),n=A(t.changedTouches);return e&(R|B)&&(i=E(i.concat(n),\"identifier\",!0)),[i,n]}.call(this,t,e);e&(R|B)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}}});var ft={touchstart:I,touchmove:2,touchend:R,touchcancel:B},vt=\"touchstart touchmove touchend touchcancel\";function mt(){this.evTarget=vt,this.targetIds={},Q.apply(this,arguments)}d(mt,Q,{handler:function(t){var e=ft[t.type],i=function(t,e){var i=A(t.touches),n=this.targetIds;if(e&(2|I)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=A(t.changedTouches),a=[],l=this.target;if(o=i.filter(function(t){return S(t.target,l)}),e===I)for(r=0;re.threshold&&r&e.direction},attrTest:function(t){return Nt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Pt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(Dt,Nt,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),d(It,Ot,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\"auto\"]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distancee.time;if(this._input=t,!n||!i||t.eventType&(R|B)&&!r)this.reset();else if(t.eventType&I)this.reset(),this._timer=c(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&R)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&R?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=k(),this.manager.emit(this.options.event,this._input)))}}),d(Rt,Nt,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),d(Bt,Nt,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:Y|X,pointers:1},getTouchAction:function(){return Ft.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Y|X)?e=t.overallVelocity:i&Y?e=t.overallVelocityX:i&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&w(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=Pt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(Lt,Ot,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[kt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance=\";case n.Eq:return\"==\"}}()+\" 0\"},Object.defineProperty(t.prototype,\"id\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"expression\",{get:function(){return this._expression},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"op\",{get:function(){return this._operator},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"strength\",{get:function(){return this._strength},enumerable:!0,configurable:!0}),t}();i.Constraint=s;var a=0},function(t,e,i){var h=t(353),c=t(356),u=t(347),n=function(){function t(){var t=function(t){for(var e=0,i=function(){return 0},n=u.createMap(c.Variable.Compare),r=0,o=t.length;r>1)],e)<0?(o=r+1,s-=n+1):s=n;return o}i.lowerBound=o,i.binarySearch=function(t,e,i){var n=o(t,e,i);if(n===t.length)return-1;var r=t[n];return 0!==i(r,e)?-1:n},i.binaryFind=function(t,e,i){var n=o(t,e,i);if(n!==t.length){var r=t[n];if(0===i(r,e))return r}},i.asSet=function(t,e){var i=l.asArray(t),n=i.length;if(n<=1)return i;i.sort(e);for(var r=[i[0]],o=1,s=0;o=Math.pow(10,12)&&!z||O?(C+=U[q].abbreviations.trillion,t/=Math.pow(10,12)):N=Math.pow(10,9)&&!z||M?(C+=U[q].abbreviations.billion,t/=Math.pow(10,9)):N=Math.pow(10,6)&&!z||E?(C+=U[q].abbreviations.million,t/=Math.pow(10,6)):(N=Math.pow(10,3)&&!z||A)&&(C+=U[q].abbreviations.thousand,t/=Math.pow(10,3)))}if(-1Math.PI&&(a-=2*Math.PI),r=Math.sin(l),s=Math.cos(l),o=r*r,{x:((n=i/Math.sqrt(1-e*o))+h)*s*Math.cos(a),y:(n+h)*s*Math.sin(a),z:(n*(1-e)+h)*r}},i.geocentricToGeodetic=function(t,e,i,n){var r,o,s,a,l,h,c,u,_,p,d,f,v,m,g,y,b=t.x,x=t.y,w=t.z?t.z:0;if(r=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),r/i<1e-12){if(m=0,o/i<1e-12)return g=k,y=-n,{x:t.x,y:t.y,z:t.z}}else m=Math.atan2(x,b);for(s=w/o,a=r/o,l=1/Math.sqrt(1-e*(2-e)*a*a),u=a*(1-e)*l,_=s*l,v=0;v++,c=i/Math.sqrt(1-e*_*_),h=e*c/(c+(y=r*u+w*_-c*(1-e*_*_))),l=1/Math.sqrt(1-h*(2-h)*a*a),f=(d=s*l)*u-(p=a*(1-h)*l)*_,u=p,_=d,1e-24>>0).toString(8);break;case\"s\":i=String(i),i=o[7]?i.substring(0,o[7]):i;break;case\"t\":i=String(!!i),i=o[7]?i.substring(0,o[7]):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o[7]?i.substring(0,o[7]):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o[7]?i.substring(0,o[7]):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}d.json.test(o[8])?p+=i:(!d.number.test(o[8])||h&&!o[3]?c=\"\":(c=h?\"+\":\"-\",i=i.toString().replace(d.sign,\"\")),a=o[4]?\"0\"===o[4]?\"0\":o[4].charAt(1):\" \",l=o[6]-(c+i).length,s=o[6]&&0=u[n][e]&&u[n][u[n].clock]>o[u[n].clock]&&(s=u[n])}return s&&((a=/^(.*)\\/(.*)$/.exec(o.format))?s.abbrev=a[s.save?2:1]:s.abbrev=o.format.replace(/%s/,s.rule.letter)),s||o}function a(t,e){return\"UTC\"==t.zone?e:(t.entry=r(t,\"posix\",e),e+t.entry.offset+t.entry.save)}function u(t,e){return\"UTC\"==t.zone?e:(t.entry=i=r(t,\"wallclock\",e),0<(n=e-i.wallclock)&&ns[0]&&e[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}},p=function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),s=[];try{for(;(void 0===e||0=t&&(this.model.active=t-1);var o=this.model.tabs.map(function(t,e){return h.li({},h.span({data:{index:e}},t.title))});o[this.model.active].classList.add(\"bk-bs-active\");var e=h.ul({class:[\"bk-bs-nav\",\"bk-bs-nav-tabs\"]},o);this.el.appendChild(e);var s=this.model.tabs.map(function(t){return h.div({class:\"bk-bs-tab-pane\"})});s[this.model.active].classList.add(\"bk-bs-active\");var n=h.div({class:\"bk-bs-tab-content\"},s);this.el.appendChild(n),e.addEventListener(\"click\",function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=r.model.active,i=parseInt(e.dataset.index);n!=i&&(o[n].classList.remove(\"bk-bs-active\"),s[n].classList.remove(\"bk-bs-active\"),o[i].classList.add(\"bk-bs-active\"),s[i].classList.add(\"bk-bs-active\"),r.model.active=i,null!=r.model.callback&&r.model.callback.execute(r.model))}});for(var i=0,a=p.zip(this.model.children,s);i=e[n];)n+=1;return n}function n(t,e,n){if(n>=t.slice(-1)[0])return 100;var i,r,o,s,a,l,u=h(n,t);return i=t[u-1],r=t[u],o=e[u-1],s=e[u],o+(l=n,d(a=[i,r],a[0]<0?l+Math.abs(a[0]):l-a[0])/c(o,s))}function i(t,e,n,i){if(100===i)return i;var r,o,s,a,l=h(i,t);return n?(r=t[l-1],((o=t[l])-r)/2n.stepAfter.startValue&&(r=n.stepAfter.startValue-i),o=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===t?r=null:0===t&&(o=null);var s=w.countStepDecimals();return null!==r&&!1!==r&&(r=Number(r.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,r]})},on:J,off:function(t){var i=t&&t.split(\".\")[0],r=i&&t.substring(i.length);Object.keys(b).forEach(function(t){var e=t.split(\".\")[0],n=t.substring(e.length);i&&i!==e||r&&r!==n||delete b[t]})},get:K,set:X,reset:function(t){X(d.start,t)},__moveHandles:function(t,e,n){R(t,e,m,n)},options:o,updateOptions:function(e,t){var n=K(),i=[\"margin\",\"limit\",\"padding\",\"range\",\"animate\",\"snap\",\"step\",\"format\"];i.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var r=rt(o);i.forEach(function(t){void 0!==e[t]&&(d[t]=r[t])}),w=r.spectrum,d.margin=r.margin,d.limit=r.limit,d.padding=r.padding,d.pips&&N(d.pips),m=[],X(e.start||n,t)},target:_,removePips:A,pips:N},(c=d.events).fixed||l.forEach(function(t,e){I(p.start,t.children[0],B,{handleNumbers:[e]})}),c.tap&&I(p.start,u,U,{}),c.hover&&I(p.move,u,j,{hover:!0}),c.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var n=l[e-1],i=l[e],r=[t];et(t,d.cssClasses.draggable),c.fixed&&(r.push(n.children[0]),r.push(i.children[0])),r.forEach(function(t){I(p.start,t,B,{handles:[n,i],handleNumbers:[e-1,e]})})}}),X(d.start),d.pips&&N(d.pips),d.tooltips&&(r=l.map(D),J(\"update\",function(t,e,n){if(r[e]){var i=t[e];!0!==d.tooltips[e]&&(i=d.tooltips[e].to(n[e])),r[e].innerHTML=i}})),J(\"update\",function(t,e,s,n,a){v.forEach(function(t){var e=l[t],n=z(m,t,0,!0,!0,!0),i=z(m,t,100,!0,!0,!0),r=a[t],o=d.ariaFormat.to(s[t]);e.children[0].setAttribute(\"aria-valuemin\",n.toFixed(1)),e.children[0].setAttribute(\"aria-valuemax\",i.toFixed(1)),e.children[0].setAttribute(\"aria-valuenow\",r.toFixed(1)),e.children[0].setAttribute(\"aria-valuetext\",o)})}),a}return{version:$,create:function(t,e){if(!t||!t.nodeName)throw new Error(\"noUiSlider (\"+$+\"): create requires a single element, got: \"+t);var n=rt(e),i=P(t,n,e);return t.noUiSlider=i}}},\"object\"==typeof n?e.exports=i():window.noUiSlider=i()},428:function(i,r,o){\n", " /*!\n", " * Pikaday\n", " *\n", " * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\n", " */\n", " !function(t,e){\"use strict\";var n;if(\"object\"==typeof o){try{n=i(\"moment\")}catch(t){}r.exports=e(n)}else t.Pikaday=e(t.moment)}(this,function(n){\"use strict\";var o=\"function\"==typeof n,s=!!window.addEventListener,c=window.document,u=window.setTimeout,a=function(t,e,n,i){s?t.addEventListener(e,n,!!i):t.attachEvent(\"on\"+e,n)},i=function(t,e,n,i){s?t.removeEventListener(e,n,!!i):t.detachEvent(\"on\"+e,n)},l=function(t,e){return-1!==(\" \"+t.className+\" \").indexOf(\" \"+e+\" \")},g=function(t){return/Array/.test(Object.prototype.toString.call(t))},B=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},U=function(t,e){return[31,(n=t,n%4==0&&n%100!=0||n%400==0?29:28),31,30,31,30,31,31,30,31,30,31][e];var n},j=function(t){B(t)&&t.setHours(0,0,0,0)},z=function(t,e){return t.getTime()===e.getTime()},d=function(t,e,n){var i,r;for(i in e)(r=void 0!==t[i])&&\"object\"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?B(e[i])?n&&(t[i]=new Date(e[i].getTime())):g(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=d({},e[i],n):!n&&r||(t[i]=e[i]);return t},r=function(t,e,n){var i;c.createEvent?((i=c.createEvent(\"HTMLEvents\")).initEvent(e,!0,!1),i=d(i,n),t.dispatchEvent(i)):c.createEventObject&&(i=c.createEventObject(),i=d(i,n),t.fireEvent(\"on\"+e,i))},e=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),11';e.push(\"is-outside-current-month\"),t.enableSelectionDaysInNextAndPreviousMonths||e.push(\"is-selection-disabled\")}return t.isDisabled&&e.push(\"is-disabled\"),t.isToday&&e.push(\"is-today\"),t.isSelected&&(e.push(\"is-selected\"),n=\"true\"),t.hasEvent&&e.push(\"has-event\"),t.isInRange&&e.push(\"is-inrange\"),t.isStartRange&&e.push(\"is-startrange\"),t.isEndRange&&e.push(\"is-endrange\"),'\"},f=function(t,e,n,i,r,o){var s,a,l,u,c,d=t._o,h=n===d.minYear,p=n===d.maxYear,f='
',m=!0,v=!0;for(l=[],s=0;s<12;s++)l.push('\");for(u='
'+d.i18n.months[i]+'
\",g(d.yearRange)?(s=d.yearRange[0],a=d.yearRange[1]+1):(s=n-d.yearRange,a=1+n+d.yearRange),l=[];s=d.minYear&&l.push('\");return c='
'+n+d.yearSuffix+'
\",d.showMonthAfterYear?f+=c+u:f+=u+c,h&&(0===i||d.minMonth>=i)&&(m=!1),p&&(11===i||d.maxMonth<=i)&&(v=!1),0===e&&(f+='\"),e===t._o.numberOfMonths-1&&(f+='\"),f+=\"
\"},Y=function(t,e,n){return''+function(t){var e,n=[];for(t.showWeekNumber&&n.push(\"\"),e=0;e<7;e++)n.push('\");return\"\"+(t.isRTL?n.reverse():n).join(\"\")+\"\"}(t)+\"\"+e.join(\"\")+\"
'+p(t,e,!0)+\"
\"},t=function(t){var i=this,r=i.config(t);i._onMouseDown=function(t){if(i._v){var e=(t=t||window.event).target||t.srcElement;if(e)if(l(e,\"is-disabled\")||(!l(e,\"pika-button\")||l(e,\"is-empty\")||l(e.parentNode,\"is-disabled\")?l(e,\"pika-prev\")?i.prevMonth():l(e,\"pika-next\")&&i.nextMonth():(i.setDate(new Date(e.getAttribute(\"data-pika-year\"),e.getAttribute(\"data-pika-month\"),e.getAttribute(\"data-pika-day\"))),r.bound&&u(function(){i.hide(),r.blurFieldOnSelect&&r.field&&r.field.blur()},100))),l(e,\"pika-select\"))i._c=!0;else{if(!t.preventDefault)return t.returnValue=!1;t.preventDefault()}}},i._onChange=function(t){var e=(t=t||window.event).target||t.srcElement;e&&(l(e,\"pika-select-month\")?i.gotoMonth(e.value):l(e,\"pika-select-year\")&&i.gotoYear(e.value))},i._onKeyChange=function(t){if(t=t||window.event,i.isVisible())switch(t.keyCode){case 13:case 27:r.field&&r.field.blur();break;case 37:t.preventDefault(),i.adjustDate(\"subtract\",1);break;case 38:i.adjustDate(\"subtract\",7);break;case 39:i.adjustDate(\"add\",1);break;case 40:i.adjustDate(\"add\",7)}},i._onInputChange=function(t){var e;t.firedBy!==i&&(e=r.parse?r.parse(r.field.value,r.format):o?(e=n(r.field.value,r.format,r.formatStrict))&&e.isValid()?e.toDate():null:new Date(Date.parse(r.field.value)),B(e)&&i.setDate(e),i._v||i.show())},i._onInputFocus=function(){i.show()},i._onInputClick=function(){i.show()},i._onInputBlur=function(){var t=c.activeElement;do{if(l(t,\"pika-single\"))return}while(t=t.parentNode);i._c||(i._b=u(function(){i.hide()},50)),i._c=!1},i._onClick=function(t){var e=(t=t||window.event).target||t.srcElement,n=e;if(e){!s&&l(e,\"pika-select\")&&(e.onchange||(e.setAttribute(\"onchange\",\"return;\"),a(e,\"change\",i._onChange)));do{if(l(n,\"pika-single\")||n===r.trigger)return}while(n=n.parentNode);i._v&&e!==r.trigger&&n!==r.trigger&&i.hide()}},i.el=c.createElement(\"div\"),i.el.className=\"pika-single\"+(r.isRTL?\" is-rtl\":\"\")+(r.theme?\" \"+r.theme:\"\"),a(i.el,\"mousedown\",i._onMouseDown,!0),a(i.el,\"touchend\",i._onMouseDown,!0),a(i.el,\"change\",i._onChange),r.keyboardInput&&a(c,\"keydown\",i._onKeyChange),r.field&&(r.container?r.container.appendChild(i.el):r.bound?c.body.appendChild(i.el):r.field.parentNode.insertBefore(i.el,r.field.nextSibling),a(r.field,\"change\",i._onInputChange),r.defaultDate||(o&&r.field.value?r.defaultDate=n(r.field.value,r.format).toDate():r.defaultDate=new Date(Date.parse(r.field.value)),r.setDefaultDate=!0));var e=r.defaultDate;B(e)?r.setDefaultDate?i.setDate(e,!0):i.gotoDate(e):i.gotoDate(new Date),r.bound?(this.hide(),i.el.className+=\" is-bound\",a(r.trigger,\"click\",i._onInputClick),a(r.trigger,\"focus\",i._onInputFocus),a(r.trigger,\"blur\",i._onInputBlur)):this.show()};return t.prototype={config:function(t){this._o||(this._o=d({},h,!0));var e=d(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme=\"string\"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn=\"function\"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=4=r&&(this._y=r,!isNaN(s)&&this._m>s&&(this._m=s)),e=\"pika-title-\"+Math.random().toString(36).replace(/[^a-z]+/g,\"\").substr(0,2);for(var l=0;l'+f(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e)+\"\";this.el.innerHTML=a,n.bound&&\"hidden\"!==n.field.type&&u(function(){n.trigger.focus()},1),\"function\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\"aria-label\",\"Use the arrow keys to pick a date\")}},adjustPosition:function(){var t,e,n,i,r,o,s,a,l,u;if(!this._o.container){if(this.el.style.position=\"absolute\",t=this._o.trigger,e=t,n=this.el.offsetWidth,i=this.el.offsetHeight,r=window.innerWidth||c.documentElement.clientWidth,o=window.innerHeight||c.documentElement.clientHeight,s=window.pageYOffset||c.body.scrollTop||c.documentElement.scrollTop,\"function\"==typeof t.getBoundingClientRect)u=t.getBoundingClientRect(),a=u.left+window.pageXOffset,l=u.bottom+window.pageYOffset;else for(a=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)a+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&ri.maxDate||i.disableWeekends&&(0===(x=E.getDay())||6===x)||i.disableDayFn&&i.disableDayFn(E);N&&(S'+Math.ceil(((new Date(_,b,y)-w)/864e5+w.getDay()+1)/7)+\"\")),a.push((v=l,g=i.isRTL,''+(g?v.reverse():v).join(\"\")+\"\")),C=0,k=!(l=[]))}return Y(i,a,n)},isVisible:function(){return this._v},show:function(){var t,e,n;this.isVisible()||(this._v=!0,this.draw(),t=this.el,e=\"is-hidden\",t.className=(n=(\" \"+t.className+\" \").replace(\" \"+e+\" \",\" \")).trim?n.trim():n.replace(/^\\s+|\\s+$/g,\"\"),this._o.bound&&(a(c,\"click\",this._onClick),this.adjustPosition()),\"function\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t,e,n=this._v;!1!==n&&(this._o.bound&&i(c,\"click\",this._onClick),this.el.style.position=\"static\",this.el.style.left=\"auto\",this.el.style.top=\"auto\",t=this.el,l(t,e=\"is-hidden\")||(t.className=\"\"===t.className?e:t.className+\" \"+e),this._v=!1,void 0!==n&&\"function\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var t=this._o;this.hide(),i(this.el,\"mousedown\",this._onMouseDown,!0),i(this.el,\"touchend\",this._onMouseDown,!0),i(this.el,\"change\",this._onChange),t.keyboardInput&&i(c,\"keydown\",this._onKeyChange),t.field&&(i(t.field,\"change\",this._onInputChange),t.bound&&(i(t.trigger,\"click\",this._onInputClick),i(t.trigger,\"focus\",this._onInputFocus),i(t.trigger,\"blur\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t})}})}(this);\n", " //# sourceMappingURL=bokeh-widgets.min.js.map\n", " /* END bokeh-widgets.min.js */\n", " },\n", " \n", " function(Bokeh) {\n", " /* BEGIN bokeh-tables.min.js */\n", " /*!\n", " * Copyright (c) 2012, Anaconda, Inc.\n", " * All rights reserved.\n", " * \n", " * Redistribution and use in source and binary forms, with or without modification,\n", " * are permitted provided that the following conditions are met:\n", " * \n", " * Redistributions of source code must retain the above copyright notice,\n", " * this list of conditions and the following disclaimer.\n", " * \n", " * Redistributions in binary form must reproduce the above copyright notice,\n", " * this list of conditions and the following disclaimer in the documentation\n", " * and/or other materials provided with the distribution.\n", " * \n", " * Neither the name of Anaconda nor the names of any contributors\n", " * may be used to endorse or promote products derived from this software\n", " * without specific prior written permission.\n", " * \n", " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", " * THE POSSIBILITY OF SUCH DAMAGE.\n", " */\n", " !function(a,b){!function(Bokeh){var define;(function(e,t,n){if(null!=Bokeh)return Bokeh.register_plugin(e,{\"models/widgets/tables/cell_editors\":429,\"models/widgets/tables/cell_formatters\":430,\"models/widgets/tables/data_table\":431,\"models/widgets/tables/index\":432,\"models/widgets/tables/main\":433,\"models/widgets/tables/table_column\":434,\"models/widgets/tables/table_widget\":435,\"models/widgets/widget\":436},433);throw new Error(\"Cannot find Bokeh. You have to load it prior to loading plugins.\")})({429:function(e,t,n){var o=e(387),r=e(15),i=e(5),l=e(6),s=e(57),a=e(431),c=function(t){function e(e){return t.call(this,o.__assign({model:e.column.model},e))||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\"emptyValue\",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(e){t.prototype.initialize.call(this,e),this.inputEl=this._createInput(),this.defaultValue=null,this.args=e,this.render()},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\"bk-cell-editor\")},e.prototype.render=function(){t.prototype.render.call(this),this.args.container.appendChild(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()},e.prototype.renderEditor=function(){},e.prototype.disableNavigation=function(){this.inputEl.addEventListener(\"keydown\",function(e){switch(e.keyCode){case i.Keys.Left:case i.Keys.Right:case i.Keys.Up:case i.Keys.Down:case i.Keys.PageUp:case i.Keys.PageDown:e.stopImmediatePropagation()}})},e.prototype.destroy=function(){this.remove()},e.prototype.focus=function(){this.inputEl.focus()},e.prototype.show=function(){},e.prototype.hide=function(){},e.prototype.position=function(){},e.prototype.getValue=function(){return this.inputEl.value},e.prototype.setValue=function(e){this.inputEl.value=e},e.prototype.serializeValue=function(){return this.getValue()},e.prototype.isValueChanged=function(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue},e.prototype.applyValue=function(e,t){this.args.grid.getData().setField(e[a.DTINDEX_NAME],this.args.column.field,t)},e.prototype.loadValue=function(e){var t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)},e.prototype.validateValue=function(e){if(this.args.column.validator){var t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}},e.prototype.validate=function(){return this.validateValue(this.getValue())},e}(l.DOMView);n.CellEditorView=c;var u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\"CellEditor\"},t}(s.Model);(n.CellEditor=u).initClass();var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\"emptyValue\",{get:function(){return\"\"},enumerable:!0,configurable:!0}),e.prototype._createInput=function(){return i.input({type:\"text\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e}(c);n.StringEditorView=d;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\"StringEditor\",this.prototype.default_view=d,this.define({completions:[r.Array,[]]})},t}(u);(n.StringEditor=p).initClass();var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.textarea()},t}(c);n.TextEditorView=f;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\"TextEditor\",this.prototype.default_view=f},t}(u);(n.TextEditor=h).initClass();var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.select()},t.prototype.renderEditor=function(){for(var e=0,t=this.model.options;e/g,\">\")},t}(r.Model),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.initClass=function(){this.prototype.type=\"StringFormatter\",this.define({font_style:[o.FontStyle,\"normal\"],text_align:[o.TextAlign,\"left\"],text_color:[o.Color]})},t.prototype.doFormat=function(e,t,n,o,r){var i=this.font_style,l=this.text_align,s=this.text_color,a=d.span({},null==n?\"\":\"\"+n);switch(i){case\"bold\":a.style.fontWeight=\"bold\";break;case\"italic\":a.style.fontStyle=\"italic\"}return null!=l&&(a.style.textAlign=l),null!=s&&(a.style.color=s),a.outerHTML},t}(n.CellFormatter=i);(n.StringFormatter=l).initClass();var f=function(c){function e(){return null!==c&&c.apply(this,arguments)||this}return a.__extends(e,c),e.initClass=function(){this.prototype.type=\"NumberFormatter\",this.define({format:[o.String,\"0,0\"],language:[o.String,\"en\"],rounding:[o.String,\"round\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this,l=this.format,s=this.language,a=function(){switch(i.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}();return n=u.format(n,l,s,a),c.prototype.doFormat.call(this,e,t,n,o,r)},e}(l);(n.NumberFormatter=f).initClass();var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.initClass=function(){this.prototype.type=\"BooleanFormatter\",this.define({icon:[o.String,\"check\"]})},t.prototype.doFormat=function(e,t,n,o,r){return n?d.i({class:this.icon}).outerHTML:\"\"},t}(i);(n.BooleanFormatter=h).initClass();var g=function(l){function e(){return null!==l&&l.apply(this,arguments)||this}return a.__extends(e,l),e.initClass=function(){this.prototype.type=\"DateFormatter\",this.define({format:[o.String,\"ISO-8601\"]})},e.prototype.getFormat=function(){switch(this.format){case\"ATOM\":case\"W3C\":case\"RFC-3339\":case\"ISO-8601\":return\"%Y-%m-%d\";case\"COOKIE\":return\"%a, %d %b %Y\";case\"RFC-850\":return\"%A, %d-%b-%y\";case\"RFC-1123\":case\"RFC-2822\":return\"%a, %e %b %Y\";case\"RSS\":case\"RFC-822\":case\"RFC-1036\":return\"%a, %e %b %y\";case\"TIMESTAMP\":return;default:return this.format}},e.prototype.doFormat=function(e,t,n,o,r){n=p.isString(n)?parseInt(n,10):n;var i=s(n,this.getFormat());return l.prototype.doFormat.call(this,e,t,i,o,r)},e}(i);(n.DateFormatter=g).initClass();var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.initClass=function(){this.prototype.type=\"HTMLTemplateFormatter\",this.define({template:[o.String,\"<%= value %>\"]})},t.prototype.doFormat=function(e,t,n,o,r){var i=this.template;if(null==n)return\"\";var l=c(i),s=a.__assign({},r,{value:n});return l(s)},t}(i);(n.HTMLTemplateFormatter=m).initClass()},431:function(e,t,i){var o=e(387),s=e(443).Grid,a=e(441).RowSelectionModel,c=e(440).CheckboxSelectColumn,r=e(15),n=e(38),l=e(21),u=e(32),d=e(14),p=e(435),f=e(436);i.DTINDEX_NAME=\"__bkdt_internal_index__\";var h=function(){function e(e,t){if(this.source=e,this.view=t,i.DTINDEX_NAME in this.source.data)throw new Error(\"special name \"+i.DTINDEX_NAME+\" cannot be used as a data table column\");this.index=this.view.indices}return e.prototype.getLength=function(){return this.index.length},e.prototype.getItem=function(e){for(var t={},n=0,o=u.keys(this.source.data);n+~]|\"+F+\")\"+F+\"*\"),O=new RegExp(\"=\"+F+\"*([^\\\\]'\\\"]*?)\"+F+\"*\\\\]\",\"g\"),z=new RegExp(W),X=new RegExp(\"^\"+I+\"$\"),U={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+M),PSEUDO:new RegExp(\"^\"+W),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+F+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+F+\"*(?:([+-]|)\"+F+\"*(\\\\d+)|))\"+F+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+_+\")$\",\"i\"),needsContext:new RegExp(\"^\"+F+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+F+\"*((?:-\\\\d)?\\\\d*)\"+F+\"*\\\\)|)(?=[^-]|$)\",\"i\")},K=/^(?:input|select|textarea|button)$/i,G=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Q=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,J=/[+~]/,Z=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+F+\"?|(\"+F+\")|.)\",\"ig\"),ee=function(e,t,n){var o=\"0x\"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},te=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ne=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){x()},re=we(function(e){return!0===e.disabled&&(\"form\"in e||\"label\"in e)},{dir:\"parentNode\",next:\"legend\"});try{$.apply(t=H.call(w.childNodes),w.childNodes),t[w.childNodes.length].nodeType}catch(e){$={apply:t.length?function(e,t){A.apply(e,H.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function ie(e,t,n,o){var r,i,l,s,a,c,u,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],\"string\"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!o&&((t?t.ownerDocument||t:w)!==R&&x(t),t=t||R,S)){if(11!==p&&(a=Q.exec(e)))if(r=a[1]){if(9===p){if(!(l=t.getElementById(r)))return n;if(l.id===r)return n.push(l),n}else if(d&&(l=d.getElementById(r))&&v(t,l)&&l.id===r)return n.push(l),n}else{if(a[2])return $.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&f.getElementsByClassName&&t.getElementsByClassName)return $.apply(n,t.getElementsByClassName(r)),n}if(f.qsa&&!T[e+\" \"]&&(!m||!m.test(e))){if(1!==p)d=t,u=e;else if(\"object\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\"id\"))?s=s.replace(te,ne):t.setAttribute(\"id\",s=E),c=h(e),i=c.length;i--;)c[i]=\"#\"+s+\" \"+ve(c[i]);u=c.join(\",\"),d=J.test(e)&&ge(t.parentNode)||t}if(u)try{return $.apply(n,d.querySelectorAll(u)),n}catch(e){}finally{s===E&&t.removeAttribute(\"id\")}}}return g(e.replace(V,\"$1\"),t,n,o)}function le(){var o=[];return function e(t,n){o.push(t+\" \")>C.cacheLength&&delete e[o.shift()];return e[t+\" \"]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=R.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\"|\"),o=n.length;o--;)C.attrHandle[n[o]]=t}function ue(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(n){return function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&e.type===n}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function fe(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function he(l){return se(function(i){return i=+i,se(function(e,t){for(var n,o=l([],e.length,i),r=o.length;r--;)e[n=o[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=ie.support={},r=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},x=ie.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:w;return o!==R&&9===o.nodeType&&o.documentElement&&(l=(R=o).documentElement,S=!r(R),w!==R&&(n=R.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),f.attributes=ae(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),f.getElementsByTagName=ae(function(e){return e.appendChild(R.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),f.getElementsByClassName=Y.test(R.getElementsByClassName),f.getById=ae(function(e){return l.appendChild(e).id=E,!R.getElementsByName||!R.getElementsByName(E).length}),f.getById?(C.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\"id\")===t}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode(\"id\"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode(\"id\"))&&n.value===e)return[i]}return[]}}),C.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if(\"*\"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},C.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],m=[],(f.qsa=Y.test(R.querySelectorAll))&&(ae(function(e){l.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&m.push(\"[*^$]=\"+F+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||m.push(\"\\\\[\"+F+\"*(?:value|\"+_+\")\"),e.querySelectorAll(\"[id~=\"+E+\"-]\").length||m.push(\"~=\"),e.querySelectorAll(\":checked\").length||m.push(\":checked\"),e.querySelectorAll(\"a#\"+E+\"+*\").length||m.push(\".#.+[+~]\")}),ae(function(e){e.innerHTML=\"\";var t=R.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&m.push(\"name\"+F+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&m.push(\":enabled\",\":disabled\"),l.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&m.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),m.push(\",.*:\")})),(f.matchesSelector=Y.test(u=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&ae(function(e){f.disconnectedMatch=u.call(e,\"*\"),u.call(e,\"[s!='']:x\"),s.push(\"!=\",W)}),m=m.length&&new RegExp(m.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=Y.test(l.compareDocumentPosition),v=t||Y.test(l.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e===R||e.ownerDocument===w&&v(w,e)?-1:t===R||t.ownerDocument===w&&v(w,t)?1:a?L(a,e)-L(a,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,l=[e],s=[t];if(!r||!i)return e===R?-1:t===R?1:r?-1:i?1:a?L(a,e)-L(a,t):0;if(r===i)return ue(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;l[o]===s[o];)o++;return o?ue(l[o],s[o]):l[o]===w?-1:s[o]===w?1:0}),R},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==R&&x(e),t=t.replace(O,\"='$1']\"),f.matchesSelector&&S&&!T[t+\" \"]&&(!s||!s.test(t))&&(!m||!m.test(t)))try{var n=u.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\"\").replace(Z,ee),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return U.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&z.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\" \"];return t||(t=new RegExp(\"(^|\"+F+\")\"+e+\"(\"+F+\"|$)\"))&&p(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,o,r){return function(e){var t=ie.attr(e,n);return null==t?\"!=\"===o:!o||(t+=\"\",\"=\"===o?t===r:\"!=\"===o?t!==r:\"^=\"===o?r&&0===t.indexOf(r):\"*=\"===o?r&&-1\",\"#\"===e.firstChild.getAttribute(\"href\")})||ce(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),f.attributes&&ae(function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||ce(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute(\"disabled\")})||ce(_,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),ie}(R);E.find=y,E.expr=y.selectors,E.expr[\":\"]=E.expr.pseudos,E.uniqueSort=E.unique=y.uniqueSort,E.text=y.getText,E.isXMLDoc=y.isXML,E.contains=y.contains,E.escapeSelector=y.escape;var C=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&E(e).is(n))break;o.push(e)}return o},b=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i,P=/^.[^:#\\[\\.,]*$/;function D(e,n,o){return E.isFunction(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==o}):n.nodeType?E.grep(e,function(e){return e===n!==o}):\"string\"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\\w-]+))$/,$=E.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||N,\"string\"==typeof e){if(!(o=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:A.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),T.test(o[1])&&E.isPlainObject(t))for(o in t)E.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=S.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)};$.prototype=E.fn,N=E(S);var H=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function _(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\\x20\\t\\r\\n\\f]+)/i,ae=/^$|\\/(?:java|ecma)script/i,ce={option:[1,\"\"],thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ue(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&k(e,t)?E.merge([e],n):n}function de(e,t){for(var n=0,o=e.length;nx\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue;var ve=S.documentElement,we=/^key/,ye=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function be(){return!0}function xe(){return!1}function Re(){try{return S.activeElement}catch(e){}}function Se(e,t,n,o,r,i){var l,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(o=o||n,n=void 0),t)Se(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&(\"string\"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=xe;else if(!r)return e;return 1===i&&(l=r,(r=function(e){return E().off(e),l.apply(this,arguments)}).guid=l.guid||(l.guid=E.guid++)),e.each(function(){E.event.add(this,t,r,o,n)})}E.event={global:{},add:function(t,e,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.get(t);if(m)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&E.find.matchesSelector(ve,r),n.guid||(n.guid=E.guid++),(a=m.events)||(a=m.events={}),(l=m.handle)||(l=m.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),e=(e||\"\").match(F)||[\"\"],c=e.length;c--;)s=Ce.exec(e[c])||[],f=g=s[1],h=(s[2]||\"\").split(\".\").sort(),f&&(d=E.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,d=E.event.special[f]||{},u=E.extend({type:f,origType:g,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&E.expr.match.needsContext.test(r),namespace:h.join(\".\")},i),(p=a[f])||((p=a[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,o,h,l)||t.addEventListener&&t.addEventListener(f,l)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),E.event.global[f]=!0)},remove:function(e,t,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.hasData(e)&&X.get(e);if(m&&(a=m.events)){for(t=(t||\"\").match(F)||[\"\"],c=t.length;c--;)if(s=Ce.exec(t[c])||[],f=g=s[1],h=(s[2]||\"\").split(\".\").sort(),f){for(d=E.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,p=a[f]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),l=i=p.length;i--;)u=p[i],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||o&&o!==u.selector&&(\"**\"!==o||!u.selector)||(p.splice(i,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));l&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||E.removeEvent(e,f,m.handle),delete a[f])}else for(f in a)E.event.remove(e,f+t[c],n,o,!0);E.isEmptyObject(a)&&X.remove(e,\"handle events\")}},dispatch:function(e){var t,n,o,r,i,l,s=E.event.fix(e),a=new Array(arguments.length),c=(X.get(this,\"events\")||{})[s.type]||[],u=E.event.special[s.type]||{};for(a[0]=s,t=1;t\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,ke=/\\s*$/g;function Ne(e,t){return k(e,\"table\")&&k(11!==t.nodeType?t:t.firstChild,\"tr\")&&E(\">tbody\",e)[0]||e}function Ae(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function $e(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function He(e,t){var n,o,r,i,l,s,a,c;if(1===t.nodeType){if(X.hasData(e)&&(i=X.access(e),l=X.set(t,i),c=i.events))for(r in delete l.handle,l.events={},c)for(n=0,o=c[r].length;n\")},clone:function(e,t,n){var o,r,i,l,s=e.cloneNode(!0),a=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(l=ue(s),i=ue(e),o=0,r=i.length;o\").prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",r=function(e){o.remove(),r=null,e&&t(\"error\"===e.type?404:200,e.type)}),S.head.appendChild(o[0])},abort:function(){r&&r()}}});var Bt,qt=[],Ot=/(=)\\?(?=&|$)|\\?\\?/;E.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=qt.pop()||E.expando+\"_\"+Ct++;return this[e]=!0,e}}),E.ajaxPrefilter(\"json jsonp\",function(e,t,n){var o,r,i,l=!1!==e.jsonp&&(Ot.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ot.test(e.data)&&\"data\");if(l||\"jsonp\"===e.dataTypes[0])return o=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Ot,\"$1\"+o):!1!==e.jsonp&&(e.url+=(bt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+o),e.converters[\"script json\"]=function(){return i||E.error(o+\" was not called\"),i[0]},e.dataTypes[0]=\"json\",r=R[o],R[o]=function(){i=arguments},n.always(function(){void 0===r?E(R).removeProp(o):R[o]=r,e[o]&&(e.jsonpCallback=t.jsonpCallback,qt.push(o)),i&&E.isFunction(r)&&r(i[0]),i=r=void 0}),\"script\"}),m.createHTMLDocument=((Bt=S.implementation.createHTMLDocument(\"\").body).innerHTML=\"
\",2===Bt.childNodes.length),E.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?(t=S.implementation.createHTMLDocument(\"\"),(o=t.createElement(\"base\")).href=S.location.href,t.head.appendChild(o)):t=S),r=T.exec(e),i=!n&&[],r?[t.createElement(r[1])]:(r=me([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes)));var o,r,i},E.fn.load=function(e,t,n){var o,r,i,l=this,s=e.indexOf(\" \");return-1\").append(E.parseHTML(e)).find(o):e)}).always(n&&function(e,t){l.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var o,r,i,l,s,a,c=E.css(e,\"position\"),u=E(e),d={};\"static\"===c&&(e.style.position=\"relative\"),s=u.offset(),i=E.css(e,\"top\"),a=E.css(e,\"left\"),(\"absolute\"===c||\"fixed\"===c)&&-1<(i+a).indexOf(\"auto\")?(o=u.position(),l=o.top,r=o.left):(l=parseFloat(i)||0,r=parseFloat(a)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(d.top=t.top-s.top+l),null!=t.left&&(d.left=t.left-s.left+r),\"using\"in t?t.using.call(e,d):u.css(d)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,o,r,i=this[0];return i?i.getClientRects().length?(o=i.getBoundingClientRect(),e=i.ownerDocument,n=e.documentElement,r=e.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n=this[0],o={top:0,left:0};return\"fixed\"===E.css(n,\"position\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),k(e[0],\"html\")||(o=e.offset()),o={top:o.top+E.css(e[0],\"borderTopWidth\",!0),left:o.left+E.css(e[0],\"borderLeftWidth\",!0)}),{top:t.top-o.top-E.css(n,\"marginTop\",!0),left:t.left-o.left-E.css(n,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\"static\"===E.css(e,\"position\");)e=e.offsetParent;return e||ve})}}),E.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,r){var i=\"pageYOffset\"===r;E.fn[t]=function(e){return q(this,function(e,t,n){var o;if(E.isWindow(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===n)return o?o[r]:e[t];o?o.scrollTo(i?o.pageXOffset:n,i?n:o.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each([\"top\",\"left\"],function(e,n){E.cssHooks[n]=Ve(m.pixelPosition,function(e,t){if(t)return t=je(e,n),Me.test(t)?E(e).position()[n]+\"px\":t})}),E.each({Height:\"height\",Width:\"width\"},function(l,s){E.each({padding:\"inner\"+l,content:s,\"\":\"outer\"+l},function(o,i){E.fn[i]=function(e,t){var n=arguments.length&&(o||\"boolean\"!=typeof e),r=o||(!0===e||!0===t?\"margin\":\"border\");return q(this,function(e,t,n){var o;return E.isWindow(e)?0===i.indexOf(\"outer\")?e[\"inner\"+l]:e.document.documentElement[\"client\"+l]:9===e.nodeType?(o=e.documentElement,Math.max(e.body[\"scroll\"+l],o[\"scroll\"+l],e.body[\"offset\"+l],o[\"offset\"+l],o[\"client\"+l])):void 0===n?E.css(e,t,r):E.style(e,t,n,r)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=k,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return E});var zt=R.jQuery,Xt=R.$;return E.noConflict=function(e){return R.$===E&&(R.$=Xt),e&&R.jQuery===E&&(R.jQuery=zt),E},e||(R.jQuery=R.$=E),E})},438:function(e,t,n){\n", " /*!\n", " * jquery.event.drag - v 2.3.0\n", " * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\n", " * Open Source MIT License - http://threedubmedia.com/code/license\n", " */\n", " var f=e(444);f.fn.drag=function(e,t,n){var o=\"string\"==typeof e?e:\"\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\"drag\")&&(o=\"drag\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)};var h=f.event,o=h.special,g=o.drag={defaults:{which:1,distance:0,not:\":input\",handle:null,relative:!1,drop:!0,click:!1},datakey:\"dragdata\",noBubble:!0,add:function(e){var n=f.data(this,g.datakey),o=e.data||{};n.related+=1,f.each(g.defaults,function(e,t){void 0!==o[e]&&(n[e]=o[e])})},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){var e=f.extend({related:0},g.defaults);f.data(this,g.datakey,e),h.add(this,\"touchstart mousedown\",g.init,e),this.attachEvent&&this.attachEvent(\"ondragstart\",g.dontstart)}},teardown:function(){var e=f.data(this,g.datakey)||{};e.related||(f.removeData(this,g.datakey),h.remove(this,\"touchstart mousedown\",g.init),g.textselect(!0),this.detachEvent&&this.detachEvent(\"ondragstart\",g.dontstart))},init:function(e){if(!g.touched){var t,n=e.data;if(!(0!=e.which&&0=e.left&&(t[0]||t.right)<=e.right&&(t[1]||t.top)>=e.top&&(t[1]||t.bottom)<=e.bottom},modes:{intersect:function(e,t,n){return this.contains(n,[e.pageX,e.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(e,t,n){return Math.max(0,Math.min(n.bottom,t.bottom)-Math.max(n.top,t.top))*Math.max(0,Math.min(n.right,t.right)-Math.max(n.left,t.left))},fit:function(e,t,n){return this.contains(n,t)?1:0},middle:function(e,t,n){return this.contains(n,[t.left+.5*t.width,t.top+.5*t.height])?1:0}},sort:function(e,t){return t.winner-e.winner||e.index-t.index},tolerate:function(e){var t,n,o,r,i,l,s,a,c=0,u=e.interactions.length,d=[g.event.pageX,g.event.pageY],p=g.tolerance||g.modes[g.mode];do{if(a=e.interactions[c]){if(!a)return;a.drop=[],i=[],l=a.droppable.length,p&&(o=g.locate(a.proxy)),t=0;do{if(s=a.droppable[t]){if(r=f.data(s,g.datakey),!(n=r.location))continue;r.winner=p?p.call(g,g.event,o,n):g.contains(n,d)?1:0,i.push(r)}}while(++t\",a.toolTip):l.updateColumnHeader(a.columnId,\"\",a.toolTip)}function o(e,t){32==e.which&&l.getColumns()[t.cell].id===a.columnId&&(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit()||i(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){if(l.getColumns()[t.cell].id===a.columnId&&d(e.target).is(\":checkbox\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();i(t.row),e.stopPropagation(),e.stopImmediatePropagation()}}function i(t){s[t]?l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return e!=t})):l.setSelectedRows(l.getSelectedRows().concat(t))}function c(e,t){if(t.column.id==a.columnId&&d(e.target).is(\":checkbox\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(d(e.target).is(\":checked\")){for(var n=[],o=0;o\":\"\":null}d.extend(this,{init:function(e){l=e,t.subscribe(l.onSelectedRowsChanged,n).subscribe(l.onClick,r).subscribe(l.onHeaderClick,c).subscribe(l.onKeyDown,o)},destroy:function(){t.unsubscribeAll()},deSelectRows:function(e){var t,n=e.length,o=[];for(t=0;t\",toolTip:a.toolTip,field:\"sel\",width:a.width,resizable:!1,sortable:!1,cssClass:a.cssClass,formatter:u}}})}}},441:function(e,t,n){var v=e(444),w=e(442);t.exports={RowSelectionModel:function(t){var c,n,o,u=[],r=this,i=new w.EventHandler,l={selectActiveRow:!0};function s(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function d(e){for(var t=[],n=0;n=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell},this.toString=function(){return this.isSingleCell()?\"(\"+this.fromRow+\":\"+this.fromCell+\")\":\"(\"+this.fromRow+\":\"+this.fromCell+\" - \"+this.toRow+\":\"+this.toCell+\")\"}},NonDataRow:o,Group:r,GroupTotals:i,EditorLock:s,GlobalEditorLock:new s,keyCode:{BACKSPACE:8,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,ESC:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,TAB:9,UP:38,C:67,V:86},preClickClassName:\"slick-edit-preclick\"}},443:function _(require,module,exports){\n", " /**\n", " * @license\n", " * (c) 2009-2016 Michael Leibman\n", " * michael{dot}leibman{at}gmail{dot}com\n", " * http://github.com/mleibman/slickgrid\n", " *\n", " * Distributed under MIT license.\n", " * All rights reserved.\n", " *\n", " * SlickGrid v2.3\n", " *\n", " * NOTES:\n", " * Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.\n", " * This increases the speed dramatically, but can only be done safely because there are no event handlers\n", " * or data associated with any cell/row DOM nodes. Cell editors must make sure they implement .destroy()\n", " * and do proper cleanup.\n", " */\n", " var $=require(444),Slick=require(442),scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){$.fn.drag||require(438),$.fn.drop||require(439);var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:\"flashing\",selectedCellCssClass:\"selected\",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:\"new-row\",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0},columnDefaults={name:\"\",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid=\"slickgrid_\"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,sortIndicatorCssClass=\"slick-sort-indicator\",tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:\"absolute\",visibility:\"hidden\",display:\"block\"},$hiddenParents,oldProps=[];function init(){if(($container=container instanceof $?container:$(container)).length<1)throw new Error(\"SlickGrid requires a valid container, \"+container+\" does not exist in the DOM.\");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;et.maxWidth&&(t.width=t.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error(\"SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded\");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css(\"overflow\",\"hidden\").css(\"outline\",0).addClass(uid).addClass(\"ui-widget\"),/relative|absolute|fixed/.test($container.css(\"position\"))||$container.css(\"position\",\"relative\"),$focusSink=$(\"
\").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$(\"
\").appendTo($container),$preHeaderPanel=$(\"
\").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$(\"
\").css(\"width\",getCanvasWidth()+scrollbarDimensions.width+\"px\").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$(\"
\").appendTo($container),($headers=$(\"
\").appendTo($headerScroller)).width(getHeadersWidth()),$headerRowScroller=$(\"
\").appendTo($container),$headerRow=$(\"
\").appendTo($headerRowScroller),$headerRowSpacer=$(\"
\").css(\"width\",getCanvasWidth()+scrollbarDimensions.width+\"px\").appendTo($headerRowScroller),$topPanelScroller=$(\"
\").appendTo($container),$topPanel=$(\"
\").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$(\"
\").appendTo($container)).css(\"overflow-y\",options.autoHeight?\"hidden\":\"auto\"),$canvas=$(\"
\").appendTo($viewport),options.createFooterRow&&($footerRowScroller=$(\"
\").appendTo($container),$footerRow=$(\"
\").appendTo($footerRowScroller),$footerRowSpacer=$(\"
\").css(\"width\",getCanvasWidth()+scrollbarDimensions.width+\"px\").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),options.numberedMultiColumnSort&&(sortIndicatorCssClass=\"slick-sort-indicator-numbered\"),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],\"width\",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on(\"selectstart.ui\",function(e){return $(e.target).is(\"input,textarea\")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on(\"resize.slickgrid\",resizeCanvas),$viewport.on(\"scroll\",handleScroll),$headerScroller.on(\"contextmenu\",handleHeaderContextMenu).on(\"click\",handleHeaderClick).on(\"mouseenter\",\".slick-header-column\",handleHeaderMouseEnter).on(\"mouseleave\",\".slick-header-column\",handleHeaderMouseLeave),$headerRowScroller.on(\"scroll\",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on(\"scroll\",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on(\"scroll\",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on(\"keydown\",handleKeyDown),$canvas.on(\"keydown\",handleKeyDown).on(\"click\",handleClick).on(\"dblclick\",handleDblClick).on(\"contextmenu\",handleContextMenu).on(\"draginit\",handleDragInit).on(\"dragstart\",{distance:3},handleDragStart).on(\"drag\",handleDrag).on(\"dragend\",handleDragEnd).on(\"mouseenter\",\".slick-cell\",handleMouseEnter).on(\"mouseleave\",\".slick-cell\",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on(\"mousewheel\",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(\":visible\")).each(function(){var e={};for(var t in cssShow)e[t]=this.style[t],this.style[t]=cssShow[t];oldProps.push(e)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var t=oldProps[e];for(var n in cssShow)this.style[n]=t[n]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var t=plugins.length;0<=t;t--)if(plugins[t]===e){plugins[t].destroy&&plugins[t].destroy(),plugins.splice(t,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$(\"
\").appendTo(\"body\"),t={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),t}function getColumnTotalWidth(e){for(var t=0,n=0,o=columns.length;nviewportW-scrollbarDimensions.width);var n=canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0);$headerRowSpacer.width(n),options.createFooterRow&&$footerRowSpacer.width(n),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(n),(canvasWidth!=t||e)&&applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr(\"unselectable\",\"on\").css(\"MozUserSelect\",\"none\").on(\"selectstart.ui\",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,n=$(\"
\").appendTo(document.body);;){var o=2*e;if(n.css(\"height\",o),t\").html(\"\"+o.name+\"\").width(o.width-headerColumnWidthDiff).attr(\"id\",\"\"+uid+o.id).attr(\"title\",o.toolTip||\"\").data(\"column\",o).addClass(o.headerCssClass||\"\").appendTo($headers);if((options.enableColumnReorder||o.sortable)&&r.on(\"mouseenter\",e).on(\"mouseleave\",t),o.sortable&&(r.addClass(\"slick-header-sortable\"),r.append(\"\")),trigger(self.onHeaderCellRendered,{node:r[0],column:o,grid:self}),options.showHeaderRow){var i=$(\"
\").data(\"column\",o).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:i[0],column:o,grid:self})}if(options.createFooterRow&&options.showFooterRow){var l=$(\"
\").data(\"column\",o).appendTo($footerRow);trigger(self.onFooterRowCellRendered,{node:l[0],column:o})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&(\"function\"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass(\"slick-resizable-handle\")){var t=$(e.target).closest(\".slick-header-column\");if(t.length){var n=t.data(\"column\");if(n.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var o=null,r=0;r=columns.length||columns[e].resizable&&(void 0===n&&(n=e),o=e)}),void 0!==n&&u.each(function(l,e){l>=columns.length||l\").appendTo(e).on(\"dragstart\",function(e,t){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass(\"slick-header-column-active\");var n=null,o=null;if(u.each(function(e,t){e>=columns.length||(columns[e].previousWidth=$(t).outerWidth())}),options.forceFitColumns)for(o=n=0,s=l+1;s
\").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,\"border-box\"!=n.css(\"box-sizing\")&&\"border-box\"!=n.css(\"-moz-box-sizing\")&&\"border-box\"!=n.css(\"-webkit-box-sizing\")&&($.each(e,function(e,t){headerColumnWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){headerColumnHeightDiff+=parseFloat(n.css(t))||0})),n.remove();var r=$(\"
\").appendTo($canvas);n=$(\"\").appendTo(r),cellWidthDiff=cellHeightDiff=0,\"border-box\"!=n.css(\"box-sizing\")&&\"border-box\"!=n.css(\"-moz-box-sizing\")&&\"border-box\"!=n.css(\"-webkit-box-sizing\")&&($.each(e,function(e,t){cellWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){cellHeightDiff+=parseFloat(n.css(t))||0})),r.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$(\"\n", "\n", "\n", "
\n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "function HoloViewsWidget() {\n", "}\n", "\n", "HoloViewsWidget.prototype.init_slider = function(init_val){\n", " if(this.load_json) {\n", " this.from_json()\n", " } else {\n", " this.update_cache();\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.populate_cache = function(idx){\n", " this.cache[idx].innerHTML = this.frames[idx];\n", " if (this.embed) {\n", " delete this.frames[idx];\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.process_error = function(msg){\n", "}\n", "\n", "HoloViewsWidget.prototype.from_json = function() {\n", " var data_url = this.json_path + this.id + '.json';\n", " $.getJSON(data_url, $.proxy(function(json_data) {\n", " this.frames = json_data;\n", " this.update_cache();\n", " this.update(0);\n", " }, this));\n", "}\n", "\n", "HoloViewsWidget.prototype.dynamic_update = function(current){\n", " if (current === undefined) {\n", " return\n", " }\n", " this.current = current;\n", " if (this.comm) {\n", " var msg = {comm_id: this.id+'_client', content: current}\n", " this.comm.send(msg);\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.update_cache = function(force){\n", " var frame_len = Object.keys(this.frames).length;\n", " for (var i=0; i 0) {\n", " that.time = Date.now();\n", " that.dynamic_update(that.queue[that.queue.length-1]);\n", " that.queue = [];\n", " } else {\n", " that.wait = false;\n", " }\n", " if ((msg.msg_type == \"Ready\") && msg.content) {\n", " console.log(\"Python callback returned following output:\", msg.content);\n", " } else if (msg.msg_type == \"Error\") {\n", " console.log(\"Python failed with the following traceback:\", msg['traceback'])\n", " }\n", " }\n", " var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\n", " return comm\n", " }\n", "}\n", "\n", "HoloViewsWidget.prototype.process_msg = function(msg) {\n", "}\n", "\n", "function SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\n", " this.frames = frames;\n", " this.id = id;\n", " this.plot_id = plot_id;\n", " this.slider_ids = slider_ids;\n", " this.keyMap = keyMap\n", " this.current_frame = 0;\n", " this.current_vals = dim_vals;\n", " this.load_json = load_json;\n", " this.mode = mode;\n", " this.notFound = notFound;\n", " this.cached = cached;\n", " this.dynamic = dynamic;\n", " this.cache = {};\n", " this.json_path = json_path;\n", " this.init_slider(this.current_vals[0]);\n", " this.queue = [];\n", " this.wait = false;\n", " if (!this.cached || this.dynamic) {\n", " this.comm = this.init_comms();\n", " }\n", "}\n", "\n", "SelectionWidget.prototype = new HoloViewsWidget;\n", "\n", "\n", "SelectionWidget.prototype.get_key = function(current_vals) {\n", " var key = \"(\";\n", " for (var i=0; i Date.now()))) {\n", " this.queue.push(key);\n", " return\n", " }\n", " this.queue = [];\n", " this.time = Date.now();\n", " this.current_frame = key;\n", " this.wait = true;\n", " this.dynamic_update(key)\n", " } else if (key !== undefined) {\n", " this.update(key)\n", " }\n", "}\n", "\n", "\n", "/* Define the ScrubberWidget class */\n", "function ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\n", " this.slider_id = \"_anim_slider\" + id;\n", " this.loop_select_id = \"_anim_loop_select\" + id;\n", " this.id = id;\n", " this.plot_id = plot_id;\n", " this.interval = interval;\n", " this.current_frame = 0;\n", " this.direction = 0;\n", " this.dynamic = dynamic;\n", " this.timer = null;\n", " this.load_json = load_json;\n", " this.mode = mode;\n", " this.cached = cached;\n", " this.frames = frames;\n", " this.cache = {};\n", " this.length = num_frames;\n", " this.json_path = json_path;\n", " document.getElementById(this.slider_id).max = this.length - 1;\n", " this.init_slider(0);\n", " this.wait = false;\n", " this.queue = [];\n", " if (!this.cached || this.dynamic) {\n", " this.comm = this.init_comms()\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype = new HoloViewsWidget;\n", "\n", "ScrubberWidget.prototype.set_frame = function(frame){\n", " this.current_frame = frame;\n", " var widget = document.getElementById(this.slider_id);\n", " if (widget === null) {\n", " this.pause_animation();\n", " return\n", " }\n", " widget.value = this.current_frame;\n", " if (this.dynamic || !this.cached) {\n", " if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\n", " this.queue.push(frame);\n", " return\n", " }\n", " this.queue = [];\n", " this.time = Date.now();\n", " this.wait = true;\n", " this.dynamic_update(frame)\n", " } else {\n", " this.update(frame)\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.get_loop_state = function(){\n", " var button_group = document[this.loop_select_id].state;\n", " for (var i = 0; i < button_group.length; i++) {\n", " var button = button_group[i];\n", " if (button.checked) {\n", " return button.value;\n", " }\n", " }\n", " return undefined;\n", "}\n", "\n", "\n", "ScrubberWidget.prototype.next_frame = function() {\n", " this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\n", "}\n", "\n", "ScrubberWidget.prototype.previous_frame = function() {\n", " this.set_frame(Math.max(0, this.current_frame - 1));\n", "}\n", "\n", "ScrubberWidget.prototype.first_frame = function() {\n", " this.set_frame(0);\n", "}\n", "\n", "ScrubberWidget.prototype.last_frame = function() {\n", " this.set_frame(this.length - 1);\n", "}\n", "\n", "ScrubberWidget.prototype.slower = function() {\n", " this.interval /= 0.7;\n", " if(this.direction > 0){this.play_animation();}\n", " else if(this.direction < 0){this.reverse_animation();}\n", "}\n", "\n", "ScrubberWidget.prototype.faster = function() {\n", " this.interval *= 0.7;\n", " if(this.direction > 0){this.play_animation();}\n", " else if(this.direction < 0){this.reverse_animation();}\n", "}\n", "\n", "ScrubberWidget.prototype.anim_step_forward = function() {\n", " if(this.current_frame < this.length - 1){\n", " this.next_frame();\n", " }else{\n", " var loop_state = this.get_loop_state();\n", " if(loop_state == \"loop\"){\n", " this.first_frame();\n", " }else if(loop_state == \"reflect\"){\n", " this.last_frame();\n", " this.reverse_animation();\n", " }else{\n", " this.pause_animation();\n", " this.last_frame();\n", " }\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.anim_step_reverse = function() {\n", " if(this.current_frame > 0){\n", " this.previous_frame();\n", " } else {\n", " var loop_state = this.get_loop_state();\n", " if(loop_state == \"loop\"){\n", " this.last_frame();\n", " }else if(loop_state == \"reflect\"){\n", " this.first_frame();\n", " this.play_animation();\n", " }else{\n", " this.pause_animation();\n", " this.first_frame();\n", " }\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.pause_animation = function() {\n", " this.direction = 0;\n", " if (this.timer){\n", " clearInterval(this.timer);\n", " this.timer = null;\n", " }\n", "}\n", "\n", "ScrubberWidget.prototype.play_animation = function() {\n", " this.pause_animation();\n", " this.direction = 1;\n", " var t = this;\n", " if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\n", "}\n", "\n", "ScrubberWidget.prototype.reverse_animation = function() {\n", " this.pause_animation();\n", " this.direction = -1;\n", " var t = this;\n", " if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\n", "}\n", "\n", "function extend(destination, source) {\n", " for (var k in source) {\n", " if (source.hasOwnProperty(k)) {\n", " destination[k] = source[k];\n", " }\n", " }\n", " return destination;\n", "}\n", "\n", "function update_widget(widget, values) {\n", " if (widget.hasClass(\"ui-slider\")) {\n", " widget.slider('option', {\n", " min: 0,\n", " max: values.length-1,\n", " dim_vals: values,\n", " value: 0,\n", " dim_labels: values\n", " })\n", " widget.slider('option', 'slide').call(widget, event, {value: 0})\n", " } else {\n", " widget.empty();\n", " for (var i=0; i\", {\n", " value: i,\n", " text: values[i]\n", " }))\n", " };\n", " widget.data('values', values);\n", " widget.data('value', 0);\n", " widget.trigger(\"change\");\n", " };\n", "}\n", "\n", "function init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\n", " dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\n", " // Slider JS Block START\n", " function loadcssfile(filename){\n", " var fileref=document.createElement(\"link\")\n", " fileref.setAttribute(\"rel\", \"stylesheet\")\n", " fileref.setAttribute(\"type\", \"text/css\")\n", " fileref.setAttribute(\"href\", filename)\n", " document.getElementsByTagName(\"head\")[0].appendChild(fileref)\n", " }\n", " loadcssfile(\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\");\n", " /* Check if jQuery and jQueryUI have been loaded\n", " otherwise load with require.js */\n", " var jQuery = window.jQuery,\n", " // check for old versions of jQuery\n", " oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\.[0-4](\\.|$)/),\n", " jquery_path = '',\n", " paths = {},\n", " noConflict;\n", " var jQueryUI = jQuery.ui;\n", " // check for jQuery\n", " if (!jQuery || oldjQuery) {\n", " // load if it's not available or doesn't meet min standards\n", " paths.jQuery = jQuery;\n", " noConflict = !!oldjQuery;\n", " } else {\n", " // register the current jQuery\n", " define('jquery', [], function() { return jQuery; });\n", " }\n", " if (!jQueryUI) {\n", " paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\n", " } else {\n", " define('jQueryUI', [], function() { return jQuery.ui; });\n", " }\n", " paths.underscore = UNDERSCORE_CDN.slice(null, -3);\n", " var jquery_require = {\n", " paths: paths,\n", " shim: {\n", " \"jQueryUI\": {\n", " exports:\"$\",\n", " deps: ['jquery']\n", " },\n", " \"underscore\": {\n", " exports: '_'\n", " }\n", " }\n", " }\n", " require.config(jquery_require);\n", " require([\"jQueryUI\", \"underscore\"], function(jUI, _){\n", " if (noConflict) $.noConflict(true);\n", " var vals = values;\n", " if (dynamic && vals.constructor === Array) {\n", " var default_value = parseFloat(value);\n", " var min = parseFloat(vals[0]);\n", " var max = parseFloat(vals[vals.length-1]);\n", " var wstep = step;\n", " var wlabels = [default_value];\n", " var init_label = default_value;\n", " } else {\n", " var min = 0;\n", " if (dynamic) {\n", " var max = Object.keys(vals).length - 1;\n", " var init_label = labels[value];\n", " var default_value = values[value];\n", " } else {\n", " var max = vals.length - 1;\n", " var init_label = labels[value];\n", " var default_value = value;\n", " }\n", " var wstep = 1;\n", " var wlabels = labels;\n", " }\n", " function adjustFontSize(text) {\n", " var width_ratio = (text.parent().width()/8)/text.val().length;\n", " var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\n", " text.css('font-size', size);\n", " }\n", " var slider = $('#_anim_widget'+id+'_'+dim);\n", " slider.slider({\n", " animate: \"fast\",\n", " min: min,\n", " max: max,\n", " step: wstep,\n", " value: default_value,\n", " dim_vals: vals,\n", " dim_labels: wlabels,\n", " next_vals: next_vals,\n", " slide: function(event, ui) {\n", " var vals = slider.slider(\"option\", \"dim_vals\");\n", " var next_vals = slider.slider(\"option\", \"next_vals\");\n", " var dlabels = slider.slider(\"option\", \"dim_labels\");\n", " if (dynamic) {\n", " var dim_val = ui.value;\n", " if (vals.constructor === Array) {\n", " var label = ui.value;\n", " } else {\n", " var label = dlabels[ui.value];\n", " }\n", " } else {\n", " var dim_val = vals[ui.value];\n", " var label = dlabels[ui.value];\n", " }\n", " var text = $('#textInput'+id+'_'+dim);\n", " text.val(label);\n", " adjustFontSize(text);\n", " HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\n", " if (Object.keys(next_vals).length > 0) {\n", " var new_vals = next_vals[dim_val];\n", " var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n", " update_widget(next_widget, new_vals);\n", " }\n", " }\n", " });\n", " slider.keypress(function(event) {\n", " if (event.which == 80 || event.which == 112) {\n", " var start = slider.slider(\"option\", \"value\");\n", " var stop = slider.slider(\"option\", \"max\");\n", " for (var i=start; i<=stop; i++) {\n", " var delay = i*delay;\n", " $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n", " var val = {value:i};\n", " slider.slider('value',i);\n", " slider.slider(\"option\", \"slide\")(null, val);\n", " }, slider), delay);}, slider)(i);\n", " }\n", " }\n", " if (event.which == 82 || event.which == 114) {\n", " var start = slider.slider(\"option\", \"value\");\n", " var stop = slider.slider(\"option\", \"min\");\n", " var count = 0;\n", " for (var i=start; i>=stop; i--) {\n", " var delay = count*delay;\n", " count = count + 1;\n", " $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n", " var val = {value:i};\n", " slider.slider('value',i);\n", " slider.slider(\"option\", \"slide\")(null, val);\n", " }, slider), delay);}, slider)(i);\n", " }\n", " }\n", " });\n", " var textInput = $('#textInput'+id+'_'+dim)\n", " textInput.val(init_label);\n", " adjustFontSize(textInput);\n", " });\n", "}\n", "\n", "function init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\n", " var widget = $(\"#_anim_widget\"+id+'_'+dim);\n", " widget.data('values', vals)\n", " for (var i=0; i\", {\n", " value: val,\n", " text: labels[i]\n", " }));\n", " };\n", " widget.data(\"next_vals\", next_vals);\n", " widget.val(value);\n", " widget.on('change', function(event, ui) {\n", " if (dynamic) {\n", " var dim_val = parseInt(this.value);\n", " } else {\n", " var dim_val = $.data(this, 'values')[this.value];\n", " }\n", " var next_vals = $.data(this, \"next_vals\");\n", " if (Object.keys(next_vals).length > 0) {\n", " var new_vals = next_vals[dim_val];\n", " var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n", " update_widget(next_widget, new_vals);\n", " }\n", " var widgets = HoloViews.index[plot_id]\n", " if (widgets) {\n", " widgets.set_frame(dim_val, dim_idx);\n", " }\n", " });\n", "}\n", "\n", "\n", "if (window.HoloViews === undefined) {\n", " window.HoloViews = {}\n", " window.PyViz = window.HoloViews\n", "} else if (window.PyViz === undefined) {\n", " window.PyViz = window.HoloViews\n", "}\n", "\n", "\n", "var _namespace = {\n", " init_slider: init_slider,\n", " init_dropdown: init_dropdown,\n", " comms: {},\n", " comm_status: {},\n", " index: {},\n", " plot_index: {},\n", " kernels: {},\n", " receivers: {}\n", "}\n", "\n", "for (var k in _namespace) {\n", " if (!(k in window.HoloViews)) {\n", " window.HoloViews[k] = _namespace[k];\n", " }\n", "}\n", "\n", "var JS_MIME_TYPE = 'application/javascript';\n", "var HTML_MIME_TYPE = 'text/html';\n", "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", "var CLASS_NAME = 'output';\n", "\n", "/**\n", " * Render data to the DOM node\n", " */\n", "function render(props, node) {\n", " var div = document.createElement(\"div\");\n", " var script = document.createElement(\"script\");\n", " node.appendChild(div);\n", " node.appendChild(script);\n", "}\n", "\n", "/**\n", " * Handle when a new output is added\n", " */\n", "function handle_add_output(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", " if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\n", " return\n", " }\n", " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", " if (id !== undefined) {\n", " var nchildren = toinsert.length;\n", " toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\n", " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", " output_area._hv_plot_id = id;\n", " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", " HoloViews.plot_index[id] = Bokeh.index[id];\n", " } else {\n", " HoloViews.plot_index[id] = null;\n", " }\n", " }\n", "}\n", "\n", "/**\n", " * Handle when an output is cleared or removed\n", " */\n", "function handle_clear_output(event, handle) {\n", " var id = handle.cell.output_area._hv_plot_id;\n", " if ((id === undefined) || !(id in HoloViews.plot_index)) { return; }\n", " var comm = window.HoloViews.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", " if (comm !== null) {\n", " comm.send({event_type: 'delete', 'id': id});\n", " }\n", " delete HoloViews.plot_index[id];\n", " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", " window.Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "}\n", "\n", "/**\n", " * Handle kernel restart event\n", " */\n", "function handle_kernel_cleanup(event, handle) {\n", " delete HoloViews.comms[\"hv-extension-comm\"];\n", " window.HoloViews.plot_index = {}\n", "}\n", "\n", "/**\n", " * Handle update_display_data messages\n", " */\n", "function handle_update_output(event, handle) {\n", " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", " handle_add_output(event, handle)\n", "}\n", "\n", "function register_renderer(events, OutputArea) {\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[0]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " events.on('output_added.OutputArea', handle_add_output);\t\n", " events.on('output_updated.OutputArea', handle_update_output);\n", " events.on('clear_output.CodeCell', handle_clear_output);\n", " events.on('delete.Cell', handle_clear_output);\n", " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", "\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " safe: true,\n", " index: 0\n", " });\n", "}\n", "\n", "if (window.Jupyter !== undefined) {\n", " try {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " } catch(err) {\n", " }\n", "}\n", "\n", "// Define MPL specific subclasses\n", "function MPLSelectionWidget() {\n", " SelectionWidget.apply(this, arguments);\n", "}\n", "\n", "function MPLScrubberWidget() {\n", " ScrubberWidget.apply(this, arguments);\n", "}\n", "\n", "// Let them inherit from the baseclasses\n", "MPLSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\n", "MPLScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n", "\n", "// Define methods to override on widgets\n", "var MPLMethods = {\n", " init_slider : function(init_val){\n", " if(this.load_json) {\n", " this.from_json()\n", " } else {\n", " this.update_cache();\n", " }\n", " if (this.dynamic | !this.cached | (this.current_vals === undefined)) {\n", " this.update(0)\n", " } else {\n", " this.set_frame(this.current_vals[0], 0)\n", " }\n", " },\n", " process_msg : function(msg) {\n", " var data = msg.content.data;\n", " this.frames[this.current] = data;\n", " this.update_cache(true);\n", " this.update(this.current);\n", " }\n", "}\n", "// Extend MPL widgets with backend specific methods\n", "extend(MPLSelectionWidget.prototype, MPLMethods);\n", "extend(MPLScrubberWidget.prototype, MPLMethods);\n", "\n", "window.HoloViews.MPLSelectionWidget = MPLSelectionWidget\n", "window.HoloViews.MPLScrubberWidget = MPLScrubberWidget\n", "\n", "// Define Bokeh specific subclasses\n", "function BokehSelectionWidget() {\n", " SelectionWidget.apply(this, arguments);\n", "}\n", "\n", "function BokehScrubberWidget() {\n", " ScrubberWidget.apply(this, arguments);\n", "}\n", "\n", "// Let them inherit from the baseclasses\n", "BokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\n", "BokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n", "\n", "// Define methods to override on widgets\n", "var BokehMethods = {\n", " update_cache : function(){\n", " for (var index in this.frames) {\n", " this.frames[index] = JSON.parse(this.frames[index]);\n", " }\n", " },\n", " update : function(current){\n", " if (current === undefined) {\n", " return;\n", " }\n", " var data = this.frames[current];\n", " if (data !== undefined) {\n", " if (data.root in HoloViews.plot_index) {\n", " var doc = HoloViews.plot_index[data.root].model.document;\n", " } else {\n", " var doc = Bokeh.index[data.root].model.document;\n", " }\n", " doc.apply_json_patch(data.content);\n", " }\n", " },\n", " init_comms: function() {\n", " if (Bokeh.protocol !== undefined) {\n", " this.receiver = new Bokeh.protocol.Receiver()\n", " } else {\n", " this.receiver = null;\n", " }\n", " return HoloViewsWidget.prototype.init_comms.call(this);\n", " },\n", " process_msg : function(msg) {\n", " if (this.plot_id in HoloViews.plot_index) {\n", " var doc = HoloViews.plot_index[this.plot_id].model.document;\n", " } else {\n", " var doc = Bokeh.index[this.plot_id].model.document;\n", " }\n", " if (this.receiver === null) { return }\n", " var receiver = this.receiver;\n", " if (msg.buffers.length > 0) {\n", " receiver.consume(msg.buffers[0].buffer)\n", " } else {\n", " receiver.consume(msg.content.data)\n", " }\n", " const comm_msg = receiver.message;\n", " if ((comm_msg != null) && (doc != null)) {\n", " doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\n", " }\n", " }\n", "}\n", "\n", "// Extend Bokeh widgets with backend specific methods\n", "extend(BokehSelectionWidget.prototype, BokehMethods);\n", "extend(BokehScrubberWidget.prototype, BokehMethods);\n", "\n", "window.HoloViews.BokehSelectionWidget = BokehSelectionWidget\n", "window.HoloViews.BokehScrubberWidget = BokehScrubberWidget\n", "\n", " function JupyterCommManager() {\n", " }\n", "\n", " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", " comm_manager.register_target(comm_id, function(comm) {\n", " comm.on_msg(msg_handler);\n", " });\n", " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", " comm.onMsg = msg_handler;\n", " });\n", " }\n", " }\n", "\n", " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", " if (comm_id in window.PyViz.comms) {\n", " return window.PyViz.comms[comm_id];\n", " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", " if (msg_handler) {\n", " comm.on_msg(msg_handler);\n", " }\n", " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", " comm.open();\n", " if (msg_handler) {\n", " comm.onMsg = msg_handler;\n", " }\n", " }\n", "\n", " window.PyViz.comms[comm_id] = comm;\n", " return comm;\n", " }\n", "\n", " window.PyViz.comm_manager = new JupyterCommManager();\n", " " ], "application/vnd.holoviews_load.v0+json": "function HoloViewsWidget() {\n}\n\nHoloViewsWidget.prototype.init_slider = function(init_val){\n if(this.load_json) {\n this.from_json()\n } else {\n this.update_cache();\n }\n}\n\nHoloViewsWidget.prototype.populate_cache = function(idx){\n this.cache[idx].innerHTML = this.frames[idx];\n if (this.embed) {\n delete this.frames[idx];\n }\n}\n\nHoloViewsWidget.prototype.process_error = function(msg){\n}\n\nHoloViewsWidget.prototype.from_json = function() {\n var data_url = this.json_path + this.id + '.json';\n $.getJSON(data_url, $.proxy(function(json_data) {\n this.frames = json_data;\n this.update_cache();\n this.update(0);\n }, this));\n}\n\nHoloViewsWidget.prototype.dynamic_update = function(current){\n if (current === undefined) {\n return\n }\n this.current = current;\n if (this.comm) {\n var msg = {comm_id: this.id+'_client', content: current}\n this.comm.send(msg);\n }\n}\n\nHoloViewsWidget.prototype.update_cache = function(force){\n var frame_len = Object.keys(this.frames).length;\n for (var i=0; i 0) {\n that.time = Date.now();\n that.dynamic_update(that.queue[that.queue.length-1]);\n that.queue = [];\n } else {\n that.wait = false;\n }\n if ((msg.msg_type == \"Ready\") && msg.content) {\n console.log(\"Python callback returned following output:\", msg.content);\n } else if (msg.msg_type == \"Error\") {\n console.log(\"Python failed with the following traceback:\", msg['traceback'])\n }\n }\n var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\n return comm\n }\n}\n\nHoloViewsWidget.prototype.process_msg = function(msg) {\n}\n\nfunction SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\n this.frames = frames;\n this.id = id;\n this.plot_id = plot_id;\n this.slider_ids = slider_ids;\n this.keyMap = keyMap\n this.current_frame = 0;\n this.current_vals = dim_vals;\n this.load_json = load_json;\n this.mode = mode;\n this.notFound = notFound;\n this.cached = cached;\n this.dynamic = dynamic;\n this.cache = {};\n this.json_path = json_path;\n this.init_slider(this.current_vals[0]);\n this.queue = [];\n this.wait = false;\n if (!this.cached || this.dynamic) {\n this.comm = this.init_comms();\n }\n}\n\nSelectionWidget.prototype = new HoloViewsWidget;\n\n\nSelectionWidget.prototype.get_key = function(current_vals) {\n var key = \"(\";\n for (var i=0; i Date.now()))) {\n this.queue.push(key);\n return\n }\n this.queue = [];\n this.time = Date.now();\n this.current_frame = key;\n this.wait = true;\n this.dynamic_update(key)\n } else if (key !== undefined) {\n this.update(key)\n }\n}\n\n\n/* Define the ScrubberWidget class */\nfunction ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\n this.slider_id = \"_anim_slider\" + id;\n this.loop_select_id = \"_anim_loop_select\" + id;\n this.id = id;\n this.plot_id = plot_id;\n this.interval = interval;\n this.current_frame = 0;\n this.direction = 0;\n this.dynamic = dynamic;\n this.timer = null;\n this.load_json = load_json;\n this.mode = mode;\n this.cached = cached;\n this.frames = frames;\n this.cache = {};\n this.length = num_frames;\n this.json_path = json_path;\n document.getElementById(this.slider_id).max = this.length - 1;\n this.init_slider(0);\n this.wait = false;\n this.queue = [];\n if (!this.cached || this.dynamic) {\n this.comm = this.init_comms()\n }\n}\n\nScrubberWidget.prototype = new HoloViewsWidget;\n\nScrubberWidget.prototype.set_frame = function(frame){\n this.current_frame = frame;\n var widget = document.getElementById(this.slider_id);\n if (widget === null) {\n this.pause_animation();\n return\n }\n widget.value = this.current_frame;\n if (this.dynamic || !this.cached) {\n if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\n this.queue.push(frame);\n return\n }\n this.queue = [];\n this.time = Date.now();\n this.wait = true;\n this.dynamic_update(frame)\n } else {\n this.update(frame)\n }\n}\n\nScrubberWidget.prototype.get_loop_state = function(){\n var button_group = document[this.loop_select_id].state;\n for (var i = 0; i < button_group.length; i++) {\n var button = button_group[i];\n if (button.checked) {\n return button.value;\n }\n }\n return undefined;\n}\n\n\nScrubberWidget.prototype.next_frame = function() {\n this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\n}\n\nScrubberWidget.prototype.previous_frame = function() {\n this.set_frame(Math.max(0, this.current_frame - 1));\n}\n\nScrubberWidget.prototype.first_frame = function() {\n this.set_frame(0);\n}\n\nScrubberWidget.prototype.last_frame = function() {\n this.set_frame(this.length - 1);\n}\n\nScrubberWidget.prototype.slower = function() {\n this.interval /= 0.7;\n if(this.direction > 0){this.play_animation();}\n else if(this.direction < 0){this.reverse_animation();}\n}\n\nScrubberWidget.prototype.faster = function() {\n this.interval *= 0.7;\n if(this.direction > 0){this.play_animation();}\n else if(this.direction < 0){this.reverse_animation();}\n}\n\nScrubberWidget.prototype.anim_step_forward = function() {\n if(this.current_frame < this.length - 1){\n this.next_frame();\n }else{\n var loop_state = this.get_loop_state();\n if(loop_state == \"loop\"){\n this.first_frame();\n }else if(loop_state == \"reflect\"){\n this.last_frame();\n this.reverse_animation();\n }else{\n this.pause_animation();\n this.last_frame();\n }\n }\n}\n\nScrubberWidget.prototype.anim_step_reverse = function() {\n if(this.current_frame > 0){\n this.previous_frame();\n } else {\n var loop_state = this.get_loop_state();\n if(loop_state == \"loop\"){\n this.last_frame();\n }else if(loop_state == \"reflect\"){\n this.first_frame();\n this.play_animation();\n }else{\n this.pause_animation();\n this.first_frame();\n }\n }\n}\n\nScrubberWidget.prototype.pause_animation = function() {\n this.direction = 0;\n if (this.timer){\n clearInterval(this.timer);\n this.timer = null;\n }\n}\n\nScrubberWidget.prototype.play_animation = function() {\n this.pause_animation();\n this.direction = 1;\n var t = this;\n if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\n}\n\nScrubberWidget.prototype.reverse_animation = function() {\n this.pause_animation();\n this.direction = -1;\n var t = this;\n if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\n}\n\nfunction extend(destination, source) {\n for (var k in source) {\n if (source.hasOwnProperty(k)) {\n destination[k] = source[k];\n }\n }\n return destination;\n}\n\nfunction update_widget(widget, values) {\n if (widget.hasClass(\"ui-slider\")) {\n widget.slider('option', {\n min: 0,\n max: values.length-1,\n dim_vals: values,\n value: 0,\n dim_labels: values\n })\n widget.slider('option', 'slide').call(widget, event, {value: 0})\n } else {\n widget.empty();\n for (var i=0; i\", {\n value: i,\n text: values[i]\n }))\n };\n widget.data('values', values);\n widget.data('value', 0);\n widget.trigger(\"change\");\n };\n}\n\nfunction init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\n dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\n // Slider JS Block START\n function loadcssfile(filename){\n var fileref=document.createElement(\"link\")\n fileref.setAttribute(\"rel\", \"stylesheet\")\n fileref.setAttribute(\"type\", \"text/css\")\n fileref.setAttribute(\"href\", filename)\n document.getElementsByTagName(\"head\")[0].appendChild(fileref)\n }\n loadcssfile(\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\");\n /* Check if jQuery and jQueryUI have been loaded\n otherwise load with require.js */\n var jQuery = window.jQuery,\n // check for old versions of jQuery\n oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\.[0-4](\\.|$)/),\n jquery_path = '',\n paths = {},\n noConflict;\n var jQueryUI = jQuery.ui;\n // check for jQuery\n if (!jQuery || oldjQuery) {\n // load if it's not available or doesn't meet min standards\n paths.jQuery = jQuery;\n noConflict = !!oldjQuery;\n } else {\n // register the current jQuery\n define('jquery', [], function() { return jQuery; });\n }\n if (!jQueryUI) {\n paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\n } else {\n define('jQueryUI', [], function() { return jQuery.ui; });\n }\n paths.underscore = UNDERSCORE_CDN.slice(null, -3);\n var jquery_require = {\n paths: paths,\n shim: {\n \"jQueryUI\": {\n exports:\"$\",\n deps: ['jquery']\n },\n \"underscore\": {\n exports: '_'\n }\n }\n }\n require.config(jquery_require);\n require([\"jQueryUI\", \"underscore\"], function(jUI, _){\n if (noConflict) $.noConflict(true);\n var vals = values;\n if (dynamic && vals.constructor === Array) {\n var default_value = parseFloat(value);\n var min = parseFloat(vals[0]);\n var max = parseFloat(vals[vals.length-1]);\n var wstep = step;\n var wlabels = [default_value];\n var init_label = default_value;\n } else {\n var min = 0;\n if (dynamic) {\n var max = Object.keys(vals).length - 1;\n var init_label = labels[value];\n var default_value = values[value];\n } else {\n var max = vals.length - 1;\n var init_label = labels[value];\n var default_value = value;\n }\n var wstep = 1;\n var wlabels = labels;\n }\n function adjustFontSize(text) {\n var width_ratio = (text.parent().width()/8)/text.val().length;\n var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\n text.css('font-size', size);\n }\n var slider = $('#_anim_widget'+id+'_'+dim);\n slider.slider({\n animate: \"fast\",\n min: min,\n max: max,\n step: wstep,\n value: default_value,\n dim_vals: vals,\n dim_labels: wlabels,\n next_vals: next_vals,\n slide: function(event, ui) {\n var vals = slider.slider(\"option\", \"dim_vals\");\n var next_vals = slider.slider(\"option\", \"next_vals\");\n var dlabels = slider.slider(\"option\", \"dim_labels\");\n if (dynamic) {\n var dim_val = ui.value;\n if (vals.constructor === Array) {\n var label = ui.value;\n } else {\n var label = dlabels[ui.value];\n }\n } else {\n var dim_val = vals[ui.value];\n var label = dlabels[ui.value];\n }\n var text = $('#textInput'+id+'_'+dim);\n text.val(label);\n adjustFontSize(text);\n HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\n if (Object.keys(next_vals).length > 0) {\n var new_vals = next_vals[dim_val];\n var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n update_widget(next_widget, new_vals);\n }\n }\n });\n slider.keypress(function(event) {\n if (event.which == 80 || event.which == 112) {\n var start = slider.slider(\"option\", \"value\");\n var stop = slider.slider(\"option\", \"max\");\n for (var i=start; i<=stop; i++) {\n var delay = i*delay;\n $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n var val = {value:i};\n slider.slider('value',i);\n slider.slider(\"option\", \"slide\")(null, val);\n }, slider), delay);}, slider)(i);\n }\n }\n if (event.which == 82 || event.which == 114) {\n var start = slider.slider(\"option\", \"value\");\n var stop = slider.slider(\"option\", \"min\");\n var count = 0;\n for (var i=start; i>=stop; i--) {\n var delay = count*delay;\n count = count + 1;\n $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\n var val = {value:i};\n slider.slider('value',i);\n slider.slider(\"option\", \"slide\")(null, val);\n }, slider), delay);}, slider)(i);\n }\n }\n });\n var textInput = $('#textInput'+id+'_'+dim)\n textInput.val(init_label);\n adjustFontSize(textInput);\n });\n}\n\nfunction init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\n var widget = $(\"#_anim_widget\"+id+'_'+dim);\n widget.data('values', vals)\n for (var i=0; i\", {\n value: val,\n text: labels[i]\n }));\n };\n widget.data(\"next_vals\", next_vals);\n widget.val(value);\n widget.on('change', function(event, ui) {\n if (dynamic) {\n var dim_val = parseInt(this.value);\n } else {\n var dim_val = $.data(this, 'values')[this.value];\n }\n var next_vals = $.data(this, \"next_vals\");\n if (Object.keys(next_vals).length > 0) {\n var new_vals = next_vals[dim_val];\n var next_widget = $('#_anim_widget'+id+'_'+next_dim);\n update_widget(next_widget, new_vals);\n }\n var widgets = HoloViews.index[plot_id]\n if (widgets) {\n widgets.set_frame(dim_val, dim_idx);\n }\n });\n}\n\n\nif (window.HoloViews === undefined) {\n window.HoloViews = {}\n window.PyViz = window.HoloViews\n} else if (window.PyViz === undefined) {\n window.PyViz = window.HoloViews\n}\n\n\nvar _namespace = {\n init_slider: init_slider,\n init_dropdown: init_dropdown,\n comms: {},\n comm_status: {},\n index: {},\n plot_index: {},\n kernels: {},\n receivers: {}\n}\n\nfor (var k in _namespace) {\n if (!(k in window.HoloViews)) {\n window.HoloViews[k] = _namespace[k];\n }\n}\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n HoloViews.plot_index[id] = Bokeh.index[id];\n } else {\n HoloViews.plot_index[id] = null;\n }\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n if ((id === undefined) || !(id in HoloViews.plot_index)) { return; }\n var comm = window.HoloViews.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete HoloViews.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n window.Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete HoloViews.comms[\"hv-extension-comm\"];\n window.HoloViews.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\t\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n\n// Define MPL specific subclasses\nfunction MPLSelectionWidget() {\n SelectionWidget.apply(this, arguments);\n}\n\nfunction MPLScrubberWidget() {\n ScrubberWidget.apply(this, arguments);\n}\n\n// Let them inherit from the baseclasses\nMPLSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\nMPLScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n\n// Define methods to override on widgets\nvar MPLMethods = {\n init_slider : function(init_val){\n if(this.load_json) {\n this.from_json()\n } else {\n this.update_cache();\n }\n if (this.dynamic | !this.cached | (this.current_vals === undefined)) {\n this.update(0)\n } else {\n this.set_frame(this.current_vals[0], 0)\n }\n },\n process_msg : function(msg) {\n var data = msg.content.data;\n this.frames[this.current] = data;\n this.update_cache(true);\n this.update(this.current);\n }\n}\n// Extend MPL widgets with backend specific methods\nextend(MPLSelectionWidget.prototype, MPLMethods);\nextend(MPLScrubberWidget.prototype, MPLMethods);\n\nwindow.HoloViews.MPLSelectionWidget = MPLSelectionWidget\nwindow.HoloViews.MPLScrubberWidget = MPLScrubberWidget\n\n// Define Bokeh specific subclasses\nfunction BokehSelectionWidget() {\n SelectionWidget.apply(this, arguments);\n}\n\nfunction BokehScrubberWidget() {\n ScrubberWidget.apply(this, arguments);\n}\n\n// Let them inherit from the baseclasses\nBokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\nBokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\n\n// Define methods to override on widgets\nvar BokehMethods = {\n update_cache : function(){\n for (var index in this.frames) {\n this.frames[index] = JSON.parse(this.frames[index]);\n }\n },\n update : function(current){\n if (current === undefined) {\n return;\n }\n var data = this.frames[current];\n if (data !== undefined) {\n if (data.root in HoloViews.plot_index) {\n var doc = HoloViews.plot_index[data.root].model.document;\n } else {\n var doc = Bokeh.index[data.root].model.document;\n }\n doc.apply_json_patch(data.content);\n }\n },\n init_comms: function() {\n if (Bokeh.protocol !== undefined) {\n this.receiver = new Bokeh.protocol.Receiver()\n } else {\n this.receiver = null;\n }\n return HoloViewsWidget.prototype.init_comms.call(this);\n },\n process_msg : function(msg) {\n if (this.plot_id in HoloViews.plot_index) {\n var doc = HoloViews.plot_index[this.plot_id].model.document;\n } else {\n var doc = Bokeh.index[this.plot_id].model.document;\n }\n if (this.receiver === null) { return }\n var receiver = this.receiver;\n if (msg.buffers.length > 0) {\n receiver.consume(msg.buffers[0].buffer)\n } else {\n receiver.consume(msg.content.data)\n }\n const comm_msg = receiver.message;\n if ((comm_msg != null) && (doc != null)) {\n doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\n }\n }\n}\n\n// Extend Bokeh widgets with backend specific methods\nextend(BokehSelectionWidget.prototype, BokehMethods);\nextend(BokehScrubberWidget.prototype, BokehMethods);\n\nwindow.HoloViews.BokehSelectionWidget = BokehSelectionWidget\nwindow.HoloViews.BokehScrubberWidget = BokehScrubberWidget\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n }\n\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n\n window.PyViz.comm_manager = new JupyterCommManager();\n " }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import holoviews as hv\n", "hv.extension('bokeh', 'matplotlib')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def sigmoid(x):\n", " return 1/(1 + np.exp(-x))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('346b8924-3699-4be6-8d1b-5cdc954c6c88')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"7cae0520-a804-41cf-9736-a8e4f5ff668d\":{\"roots\":{\"references\":[{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"346b8924-3699-4be6-8d1b-5cdc954c6c88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"05cfcb94-9e9d-46e2-acf8-f56b73d9b581\",\"type\":\"BasicTicker\"}},\"id\":\"4937b1d1-bf02-4fef-840e-358480a3f071\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"35183f3c-b19b-48cb-81e2-f259bd474d4c\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1a9daee1-af39-46de-b5ca-8caf825047ee\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"end\":5.0,\"reset_end\":5.0,\"reset_start\":-5.0,\"start\":-5.0},\"id\":\"c0a87ee3-8fcf-4c1f-973a-3ba97b59b8da\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"end\":0.9933071490757153,\"reset_end\":0.9933071490757153,\"reset_start\":0.0066928509242848554,\"start\":0.0066928509242848554},\"id\":\"e56f75e4-3176-4b15-8104-80d0b2aeb57a\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"7ddff0c2-deff-4c35-b8a7-f96ba6139af6\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2c5adb2f-1e07-4240-aa9a-ca93cf027c62\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"cb619f68-ef94-4b0e-a0a1-0efeebb35ba2\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"8562a3a8-6e99-4c02-a8c2-4413fececf21\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"5aa81a55-de9d-41c5-bef3-1810468888fe\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"8562a3a8-6e99-4c02-a8c2-4413fececf21\",\"type\":\"LinearAxis\"},{\"id\":\"cba9d934-0bd4-43c6-858e-c8de9d9b664f\",\"type\":\"Grid\"},{\"id\":\"5aa81a55-de9d-41c5-bef3-1810468888fe\",\"type\":\"LinearAxis\"},{\"id\":\"4937b1d1-bf02-4fef-840e-358480a3f071\",\"type\":\"Grid\"},{\"id\":\"6a2f5bac-fb4e-4630-bc31-96ab038910eb\",\"type\":\"BoxAnnotation\"},{\"id\":\"320d636f-002b-4111-af2a-34d74622e28e\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"29c22aec-4676-474c-a562-170c9716e297\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"8de55934-9148-401c-822e-f998d2b14be5\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"c0a87ee3-8fcf-4c1f-973a-3ba97b59b8da\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"67143906-4044-4d54-be0b-a12adabec2b3\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"e56f75e4-3176-4b15-8104-80d0b2aeb57a\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"cffdd100-9235-491e-8273-41197db5fed3\",\"type\":\"LinearScale\"}},\"id\":\"346b8924-3699-4be6-8d1b-5cdc954c6c88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c5d9e255-ca5c-4b4b-8a2e-ce2097db9de1\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"29c22aec-4676-474c-a562-170c9716e297\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"e2a37377-5353-4be5-a610-1d4a57b95a8f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"67143906-4044-4d54-be0b-a12adabec2b3\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"37edc848-ec85-4af2-b1b1-222d4f822c16\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"934299aa-f804-4f6f-b0b8-74efc1e5d278\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"c5d9e255-ca5c-4b4b-8a2e-ce2097db9de1\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"c1ac8aa6-4fdc-4e64-bff4-653dccc2e3c5\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"3bf900d6-1c84-424d-801f-cd3647468ca7\",\"type\":\"CDSView\"}},\"id\":\"320d636f-002b-4111-af2a-34d74622e28e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1a9daee1-af39-46de-b5ca-8caf825047ee\",\"type\":\"SaveTool\"},{\"id\":\"7ddff0c2-deff-4c35-b8a7-f96ba6139af6\",\"type\":\"PanTool\"},{\"id\":\"2c5adb2f-1e07-4240-aa9a-ca93cf027c62\",\"type\":\"WheelZoomTool\"},{\"id\":\"f815a40f-8f08-44ea-b0d8-c30f985c286e\",\"type\":\"BoxZoomTool\"},{\"id\":\"d6056d2a-7e08-4388-9140-69762bca67ca\",\"type\":\"ResetTool\"}]},\"id\":\"8de55934-9148-401c-822e-f998d2b14be5\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"934299aa-f804-4f6f-b0b8-74efc1e5d278\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"6a2f5bac-fb4e-4630-bc31-96ab038910eb\",\"type\":\"BoxAnnotation\"}},\"id\":\"f815a40f-8f08-44ea-b0d8-c30f985c286e\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"346b8924-3699-4be6-8d1b-5cdc954c6c88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5c238596-4f45-4301-a9b9-3c7bbd0a4258\",\"type\":\"BasicTicker\"}},\"id\":\"cba9d934-0bd4-43c6-858e-c8de9d9b664f\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAFMDMKXg5BS8TwJhT8HIKXhLAY31orA+NEcAvp+DlFLwQwPahsT401g/AjfWhsT40DsAkSZIkSZIMwLycgpdT8ArAVPByCl5OCcDrQ2N9aKwHwIKXU/ByCgbAGutDY31oBMCyPjTWh8YCwEmSJEmSJAHAwMspeDkF/7/wcgpeTsH7vyAa60Njffi/TsHLKXg59b98aKwPjfXxv1gfGutDY+2/uG3btm3b5r8QvJyCl1Pgv+AUvJyCl9O/gMb60Fgfur+AxvrQWB+6P+AUvJyCl9M/GLycgpdT4D+4bdu2bdvmP1gfGutDY+0/gGisD4318T9QwcspeDn1PyAa60Njffg/8HIKXk7B+z/Ayyl4OQX/P0qSJEmSJAFAsj401ofGAkAa60NjfWgEQISXU/ByCgZA7ENjfWisB0BU8HIKXk4JQLycgpdT8ApAJEmSJEmSDECM9aGxPjQOQPihsT401g9AMKfg5RS8EEBkfWisD40RQJhT8HIKXhJAzCl4OQUvE0AAAAAAAAAUQA==\",\"dtype\":\"float64\",\"shape\":[50]},\"y\":{\"__ndarray__\":\"jo9jffZpez9H87LZ5ciAP+GbWsPyi4Q/hpenMSwkiT9sA8Ugb7+OPwCi/99nypI/N5mqxhDzlj9q28LLywCcP3y2Ks/ZEKE/hQQjT9LFpD+7itlNaD6pP+7oEpT+na4/ZoMhLg2Gsj8EYve06Fm2P0wQuX5R4bo/SPa4l6MZwD8oTO7szzLDP9lyuvaPxcY/RlGI0I7Yyj9562b6a27PPzfmJdIzQtI/l3vCsKQI1T9cAVkMYwLYP6T0oMnSI9s/+kmMMWde3j8D2zlnzNDgP66FL5sWbuI/VX/Tec7+4z81wp6nrXvlP+QM7Rbm3uY/I0VmAWUk6D+v691L3EnpP0ljUQKcTuo/9WzEBEwz6z9vwhEal/nrP/fdKNDVo+w/vxNh6cI07T+TzztaPq/tP3HRvhYgFu4/VWciexls7j+4zw3borPuP5dUDWPy7u4/Jemhofkf7z82q8p5Z0jvP/ECAMGsae8/8ut8QwKF7z+jYTlPb5vvP5GV8jTQre8/MzSZaNy87z/iOAUTLMnvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"35183f3c-b19b-48cb-81e2-f259bd474d4c\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"fed82bd9-3b21-4c6e-8871-102ca9719fcd\",\"type\":\"UnionRenderers\"}},\"id\":\"37edc848-ec85-4af2-b1b1-222d4f822c16\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"cffdd100-9235-491e-8273-41197db5fed3\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"d6056d2a-7e08-4388-9140-69762bca67ca\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"x\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"e2a37377-5353-4be5-a610-1d4a57b95a8f\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"346b8924-3699-4be6-8d1b-5cdc954c6c88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5c238596-4f45-4301-a9b9-3c7bbd0a4258\",\"type\":\"BasicTicker\"}},\"id\":\"8562a3a8-6e99-4c02-a8c2-4413fececf21\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"fed82bd9-3b21-4c6e-8871-102ca9719fcd\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"5c238596-4f45-4301-a9b9-3c7bbd0a4258\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"6a2f5bac-fb4e-4630-bc31-96ab038910eb\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"y\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"cb619f68-ef94-4b0e-a0a1-0efeebb35ba2\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"346b8924-3699-4be6-8d1b-5cdc954c6c88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"05cfcb94-9e9d-46e2-acf8-f56b73d9b581\",\"type\":\"BasicTicker\"}},\"id\":\"5aa81a55-de9d-41c5-bef3-1810468888fe\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c1ac8aa6-4fdc-4e64-bff4-653dccc2e3c5\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"05cfcb94-9e9d-46e2-acf8-f56b73d9b581\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"37edc848-ec85-4af2-b1b1-222d4f822c16\",\"type\":\"ColumnDataSource\"}},\"id\":\"3bf900d6-1c84-424d-801f-cd3647468ca7\",\"type\":\"CDSView\"}],\"root_ids\":[\"346b8924-3699-4be6-8d1b-5cdc954c6c88\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"7cae0520-a804-41cf-9736-a8e4f5ff668d\",\"roots\":{\"346b8924-3699-4be6-8d1b-5cdc954c6c88\":\"a009ec79-fb66-4a58-9b2e-e5cf69244977\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Curve [x] (y)" ] }, "execution_count": 8, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "346b8924-3699-4be6-8d1b-5cdc954c6c88" } }, "output_type": "execute_result" } ], "source": [ "x = np.linspace(-5, 5)\n", "hv.Curve((x, sigmoid(x)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define a sigmoid that goes from 0 to 1." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "normalized_sigmoid = lambda s: sigmoid(-5 + s*10) - sigmoid(-5)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('eed067b5-e555-44ca-a367-26d6d212c764')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"66ab9b95-d02c-4ef7-909e-e01c3fccfe5a\":{\"roots\":{\"references\":[{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"acf06b87-191b-433c-8449-f0cd8b83bca6\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"0773a634-ccc6-4dc2-9159-4011adcd24ea\",\"type\":\"SaveTool\"},{\"id\":\"d0e0fb19-602d-45bd-b63d-2e8540207e15\",\"type\":\"PanTool\"},{\"id\":\"31acad12-a22f-446c-994f-158f68f7c5ca\",\"type\":\"WheelZoomTool\"},{\"id\":\"d3913d88-4b5a-4081-8621-65f43f5b6ac1\",\"type\":\"BoxZoomTool\"},{\"id\":\"5f62f582-7106-405e-8f12-b1e6ede79256\",\"type\":\"ResetTool\"}]},\"id\":\"26c5ef65-b580-4a5b-a063-8d33183de9be\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis_label\":\"production\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"d9fcb570-5297-41dd-acfc-f4337b9f8089\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"eed067b5-e555-44ca-a367-26d6d212c764\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"89877abe-35d1-4923-940e-468b7be99f02\",\"type\":\"BasicTicker\"}},\"id\":\"c437c830-9e1d-47d8-857d-7a68c4ae3e4c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"90ff495e-c1b6-4866-89c1-90ce08a904ab\",\"type\":\"ColumnDataSource\"}},\"id\":\"63fc937b-572e-4756-bd42-3426e038c453\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"5f62f582-7106-405e-8f12-b1e6ede79256\",\"type\":\"ResetTool\"},{\"attributes\":{\"plot\":null,\"text\":\"production function\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"af5bc6db-78c7-4796-ada5-1bde13353e0e\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"d9fcb570-5297-41dd-acfc-f4337b9f8089\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"19d1ee16-239f-4c3e-9f7b-80ec7b30f09e\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"eed067b5-e555-44ca-a367-26d6d212c764\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"604dba32-51c9-4023-b0f7-980625453abc\",\"type\":\"BasicTicker\"}},\"id\":\"49a6b77c-e96c-46ff-b65e-d7b74ebd770b\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"41c5d6b2-4873-42a8-812f-98a0766ae17b\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production\":{\"__ndarray__\":\"AAAAAAAAAAAAXAnYVJ9YP2hQoxLeW2s/fp/r5WHedj+lOxPicwqBPzl8TYHU34c/VLVRJ5MYkD+C92ksTiaVPxSJ/P41R5s/k5J2f5NYoT/GGC1+KdGlP/l2ZsS/MKs/bUpLxm3PsD8LKSFNSaO0P1DX4hayKrk/kbObx6d8vj+qLwM5gFfCP11Wz0JA6sU/xzSdHD/9yT/7zntGHJPOP/ZXMPiL1NE/We3M1vya1D8Zc2Myu5TXP2Nmq+8qtto/vLuWV7/w3T/kEz96+JngP4++NK5CN+I/M7jYjPrH4z8U+6O62UTlP8VF8ikSqOY/AX5rFJHt5z+PJONeCBPpPymcVhXIF+o/1qXJF3j86j9Q+xYtw8LrP9gWLuMBbew/oExm/O797D90CEFtanjtP1IKxClM3+0/NKAnjkU17j+XCBPuznzuP3iNEnYeuO4/BiKntCXp7j8X5M+MkxHvP9I7BdTYMu8/0ySCVi5O7z+Emj5im2TvP3LO90f8du8/FG2eewiG7z/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"99249735-367a-4bd3-8bd6-12d46c0ce1b5\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"08e1732e-9e38-4e17-a362-11451a7ac755\",\"type\":\"UnionRenderers\"}},\"id\":\"90ff495e-c1b6-4866-89c1-90ce08a904ab\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"90ff495e-c1b6-4866-89c1-90ce08a904ab\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"75090e3c-af64-4911-9cff-ef6af856b013\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"ce77f4fb-2d5c-4a8a-9731-3134ec3263b7\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"acf06b87-191b-433c-8449-f0cd8b83bca6\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"63fc937b-572e-4756-bd42-3426e038c453\",\"type\":\"CDSView\"}},\"id\":\"e7c32818-5a98-48d0-9a3a-4b486d2ca0df\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"eed067b5-e555-44ca-a367-26d6d212c764\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"89877abe-35d1-4923-940e-468b7be99f02\",\"type\":\"BasicTicker\"}},\"id\":\"dfad7001-ea98-43d3-97b1-d20650643231\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"49a6b77c-e96c-46ff-b65e-d7b74ebd770b\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"c437c830-9e1d-47d8-857d-7a68c4ae3e4c\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"49a6b77c-e96c-46ff-b65e-d7b74ebd770b\",\"type\":\"LinearAxis\"},{\"id\":\"1e76f8d0-1c05-4919-ac97-df6d3876a633\",\"type\":\"Grid\"},{\"id\":\"c437c830-9e1d-47d8-857d-7a68c4ae3e4c\",\"type\":\"LinearAxis\"},{\"id\":\"dfad7001-ea98-43d3-97b1-d20650643231\",\"type\":\"Grid\"},{\"id\":\"e4e28e97-4f79-45eb-a5e1-ca4dc2054a74\",\"type\":\"BoxAnnotation\"},{\"id\":\"b1caa5f5-0e26-4825-be94-372b66576da1\",\"type\":\"Legend\"},{\"id\":\"e7c32818-5a98-48d0-9a3a-4b486d2ca0df\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"af5bc6db-78c7-4796-ada5-1bde13353e0e\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"26c5ef65-b580-4a5b-a063-8d33183de9be\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"614c664a-3586-432d-82d0-b05ac914dd3b\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"41c5d6b2-4873-42a8-812f-98a0766ae17b\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"7f62bda7-b83c-42ab-abab-b3f2a197c898\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"9ee470c6-09f4-49c3-b48f-0645b456eadb\",\"type\":\"LinearScale\"}},\"id\":\"eed067b5-e555-44ca-a367-26d6d212c764\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"89877abe-35d1-4923-940e-468b7be99f02\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"31acad12-a22f-446c-994f-158f68f7c5ca\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"614c664a-3586-432d-82d0-b05ac914dd3b\",\"type\":\"Range1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"e4e28e97-4f79-45eb-a5e1-ca4dc2054a74\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"08e1732e-9e38-4e17-a362-11451a7ac755\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"9ee470c6-09f4-49c3-b48f-0645b456eadb\",\"type\":\"LinearScale\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"eed067b5-e555-44ca-a367-26d6d212c764\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b1caa5f5-0e26-4825-be94-372b66576da1\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"99249735-367a-4bd3-8bd6-12d46c0ce1b5\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"d0e0fb19-602d-45bd-b63d-2e8540207e15\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"0773a634-ccc6-4dc2-9159-4011adcd24ea\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"604dba32-51c9-4023-b0f7-980625453abc\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"19d1ee16-239f-4c3e-9f7b-80ec7b30f09e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"ce77f4fb-2d5c-4a8a-9731-3134ec3263b7\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"75090e3c-af64-4911-9cff-ef6af856b013\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"e4e28e97-4f79-45eb-a5e1-ca4dc2054a74\",\"type\":\"BoxAnnotation\"}},\"id\":\"d3913d88-4b5a-4081-8621-65f43f5b6ac1\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"eed067b5-e555-44ca-a367-26d6d212c764\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"604dba32-51c9-4023-b0f7-980625453abc\",\"type\":\"BasicTicker\"}},\"id\":\"1e76f8d0-1c05-4919-ac97-df6d3876a633\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"end\":0.9866142981514304,\"reset_end\":0.9866142981514304,\"reset_start\":0.0},\"id\":\"7f62bda7-b83c-42ab-abab-b3f2a197c898\",\"type\":\"Range1d\"}],\"root_ids\":[\"eed067b5-e555-44ca-a367-26d6d212c764\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"66ab9b95-d02c-4ef7-909e-e01c3fccfe5a\",\"roots\":{\"eed067b5-e555-44ca-a367-26d6d212c764\":\"3c9be6d5-c9a8-48b0-9b2b-9eb03ee1e629\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Curve [labor] (production)" ] }, "execution_count": 75, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "eed067b5-e555-44ca-a367-26d6d212c764" } }, "output_type": "execute_result" } ], "source": [ "s = np.linspace(0, 1)\n", "production = hv.Curve((s, normalized_sigmoid(s)), kdims='labor', vdims='production', label='production function')\n", "production" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's derive the numerical gradient of this to get the marginal product." ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('8e690874-49f8-43e0-8b9d-62422d0318d8')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"029389a7-88f0-4d78-91ac-db53ba1252a6\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"9e2d1383-9fa8-4394-8c57-11608e7a2625\",\"type\":\"ResetTool\"},{\"attributes\":{\"data_source\":{\"id\":\"550dcf2c-8efc-44c7-8816-32c27cc78515\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"de889ecb-7bf0-45f4-badc-cda4f9971b36\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"01eee3c1-fa49-45d1-ba34-7c067e3b5949\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"29ea7e8f-f2be-472f-b4be-efe288ef82bc\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"4ac3eb92-73a2-482b-9841-f8c88c499016\",\"type\":\"CDSView\"}},\"id\":\"39abe236-0174-46aa-921f-b4e253eccbb2\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"86aad9b0-fb20-4594-8412-cb6bce2e190b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"550dcf2c-8efc-44c7-8816-32c27cc78515\",\"type\":\"ColumnDataSource\"}},\"id\":\"4ac3eb92-73a2-482b-9841-f8c88c499016\",\"type\":\"CDSView\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"8e690874-49f8-43e0-8b9d-62422d0318d8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e1bd8b44-1ea8-4c53-9d79-627c64082e45\",\"type\":\"BasicTicker\"}},\"id\":\"f843db18-d90a-44c1-87fb-2c6d8851a549\",\"type\":\"Grid\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"8e690874-49f8-43e0-8b9d-62422d0318d8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7f4371d7-e295-480c-af2f-9beaafd0e5c3\",\"type\":\"BasicTicker\"}},\"id\":\"fee5661c-5706-49e5-85db-d0761aa02b5d\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"86aad9b0-fb20-4594-8412-cb6bce2e190b\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"8e690874-49f8-43e0-8b9d-62422d0318d8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"7f4371d7-e295-480c-af2f-9beaafd0e5c3\",\"type\":\"BasicTicker\"}},\"id\":\"9fbac953-551c-4358-aecc-e89e0c4e11f0\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"8516f5c0-123a-43d8-88e6-b1b25f5f57fd\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"8e690874-49f8-43e0-8b9d-62422d0318d8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e1bd8b44-1ea8-4c53-9d79-627c64082e45\",\"type\":\"BasicTicker\"}},\"id\":\"e507a88b-fde1-40a8-bcc8-5cec02818d83\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"e1bd8b44-1ea8-4c53-9d79-627c64082e45\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1a1d676b-7697-468e-8dae-e6b8e95b2473\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"7f4371d7-e295-480c-af2f-9beaafd0e5c3\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3f40e6be-0788-4a64-bddd-eb8f5eb1e7fb\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"d94f983c-e797-46c3-bda4-0dfbd46d83eb\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4633d8d0-02cc-4488-b3c5-f9a39378bfdf\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"cCpn9fzZsj+QCUUGVvK0PwI3XW2Hl7k/Gt0V3qw9vz8bQPZxegzDP/3HPDZBM8c/x98FApI2zD8+lD1aaR/RP+TdWAKcvNQ/+Gn3Y4QL2T95qx6TBybeP/+FEab4EuI/had412qR5T94H9A2gZfpPztIF1exKe4/R2iO+5ei8T+HjfTig270P6mvB5mYa/c/ZDFAyyGF+j8iqYYISJ79P/EB5gVjSQBAHIM8opCcAUCvUiksPbMCQHQO7bHMeQNARnDFbi7hA0A9cMVuLuEDQGQO7bHMeQNAr1IpLD2zAkAfgzyikJwBQOwB5gVjSQBAK6mGCEie/T9rMUDLIYX6P6avB5mYa/c/no304oNu9D9ZaI77l6LxPylIF1exKe4/bx/QNoGX6T+Jp3jXapHlP+CFEab4EuI/Nqsekwcm3j8FavdjhAvZPz/eWAKcvNQ/b5Q9Wmkf0T8Z4AUCkjbMP/nHPDZBM8c/JED2cXoMwz+93RXerD2/P0E2XW2Hl7k/BApFBlbytD/4K2f1/NmyPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"4633d8d0-02cc-4488-b3c5-f9a39378bfdf\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"f4f8cda6-a92c-495e-b986-1acbf5131abb\",\"type\":\"UnionRenderers\"}},\"id\":\"550dcf2c-8efc-44c7-8816-32c27cc78515\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"end\":2.4849518445971936,\"reset_end\":2.4849518445971936,\"reset_start\":0.07363873473438232,\"start\":0.07363873473438232},\"id\":\"ba103d24-6cbe-4322-ac42-1779549a5799\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"e425c309-3d58-4220-8cce-505d739c4e92\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"f515d84d-653e-4d2d-b36b-e287f9d2c611\",\"type\":\"BoxAnnotation\"}},\"id\":\"36bca507-fc65-46ce-9d39-5a25004219bb\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"8516f5c0-123a-43d8-88e6-b1b25f5f57fd\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"197fe6b3-5ff4-4cd9-8e76-c300dff0ea52\",\"type\":\"Range1d\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"0c965936-4f7e-4469-a64a-4dd721a1a850\",\"type\":\"SaveTool\"},{\"id\":\"3f40e6be-0788-4a64-bddd-eb8f5eb1e7fb\",\"type\":\"PanTool\"},{\"id\":\"1a1d676b-7697-468e-8dae-e6b8e95b2473\",\"type\":\"WheelZoomTool\"},{\"id\":\"36bca507-fc65-46ce-9d39-5a25004219bb\",\"type\":\"BoxZoomTool\"},{\"id\":\"9e2d1383-9fa8-4394-8c57-11608e7a2625\",\"type\":\"ResetTool\"}]},\"id\":\"730f722b-0c6f-4887-9d05-166c88815ef8\",\"type\":\"Toolbar\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"8e690874-49f8-43e0-8b9d-62422d0318d8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"3aaeccad-f7b0-40e3-a67a-0c74fc38c26b\",\"type\":\"Legend\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"f515d84d-653e-4d2d-b36b-e287f9d2c611\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"01eee3c1-fa49-45d1-ba34-7c067e3b5949\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"29ea7e8f-f2be-472f-b4be-efe288ef82bc\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"marginal production\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"f081a46f-ac95-4a94-b3cb-221a5f460b9c\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"f4f8cda6-a92c-495e-b986-1acbf5131abb\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"0c965936-4f7e-4469-a64a-4dd721a1a850\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"de889ecb-7bf0-45f4-badc-cda4f9971b36\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"e507a88b-fde1-40a8-bcc8-5cec02818d83\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"9fbac953-551c-4358-aecc-e89e0c4e11f0\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"e507a88b-fde1-40a8-bcc8-5cec02818d83\",\"type\":\"LinearAxis\"},{\"id\":\"f843db18-d90a-44c1-87fb-2c6d8851a549\",\"type\":\"Grid\"},{\"id\":\"9fbac953-551c-4358-aecc-e89e0c4e11f0\",\"type\":\"LinearAxis\"},{\"id\":\"fee5661c-5706-49e5-85db-d0761aa02b5d\",\"type\":\"Grid\"},{\"id\":\"f515d84d-653e-4d2d-b36b-e287f9d2c611\",\"type\":\"BoxAnnotation\"},{\"id\":\"3aaeccad-f7b0-40e3-a67a-0c74fc38c26b\",\"type\":\"Legend\"},{\"id\":\"39abe236-0174-46aa-921f-b4e253eccbb2\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"f081a46f-ac95-4a94-b3cb-221a5f460b9c\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"730f722b-0c6f-4887-9d05-166c88815ef8\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"197fe6b3-5ff4-4cd9-8e76-c300dff0ea52\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"d94f983c-e797-46c3-bda4-0dfbd46d83eb\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"ba103d24-6cbe-4322-ac42-1779549a5799\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"e425c309-3d58-4220-8cce-505d739c4e92\",\"type\":\"LinearScale\"}},\"id\":\"8e690874-49f8-43e0-8b9d-62422d0318d8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}],\"root_ids\":[\"8e690874-49f8-43e0-8b9d-62422d0318d8\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"029389a7-88f0-4d78-91ac-db53ba1252a6\",\"roots\":{\"8e690874-49f8-43e0-8b9d-62422d0318d8\":\"987c218f-5114-494b-9012-1b8e23196544\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Curve [labor] (production per labor unit)" ] }, "execution_count": 76, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "8e690874-49f8-43e0-8b9d-62422d0318d8" } }, "output_type": "execute_result" } ], "source": [ "marginal_product = hv.Curve((s, np.gradient(production.data.production, (s[1] - s[0]))), kdims='labor', vdims='production per labor unit', label='marginal production')\n", "marginal_product" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And let's also compute the average production per unit of labor." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('75a749c7-0b77-4ba1-8e18-cd1462b04251')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"cf585300-4e3a-4635-8a4f-3f9435fe2aa6\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"a02db39c-704a-458b-8b3a-37535301587a\",\"type\":\"Range1d\"},{\"attributes\":{\"callback\":null,\"end\":1.2522009149191873,\"reset_end\":1.2522009149191873,\"reset_start\":0.07363873473438232,\"start\":0.07363873473438232},\"id\":\"ad1edb6e-5572-4f42-bdf5-61ccc3c23acd\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"ed27e199-aa5f-4bfc-8059-6746c5ade646\",\"type\":\"Selection\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"75a749c7-0b77-4ba1-8e18-cd1462b04251\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cb0abbd4-17e7-4d20-afba-2ce65c06d710\",\"type\":\"BasicTicker\"}},\"id\":\"50be77c0-c79a-442f-a56d-3aa0e2b50867\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"22320ba5-84e6-4adc-9978-e91e6a2418ac\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"ae1d4a47-63ba-4313-a09c-a2950d324748\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"17688a7a-0c05-4919-9aaf-a2c9cbb16ff9\",\"type\":\"LinearScale\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"75a749c7-0b77-4ba1-8e18-cd1462b04251\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"fe592c85-cb9c-4e02-8b46-1c11a8827b4b\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"5b474644-9f37-4308-90be-150852de008c\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3b147e7b-ac75-46e3-bfbf-a3ee7824fa01\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"2b2b4003-0482-491c-9dd7-098911a594be\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"75a749c7-0b77-4ba1-8e18-cd1462b04251\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1070dea3-8b32-46a0-9490-c36d69e17e81\",\"type\":\"BasicTicker\"}},\"id\":\"15f10464-3258-4de2-8d75-40579ec72a46\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"030ff9f2-5c15-49fe-b992-08f5c1c16206\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1070dea3-8b32-46a0-9490-c36d69e17e81\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"84e38abf-61a5-47a4-aee9-a6ec5b59f7b0\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"15f10464-3258-4de2-8d75-40579ec72a46\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"84e38abf-61a5-47a4-aee9-a6ec5b59f7b0\",\"type\":\"LinearAxis\"},{\"id\":\"50be77c0-c79a-442f-a56d-3aa0e2b50867\",\"type\":\"Grid\"},{\"id\":\"15f10464-3258-4de2-8d75-40579ec72a46\",\"type\":\"LinearAxis\"},{\"id\":\"30af9b50-c6bd-4ea1-9d90-16bef43fe164\",\"type\":\"Grid\"},{\"id\":\"a2876afa-de80-497c-a4d9-3691974fda2c\",\"type\":\"BoxAnnotation\"},{\"id\":\"fe592c85-cb9c-4e02-8b46-1c11a8827b4b\",\"type\":\"Legend\"},{\"id\":\"7630253c-9d82-443b-bdd7-8e24461e8ade\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"33a81d69-43c9-4072-82f4-f5db703a3021\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"a243fd29-6083-45c7-8e4f-6167c26f8c4f\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"a02db39c-704a-458b-8b3a-37535301587a\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"17688a7a-0c05-4919-9aaf-a2c9cbb16ff9\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"ad1edb6e-5572-4f42-bdf5-61ccc3c23acd\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"030ff9f2-5c15-49fe-b992-08f5c1c16206\",\"type\":\"LinearScale\"}},\"id\":\"75a749c7-0b77-4ba1-8e18-cd1462b04251\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"22320ba5-84e6-4adc-9978-e91e6a2418ac\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"75a749c7-0b77-4ba1-8e18-cd1462b04251\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cb0abbd4-17e7-4d20-afba-2ce65c06d710\",\"type\":\"BasicTicker\"}},\"id\":\"84e38abf-61a5-47a4-aee9-a6ec5b59f7b0\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"274ed1b3-d332-4c3e-82b7-e48e3f3b9fc1\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2b2b4003-0482-491c-9dd7-098911a594be\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"75a749c7-0b77-4ba1-8e18-cd1462b04251\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"1070dea3-8b32-46a0-9490-c36d69e17e81\",\"type\":\"BasicTicker\"}},\"id\":\"30af9b50-c6bd-4ea1-9d90-16bef43fe164\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"d60e9796-7a21-4254-8a4f-4e47a670c651\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3e286e23-4138-4efc-b99d-06d38c788893\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"ea5d8878-5573-4d35-bb0d-725ee91355dc\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"a2876afa-de80-497c-a4d9-3691974fda2c\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"AAAAAAAA+P9wKmf1/NmyP5AJRQZW8rQ/JohgRVlYtz9Vcy1yARi6P5QeMuv9Pr0/cb54jWtuwD+SuNxmhIHCP/RYOVeF4sQ/ZYAoGB6cxz+NcSrU0rnKPyKQQ0m+R84/pYYXZRUp0T/pF+k5e3LTP2Z8BtRbBdY/ptJpSc3l2D/94ExX/BXcP6QphZxcld8/JFJAZeev4T8VgnEtbbbjPyjS1NyR1+U/k7+Z+iYK6D9010syuULqPz5RIJsidOw/+zS//m2Q7j+n78Kg+ETwP7kpFOk5KvE/aCLOfxfz8T+ye0+DPpzyP0opZ1gPJPM/YB6t0IuK8z8wxrtCG9HzP5BPVjA1+vM/RpaZ0wMJ9D9jgEGkDAH0PzJDoLjn5fM/JvQawQm78z9pQPBqoIPzP7XrMJR+QvM/zFp7uBT68j/dDtLxcazyP0VnxmVKW/I/hH5hqQAI8j/eDSlZsLPxP1AB4Ls4X/E/3ztSvUYL8T/dV6HjXbjwPxYinxrgZvA/WDJuVBQX8D/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"ed27e199-aa5f-4bfc-8059-6746c5ade646\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"3b147e7b-ac75-46e3-bfbf-a3ee7824fa01\",\"type\":\"UnionRenderers\"}},\"id\":\"fd272e7a-99e7-4914-b656-8da8d4235084\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"fd272e7a-99e7-4914-b656-8da8d4235084\",\"type\":\"ColumnDataSource\"}},\"id\":\"aa2757da-d58f-43d3-970f-cc6135fc53f3\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"a2876afa-de80-497c-a4d9-3691974fda2c\",\"type\":\"BoxAnnotation\"}},\"id\":\"96fb7ee6-510b-4537-bf73-1af45467c826\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"ea5d8878-5573-4d35-bb0d-725ee91355dc\",\"type\":\"SaveTool\"},{\"id\":\"3e286e23-4138-4efc-b99d-06d38c788893\",\"type\":\"PanTool\"},{\"id\":\"5b474644-9f37-4308-90be-150852de008c\",\"type\":\"WheelZoomTool\"},{\"id\":\"96fb7ee6-510b-4537-bf73-1af45467c826\",\"type\":\"BoxZoomTool\"},{\"id\":\"274ed1b3-d332-4c3e-82b7-e48e3f3b9fc1\",\"type\":\"ResetTool\"}]},\"id\":\"a243fd29-6083-45c7-8e4f-6167c26f8c4f\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"cb0abbd4-17e7-4d20-afba-2ce65c06d710\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"average production\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"33a81d69-43c9-4072-82f4-f5db703a3021\",\"type\":\"Title\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"7934bdba-357d-43d8-aa3d-3b0d91ac349b\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"fd272e7a-99e7-4914-b656-8da8d4235084\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"7934bdba-357d-43d8-aa3d-3b0d91ac349b\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"d60e9796-7a21-4254-8a4f-4e47a670c651\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"ae1d4a47-63ba-4313-a09c-a2950d324748\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"aa2757da-d58f-43d3-970f-cc6135fc53f3\",\"type\":\"CDSView\"}},\"id\":\"7630253c-9d82-443b-bdd7-8e24461e8ade\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"75a749c7-0b77-4ba1-8e18-cd1462b04251\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"cf585300-4e3a-4635-8a4f-3f9435fe2aa6\",\"roots\":{\"75a749c7-0b77-4ba1-8e18-cd1462b04251\":\"efbff01d-1b79-48dd-9b5f-ffd9a292f602\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Curve [labor] (production per labor unit)" ] }, "execution_count": 77, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "75a749c7-0b77-4ba1-8e18-cd1462b04251" } }, "output_type": "execute_result" } ], "source": [ "average_product = hv.Curve((s, production.data.production / s), kdims='labor', vdims='production per labor unit', label='average production').redim.range(average_production=(0, 1.3))\n", "average_product" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('93f72638-d8bd-4be6-8106-f66cc6e1c7fc')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"02f4bdb3-4c27-4585-92a5-72a6404e4007\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"42ee7114-2d7c-4eaf-bf3b-51816b2f1f75\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"780ec043-a846-43e8-aed9-701604af2aee\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"91d60818-fa8e-4823-893d-d00d7430ef0a\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"be651108-93ed-4dab-ac98-79fcf0a230fd\",\"type\":\"BasicTicker\"}},\"id\":\"59364c14-f5da-4c7c-8464-098aaae7f84b\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"a5957e01-d44c-4cf3-90b1-92bb75f4f887\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"4c97b511-040f-47b8-943b-7921b99ac30a\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"ca403366-26d2-4630-8863-ef706159921e\",\"type\":\"BoxAnnotation\"}},\"id\":\"018d3b52-671f-4776-aab3-67b91e4a9f57\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"cc6a1e5f-1032-4d54-a63d-bed0e0bd3abe\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"7fc924ad-eceb-4e7f-98fc-f83685a1f3d9\",\"type\":\"CrosshairTool\"},{\"attributes\":{},\"id\":\"be651108-93ed-4dab-ac98-79fcf0a230fd\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"be651108-93ed-4dab-ac98-79fcf0a230fd\",\"type\":\"BasicTicker\"}},\"id\":\"8be55fec-4f13-4f69-a3f0-54e5136492e9\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"c37b86ef-655b-4314-9271-aa208d4576cb\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"end\":0.9866142981514304,\"reset_end\":0.9866142981514304,\"reset_start\":0.0},\"id\":\"d317be6e-9849-4754-b2b9-85f113083ef4\",\"type\":\"Range1d\"},{\"attributes\":{\"data_source\":{\"id\":\"35e36f0a-1a07-4308-aff4-bbf094517695\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1ccd33bf-dc61-4d90-beee-e56758cc633f\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"b84df3d2-5233-46a5-84ce-2c2c4348e892\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"e17cf315-8405-4a8d-a59b-9011a4ce0ce4\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"9e61d119-12f1-47e7-b9cb-baada854a635\",\"type\":\"CDSView\"}},\"id\":\"2df15b27-3bd7-4098-8e83-79a3aacf7c62\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"91d60818-fa8e-4823-893d-d00d7430ef0a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"67953cf4-08c3-43c7-8b34-bf72138bce15\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"d10e8105-46d1-4e85-a18f-cb179d75eae0\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"00419b7d-2ae7-43db-ba72-47ca83427ffa\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"6d6dde8e-894e-47d9-9672-e90da0b4931c\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":500,\"renderers\":[{\"id\":\"00419b7d-2ae7-43db-ba72-47ca83427ffa\",\"type\":\"LinearAxis\"},{\"id\":\"ab2d1971-1992-4a37-af67-5af90ce85db9\",\"type\":\"Grid\"},{\"id\":\"6d6dde8e-894e-47d9-9672-e90da0b4931c\",\"type\":\"LinearAxis\"},{\"id\":\"dafe4906-bf7a-42ad-90ba-5ae5fee3744f\",\"type\":\"Grid\"},{\"id\":\"53a0b7f6-599b-4660-a47d-8f9bb933b0d2\",\"type\":\"BoxAnnotation\"},{\"id\":\"bd15d36c-f58e-430a-b822-aa888ad977ae\",\"type\":\"Legend\"},{\"id\":\"52555f31-995a-4481-89da-a2b4cd9c5cdc\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"37c1f991-a2ef-410d-818b-c0e079baeeda\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"ecd09454-589e-4072-b971-62f085b54e6a\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"42ee7114-2d7c-4eaf-bf3b-51816b2f1f75\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"f65a11ae-ad00-4340-b335-e697ce45185e\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"d317be6e-9849-4754-b2b9-85f113083ef4\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"20379344-7189-4ac8-9937-3009815bf748\",\"type\":\"LinearScale\"}},\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"children\":[{\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"0d4bea7f-80d0-4ad0-af60-1c69471f1108\",\"type\":\"Row\"},{\"attributes\":{},\"id\":\"2bf0b181-ce7c-4efd-9d3c-c024ac3f8dc8\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"children\":[{\"id\":\"97230423-53c0-45a6-b151-044e6c3526b3\",\"type\":\"ToolbarBox\"},{\"id\":\"ed6107f1-c050-4f6b-8227-35361759e454\",\"type\":\"Column\"}]},\"id\":\"93f72638-d8bd-4be6-8106-f66cc6e1c7fc\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"1796adc5-7852-4a01-a2ea-788645bba127\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"ca403366-26d2-4630-8863-ef706159921e\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"e17cf315-8405-4a8d-a59b-9011a4ce0ce4\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"cd9a1483-a376-4242-ac7e-25e809d27875\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"b84df3d2-5233-46a5-84ce-2c2c4348e892\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"f2e18a83-6084-4822-9f40-f07440cd27ff\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"de21ceca-61de-427c-841c-1cec8fdd1fe3\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1dafb922-7d63-4264-bb0e-b0a1728c3aa9\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"9d90279b-d032-4a13-a138-d8b9f757e0f4\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"926643d4-3ee3-4753-be10-2a981b1f08a9\",\"type\":\"CDSView\"}},\"id\":\"52555f31-995a-4481-89da-a2b4cd9c5cdc\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"a7c7c0dc-02a3-4b1e-9319-db7f29b5c8fc\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"1ccd33bf-dc61-4d90-beee-e56758cc633f\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"b5542894-70a1-4fac-8b42-25b64957ffb5\",\"type\":\"Selection\"},{\"attributes\":{\"children\":[{\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"f8f0dad5-565b-4faf-97d8-cd9581708d04\",\"type\":\"Row\"},{\"attributes\":{},\"id\":\"eaa1ca1c-33a2-4959-a79a-9dfe247798f7\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"f2e18a83-6084-4822-9f40-f07440cd27ff\",\"type\":\"ColumnDataSource\"}},\"id\":\"926643d4-3ee3-4753-be10-2a981b1f08a9\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"d74828e2-d9dc-4d56-a4c7-84849bea186d\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"1dafb922-7d63-4264-bb0e-b0a1728c3aa9\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"35e36f0a-1a07-4308-aff4-bbf094517695\",\"type\":\"ColumnDataSource\"}},\"id\":\"9e61d119-12f1-47e7-b9cb-baada854a635\",\"type\":\"CDSView\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"c37b86ef-655b-4314-9271-aa208d4576cb\",\"type\":\"SaveTool\"},{\"id\":\"dfd8b45b-7280-49c6-b78d-c7828e701e7e\",\"type\":\"PanTool\"},{\"id\":\"762f6321-b7cf-43b9-937e-4ab37cf42da8\",\"type\":\"WheelZoomTool\"},{\"id\":\"d0651e6c-fde4-4f3c-8896-a7a1921d34de\",\"type\":\"BoxZoomTool\"},{\"id\":\"a5957e01-d44c-4cf3-90b1-92bb75f4f887\",\"type\":\"ResetTool\"},{\"id\":\"9269777f-c94b-4a09-aaeb-2dcc3f6b34fb\",\"type\":\"CrosshairTool\"}]},\"id\":\"95b4d878-d320-4127-a86a-337c0569f8f2\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"7f2a4910-907c-44a6-b98d-eca7948c3039\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"efcd3aff-fc21-409a-a4c6-a10a3f3c7045\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1692d2fa-fbf8-476d-924d-9917671f8880\",\"type\":\"LinearScale\"},{\"attributes\":{\"toolbar\":{\"id\":\"a569fa84-7f82-495c-a584-7cc69beaa74a\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"97230423-53c0-45a6-b151-044e6c3526b3\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"a664be81-dde4-4180-a3a6-6a2ca6c20941\",\"type\":\"PanTool\"},{\"attributes\":{\"children\":[{\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"63e2c8f8-a0a4-4fd6-89db-5be3e9945902\",\"type\":\"Row\"},{\"attributes\":{\"overlay\":{\"id\":\"53a0b7f6-599b-4660-a47d-8f9bb933b0d2\",\"type\":\"BoxAnnotation\"}},\"id\":\"4093c636-75ba-4d26-9280-930bfd111075\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"cc6a1e5f-1032-4d54-a63d-bed0e0bd3abe\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8461218b-84c0-4b5a-81b4-9ee151bf3a69\",\"type\":\"BasicTicker\"}},\"id\":\"9d85351d-057f-4406-88b0-896d4ea1b27e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"46dcec58-18b7-4863-a872-ae467b2f168f\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cd9a1483-a376-4242-ac7e-25e809d27875\",\"type\":\"BasicTicker\"}},\"id\":\"d32184c2-3491-46de-9039-9fc231edd787\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"640075f4-bcfd-4972-9005-f1000eeeb9af\",\"type\":\"CrosshairTool\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"cd9a1483-a376-4242-ac7e-25e809d27875\",\"type\":\"BasicTicker\"}},\"id\":\"d08f42ac-5d43-43f7-a768-3a62a5f745a2\",\"type\":\"Grid\"},{\"attributes\":{\"children\":[{\"id\":\"f8f0dad5-565b-4faf-97d8-cd9581708d04\",\"type\":\"Row\"},{\"id\":\"0d4bea7f-80d0-4ad0-af60-1c69471f1108\",\"type\":\"Row\"},{\"id\":\"63e2c8f8-a0a4-4fd6-89db-5be3e9945902\",\"type\":\"Row\"}]},\"id\":\"ed6107f1-c050-4f6b-8227-35361759e454\",\"type\":\"Column\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"9d90279b-d032-4a13-a138-d8b9f757e0f4\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"9269777f-c94b-4a09-aaeb-2dcc3f6b34fb\",\"type\":\"CrosshairTool\"},{\"attributes\":{\"callback\":null,\"end\":2.4849518445971936,\"reset_end\":2.4849518445971936,\"reset_start\":0.07363873473438232,\"start\":0.07363873473438232},\"id\":\"e8425795-23ff-451e-98fa-4ff040da6255\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"75778b71-a181-490d-8e49-9c8ce5da90e8\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"plot\":null,\"text\":\"marginal production\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"891e78ed-df12-4a10-a57b-9a83fcb54d80\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"b8d36176-c967-40b9-9189-c7491d0443ba\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"9d85351d-057f-4406-88b0-896d4ea1b27e\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"59364c14-f5da-4c7c-8464-098aaae7f84b\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":500,\"renderers\":[{\"id\":\"9d85351d-057f-4406-88b0-896d4ea1b27e\",\"type\":\"LinearAxis\"},{\"id\":\"743c6c8c-b5b2-416d-9138-51d4911912bc\",\"type\":\"Grid\"},{\"id\":\"59364c14-f5da-4c7c-8464-098aaae7f84b\",\"type\":\"LinearAxis\"},{\"id\":\"8be55fec-4f13-4f69-a3f0-54e5136492e9\",\"type\":\"Grid\"},{\"id\":\"e65093b9-c165-4acb-8a2e-b0d0c7127874\",\"type\":\"BoxAnnotation\"},{\"id\":\"be7cda1e-8149-4949-89cb-f0974a32c294\",\"type\":\"Legend\"},{\"id\":\"2df15b27-3bd7-4098-8e83-79a3aacf7c62\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"891e78ed-df12-4a10-a57b-9a83fcb54d80\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"95b4d878-d320-4127-a86a-337c0569f8f2\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"42ee7114-2d7c-4eaf-bf3b-51816b2f1f75\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"1692d2fa-fbf8-476d-924d-9917671f8880\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"e8425795-23ff-451e-98fa-4ff040da6255\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"a7c7c0dc-02a3-4b1e-9319-db7f29b5c8fc\",\"type\":\"LinearScale\"}},\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"53a0b7f6-599b-4660-a47d-8f9bb933b0d2\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f3f564b4-41ae-4b7e-bf37-4947e18b88c2\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"4de7fd8d-4721-462d-85fc-c4d2d10d2f5a\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"774cb168-6459-4fdb-b9ea-7487938fdb55\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5f2894ba-8946-4fa0-a06a-dc6ce948199d\",\"type\":\"BasicTicker\"}},\"id\":\"dafe4906-bf7a-42ad-90ba-5ae5fee3744f\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"bc0ba7aa-cb3a-49a5-bc99-af28c8af8d1a\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"774cb168-6459-4fdb-b9ea-7487938fdb55\",\"type\":\"BasicTicker\"}},\"id\":\"efae6a87-2116-42fc-9595-0e43a448077e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"95b35962-db50-4378-a460-d2415ebf5db1\",\"type\":\"Line\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"774cb168-6459-4fdb-b9ea-7487938fdb55\",\"type\":\"BasicTicker\"}},\"id\":\"3e737301-5ff9-4a38-834c-07c7274f97ba\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"d32184c2-3491-46de-9039-9fc231edd787\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"efae6a87-2116-42fc-9595-0e43a448077e\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":500,\"renderers\":[{\"id\":\"d32184c2-3491-46de-9039-9fc231edd787\",\"type\":\"LinearAxis\"},{\"id\":\"d08f42ac-5d43-43f7-a768-3a62a5f745a2\",\"type\":\"Grid\"},{\"id\":\"efae6a87-2116-42fc-9595-0e43a448077e\",\"type\":\"LinearAxis\"},{\"id\":\"3e737301-5ff9-4a38-834c-07c7274f97ba\",\"type\":\"Grid\"},{\"id\":\"ca403366-26d2-4630-8863-ef706159921e\",\"type\":\"BoxAnnotation\"},{\"id\":\"f3f564b4-41ae-4b7e-bf37-4947e18b88c2\",\"type\":\"Legend\"},{\"id\":\"84f78287-eb87-4896-a752-32eebaea7c18\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"91f17ee6-7bc6-49b1-a8cd-a7e849657cbb\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"24ceb30b-5a21-491c-913e-bc46ca3ede42\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"42ee7114-2d7c-4eaf-bf3b-51816b2f1f75\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"961d55f3-5562-496e-aeb1-7c50ed671518\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"e8425795-23ff-451e-98fa-4ff040da6255\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"eaa1ca1c-33a2-4959-a79a-9dfe247798f7\",\"type\":\"LinearScale\"}},\"id\":\"f44c00f6-c88a-4786-a015-728f2e61d3ec\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"72dfffb8-6250-4582-8f1c-7f398a31348c\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"83f4558d-ddbf-4dbb-94b0-570d802c3d5e\",\"type\":\"ColumnDataSource\"}},\"id\":\"f2af5b3a-30d5-4e5e-8e17-1b570cc8d92a\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"83f4558d-ddbf-4dbb-94b0-570d802c3d5e\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"98147561-7b20-46b9-a567-168ddf7443e7\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"72dfffb8-6250-4582-8f1c-7f398a31348c\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"95b35962-db50-4378-a460-d2415ebf5db1\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"f2af5b3a-30d5-4e5e-8e17-1b570cc8d92a\",\"type\":\"CDSView\"}},\"id\":\"84f78287-eb87-4896-a752-32eebaea7c18\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"e30d6ce5-a960-44b3-916c-76f21568d68e\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1796adc5-7852-4a01-a2ea-788645bba127\",\"type\":\"SaveTool\"},{\"id\":\"d10e8105-46d1-4e85-a18f-cb179d75eae0\",\"type\":\"PanTool\"},{\"id\":\"2bf0b181-ce7c-4efd-9d3c-c024ac3f8dc8\",\"type\":\"WheelZoomTool\"},{\"id\":\"018d3b52-671f-4776-aab3-67b91e4a9f57\",\"type\":\"BoxZoomTool\"},{\"id\":\"780ec043-a846-43e8-aed9-701604af2aee\",\"type\":\"ResetTool\"},{\"id\":\"7fc924ad-eceb-4e7f-98fc-f83685a1f3d9\",\"type\":\"CrosshairTool\"}]},\"id\":\"24ceb30b-5a21-491c-913e-bc46ca3ede42\",\"type\":\"Toolbar\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"be7cda1e-8149-4949-89cb-f0974a32c294\",\"type\":\"Legend\"},{\"attributes\":{\"plot\":null,\"text\":\"average production\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"91f17ee6-7bc6-49b1-a8cd-a7e849657cbb\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"762f6321-b7cf-43b9-937e-4ab37cf42da8\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"axis_label\":\"production\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"b8d36176-c967-40b9-9189-c7491d0443ba\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5f2894ba-8946-4fa0-a06a-dc6ce948199d\",\"type\":\"BasicTicker\"}},\"id\":\"6d6dde8e-894e-47d9-9672-e90da0b4931c\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"5f2894ba-8946-4fa0-a06a-dc6ce948199d\",\"type\":\"BasicTicker\"},{\"attributes\":{\"tools\":[{\"id\":\"4de7fd8d-4721-462d-85fc-c4d2d10d2f5a\",\"type\":\"SaveTool\"},{\"id\":\"a664be81-dde4-4180-a3a6-6a2ca6c20941\",\"type\":\"PanTool\"},{\"id\":\"75778b71-a181-490d-8e49-9c8ce5da90e8\",\"type\":\"WheelZoomTool\"},{\"id\":\"4093c636-75ba-4d26-9280-930bfd111075\",\"type\":\"BoxZoomTool\"},{\"id\":\"efcd3aff-fc21-409a-a4c6-a10a3f3c7045\",\"type\":\"ResetTool\"},{\"id\":\"640075f4-bcfd-4972-9005-f1000eeeb9af\",\"type\":\"CrosshairTool\"},{\"id\":\"c37b86ef-655b-4314-9271-aa208d4576cb\",\"type\":\"SaveTool\"},{\"id\":\"dfd8b45b-7280-49c6-b78d-c7828e701e7e\",\"type\":\"PanTool\"},{\"id\":\"762f6321-b7cf-43b9-937e-4ab37cf42da8\",\"type\":\"WheelZoomTool\"},{\"id\":\"d0651e6c-fde4-4f3c-8896-a7a1921d34de\",\"type\":\"BoxZoomTool\"},{\"id\":\"a5957e01-d44c-4cf3-90b1-92bb75f4f887\",\"type\":\"ResetTool\"},{\"id\":\"9269777f-c94b-4a09-aaeb-2dcc3f6b34fb\",\"type\":\"CrosshairTool\"},{\"id\":\"1796adc5-7852-4a01-a2ea-788645bba127\",\"type\":\"SaveTool\"},{\"id\":\"d10e8105-46d1-4e85-a18f-cb179d75eae0\",\"type\":\"PanTool\"},{\"id\":\"2bf0b181-ce7c-4efd-9d3c-c024ac3f8dc8\",\"type\":\"WheelZoomTool\"},{\"id\":\"018d3b52-671f-4776-aab3-67b91e4a9f57\",\"type\":\"BoxZoomTool\"},{\"id\":\"780ec043-a846-43e8-aed9-701604af2aee\",\"type\":\"ResetTool\"},{\"id\":\"7fc924ad-eceb-4e7f-98fc-f83685a1f3d9\",\"type\":\"CrosshairTool\"}]},\"id\":\"a569fa84-7f82-495c-a584-7cc69beaa74a\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production\":{\"__ndarray__\":\"AAAAAAAAAAAAXAnYVJ9YP2hQoxLeW2s/fp/r5WHedj+lOxPicwqBPzl8TYHU34c/VLVRJ5MYkD+C92ksTiaVPxSJ/P41R5s/k5J2f5NYoT/GGC1+KdGlP/l2ZsS/MKs/bUpLxm3PsD8LKSFNSaO0P1DX4hayKrk/kbObx6d8vj+qLwM5gFfCP11Wz0JA6sU/xzSdHD/9yT/7zntGHJPOP/ZXMPiL1NE/We3M1vya1D8Zc2Myu5TXP2Nmq+8qtto/vLuWV7/w3T/kEz96+JngP4++NK5CN+I/M7jYjPrH4z8U+6O62UTlP8VF8ikSqOY/AX5rFJHt5z+PJONeCBPpPymcVhXIF+o/1qXJF3j86j9Q+xYtw8LrP9gWLuMBbew/oExm/O797D90CEFtanjtP1IKxClM3+0/NKAnjkU17j+XCBPuznzuP3iNEnYeuO4/BiKntCXp7j8X5M+MkxHvP9I7BdTYMu8/0ySCVi5O7z+Emj5im2TvP3LO90f8du8/FG2eewiG7z/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"d74828e2-d9dc-4d56-a4c7-84849bea186d\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"67953cf4-08c3-43c7-8b34-bf72138bce15\",\"type\":\"UnionRenderers\"}},\"id\":\"f2e18a83-6084-4822-9f40-f07440cd27ff\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"e65093b9-c165-4acb-8a2e-b0d0c7127874\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"7f2a4910-907c-44a6-b98d-eca7948c3039\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"99ba519e-8e7d-4f29-ba0f-ba52eb745086\",\"type\":\"BasicTicker\"}},\"id\":\"00419b7d-2ae7-43db-ba72-47ca83427ffa\",\"type\":\"LinearAxis\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"99ba519e-8e7d-4f29-ba0f-ba52eb745086\",\"type\":\"BasicTicker\"}},\"id\":\"ab2d1971-1992-4a37-af67-5af90ce85db9\",\"type\":\"Grid\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"e9d144db-b89e-4ba1-a22d-f1c3f779e4ce\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8461218b-84c0-4b5a-81b4-9ee151bf3a69\",\"type\":\"BasicTicker\"}},\"id\":\"743c6c8c-b5b2-416d-9138-51d4911912bc\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"dfd8b45b-7280-49c6-b78d-c7828e701e7e\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"20379344-7189-4ac8-9937-3009815bf748\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"cCpn9fzZsj+QCUUGVvK0PwI3XW2Hl7k/Gt0V3qw9vz8bQPZxegzDP/3HPDZBM8c/x98FApI2zD8+lD1aaR/RP+TdWAKcvNQ/+Gn3Y4QL2T95qx6TBybeP/+FEab4EuI/had412qR5T94H9A2gZfpPztIF1exKe4/R2iO+5ei8T+HjfTig270P6mvB5mYa/c/ZDFAyyGF+j8iqYYISJ79P/EB5gVjSQBAHIM8opCcAUCvUiksPbMCQHQO7bHMeQNARnDFbi7hA0A9cMVuLuEDQGQO7bHMeQNAr1IpLD2zAkAfgzyikJwBQOwB5gVjSQBAK6mGCEie/T9rMUDLIYX6P6avB5mYa/c/no304oNu9D9ZaI77l6LxPylIF1exKe4/bx/QNoGX6T+Jp3jXapHlP+CFEab4EuI/Nqsekwcm3j8FavdjhAvZPz/eWAKcvNQ/b5Q9Wmkf0T8Z4AUCkjbMP/nHPDZBM8c/JED2cXoMwz+93RXerD2/P0E2XW2Hl7k/BApFBlbytD/4K2f1/NmyPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"b5542894-70a1-4fac-8b42-25b64957ffb5\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"abb1d1e4-b38f-43ab-8ed3-1bbb86ed68a1\",\"type\":\"UnionRenderers\"}},\"id\":\"35e36f0a-1a07-4308-aff4-bbf094517695\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"99ba519e-8e7d-4f29-ba0f-ba52eb745086\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"e65093b9-c165-4acb-8a2e-b0d0c7127874\",\"type\":\"BoxAnnotation\"}},\"id\":\"d0651e6c-fde4-4f3c-8896-a7a1921d34de\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"bc0ba7aa-cb3a-49a5-bc99-af28c8af8d1a\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"8461218b-84c0-4b5a-81b4-9ee151bf3a69\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"4de7fd8d-4721-462d-85fc-c4d2d10d2f5a\",\"type\":\"SaveTool\"},{\"id\":\"a664be81-dde4-4180-a3a6-6a2ca6c20941\",\"type\":\"PanTool\"},{\"id\":\"75778b71-a181-490d-8e49-9c8ce5da90e8\",\"type\":\"WheelZoomTool\"},{\"id\":\"4093c636-75ba-4d26-9280-930bfd111075\",\"type\":\"BoxZoomTool\"},{\"id\":\"efcd3aff-fc21-409a-a4c6-a10a3f3c7045\",\"type\":\"ResetTool\"},{\"id\":\"640075f4-bcfd-4972-9005-f1000eeeb9af\",\"type\":\"CrosshairTool\"}]},\"id\":\"ecd09454-589e-4072-b971-62f085b54e6a\",\"type\":\"Toolbar\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"b202be71-0f49-4496-b0b7-fa4152bcb6dc\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"bd15d36c-f58e-430a-b822-aa888ad977ae\",\"type\":\"Legend\"},{\"attributes\":{\"plot\":null,\"text\":\"production function\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"37c1f991-a2ef-410d-818b-c0e079baeeda\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"46dcec58-18b7-4863-a872-ae467b2f168f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"AAAAAAAA+P9wKmf1/NmyP5AJRQZW8rQ/JohgRVlYtz9Vcy1yARi6P5QeMuv9Pr0/cb54jWtuwD+SuNxmhIHCP/RYOVeF4sQ/ZYAoGB6cxz+NcSrU0rnKPyKQQ0m+R84/pYYXZRUp0T/pF+k5e3LTP2Z8BtRbBdY/ptJpSc3l2D/94ExX/BXcP6QphZxcld8/JFJAZeev4T8VgnEtbbbjPyjS1NyR1+U/k7+Z+iYK6D9010syuULqPz5RIJsidOw/+zS//m2Q7j+n78Kg+ETwP7kpFOk5KvE/aCLOfxfz8T+ye0+DPpzyP0opZ1gPJPM/YB6t0IuK8z8wxrtCG9HzP5BPVjA1+vM/RpaZ0wMJ9D9jgEGkDAH0PzJDoLjn5fM/JvQawQm78z9pQPBqoIPzP7XrMJR+QvM/zFp7uBT68j/dDtLxcazyP0VnxmVKW/I/hH5hqQAI8j/eDSlZsLPxP1AB4Ls4X/E/3ztSvUYL8T/dV6HjXbjwPxYinxrgZvA/WDJuVBQX8D/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"4c97b511-040f-47b8-943b-7921b99ac30a\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"e30d6ce5-a960-44b3-916c-76f21568d68e\",\"type\":\"UnionRenderers\"}},\"id\":\"83f4558d-ddbf-4dbb-94b0-570d802c3d5e\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"abb1d1e4-b38f-43ab-8ed3-1bbb86ed68a1\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"f65a11ae-ad00-4340-b335-e697ce45185e\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"961d55f3-5562-496e-aeb1-7c50ed671518\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"98147561-7b20-46b9-a567-168ddf7443e7\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"de21ceca-61de-427c-841c-1cec8fdd1fe3\",\"type\":\"Line\"}],\"root_ids\":[\"93f72638-d8bd-4be6-8106-f66cc6e1c7fc\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"02f4bdb3-4c27-4585-92a5-72a6404e4007\",\"roots\":{\"93f72638-d8bd-4be6-8106-f66cc6e1c7fc\":\"8cb5fcd4-9028-4625-aac7-303b9061b175\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Layout\n", " .Curve.Production_function :Curve [labor] (production)\n", " .Curve.Marginal_production :Curve [labor] (production per labor unit)\n", " .Curve.Average_production :Curve [labor] (production per labor unit)" ] }, "execution_count": 78, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "93f72638-d8bd-4be6-8106-f66cc6e1c7fc" } }, "output_type": "execute_result" } ], "source": [ "%%opts Curve [height=200 width=500 tools=['crosshair']] \n", "(production + marginal_product + average_product).cols(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also overlay the marginal production as well as the production itself." ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('ec487c6b-049f-4e8b-9dc2-decaad5574d4')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"6dccba3d-680e-488c-86d8-7f602a7ce24c\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"c0dc264c-26bd-4f5e-8e9a-2609e2bd9b97\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"b47f1958-ac88-4be3-8038-b915469ace07\",\"type\":\"ResetTool\"},{\"attributes\":{\"source\":{\"id\":\"4fa0e941-1389-47a6-9036-6c9f05a13975\",\"type\":\"ColumnDataSource\"}},\"id\":\"772a9f5a-fd0d-409a-9ff8-f2f5cd775c6e\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2b8fc4d0-8acc-4818-b6e5-bd5f7a276a50\",\"type\":\"CrosshairTool\"},{\"attributes\":{\"click_policy\":\"mute\",\"items\":[{\"id\":\"4f520730-aba3-49a3-bbd9-8e26d87f06e7\",\"type\":\"LegendItem\"},{\"id\":\"9cc5f09a-7fd7-4518-93ab-c796ea03679a\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"02aeb582-616c-46ff-9a50-92e7f827b44d\",\"type\":\"Legend\"},{\"attributes\":{\"data_source\":{\"id\":\"8a76fdf8-1e46-49e7-a071-ce159cc481cc\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"36dbbcb6-3121-412d-978b-50ad43ed9052\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"41aa0e9a-7a18-450c-a11a-240ed7f3c9f9\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"ed33f53a-b9f0-48f8-b21e-49402ec15f6c\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"f4c64168-b807-427e-8347-b97ba3aada18\",\"type\":\"CDSView\"}},\"id\":\"dfee1372-f13b-4fe2-94d3-63a092d616fc\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"41aa0e9a-7a18-450c-a11a-240ed7f3c9f9\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"8d82ce0d-d988-4fdd-85f5-52ba59a73797\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"ed33f53a-b9f0-48f8-b21e-49402ec15f6c\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"36dbbcb6-3121-412d-978b-50ad43ed9052\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"f64b87d7-ee42-4cab-8c9e-b3a98d8e20d8\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"0bc5ec22-2c97-44d3-9e91-c374345f27c2\",\"type\":\"Line\"},{\"attributes\":{\"background_fill_alpha\":{\"value\":0},\"border_line_alpha\":{\"value\":0},\"items\":[],\"plot\":{\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"544f614a-cb20-40a8-b27e-4403cc6c6411\",\"type\":\"Legend\"},{\"attributes\":{\"source\":{\"id\":\"8a76fdf8-1e46-49e7-a071-ce159cc481cc\",\"type\":\"ColumnDataSource\"}},\"id\":\"f4c64168-b807-427e-8347-b97ba3aada18\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"0aeb2bb7-ae63-4494-b3e5-aac9600cd2f2\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"marginal production\"},\"renderers\":[{\"id\":\"12b22abf-7fec-489b-8ab6-61fca758b870\",\"type\":\"GlyphRenderer\"}]},\"id\":\"4f520730-aba3-49a3-bbd9-8e26d87f06e7\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"cCpn9fzZsj+QCUUGVvK0PwI3XW2Hl7k/Gt0V3qw9vz8bQPZxegzDP/3HPDZBM8c/x98FApI2zD8+lD1aaR/RP+TdWAKcvNQ/+Gn3Y4QL2T95qx6TBybeP/+FEab4EuI/had412qR5T94H9A2gZfpPztIF1exKe4/R2iO+5ei8T+HjfTig270P6mvB5mYa/c/ZDFAyyGF+j8iqYYISJ79P/EB5gVjSQBAHIM8opCcAUCvUiksPbMCQHQO7bHMeQNARnDFbi7hA0A9cMVuLuEDQGQO7bHMeQNAr1IpLD2zAkAfgzyikJwBQOwB5gVjSQBAK6mGCEie/T9rMUDLIYX6P6avB5mYa/c/no304oNu9D9ZaI77l6LxPylIF1exKe4/bx/QNoGX6T+Jp3jXapHlP+CFEab4EuI/Nqsekwcm3j8FavdjhAvZPz/eWAKcvNQ/b5Q9Wmkf0T8Z4AUCkjbMP/nHPDZBM8c/JED2cXoMwz+93RXerD2/P0E2XW2Hl7k/BApFBlbytD/4K2f1/NmyPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"9f13ac2c-4cfa-44f4-8df3-2bd9906e6492\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"e7491cd0-1cef-4c52-8a69-7e158767f602\",\"type\":\"UnionRenderers\"}},\"id\":\"4fa0e941-1389-47a6-9036-6c9f05a13975\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fc4f30\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"66731ce3-6195-44ce-bff6-a0dce748c914\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"6c4a2e03-5063-446c-8247-7a6de350fc40\",\"type\":\"Selection\"},{\"attributes\":{\"children\":[{\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"04f5222c-29d5-401d-b972-3019294726cc\",\"type\":\"Row\"},{\"attributes\":{\"toolbar\":{\"id\":\"b3374d94-a2fd-45d2-a989-3b97ce49f666\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"d794f9f1-c37d-4a1e-b045-911165ecd6a3\",\"type\":\"ToolbarBox\"},{\"attributes\":{},\"id\":\"85c19eaf-118b-4175-9297-5abc8668f1fb\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"children\":[{\"id\":\"d794f9f1-c37d-4a1e-b045-911165ecd6a3\",\"type\":\"ToolbarBox\"},{\"id\":\"45ab20f6-e0ba-4a55-9c9b-8f16b725a632\",\"type\":\"Column\"}]},\"id\":\"ec487c6b-049f-4e8b-9dc2-decaad5574d4\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"8d33a24e-928a-4ea6-9c63-2434e5db4c6c\",\"type\":\"LinearScale\"},{\"attributes\":{\"tools\":[{\"id\":\"25f811d1-c55d-49e1-96c8-745bd9d4ce80\",\"type\":\"SaveTool\"},{\"id\":\"7b940688-1a35-4238-993f-db0b7c1772f4\",\"type\":\"PanTool\"},{\"id\":\"c0dc264c-26bd-4f5e-8e9a-2609e2bd9b97\",\"type\":\"WheelZoomTool\"},{\"id\":\"bd7c89a9-f784-4b64-85cc-5b9d33d668d7\",\"type\":\"BoxZoomTool\"},{\"id\":\"b47f1958-ac88-4be3-8038-b915469ace07\",\"type\":\"ResetTool\"},{\"id\":\"2b8fc4d0-8acc-4818-b6e5-bd5f7a276a50\",\"type\":\"CrosshairTool\"},{\"id\":\"ea2ce6f2-e3f6-4752-8b25-aa54be6ef41a\",\"type\":\"SaveTool\"},{\"id\":\"31fbfcfc-382a-40c3-b918-6713e8be8868\",\"type\":\"PanTool\"},{\"id\":\"990112b1-d1aa-4588-bef8-c197eb72fb6c\",\"type\":\"WheelZoomTool\"},{\"id\":\"e971081b-cf45-4af9-9138-f57b6bbe5981\",\"type\":\"BoxZoomTool\"},{\"id\":\"f87c18a2-6103-4fa5-8727-e04d97d6e486\",\"type\":\"ResetTool\"},{\"id\":\"b42220c6-a5dd-49fa-b347-72f76a31b6e3\",\"type\":\"CrosshairTool\"}]},\"id\":\"b3374d94-a2fd-45d2-a989-3b97ce49f666\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"callback\":null,\"end\":2.4849518445971936,\"reset_end\":2.4849518445971936,\"reset_start\":0.07363873473438232,\"start\":0.07363873473438232},\"id\":\"17b693f0-70de-40a9-a17e-720fbc29bd70\",\"type\":\"Range1d\"},{\"attributes\":{\"below\":[{\"id\":\"2b6f64d8-e4b2-4fcb-badf-12eca7474e83\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"8681926e-c348-48fb-aaa5-77e144047a54\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":400,\"renderers\":[{\"id\":\"2b6f64d8-e4b2-4fcb-badf-12eca7474e83\",\"type\":\"LinearAxis\"},{\"id\":\"274256f6-2803-41e8-b59d-97cbe15d6441\",\"type\":\"Grid\"},{\"id\":\"8681926e-c348-48fb-aaa5-77e144047a54\",\"type\":\"LinearAxis\"},{\"id\":\"83acc605-23e5-41b9-aee0-25dc79df1391\",\"type\":\"Grid\"},{\"id\":\"9643bf8d-57df-4ebd-97f6-2dfb726f7dc6\",\"type\":\"BoxAnnotation\"},{\"id\":\"02aeb582-616c-46ff-9a50-92e7f827b44d\",\"type\":\"Legend\"},{\"id\":\"12b22abf-7fec-489b-8ab6-61fca758b870\",\"type\":\"GlyphRenderer\"},{\"id\":\"38cdf2e8-dbdc-445b-9255-c32635d6aaef\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"e42cc955-95c5-43da-8962-ca824e086628\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"07e5ea38-9948-4cf7-99d6-2ba99d1d364c\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"c53b606c-b2f0-4eae-b97c-9eb8d4d529d2\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"ab9ceddd-7065-45a6-b5be-03bc48db1134\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"17b693f0-70de-40a9-a17e-720fbc29bd70\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"fc3a3c2e-5ef5-4203-a044-0d3cc19a0495\",\"type\":\"LinearScale\"}},\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production\":{\"__ndarray__\":\"AAAAAAAAAAAAXAnYVJ9YP2hQoxLeW2s/fp/r5WHedj+lOxPicwqBPzl8TYHU34c/VLVRJ5MYkD+C92ksTiaVPxSJ/P41R5s/k5J2f5NYoT/GGC1+KdGlP/l2ZsS/MKs/bUpLxm3PsD8LKSFNSaO0P1DX4hayKrk/kbObx6d8vj+qLwM5gFfCP11Wz0JA6sU/xzSdHD/9yT/7zntGHJPOP/ZXMPiL1NE/We3M1vya1D8Zc2Myu5TXP2Nmq+8qtto/vLuWV7/w3T/kEz96+JngP4++NK5CN+I/M7jYjPrH4z8U+6O62UTlP8VF8ikSqOY/AX5rFJHt5z+PJONeCBPpPymcVhXIF+o/1qXJF3j86j9Q+xYtw8LrP9gWLuMBbew/oExm/O797D90CEFtanjtP1IKxClM3+0/NKAnjkU17j+XCBPuznzuP3iNEnYeuO4/BiKntCXp7j8X5M+MkxHvP9I7BdTYMu8/0ySCVi5O7z+Emj5im2TvP3LO90f8du8/FG2eewiG7z/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"6c4a2e03-5063-446c-8247-7a6de350fc40\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"0f0d63ef-5f7c-4b99-a14b-0dcec4193ab0\",\"type\":\"UnionRenderers\"}},\"id\":\"8a76fdf8-1e46-49e7-a071-ce159cc481cc\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"AAAAAAAA+P9wKmf1/NmyP5AJRQZW8rQ/JohgRVlYtz9Vcy1yARi6P5QeMuv9Pr0/cb54jWtuwD+SuNxmhIHCP/RYOVeF4sQ/ZYAoGB6cxz+NcSrU0rnKPyKQQ0m+R84/pYYXZRUp0T/pF+k5e3LTP2Z8BtRbBdY/ptJpSc3l2D/94ExX/BXcP6QphZxcld8/JFJAZeev4T8VgnEtbbbjPyjS1NyR1+U/k7+Z+iYK6D9010syuULqPz5RIJsidOw/+zS//m2Q7j+n78Kg+ETwP7kpFOk5KvE/aCLOfxfz8T+ye0+DPpzyP0opZ1gPJPM/YB6t0IuK8z8wxrtCG9HzP5BPVjA1+vM/RpaZ0wMJ9D9jgEGkDAH0PzJDoLjn5fM/JvQawQm78z9pQPBqoIPzP7XrMJR+QvM/zFp7uBT68j/dDtLxcazyP0VnxmVKW/I/hH5hqQAI8j/eDSlZsLPxP1AB4Ls4X/E/3ztSvUYL8T/dV6HjXbjwPxYinxrgZvA/WDJuVBQX8D/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"628b8d07-4b81-448b-a684-3968db595168\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"11a33ccb-8056-40cb-9d79-0e4d38142119\",\"type\":\"UnionRenderers\"}},\"id\":\"be069e41-d09e-4d3e-89b2-5eb61dd7cabe\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"ea2ce6f2-e3f6-4752-8b25-aa54be6ef41a\",\"type\":\"SaveTool\"},{\"id\":\"31fbfcfc-382a-40c3-b918-6713e8be8868\",\"type\":\"PanTool\"},{\"id\":\"990112b1-d1aa-4588-bef8-c197eb72fb6c\",\"type\":\"WheelZoomTool\"},{\"id\":\"e971081b-cf45-4af9-9138-f57b6bbe5981\",\"type\":\"BoxZoomTool\"},{\"id\":\"f87c18a2-6103-4fa5-8727-e04d97d6e486\",\"type\":\"ResetTool\"},{\"id\":\"b42220c6-a5dd-49fa-b347-72f76a31b6e3\",\"type\":\"CrosshairTool\"}]},\"id\":\"07e5ea38-9948-4cf7-99d6-2ba99d1d364c\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"ab9ceddd-7065-45a6-b5be-03bc48db1134\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"fc3a3c2e-5ef5-4203-a044-0d3cc19a0495\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":null,\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"e42cc955-95c5-43da-8962-ca824e086628\",\"type\":\"Title\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8ce781b7-b61e-4c54-998b-54f60f40963d\",\"type\":\"BasicTicker\"}},\"id\":\"274256f6-2803-41e8-b59d-97cbe15d6441\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"#fc4f30\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"c4543150-3229-4cf9-9186-8d7cd3ae3f8b\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"628b8d07-4b81-448b-a684-3968db595168\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"9643bf8d-57df-4ebd-97f6-2dfb726f7dc6\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"11a33ccb-8056-40cb-9d79-0e4d38142119\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"af699d34-a556-421e-b858-9210dd7880f0\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"9643bf8d-57df-4ebd-97f6-2dfb726f7dc6\",\"type\":\"BoxAnnotation\"}},\"id\":\"e971081b-cf45-4af9-9138-f57b6bbe5981\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"average production\"},\"renderers\":[{\"id\":\"38cdf2e8-dbdc-445b-9255-c32635d6aaef\",\"type\":\"GlyphRenderer\"}]},\"id\":\"9cc5f09a-7fd7-4518-93ab-c796ea03679a\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"8ce781b7-b61e-4c54-998b-54f60f40963d\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"end\":0.9866142981514304,\"reset_end\":0.9866142981514304,\"reset_start\":0.0},\"id\":\"c99d8781-3255-48bc-b212-a14dcdfea50a\",\"type\":\"Range1d\"},{\"attributes\":{\"below\":[{\"id\":\"41b99c13-0c77-4b8c-9838-6e977bf99946\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"51c0f54b-af4e-4c32-ab8a-2406c21ab111\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":400,\"renderers\":[{\"id\":\"41b99c13-0c77-4b8c-9838-6e977bf99946\",\"type\":\"LinearAxis\"},{\"id\":\"8e388e74-7722-4fe8-8f37-f8006ac57caf\",\"type\":\"Grid\"},{\"id\":\"51c0f54b-af4e-4c32-ab8a-2406c21ab111\",\"type\":\"LinearAxis\"},{\"id\":\"f745b86d-3ec7-430d-9b29-ab2c1ef5cba1\",\"type\":\"Grid\"},{\"id\":\"4938d14b-b69b-4f61-96f4-e7ed3ae4a9b0\",\"type\":\"BoxAnnotation\"},{\"id\":\"544f614a-cb20-40a8-b27e-4403cc6c6411\",\"type\":\"Legend\"},{\"id\":\"dfee1372-f13b-4fe2-94d3-63a092d616fc\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"6035a131-b7d6-4108-9163-3ba9d3fc6b44\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"46457673-c7d2-4e07-bcc1-40a36d740c5f\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"c53b606c-b2f0-4eae-b97c-9eb8d4d529d2\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"8d33a24e-928a-4ea6-9c63-2434e5db4c6c\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"c99d8781-3255-48bc-b212-a14dcdfea50a\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"f27b11cb-7f41-4f6d-be89-15f6f706422a\",\"type\":\"LinearScale\"}},\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"66cd2a5a-65a4-4e16-8728-dd2832381a07\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"c53b606c-b2f0-4eae-b97c-9eb8d4d529d2\",\"type\":\"Range1d\"},{\"attributes\":{\"data_source\":{\"id\":\"4fa0e941-1389-47a6-9036-6c9f05a13975\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"0bc5ec22-2c97-44d3-9e91-c374345f27c2\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"0aeb2bb7-ae63-4494-b3e5-aac9600cd2f2\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"8d82ce0d-d988-4fdd-85f5-52ba59a73797\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"772a9f5a-fd0d-409a-9ff8-f2f5cd775c6e\",\"type\":\"CDSView\"}},\"id\":\"12b22abf-7fec-489b-8ab6-61fca758b870\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"9a9c1984-ce71-440e-ab35-8f57777b1467\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"7b940688-1a35-4238-993f-db0b7c1772f4\",\"type\":\"PanTool\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"66cd2a5a-65a4-4e16-8728-dd2832381a07\",\"type\":\"BasicTicker\"}},\"id\":\"83acc605-23e5-41b9-aee0-25dc79df1391\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"be069e41-d09e-4d3e-89b2-5eb61dd7cabe\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c4543150-3229-4cf9-9186-8d7cd3ae3f8b\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"9c4a3f9d-0feb-4dad-ac86-ce88811a900c\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"66731ce3-6195-44ce-bff6-a0dce748c914\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"7d499a17-5bdc-49df-a037-846acc7a97d1\",\"type\":\"CDSView\"}},\"id\":\"38cdf2e8-dbdc-445b-9255-c32635d6aaef\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"31fbfcfc-382a-40c3-b918-6713e8be8868\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"4938d14b-b69b-4f61-96f4-e7ed3ae4a9b0\",\"type\":\"BoxAnnotation\"}},\"id\":\"bd7c89a9-f784-4b64-85cc-5b9d33d668d7\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"af699d34-a556-421e-b858-9210dd7880f0\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"66cd2a5a-65a4-4e16-8728-dd2832381a07\",\"type\":\"BasicTicker\"}},\"id\":\"8681926e-c348-48fb-aaa5-77e144047a54\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"9f13ac2c-4cfa-44f4-8df3-2bd9906e6492\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"4938d14b-b69b-4f61-96f4-e7ed3ae4a9b0\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"plot\":null,\"text\":\"production function\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"6035a131-b7d6-4108-9163-3ba9d3fc6b44\",\"type\":\"Title\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b29e30a5-c827-4154-bb9e-1179172a79d8\",\"type\":\"BasicTicker\"}},\"id\":\"f745b86d-3ec7-430d-9b29-ab2c1ef5cba1\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"85c19eaf-118b-4175-9297-5abc8668f1fb\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"e93ef558-dedb-4713-b80d-1bd8c1aa52c8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8ce781b7-b61e-4c54-998b-54f60f40963d\",\"type\":\"BasicTicker\"}},\"id\":\"2b6f64d8-e4b2-4fcb-badf-12eca7474e83\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#fc4f30\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"9c4a3f9d-0feb-4dad-ac86-ce88811a900c\",\"type\":\"Line\"},{\"attributes\":{\"children\":[{\"id\":\"04f5222c-29d5-401d-b972-3019294726cc\",\"type\":\"Row\"}]},\"id\":\"45ab20f6-e0ba-4a55-9c9b-8f16b725a632\",\"type\":\"Column\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"25f811d1-c55d-49e1-96c8-745bd9d4ce80\",\"type\":\"SaveTool\"},{\"id\":\"7b940688-1a35-4238-993f-db0b7c1772f4\",\"type\":\"PanTool\"},{\"id\":\"c0dc264c-26bd-4f5e-8e9a-2609e2bd9b97\",\"type\":\"WheelZoomTool\"},{\"id\":\"bd7c89a9-f784-4b64-85cc-5b9d33d668d7\",\"type\":\"BoxZoomTool\"},{\"id\":\"b47f1958-ac88-4be3-8038-b915469ace07\",\"type\":\"ResetTool\"},{\"id\":\"2b8fc4d0-8acc-4818-b6e5-bd5f7a276a50\",\"type\":\"CrosshairTool\"}]},\"id\":\"46457673-c7d2-4e07-bcc1-40a36d740c5f\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"25f811d1-c55d-49e1-96c8-745bd9d4ce80\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"f87c18a2-6103-4fa5-8727-e04d97d6e486\",\"type\":\"ResetTool\"},{\"attributes\":{\"source\":{\"id\":\"be069e41-d09e-4d3e-89b2-5eb61dd7cabe\",\"type\":\"ColumnDataSource\"}},\"id\":\"7d499a17-5bdc-49df-a037-846acc7a97d1\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"b29e30a5-c827-4154-bb9e-1179172a79d8\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"0f0d63ef-5f7c-4b99-a14b-0dcec4193ab0\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"b42220c6-a5dd-49fa-b347-72f76a31b6e3\",\"type\":\"CrosshairTool\"},{\"attributes\":{},\"id\":\"e7491cd0-1cef-4c52-8a69-7e158767f602\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"990112b1-d1aa-4588-bef8-c197eb72fb6c\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"ea2ce6f2-e3f6-4752-8b25-aa54be6ef41a\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"f64b87d7-ee42-4cab-8c9e-b3a98d8e20d8\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"097850ed-711a-4c42-9880-9dc7ebcf073b\",\"type\":\"BasicTicker\"}},\"id\":\"41b99c13-0c77-4b8c-9838-6e977bf99946\",\"type\":\"LinearAxis\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"097850ed-711a-4c42-9880-9dc7ebcf073b\",\"type\":\"BasicTicker\"}},\"id\":\"8e388e74-7722-4fe8-8f37-f8006ac57caf\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"production\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"9a9c1984-ce71-440e-ab35-8f57777b1467\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"bcb96aa7-2178-42e8-9bbf-8dc13ba81267\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b29e30a5-c827-4154-bb9e-1179172a79d8\",\"type\":\"BasicTicker\"}},\"id\":\"51c0f54b-af4e-4c32-ab8a-2406c21ab111\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"097850ed-711a-4c42-9880-9dc7ebcf073b\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"f27b11cb-7f41-4f6d-be89-15f6f706422a\",\"type\":\"LinearScale\"}],\"root_ids\":[\"ec487c6b-049f-4e8b-9dc2-decaad5574d4\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"6dccba3d-680e-488c-86d8-7f602a7ce24c\",\"roots\":{\"ec487c6b-049f-4e8b-9dc2-decaad5574d4\":\"605a24c4-476b-4e97-9761-193945e2ab6b\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Layout\n", " .Curve.Production_function :Curve [labor] (production)\n", " .Overlay.I :Overlay\n", " .Curve.Marginal_production :Curve [labor] (production per labor unit)\n", " .Curve.Average_production :Curve [labor] (production per labor unit)" ] }, "execution_count": 79, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "ec487c6b-049f-4e8b-9dc2-decaad5574d4" } }, "output_type": "execute_result" } ], "source": [ "%%opts Curve [width=400 tools=['crosshair']] Overlay [legend_position='top_left']\n", "production + marginal_product * average_product" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try another layout." ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [], "source": [ "vline = hv.VLine(x=0.5).options(color='green')" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('27e39e62-dc42-4189-bc4d-409ed59108de')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"300085cd-6aea-44bf-b317-1685f26da53a\":{\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"dc1add67-927f-4eac-9d35-e7fd362cea92\",\"type\":\"Row\"},{\"attributes\":{\"children\":[{\"id\":\"f72352ed-f1b9-4b69-a8eb-82e6df18b287\",\"type\":\"Row\"},{\"id\":\"dc1add67-927f-4eac-9d35-e7fd362cea92\",\"type\":\"Row\"}]},\"id\":\"52460bc0-5b3b-4b39-942b-0a2288ccffc0\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"089d93fb-ba5d-4027-a709-c30f946d2a22\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"production function\"},\"renderers\":[{\"id\":\"cd2a6bbb-ba7f-4221-85f4-56baeeff1d19\",\"type\":\"GlyphRenderer\"}]},\"id\":\"5d8b4d58-3c66-48eb-bfb2-674ca4961ff0\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"f6140c69-6515-41cd-95e6-b5b4967e4449\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"children\":[{\"id\":\"e5bc688b-23ea-4f14-8d86-91f1f122d720\",\"type\":\"ToolbarBox\"},{\"id\":\"52460bc0-5b3b-4b39-942b-0a2288ccffc0\",\"type\":\"Column\"}]},\"id\":\"27e39e62-dc42-4189-bc4d-409ed59108de\",\"type\":\"Column\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production\":{\"__ndarray__\":\"AAAAAAAAAAAAXAnYVJ9YP2hQoxLeW2s/fp/r5WHedj+lOxPicwqBPzl8TYHU34c/VLVRJ5MYkD+C92ksTiaVPxSJ/P41R5s/k5J2f5NYoT/GGC1+KdGlP/l2ZsS/MKs/bUpLxm3PsD8LKSFNSaO0P1DX4hayKrk/kbObx6d8vj+qLwM5gFfCP11Wz0JA6sU/xzSdHD/9yT/7zntGHJPOP/ZXMPiL1NE/We3M1vya1D8Zc2Myu5TXP2Nmq+8qtto/vLuWV7/w3T/kEz96+JngP4++NK5CN+I/M7jYjPrH4z8U+6O62UTlP8VF8ikSqOY/AX5rFJHt5z+PJONeCBPpPymcVhXIF+o/1qXJF3j86j9Q+xYtw8LrP9gWLuMBbew/oExm/O797D90CEFtanjtP1IKxClM3+0/NKAnjkU17j+XCBPuznzuP3iNEnYeuO4/BiKntCXp7j8X5M+MkxHvP9I7BdTYMu8/0ySCVi5O7z+Emj5im2TvP3LO90f8du8/FG2eewiG7z/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"8bc6e082-8d12-4113-a12b-21291cf5ab95\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"5e513410-124b-46a3-a783-35fcf3e882cc\",\"type\":\"UnionRenderers\"}},\"id\":\"68b299c6-6d81-4e67-be90-0be5be61bac1\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"d3e2aa84-c2a6-4439-b69c-cfc5c5d8fdac\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"68b299c6-6d81-4e67-be90-0be5be61bac1\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d3e2aa84-c2a6-4439-b69c-cfc5c5d8fdac\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"9cc13464-393a-42a3-bc48-772dca13cfb2\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"8329107d-310d-4817-8c04-f03ecefce29b\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"5d4c92ff-103a-4c2c-b439-a8a34084e096\",\"type\":\"CDSView\"}},\"id\":\"cd2a6bbb-ba7f-4221-85f4-56baeeff1d19\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"9cc13464-393a-42a3-bc48-772dca13cfb2\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"8329107d-310d-4817-8c04-f03ecefce29b\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"0875e38a-7a43-49ae-a7f6-b520ff1c88c9\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"68b299c6-6d81-4e67-be90-0be5be61bac1\",\"type\":\"ColumnDataSource\"}},\"id\":\"5d4c92ff-103a-4c2c-b439-a8a34084e096\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"022e3011-66d4-42d5-bce2-5cbc400ec4f3\",\"type\":\"BoxAnnotation\"}},\"id\":\"b5ea1880-8e3f-47ea-8de6-7ecc90674a54\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"click_policy\":\"mute\",\"items\":[{\"id\":\"5d8b4d58-3c66-48eb-bfb2-674ca4961ff0\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"4c003cc9-b37a-4fc8-a688-f145c781279b\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"f5d0bf40-8bc0-4352-b1f8-717d5e5c6f4b\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"17ef9669-e931-49fa-b2d5-44b84d0c03bc\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null,\"end\":2.4849518445971936,\"reset_end\":2.4849518445971936,\"reset_start\":0.07363873473438232,\"start\":0.07363873473438232},\"id\":\"4d960c3c-8ce5-4fe7-b84f-2fd0310bac7c\",\"type\":\"Range1d\"},{\"attributes\":{\"dimension\":\"height\",\"level\":\"glyph\",\"line_color\":{\"value\":\"green\"},\"line_width\":{\"value\":3},\"location\":0.5,\"plot\":null},\"id\":\"1cd40676-1a23-4542-83c5-26d6d84c7804\",\"type\":\"Span\"},{\"attributes\":{},\"id\":\"56b8a02c-69c9-4000-aecc-a52623759e58\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"marginal production\"},\"renderers\":[{\"id\":\"e0569136-5dd2-48bf-874b-e5af642552ba\",\"type\":\"GlyphRenderer\"}]},\"id\":\"1b6e3d89-cc90-424f-83c0-da9152d04e88\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"83789e1c-873b-446d-9ae9-5c1a684bb10b\",\"type\":\"BasicTicker\"},{\"attributes\":{\"click_policy\":\"mute\",\"items\":[{\"id\":\"1b6e3d89-cc90-424f-83c0-da9152d04e88\",\"type\":\"LegendItem\"},{\"id\":\"91498db7-6f5b-4e26-8b40-2cdb0769e709\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"76e96586-36c2-40f7-a6fc-c0e4beeff58e\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3f11a2c2-2caf-4c9a-94da-0446d5445b0a\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"0e2ce454-434c-41cc-8a6a-84cf0d223985\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d6316611-001f-4e96-9d80-b763d500082d\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"16246b46-8ffd-4c3c-899b-fec770fb065e\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"5e2370f9-8648-418e-be98-6d4b818eb751\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"06f2f48a-db48-4197-bc11-519a5578aef9\",\"type\":\"CDSView\"}},\"id\":\"e0569136-5dd2-48bf-874b-e5af642552ba\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"83789e1c-873b-446d-9ae9-5c1a684bb10b\",\"type\":\"BasicTicker\"}},\"id\":\"7aecd3a3-e45a-4e24-b568-2b3fdfbdb75b\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"5e2370f9-8648-418e-be98-6d4b818eb751\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"16246b46-8ffd-4c3c-899b-fec770fb065e\",\"type\":\"Line\"},{\"attributes\":{\"plot\":null,\"text\":\"\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"f5351b7c-3b48-4f6e-9cbd-f52c641aa37f\",\"type\":\"Title\"},{\"attributes\":{\"line_color\":\"#fc4f30\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"66649290-bec1-4b1a-a681-5d43c3cd3cd1\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"d6645984-3c6c-45a9-8463-f567d2a2a865\",\"type\":\"CrosshairTool\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"d6316611-001f-4e96-9d80-b763d500082d\",\"type\":\"Line\"},{\"attributes\":{\"below\":[{\"id\":\"c210c5d7-fbdd-465b-b10e-bd9b707273b1\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"7a36dc48-cee0-4450-8506-dbb9c5ee8a0e\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":400,\"renderers\":[{\"id\":\"c210c5d7-fbdd-465b-b10e-bd9b707273b1\",\"type\":\"LinearAxis\"},{\"id\":\"6d97718b-58d2-4483-9df9-99bf9f2e9d9f\",\"type\":\"Grid\"},{\"id\":\"7a36dc48-cee0-4450-8506-dbb9c5ee8a0e\",\"type\":\"LinearAxis\"},{\"id\":\"7aecd3a3-e45a-4e24-b568-2b3fdfbdb75b\",\"type\":\"Grid\"},{\"id\":\"022e3011-66d4-42d5-bce2-5cbc400ec4f3\",\"type\":\"BoxAnnotation\"},{\"id\":\"76e96586-36c2-40f7-a6fc-c0e4beeff58e\",\"type\":\"Legend\"},{\"id\":\"e0569136-5dd2-48bf-874b-e5af642552ba\",\"type\":\"GlyphRenderer\"},{\"id\":\"f31426fe-7aa2-4db9-9caa-261dfc57822d\",\"type\":\"GlyphRenderer\"},{\"id\":\"57f353fc-f45c-4000-86ea-5d6a0adb8ed3\",\"type\":\"Span\"}],\"title\":{\"id\":\"f5351b7c-3b48-4f6e-9cbd-f52c641aa37f\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"0b984474-5e9e-460f-bf73-f422791dc4fc\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"20e0ebec-6379-464b-be6d-d2df32d83286\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"089d93fb-ba5d-4027-a709-c30f946d2a22\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"4d960c3c-8ce5-4fe7-b84f-2fd0310bac7c\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"56b8a02c-69c9-4000-aecc-a52623759e58\",\"type\":\"LinearScale\"}},\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"f010af75-cac5-41d1-b3fc-15291475ac12\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"0e2ce454-434c-41cc-8a6a-84cf0d223985\",\"type\":\"ColumnDataSource\"}},\"id\":\"06f2f48a-db48-4197-bc11-519a5578aef9\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"AAAAAAAA+P9wKmf1/NmyP5AJRQZW8rQ/JohgRVlYtz9Vcy1yARi6P5QeMuv9Pr0/cb54jWtuwD+SuNxmhIHCP/RYOVeF4sQ/ZYAoGB6cxz+NcSrU0rnKPyKQQ0m+R84/pYYXZRUp0T/pF+k5e3LTP2Z8BtRbBdY/ptJpSc3l2D/94ExX/BXcP6QphZxcld8/JFJAZeev4T8VgnEtbbbjPyjS1NyR1+U/k7+Z+iYK6D9010syuULqPz5RIJsidOw/+zS//m2Q7j+n78Kg+ETwP7kpFOk5KvE/aCLOfxfz8T+ye0+DPpzyP0opZ1gPJPM/YB6t0IuK8z8wxrtCG9HzP5BPVjA1+vM/RpaZ0wMJ9D9jgEGkDAH0PzJDoLjn5fM/JvQawQm78z9pQPBqoIPzP7XrMJR+QvM/zFp7uBT68j/dDtLxcazyP0VnxmVKW/I/hH5hqQAI8j/eDSlZsLPxP1AB4Ls4X/E/3ztSvUYL8T/dV6HjXbjwPxYinxrgZvA/WDJuVBQX8D/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"034baf54-b035-4386-8bef-16ed4d390881\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"d2e44dd9-a460-4654-9d73-ae437d333b4b\",\"type\":\"UnionRenderers\"}},\"id\":\"408d314d-87c6-499c-a6a9-7f6c617747aa\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"022e3011-66d4-42d5-bce2-5cbc400ec4f3\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6acf1026-8bda-4210-b307-ed1ee5d6a4a5\",\"type\":\"BasicTicker\"}},\"id\":\"6d97718b-58d2-4483-9df9-99bf9f2e9d9f\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5d376a84-bb31-426a-bdcf-617bfc206247\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#fc4f30\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"22bfd4c1-25dc-4d7f-9334-4d6b8a9633ec\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"408d314d-87c6-499c-a6a9-7f6c617747aa\",\"type\":\"ColumnDataSource\"}},\"id\":\"db932d77-e1b2-4645-8a88-e269298c6be6\",\"type\":\"CDSView\"},{\"attributes\":{\"children\":[{\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"f72352ed-f1b9-4b69-a8eb-82e6df18b287\",\"type\":\"Row\"},{\"attributes\":{\"toolbar\":{\"id\":\"fc8d0386-d55d-4e35-b334-a5fb1d77b8e9\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"e5bc688b-23ea-4f14-8d86-91f1f122d720\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#fc4f30\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"c3db3f51-8ba9-4528-b3ac-a6796b5d4948\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"end\":0.9866142981514304,\"reset_end\":0.9866142981514304,\"reset_start\":0.0},\"id\":\"ae4d615e-999c-492a-a881-ddc59a72a892\",\"type\":\"Range1d\"},{\"attributes\":{\"below\":[{\"id\":\"3ef79822-b70d-413c-bacd-f424766848d6\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"0e3f3bd7-fa33-4f5c-8660-c4c936c55333\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":400,\"renderers\":[{\"id\":\"3ef79822-b70d-413c-bacd-f424766848d6\",\"type\":\"LinearAxis\"},{\"id\":\"770474f1-3b07-471b-bcca-3ca488ce90c4\",\"type\":\"Grid\"},{\"id\":\"0e3f3bd7-fa33-4f5c-8660-c4c936c55333\",\"type\":\"LinearAxis\"},{\"id\":\"a9eeb26d-de1f-4b83-982b-ffd48b0840ee\",\"type\":\"Grid\"},{\"id\":\"17ef9669-e931-49fa-b2d5-44b84d0c03bc\",\"type\":\"BoxAnnotation\"},{\"id\":\"4c003cc9-b37a-4fc8-a688-f145c781279b\",\"type\":\"Legend\"},{\"id\":\"cd2a6bbb-ba7f-4221-85f4-56baeeff1d19\",\"type\":\"GlyphRenderer\"},{\"id\":\"1cd40676-1a23-4542-83c5-26d6d84c7804\",\"type\":\"Span\"}],\"title\":{\"id\":\"1424dc3f-c16f-4e53-8239-2523f2f7170f\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"7cfb022a-dd73-4fab-b838-2b20fcd2e177\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"20e0ebec-6379-464b-be6d-d2df32d83286\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"d8613094-bcc8-43cf-90d2-9232adaaf734\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"ae4d615e-999c-492a-a881-ddc59a72a892\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"37121e29-cb24-4fbe-a81c-dba023a03ad8\",\"type\":\"LinearScale\"}},\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data_source\":{\"id\":\"408d314d-87c6-499c-a6a9-7f6c617747aa\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"66649290-bec1-4b1a-a681-5d43c3cd3cd1\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"22bfd4c1-25dc-4d7f-9334-4d6b8a9633ec\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"c3db3f51-8ba9-4528-b3ac-a6796b5d4948\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"db932d77-e1b2-4645-8a88-e269298c6be6\",\"type\":\"CDSView\"}},\"id\":\"f31426fe-7aa2-4db9-9caa-261dfc57822d\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"801952a7-fda6-4804-8536-a0574cbb2e6f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"c8a03835-a82b-4df8-8c82-f314db480e9a\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"d2e44dd9-a460-4654-9d73-ae437d333b4b\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"aeb4147c-8367-4e65-9faf-24fca0883f4d\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"8bc6e082-8d12-4113-a12b-21291cf5ab95\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"20e0ebec-6379-464b-be6d-d2df32d83286\",\"type\":\"Range1d\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3f11a2c2-2caf-4c9a-94da-0446d5445b0a\",\"type\":\"SaveTool\"},{\"id\":\"f010af75-cac5-41d1-b3fc-15291475ac12\",\"type\":\"PanTool\"},{\"id\":\"f5d0bf40-8bc0-4352-b1f8-717d5e5c6f4b\",\"type\":\"WheelZoomTool\"},{\"id\":\"b5ea1880-8e3f-47ea-8de6-7ecc90674a54\",\"type\":\"BoxZoomTool\"},{\"id\":\"aeb4147c-8367-4e65-9faf-24fca0883f4d\",\"type\":\"ResetTool\"},{\"id\":\"d6645984-3c6c-45a9-8463-f567d2a2a865\",\"type\":\"CrosshairTool\"}]},\"id\":\"0b984474-5e9e-460f-bf73-f422791dc4fc\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":\"height\",\"level\":\"glyph\",\"line_color\":{\"value\":\"green\"},\"line_width\":{\"value\":3},\"location\":0.5,\"plot\":null},\"id\":\"57f353fc-f45c-4000-86ea-5d6a0adb8ed3\",\"type\":\"Span\"},{\"attributes\":{\"tools\":[{\"id\":\"483ea190-7d78-419e-b2ab-14e824745623\",\"type\":\"SaveTool\"},{\"id\":\"73a22e75-cf4d-45e0-a447-5844c2f263ac\",\"type\":\"PanTool\"},{\"id\":\"de184645-603d-4e29-a665-a2c7fea2a1af\",\"type\":\"WheelZoomTool\"},{\"id\":\"d8ca7ea3-f871-4c68-b7ec-14267eed1edc\",\"type\":\"BoxZoomTool\"},{\"id\":\"62c0ba9e-346f-472b-9a95-de1dfaeb0809\",\"type\":\"ResetTool\"},{\"id\":\"823b5c53-d61d-4d55-bbc1-87442a56e2b7\",\"type\":\"CrosshairTool\"},{\"id\":\"3f11a2c2-2caf-4c9a-94da-0446d5445b0a\",\"type\":\"SaveTool\"},{\"id\":\"f010af75-cac5-41d1-b3fc-15291475ac12\",\"type\":\"PanTool\"},{\"id\":\"f5d0bf40-8bc0-4352-b1f8-717d5e5c6f4b\",\"type\":\"WheelZoomTool\"},{\"id\":\"b5ea1880-8e3f-47ea-8de6-7ecc90674a54\",\"type\":\"BoxZoomTool\"},{\"id\":\"aeb4147c-8367-4e65-9faf-24fca0883f4d\",\"type\":\"ResetTool\"},{\"id\":\"d6645984-3c6c-45a9-8463-f567d2a2a865\",\"type\":\"CrosshairTool\"}]},\"id\":\"fc8d0386-d55d-4e35-b334-a5fb1d77b8e9\",\"type\":\"ProxyToolbar\"},{\"attributes\":{},\"id\":\"d8613094-bcc8-43cf-90d2-9232adaaf734\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"6acf1026-8bda-4210-b307-ed1ee5d6a4a5\",\"type\":\"BasicTicker\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"483ea190-7d78-419e-b2ab-14e824745623\",\"type\":\"SaveTool\"},{\"id\":\"73a22e75-cf4d-45e0-a447-5844c2f263ac\",\"type\":\"PanTool\"},{\"id\":\"de184645-603d-4e29-a665-a2c7fea2a1af\",\"type\":\"WheelZoomTool\"},{\"id\":\"d8ca7ea3-f871-4c68-b7ec-14267eed1edc\",\"type\":\"BoxZoomTool\"},{\"id\":\"62c0ba9e-346f-472b-9a95-de1dfaeb0809\",\"type\":\"ResetTool\"},{\"id\":\"823b5c53-d61d-4d55-bbc1-87442a56e2b7\",\"type\":\"CrosshairTool\"}]},\"id\":\"7cfb022a-dd73-4fab-b838-2b20fcd2e177\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"034baf54-b035-4386-8bef-16ed4d390881\",\"type\":\"Selection\"},{\"attributes\":{\"plot\":null,\"text\":\"production function\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"1424dc3f-c16f-4e53-8239-2523f2f7170f\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"37932c0f-9c1d-489f-9118-adffc3e98438\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b515ee62-175a-482d-a351-4516d8e9c26e\",\"type\":\"BasicTicker\"}},\"id\":\"770474f1-3b07-471b-bcca-3ca488ce90c4\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"average production\"},\"renderers\":[{\"id\":\"f31426fe-7aa2-4db9-9caa-261dfc57822d\",\"type\":\"GlyphRenderer\"}]},\"id\":\"91498db7-6f5b-4e26-8b40-2cdb0769e709\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"cCpn9fzZsj+QCUUGVvK0PwI3XW2Hl7k/Gt0V3qw9vz8bQPZxegzDP/3HPDZBM8c/x98FApI2zD8+lD1aaR/RP+TdWAKcvNQ/+Gn3Y4QL2T95qx6TBybeP/+FEab4EuI/had412qR5T94H9A2gZfpPztIF1exKe4/R2iO+5ei8T+HjfTig270P6mvB5mYa/c/ZDFAyyGF+j8iqYYISJ79P/EB5gVjSQBAHIM8opCcAUCvUiksPbMCQHQO7bHMeQNARnDFbi7hA0A9cMVuLuEDQGQO7bHMeQNAr1IpLD2zAkAfgzyikJwBQOwB5gVjSQBAK6mGCEie/T9rMUDLIYX6P6avB5mYa/c/no304oNu9D9ZaI77l6LxPylIF1exKe4/bx/QNoGX6T+Jp3jXapHlP+CFEab4EuI/Nqsekwcm3j8FavdjhAvZPz/eWAKcvNQ/b5Q9Wmkf0T8Z4AUCkjbMP/nHPDZBM8c/JED2cXoMwz+93RXerD2/P0E2XW2Hl7k/BApFBlbytD/4K2f1/NmyPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"5d376a84-bb31-426a-bdcf-617bfc206247\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"c8a03835-a82b-4df8-8c82-f314db480e9a\",\"type\":\"UnionRenderers\"}},\"id\":\"0e2ce454-434c-41cc-8a6a-84cf0d223985\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"37121e29-cb24-4fbe-a81c-dba023a03ad8\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"f6140c69-6515-41cd-95e6-b5b4967e4449\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"83789e1c-873b-446d-9ae9-5c1a684bb10b\",\"type\":\"BasicTicker\"}},\"id\":\"7a36dc48-cee0-4450-8506-dbb9c5ee8a0e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"0875e38a-7a43-49ae-a7f6-b520ff1c88c9\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"f6e267e6-a9f3-4aa7-add7-19db0d42dad3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"6acf1026-8bda-4210-b307-ed1ee5d6a4a5\",\"type\":\"BasicTicker\"}},\"id\":\"c210c5d7-fbdd-465b-b10e-bd9b707273b1\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"eb0211ee-fb70-4077-9130-575ca7ef3825\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"17ef9669-e931-49fa-b2d5-44b84d0c03bc\",\"type\":\"BoxAnnotation\"}},\"id\":\"d8ca7ea3-f871-4c68-b7ec-14267eed1edc\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"801952a7-fda6-4804-8536-a0574cbb2e6f\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"b515ee62-175a-482d-a351-4516d8e9c26e\",\"type\":\"BasicTicker\"}},\"id\":\"3ef79822-b70d-413c-bacd-f424766848d6\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"de184645-603d-4e29-a665-a2c7fea2a1af\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"axis_label\":\"production\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"37932c0f-9c1d-489f-9118-adffc3e98438\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"eb0211ee-fb70-4077-9130-575ca7ef3825\",\"type\":\"BasicTicker\"}},\"id\":\"0e3f3bd7-fa33-4f5c-8660-c4c936c55333\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"823b5c53-d61d-4d55-bbc1-87442a56e2b7\",\"type\":\"CrosshairTool\"},{\"attributes\":{},\"id\":\"b515ee62-175a-482d-a351-4516d8e9c26e\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"62c0ba9e-346f-472b-9a95-de1dfaeb0809\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"73a22e75-cf4d-45e0-a447-5844c2f263ac\",\"type\":\"PanTool\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"37ac7771-4c60-4d2a-ad11-972c9db967b6\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"eb0211ee-fb70-4077-9130-575ca7ef3825\",\"type\":\"BasicTicker\"}},\"id\":\"a9eeb26d-de1f-4b83-982b-ffd48b0840ee\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"483ea190-7d78-419e-b2ab-14e824745623\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"5e513410-124b-46a3-a783-35fcf3e882cc\",\"type\":\"UnionRenderers\"}],\"root_ids\":[\"27e39e62-dc42-4189-bc4d-409ed59108de\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"300085cd-6aea-44bf-b317-1685f26da53a\",\"roots\":{\"27e39e62-dc42-4189-bc4d-409ed59108de\":\"8b50c96b-4dfd-4763-8fac-a68db860f172\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Layout\n", " .Overlay.Production_function :Overlay\n", " .Curve.Production_function :Curve [labor] (production)\n", " .VLine.I :VLine [x,y]\n", " .Overlay.I :Overlay\n", " .Curve.Marginal_production :Curve [labor] (production per labor unit)\n", " .Curve.Average_production :Curve [labor] (production per labor unit)\n", " .VLine.I :VLine [x,y]" ] }, "execution_count": 93, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "27e39e62-dc42-4189-bc4d-409ed59108de" } }, "output_type": "execute_result" } ], "source": [ "%%opts Curve [width=400 tools=['crosshair']] Overlay [legend_position='top_left']\n", "(production * vline + marginal_product * average_product * vline).cols(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, the image I need for Anki is:" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('f490540e-b215-4897-a5c5-7c40b30f40ca')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n", "(function(root) {\n", " function embed_document(root) {\n", " \n", " var docs_json = {\"4bf02ca7-d6ea-4df9-adc1-98f32140ad44\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"dcb76b0a-e32a-415f-99d0-35b07afb71b9\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"9b6ac15e-0e56-4b39-b0ab-d9e552ec4d4e\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":400,\"renderers\":[{\"id\":\"dcb76b0a-e32a-415f-99d0-35b07afb71b9\",\"type\":\"LinearAxis\"},{\"id\":\"6530c32a-4bc4-425b-b01d-d52bc80b968c\",\"type\":\"Grid\"},{\"id\":\"9b6ac15e-0e56-4b39-b0ab-d9e552ec4d4e\",\"type\":\"LinearAxis\"},{\"id\":\"1f5a4b82-4a25-4a09-9777-a453d4d6b22e\",\"type\":\"Grid\"},{\"id\":\"430b08a7-09e5-449d-b5d1-99f05e8c5db8\",\"type\":\"BoxAnnotation\"},{\"id\":\"6b325d93-2d7d-4506-8f7c-ce9c83fdccaf\",\"type\":\"Legend\"},{\"id\":\"40e3167c-7cf5-456e-bf5a-5fbd16552659\",\"type\":\"GlyphRenderer\"},{\"id\":\"0f7a9d0f-ec2b-4bf1-8d0e-84b70cb532c7\",\"type\":\"Span\"}],\"title\":{\"id\":\"f55f8eb3-df30-4380-82c1-fa40d0cb0282\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"d6617de7-0017-4eda-b291-b835d5d63bff\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"ea36a705-1074-4534-a0a9-08b7adeeafea\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"e49bba1c-29b8-45b2-8af0-21ceda8b5af0\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"31d989b8-f9ee-4921-aade-35183688ff70\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"406162ba-3aee-4e79-b949-15ead967599e\",\"type\":\"LinearScale\"}},\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"defa6f49-a1f7-476d-922e-241d6099cbb4\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"430b08a7-09e5-449d-b5d1-99f05e8c5db8\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"f8534ab5-186f-4892-8793-522b135723bd\",\"type\":\"ColumnDataSource\"}},\"id\":\"6cbffc8d-8b30-4ffe-b581-f5ee8757db2f\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"dd673a71-4ce2-428d-a6d5-01b282fc402b\",\"type\":\"PanTool\"},{\"attributes\":{\"dimension\":\"height\",\"level\":\"glyph\",\"line_color\":{\"value\":\"green\"},\"line_width\":{\"value\":3},\"location\":0.5,\"plot\":null},\"id\":\"0dc97f48-ae8f-4a6b-b9c6-e51f2a1e1d71\",\"type\":\"Span\"},{\"attributes\":{\"items\":[],\"plot\":{\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"6b325d93-2d7d-4506-8f7c-ce9c83fdccaf\",\"type\":\"Legend\"},{\"attributes\":{\"children\":[{\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"e876d34e-c364-42aa-930b-a3f52acfd273\",\"type\":\"Row\"},{\"attributes\":{\"children\":[{\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"cb1705d5-7632-4465-923a-85ac1af698b8\",\"type\":\"Row\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"e7ce1ed6-53af-427f-91ef-c657eb90c995\",\"type\":\"SaveTool\"},{\"id\":\"582692ae-5a64-4c86-a38f-7688e88974a3\",\"type\":\"PanTool\"},{\"id\":\"c0d7f147-9baa-428f-943d-966c83262fc2\",\"type\":\"WheelZoomTool\"},{\"id\":\"f2af6561-cbb2-4c66-bc38-0f76a9d4795f\",\"type\":\"BoxZoomTool\"},{\"id\":\"fb45ca09-635d-4f7a-bddf-4bb142adfbd3\",\"type\":\"ResetTool\"},{\"id\":\"b80f1bdb-5231-4423-b807-c6262532b714\",\"type\":\"CrosshairTool\"}]},\"id\":\"d6617de7-0017-4eda-b291-b835d5d63bff\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"ac06becb-429f-4d5f-a23f-adcaaeb353b9\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"c0d7f147-9baa-428f-943d-966c83262fc2\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"8bce9148-7d99-402a-bff0-935f1b1d0efc\",\"type\":\"ColumnDataSource\"}},\"id\":\"9f96138d-27df-409b-8330-55f40da252c0\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"reset_end\":1.0,\"reset_start\":0.0},\"id\":\"ea36a705-1074-4534-a0a9-08b7adeeafea\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"99bb0033-8caf-46d6-89dd-5e4f8a5bc212\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"fb45ca09-635d-4f7a-bddf-4bb142adfbd3\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"582692ae-5a64-4c86-a38f-7688e88974a3\",\"type\":\"PanTool\"},{\"attributes\":{\"data_source\":{\"id\":\"f8534ab5-186f-4892-8793-522b135723bd\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"9cac099e-d69c-4daa-abd0-761975ecfa3c\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"ac06becb-429f-4d5f-a23f-adcaaeb353b9\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"bdbc1b65-e14e-41b0-8392-5cd9fad1c10c\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"6cbffc8d-8b30-4ffe-b581-f5ee8757db2f\",\"type\":\"CDSView\"}},\"id\":\"1dfd5dd1-406a-47a0-a263-a6bfc01a242a\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1b93398a-7afc-469b-8fa8-2b639ec70167\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"6203d635-1585-4d73-a57f-61cdee257030\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"defa6f49-a1f7-476d-922e-241d6099cbb4\",\"type\":\"BasicTicker\"}},\"id\":\"dcb76b0a-e32a-415f-99d0-35b07afb71b9\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"a6a8f5ef-6b05-414a-aaac-28918ea25606\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"c0d198de-fede-4611-82dd-533dd0446f58\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"marginal production\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"f55f8eb3-df30-4380-82c1-fa40d0cb0282\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"6abe3b57-ab02-41d0-9915-a7e9f3075880\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"d93a33a2-f340-48f2-acb3-23883b930913\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"e49bba1c-29b8-45b2-8af0-21ceda8b5af0\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production\":{\"__ndarray__\":\"AAAAAAAAAAAAXAnYVJ9YP2hQoxLeW2s/fp/r5WHedj+lOxPicwqBPzl8TYHU34c/VLVRJ5MYkD+C92ksTiaVPxSJ/P41R5s/k5J2f5NYoT/GGC1+KdGlP/l2ZsS/MKs/bUpLxm3PsD8LKSFNSaO0P1DX4hayKrk/kbObx6d8vj+qLwM5gFfCP11Wz0JA6sU/xzSdHD/9yT/7zntGHJPOP/ZXMPiL1NE/We3M1vya1D8Zc2Myu5TXP2Nmq+8qtto/vLuWV7/w3T/kEz96+JngP4++NK5CN+I/M7jYjPrH4z8U+6O62UTlP8VF8ikSqOY/AX5rFJHt5z+PJONeCBPpPymcVhXIF+o/1qXJF3j86j9Q+xYtw8LrP9gWLuMBbew/oExm/O797D90CEFtanjtP1IKxClM3+0/NKAnjkU17j+XCBPuznzuP3iNEnYeuO4/BiKntCXp7j8X5M+MkxHvP9I7BdTYMu8/0ySCVi5O7z+Emj5im2TvP3LO90f8du8/FG2eewiG7z/DcQomWJLvPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"65398a2c-a2d9-46a7-970b-16a023c6324a\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"e1b1117d-0bdf-4e6f-b751-846074b92c31\",\"type\":\"UnionRenderers\"}},\"id\":\"f8534ab5-186f-4892-8793-522b135723bd\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"e1b1117d-0bdf-4e6f-b751-846074b92c31\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label\":\"labor\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"6abe3b57-ab02-41d0-9915-a7e9f3075880\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"71a75202-532d-4919-b449-9d281f4493a0\",\"type\":\"BasicTicker\"}},\"id\":\"ec32ac2a-3565-44e5-b868-0b02353b6401\",\"type\":\"LinearAxis\"},{\"attributes\":{\"items\":[],\"plot\":{\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"d52f6150-a4ce-4f60-9d33-f909c6bb23c2\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"71a75202-532d-4919-b449-9d281f4493a0\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"623a1e08-8fc2-435a-8661-6b2327845206\",\"type\":\"Selection\"},{\"attributes\":{\"plot\":null,\"text\":\"production function\",\"text_color\":{\"value\":\"black\"},\"text_font_size\":{\"value\":\"12pt\"}},\"id\":\"094b459e-7dd3-45a4-91c7-2970ecea4d13\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"a5d5df54-30bc-47c1-8a14-d1110953b2f5\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"b80f1bdb-5231-4423-b807-c6262532b714\",\"type\":\"CrosshairTool\"},{\"attributes\":{\"data_source\":{\"id\":\"8bce9148-7d99-402a-bff0-935f1b1d0efc\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"400eedcc-2c3a-417e-bacd-510e1151c9fa\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"a61ee41f-f77e-4324-a67e-2ad0da82ced6\",\"type\":\"Line\"},\"nonselection_glyph\":{\"id\":\"7ba82dcd-8ef6-45b2-9b44-9abc4080dddd\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"9f96138d-27df-409b-8330-55f40da252c0\",\"type\":\"CDSView\"}},\"id\":\"40e3167c-7cf5-456e-bf5a-5fbd16552659\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"eaa955af-ad11-4cf2-a739-4646639e2439\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"children\":[{\"id\":\"3c4d7c93-687b-48d8-9b92-c1c8f8418160\",\"type\":\"ToolbarBox\"},{\"id\":\"3c2125cc-5059-4ca2-8a5b-2264d1e829ef\",\"type\":\"Column\"}]},\"id\":\"f490540e-b215-4897-a5c5-7c40b30f40ca\",\"type\":\"Column\"},{\"attributes\":{\"below\":[{\"id\":\"ec32ac2a-3565-44e5-b868-0b02353b6401\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"4074827e-c513-4d76-abf2-4e17c74ab372\",\"type\":\"LinearAxis\"}],\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"min_border_top\":10,\"plot_height\":200,\"plot_width\":400,\"renderers\":[{\"id\":\"ec32ac2a-3565-44e5-b868-0b02353b6401\",\"type\":\"LinearAxis\"},{\"id\":\"a066eeb2-642d-40ba-9b7e-a32a4d7d66e0\",\"type\":\"Grid\"},{\"id\":\"4074827e-c513-4d76-abf2-4e17c74ab372\",\"type\":\"LinearAxis\"},{\"id\":\"d14eff90-410b-417a-bee0-eae108fa89ef\",\"type\":\"Grid\"},{\"id\":\"eaa955af-ad11-4cf2-a739-4646639e2439\",\"type\":\"BoxAnnotation\"},{\"id\":\"d52f6150-a4ce-4f60-9d33-f909c6bb23c2\",\"type\":\"Legend\"},{\"id\":\"1dfd5dd1-406a-47a0-a263-a6bfc01a242a\",\"type\":\"GlyphRenderer\"},{\"id\":\"0dc97f48-ae8f-4a6b-b9c6-e51f2a1e1d71\",\"type\":\"Span\"}],\"title\":{\"id\":\"094b459e-7dd3-45a4-91c7-2970ecea4d13\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"666c4d1d-fc4a-4f3e-a335-b5036baf93e4\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"ea36a705-1074-4534-a0a9-08b7adeeafea\",\"type\":\"Range1d\"},\"x_scale\":{\"id\":\"99bb0033-8caf-46d6-89dd-5e4f8a5bc212\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"fd998eab-061f-4286-a37c-68651b44dab4\",\"type\":\"Range1d\"},\"y_scale\":{\"id\":\"a1ef2085-074a-45b8-bef9-06fba4e832d9\",\"type\":\"LinearScale\"}},\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"production\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"a5d5df54-30bc-47c1-8a14-d1110953b2f5\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"22b61157-b323-4056-b4ad-9fa176ab5a70\",\"type\":\"BasicTicker\"}},\"id\":\"4074827e-c513-4d76-abf2-4e17c74ab372\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"6d78ce15-7dc7-49c4-8025-bf817654228f\",\"type\":\"CrosshairTool\"},{\"attributes\":{\"children\":[{\"id\":\"e876d34e-c364-42aa-930b-a3f52acfd273\",\"type\":\"Row\"},{\"id\":\"cb1705d5-7632-4465-923a-85ac1af698b8\",\"type\":\"Row\"}]},\"id\":\"3c2125cc-5059-4ca2-8a5b-2264d1e829ef\",\"type\":\"Column\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"71a75202-532d-4919-b449-9d281f4493a0\",\"type\":\"BasicTicker\"}},\"id\":\"a066eeb2-642d-40ba-9b7e-a32a4d7d66e0\",\"type\":\"Grid\"},{\"attributes\":{\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"defa6f49-a1f7-476d-922e-241d6099cbb4\",\"type\":\"BasicTicker\"}},\"id\":\"6530c32a-4bc4-425b-b01d-d52bc80b968c\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"7ba82dcd-8ef6-45b2-9b44-9abc4080dddd\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"end\":2.4849518445971936,\"reset_end\":2.4849518445971936,\"reset_start\":0.07363873473438232,\"start\":0.07363873473438232},\"id\":\"31d989b8-f9ee-4921-aade-35183688ff70\",\"type\":\"Range1d\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"9cac099e-d69c-4daa-abd0-761975ecfa3c\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"406162ba-3aee-4e79-b949-15ead967599e\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"22b61157-b323-4056-b4ad-9fa176ab5a70\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"2c6238be-e663-49a4-98da-ab351d3e3b51\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"22b61157-b323-4056-b4ad-9fa176ab5a70\",\"type\":\"BasicTicker\"}},\"id\":\"d14eff90-410b-417a-bee0-eae108fa89ef\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"production per labor unit\",\"bounds\":\"auto\",\"formatter\":{\"id\":\"c0d198de-fede-4611-82dd-533dd0446f58\",\"type\":\"BasicTickFormatter\"},\"major_label_orientation\":\"horizontal\",\"plot\":{\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d1e154a4-de45-466b-9ae0-fedf548086e5\",\"type\":\"BasicTicker\"}},\"id\":\"9b6ac15e-0e56-4b39-b0ab-d9e552ec4d4e\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"a61ee41f-f77e-4324-a67e-2ad0da82ced6\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production per labor unit\"}},\"id\":\"400eedcc-2c3a-417e-bacd-510e1151c9fa\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"efaa205a-9a2f-4c27-8e52-1207f2bcea30\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"d1e154a4-de45-466b-9ae0-fedf548086e5\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"65398a2c-a2d9-46a7-970b-16a023c6324a\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#30a2da\",\"line_width\":2,\"x\":{\"field\":\"labor\"},\"y\":{\"field\":\"production\"}},\"id\":\"bdbc1b65-e14e-41b0-8392-5cd9fad1c10c\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"eaa955af-ad11-4cf2-a739-4646639e2439\",\"type\":\"BoxAnnotation\"}},\"id\":\"488f0cc8-2cbd-45b7-9c6e-3ac900eadf09\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"e7ce1ed6-53af-427f-91ef-c657eb90c995\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"6203d635-1585-4d73-a57f-61cdee257030\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"430b08a7-09e5-449d-b5d1-99f05e8c5db8\",\"type\":\"BoxAnnotation\"}},\"id\":\"f2af6561-cbb2-4c66-bc38-0f76a9d4795f\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"a1ef2085-074a-45b8-bef9-06fba4e832d9\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"labor\":{\"__ndarray__\":\"AAAAAAAAAAA5BS+n4OWUPzkFL6fg5aQ/1ofG+tBYrz85BS+n4OW0P4fG+tBYH7o/1ofG+tBYvz+SJEmSJEnCPzkFL6fg5cQ/4OUUvJyCxz+HxvrQWB/KPy6n4OUUvMw/1ofG+tBYzz8+NNaHxvrQP5IkSZIkSdI/5RS8nIKX0z85BS+n4OXUP431obE+NNY/4OUUvJyC1z801ofG+tDYP4fG+tBYH9o/27Zt27Zt2z8up+DlFLzcP4KXU/ByCt4/1ofG+tBY3z8VvJyCl1PgPz401ofG+uA/aKwPjfWh4T+SJEmSJEniP7ycgpdT8OI/5RS8nIKX4z8PjfWhsT7kPzkFL6fg5eQ/Y31orA+N5T+N9aGxPjTmP7Zt27Zt2+Y/4OUUvJyC5z8KXk7ByynoPzTWh8b60Og/XU7Byyl46T+HxvrQWB/qP7E+NNaHxuo/27Zt27Zt6z8FL6fg5RTsPy6n4OUUvOw/WB8a60Nj7T+Cl1PwcgruP6wPjfWhse4/1ofG+tBY7z8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[50]},\"production per labor unit\":{\"__ndarray__\":\"cCpn9fzZsj+QCUUGVvK0PwI3XW2Hl7k/Gt0V3qw9vz8bQPZxegzDP/3HPDZBM8c/x98FApI2zD8+lD1aaR/RP+TdWAKcvNQ/+Gn3Y4QL2T95qx6TBybeP/+FEab4EuI/had412qR5T94H9A2gZfpPztIF1exKe4/R2iO+5ei8T+HjfTig270P6mvB5mYa/c/ZDFAyyGF+j8iqYYISJ79P/EB5gVjSQBAHIM8opCcAUCvUiksPbMCQHQO7bHMeQNARnDFbi7hA0A9cMVuLuEDQGQO7bHMeQNAr1IpLD2zAkAfgzyikJwBQOwB5gVjSQBAK6mGCEie/T9rMUDLIYX6P6avB5mYa/c/no304oNu9D9ZaI77l6LxPylIF1exKe4/bx/QNoGX6T+Jp3jXapHlP+CFEab4EuI/Nqsekwcm3j8FavdjhAvZPz/eWAKcvNQ/b5Q9Wmkf0T8Z4AUCkjbMP/nHPDZBM8c/JED2cXoMwz+93RXerD2/P0E2XW2Hl7k/BApFBlbytD/4K2f1/NmyPw==\",\"dtype\":\"float64\",\"shape\":[50]}},\"selected\":{\"id\":\"623a1e08-8fc2-435a-8661-6b2327845206\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"efaa205a-9a2f-4c27-8e52-1207f2bcea30\",\"type\":\"UnionRenderers\"}},\"id\":\"8bce9148-7d99-402a-bff0-935f1b1d0efc\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"d93a33a2-f340-48f2-acb3-23883b930913\",\"type\":\"SaveTool\"},{\"id\":\"dd673a71-4ce2-428d-a6d5-01b282fc402b\",\"type\":\"PanTool\"},{\"id\":\"1b93398a-7afc-469b-8fa8-2b639ec70167\",\"type\":\"WheelZoomTool\"},{\"id\":\"488f0cc8-2cbd-45b7-9c6e-3ac900eadf09\",\"type\":\"BoxZoomTool\"},{\"id\":\"a6a8f5ef-6b05-414a-aaac-28918ea25606\",\"type\":\"ResetTool\"},{\"id\":\"6d78ce15-7dc7-49c4-8025-bf817654228f\",\"type\":\"CrosshairTool\"},{\"id\":\"e7ce1ed6-53af-427f-91ef-c657eb90c995\",\"type\":\"SaveTool\"},{\"id\":\"582692ae-5a64-4c86-a38f-7688e88974a3\",\"type\":\"PanTool\"},{\"id\":\"c0d7f147-9baa-428f-943d-966c83262fc2\",\"type\":\"WheelZoomTool\"},{\"id\":\"f2af6561-cbb2-4c66-bc38-0f76a9d4795f\",\"type\":\"BoxZoomTool\"},{\"id\":\"fb45ca09-635d-4f7a-bddf-4bb142adfbd3\",\"type\":\"ResetTool\"},{\"id\":\"b80f1bdb-5231-4423-b807-c6262532b714\",\"type\":\"CrosshairTool\"}]},\"id\":\"c7f3dd16-b4c1-4d4c-af04-c5fb5e1a7c01\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"dimension\":\"height\",\"level\":\"glyph\",\"line_color\":{\"value\":\"green\"},\"line_width\":{\"value\":3},\"location\":0.5,\"plot\":null},\"id\":\"0f7a9d0f-ec2b-4bf1-8d0e-84b70cb532c7\",\"type\":\"Span\"},{\"attributes\":{\"callback\":null,\"end\":0.9866142981514304,\"reset_end\":0.9866142981514304,\"reset_start\":0.0},\"id\":\"fd998eab-061f-4286-a37c-68651b44dab4\",\"type\":\"Range1d\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"d93a33a2-f340-48f2-acb3-23883b930913\",\"type\":\"SaveTool\"},{\"id\":\"dd673a71-4ce2-428d-a6d5-01b282fc402b\",\"type\":\"PanTool\"},{\"id\":\"1b93398a-7afc-469b-8fa8-2b639ec70167\",\"type\":\"WheelZoomTool\"},{\"id\":\"488f0cc8-2cbd-45b7-9c6e-3ac900eadf09\",\"type\":\"BoxZoomTool\"},{\"id\":\"a6a8f5ef-6b05-414a-aaac-28918ea25606\",\"type\":\"ResetTool\"},{\"id\":\"6d78ce15-7dc7-49c4-8025-bf817654228f\",\"type\":\"CrosshairTool\"}]},\"id\":\"666c4d1d-fc4a-4f3e-a335-b5036baf93e4\",\"type\":\"Toolbar\"},{\"attributes\":{\"toolbar\":{\"id\":\"c7f3dd16-b4c1-4d4c-af04-c5fb5e1a7c01\",\"type\":\"ProxyToolbar\"},\"toolbar_location\":\"above\"},\"id\":\"3c4d7c93-687b-48d8-9b92-c1c8f8418160\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"dimension\":1,\"grid_line_color\":{\"value\":null},\"plot\":{\"id\":\"443e5be6-1c55-4e2d-881b-a6130bf79b9b\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d1e154a4-de45-466b-9ae0-fedf548086e5\",\"type\":\"BasicTicker\"}},\"id\":\"1f5a4b82-4a25-4a09-9777-a453d4d6b22e\",\"type\":\"Grid\"}],\"root_ids\":[\"f490540e-b215-4897-a5c5-7c40b30f40ca\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", " var render_items = [{\"docid\":\"4bf02ca7-d6ea-4df9-adc1-98f32140ad44\",\"roots\":{\"f490540e-b215-4897-a5c5-7c40b30f40ca\":\"ad9e75bd-2640-462b-8eaa-afdb3bb17b73\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " var attempts = 0;\n", " var timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " clearInterval(timer);\n", " }\n", " attempts++;\n", " if (attempts > 100) {\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", " clearInterval(timer);\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "
\n", "
" ], "text/plain": [ ":Layout\n", " .Overlay.Production_function :Overlay\n", " .Curve.Production_function :Curve [labor] (production)\n", " .VLine.I :VLine [x,y]\n", " .Overlay.Marginal_production :Overlay\n", " .Curve.Marginal_production :Curve [labor] (production per labor unit)\n", " .VLine.I :VLine [x,y]" ] }, "execution_count": 94, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "f490540e-b215-4897-a5c5-7c40b30f40ca" } }, "output_type": "execute_result" } ], "source": [ "%%opts Curve [width=400 tools=['crosshair']] Overlay [show_legend=False]\n", "(production * vline + marginal_product * vline).cols(1)" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", "// Ugly hack - see #2574 for more information\n", "if (!(document.getElementById('223367352')) && !(document.getElementById('_anim_imgNone'))) {\n", " console.log(\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\")\n", " var htmlObject = document.createElement('div');\n", " htmlObject.innerHTML = `
`;\n", " var scriptTags = document.getElementsByTagName('script');\n", " var parentTag = scriptTags[scriptTags.length-1].parentNode;\n", " parentTag.append(htmlObject)\n", "}\n" ], "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
" ], "text/plain": [ ":Layout\n", " .Overlay.Production_function :Overlay\n", " .Curve.Production_function :Curve [labor] (production)\n", " .VLine.I :VLine [x,y]\n", " .Overlay.Marginal_production :Overlay\n", " .Curve.Marginal_production :Curve [labor] (production per labor unit)\n", " .VLine.I :VLine [x,y]" ] }, "execution_count": 96, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": 223367352 } }, "output_type": "execute_result" } ], "source": [ "%%output backend='matplotlib' fig='svg' \n", "%%opts Curve [width=400 tools=['crosshair']] Overlay [show_legend=False]\n", "(production * vline + marginal_product * vline).cols(1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }