Skip to content

Instantly share code, notes, and snippets.

@PBrockmann
Last active May 24, 2017 16:00
Show Gist options
  • Save PBrockmann/38d7d55b1526c0572a75ac4f9c169f09 to your computer and use it in GitHub Desktop.
Save PBrockmann/38d7d55b1526c0572a75ac4f9c169f09 to your computer and use it in GitHub Desktop.
bokeh interactiv legend CustomJS
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"6e2f010c-3582-413f-819c-e1ef57d5ca6e\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 5000;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"6e2f010c-3582-413f-819c-e1ef57d5ca6e\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._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",
" window._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",
" window._bokeh_is_loading--;\n",
" if (window._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",
" };var element = document.getElementById(\"6e2f010c-3582-413f-819c-e1ef57d5ca6e\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '6e2f010c-3582-413f-819c-e1ef57d5ca6e' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.5.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.js\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" document.getElementById(\"6e2f010c-3582-413f-819c-e1ef57d5ca6e\").textContent = \"BokehJS is loading...\";\n",
" },\n",
" function(Bokeh) {\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.5.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.5.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.css\");\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"6e2f010c-3582-413f-819c-e1ef57d5ca6e\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(this));"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import random\n",
"\n",
"import bokeh\n",
"import bokeh.plotting as bk\n",
"from bokeh.plotting import figure, output_file, show, save\n",
"from bokeh.models import CustomJS\n",
"from bokeh.models.widgets import CheckboxButtonGroup\n",
"from bokeh.layouts import widgetbox, layout\n",
"\n",
"bk.output_notebook()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"1fe0b9eb-1db2-4199-8796-5e7127afdd6e\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"1fe0b9eb-1db2-4199-8796-5e7127afdd6e\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" delete window._bokeh_onload_callbacks\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._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",
" window._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",
" window._bokeh_is_loading--;\n",
" if (window._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",
" };var element = document.getElementById(\"1fe0b9eb-1db2-4199-8796-5e7127afdd6e\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '1fe0b9eb-1db2-4199-8796-5e7127afdd6e' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"01f607f9-b4b3-47a4-9eb0-b567557b97d3\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"f7b6d090-2055-490e-8a54-3e3b87358145\",\"type\":\"ToolEvents\"},{\"attributes\":{\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"a65951be-8e52-47ca-b8c1-a95a7b73ab72\",\"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\":\"0d2e01d4-8ecd-40ca-acaf-98e8d21efa4d\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"0952fc60-a053-4f0c-9fb7-bdbd033eb2a1\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"932265fa-a09a-4ae1-8cc0-37427bcc82c2\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"a26ecbb9-a070-4632-ac26-c8ddb4b85f3d\",\"type\":\"Patch\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"c086ed0b-3d5d-42c9-9c04-37cbaa5c2889\",\"type\":\"Patch\"},\"selection_glyph\":null,\"visible\":false},\"id\":\"32c6bc87-8f9e-4968-8da7-c0e3afb53f31\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"653f018e-951f-4254-b905-1843f533e356\",\"type\":\"Line\"},{\"attributes\":{\"args\":{\"checkbox\":{\"id\":\"226e3d0b-1774-456c-90e6-2ec7025ffa58\",\"type\":\"CheckboxButtonGroup\"},\"lc\":{\"id\":\"25915b4d-79a9-4148-ad2f-248c630ad119\",\"type\":\"GlyphRenderer\"},\"ls\":{\"id\":\"1481b463-4cf4-447e-9dcf-379a03a7cc02\",\"type\":\"GlyphRenderer\"},\"pc\":{\"id\":\"32c6bc87-8f9e-4968-8da7-c0e3afb53f31\",\"type\":\"GlyphRenderer\"},\"ps\":{\"id\":\"e74d2bdb-2742-45f5-808a-335ed2c9bb46\",\"type\":\"GlyphRenderer\"}},\"code\":\"\\nif (checkbox.active[0] == 0) {\\n pc.visible = lc.visible;\\n ps.visible = ls.visible;\\n} else {\\n pc.visible = false;\\n ps.visible = false;\\n}\\n\"},\"id\":\"91282e16-9b93-4929-a1de-8aafb13ad103\",\"type\":\"CustomJS\"},{\"attributes\":{\"data_source\":{\"id\":\"b38a22ca-6d92-4c69-b29e-f51763d4dca7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"c899a161-1713-4a0f-8976-3ccd543fa7c1\",\"type\":\"Line\"},\"hover_glyph\":null,\"js_property_callbacks\":{\"change:visible\":[{\"id\":\"91282e16-9b93-4929-a1de-8aafb13ad103\",\"type\":\"CustomJS\"}]},\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"8c32b746-eb88-43c8-8db3-1afb671cd893\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"1481b463-4cf4-447e-9dcf-379a03a7cc02\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Sinus\"},\"renderers\":[{\"id\":\"1481b463-4cf4-447e-9dcf-379a03a7cc02\",\"type\":\"GlyphRenderer\"}]},\"id\":\"6f2df48d-dd62-4978-8530-684f2f718cce\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"df86cb08-9ea6-48b2-9e80-92f18ce052f0\",\"type\":\"Patch\"},{\"attributes\":{\"click_policy\":\"hide\",\"items\":[{\"id\":\"6f2df48d-dd62-4978-8530-684f2f718cce\",\"type\":\"LegendItem\"},{\"id\":\"166119ad-0adb-4117-9141-5e568e85975a\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"0f76ddc8-0c3f-4740-a5b1-9053f29cc765\",\"type\":\"Legend\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"a26ecbb9-a070-4632-ac26-c8ddb4b85f3d\",\"type\":\"Patch\"},{\"attributes\":{\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c02c32f3-ca7c-4cf8-a17d-639dcecf1641\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}}},\"id\":\"19fc6af0-a593-4a0a-8002-6043820f1627\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"9e634bd7-c66d-4688-b163-3e9dc143d611\",\"type\":\"HelpTool\"},{\"attributes\":{\"label\":{\"value\":\"Cosinus\"},\"renderers\":[{\"id\":\"25915b4d-79a9-4148-ad2f-248c630ad119\",\"type\":\"GlyphRenderer\"}]},\"id\":\"166119ad-0adb-4117-9141-5e568e85975a\",\"type\":\"LegendItem\"},{\"attributes\":{\"children\":[{\"id\":\"6895d5ea-96a0-4ae4-801d-86e4eeb202bd\",\"type\":\"Row\"},{\"id\":\"dcd6700b-4204-4ef6-bf38-11a7638cbd1c\",\"type\":\"Row\"}]},\"id\":\"addb2cd6-f8f4-4b1d-88a8-6a6bc1af98dc\",\"type\":\"Column\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"623cf638-5bd0-42d5-9793-2868ce39404b\",\"type\":\"BasicTicker\"}},\"id\":\"9a0f626f-4add-4919-a067-f900443ec849\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":{\"id\":\"91282e16-9b93-4929-a1de-8aafb13ad103\",\"type\":\"CustomJS\"},\"labels\":[\"Noise\"]},\"id\":\"226e3d0b-1774-456c-90e6-2ec7025ffa58\",\"type\":\"CheckboxButtonGroup\"},{\"attributes\":{\"children\":[{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"dcd6700b-4204-4ef6-bf38-11a7638cbd1c\",\"type\":\"Row\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[400]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[400]}}},\"id\":\"932265fa-a09a-4ae1-8cc0-37427bcc82c2\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8c32b746-eb88-43c8-8db3-1afb671cd893\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"65beb0bd-0595-4318-b173-bb3ce9d43bef\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c1d87b19-1657-4736-b978-429c5bb8d902\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"ca3e41b4-7832-41a7-8ac2-61a14f44af7e\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"623cf638-5bd0-42d5-9793-2868ce39404b\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"27a081f8-60fe-4f78-b3af-0e37721915db\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"df86cb08-9ea6-48b2-9e80-92f18ce052f0\",\"type\":\"Patch\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"0d452c81-8722-49b4-b95f-5d95c5e7e49b\",\"type\":\"Patch\"},\"selection_glyph\":null,\"visible\":false},\"id\":\"e74d2bdb-2742-45f5-808a-335ed2c9bb46\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c086ed0b-3d5d-42c9-9c04-37cbaa5c2889\",\"type\":\"Patch\"},{\"attributes\":{\"overlay\":{\"id\":\"0d2e01d4-8ecd-40ca-acaf-98e8d21efa4d\",\"type\":\"BoxAnnotation\"},\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b1046d3b-70f4-48fb-a756-dc6228ece4dc\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"ccde8d75-0572-4bf8-9c32-c662e8129a98\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"b037d02e-6c7f-463b-bee4-97d6460fb218\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAB7FK5H4XqEP3sUrkfhepQ/uB6F61G4nj97FK5H4XqkP5qZmZmZmak/uB6F61G4rj/sUbgeheuxP3sUrkfherQ/CtejcD0Ktz+amZmZmZm5Pylcj8L1KLw/uB6F61G4vj+kcD0K16PAP+xRuB6F68E/MzMzMzMzwz97FK5H4XrEP8P1KFyPwsU/CtejcD0Kxz9SuB6F61HIP5qZmZmZmck/4XoUrkfhyj8pXI/C9SjMP3E9CtejcM0/uB6F61G4zj8AAAAAAADQP6RwPQrXo9A/SOF6FK5H0T/sUbgehevRP4/C9Shcj9I/MzMzMzMz0z/Xo3A9CtfTP3sUrkfhetQ/H4XrUbge1T/D9Shcj8LVP2dmZmZmZtY/CtejcD0K1z+uR+F6FK7XP1K4HoXrUdg/9ihcj8L12D+amZmZmZnZPz4K16NwPdo/4XoUrkfh2j+F61G4HoXbPylcj8L1KNw/zczMzMzM3D9xPQrXo3DdPxWuR+F6FN4/uB6F61G43j9cj8L1KFzfPwAAAAAAAOA/UrgehetR4D+kcD0K16PgP/YoXI/C9eA/SOF6FK5H4T+amZmZmZnhP+xRuB6F6+E/PgrXo3A94j+PwvUoXI/iP+F6FK5H4eI/MzMzMzMz4z+F61G4HoXjP9ejcD0K1+M/KVyPwvUo5D97FK5H4XrkP83MzMzMzOQ/H4XrUbge5T9xPQrXo3DlP8P1KFyPwuU/Fa5H4XoU5j9nZmZmZmbmP7gehetRuOY/CtejcD0K5z9cj8L1KFznP65H4XoUruc/AAAAAAAA6D9SuB6F61HoP6RwPQrXo+g/9ihcj8L16D9I4XoUrkfpP5qZmZmZmek/7FG4HoXr6T8+CtejcD3qP5DC9Shcj+o/4XoUrkfh6j8zMzMzMzPrP4XrUbgehes/16NwPQrX6z8pXI/C9SjsP3sUrkfheuw/zczMzMzM7D8fhetRuB7tP3E9CtejcO0/w/UoXI/C7T8VrkfhehTuP2dmZmZmZu4/uB6F61G47j8K16NwPQrvP1yPwvUoXO8/rkfhehSu7z8AAAAAAADwPylcj8L1KPA/UrgehetR8D97FK5H4XrwP6RwPQrXo/A/zczMzMzM8D/2KFyPwvXwPx+F61G4HvE/SOF6FK5H8T9xPQrXo3DxP5qZmZmZmfE/w/UoXI/C8T/sUbgehevxPxWuR+F6FPI/PgrXo3A98j9nZmZmZmbyP4/C9Shcj/I/uB6F61G48j/hehSuR+HyPwrXo3A9CvM/MzMzMzMz8z9cj8L1KFzzP4XrUbgehfM/rkfhehSu8z/Xo3A9CtfzPwAAAAAAAPQ/KVyPwvUo9D9SuB6F61H0P3sUrkfhevQ/pHA9Ctej9D/NzMzMzMz0P/YoXI/C9fQ/H4XrUbge9T9I4XoUrkf1P3E9CtejcPU/mpmZmZmZ9T/D9Shcj8L1P+xRuB6F6/U/Fa5H4XoU9j8+CtejcD32P2dmZmZmZvY/j8L1KFyP9j+4HoXrUbj2P+F6FK5H4fY/CtejcD0K9z8zMzMzMzP3P1yPwvUoXPc/hetRuB6F9z+uR+F6FK73P9ejcD0K1/c/AAAAAAAA+D8pXI/C9Sj4P1K4HoXrUfg/exSuR+F6+D+kcD0K16P4P83MzMzMzPg/9ihcj8L1+D8fhetRuB75P0jhehSuR/k/cT0K16Nw+T+amZmZmZn5P8P1KFyPwvk/7FG4HoXr+T8VrkfhehT6Pz4K16NwPfo/Z2ZmZmZm+j+QwvUoXI/6P7gehetRuPo/4XoUrkfh+j8K16NwPQr7PzMzMzMzM/s/XI/C9Shc+z+F61G4HoX7P65H4XoUrvs/16NwPQrX+z8AAAAAAAD8Pylcj8L1KPw/UrgehetR/D97FK5H4Xr8P6RwPQrXo/w/zczMzMzM/D/2KFyPwvX8Px+F61G4Hv0/SOF6FK5H/T9xPQrXo3D9P5qZmZmZmf0/w/UoXI/C/T/sUbgehev9PxWuR+F6FP4/PgrXo3A9/j9nZmZmZmb+P5DC9Shcj/4/uB6F61G4/j/hehSuR+H+PwrXo3A9Cv8/MzMzMzMz/z9cj8L1KFz/P4XrUbgehf8/rkfhehSu/z/Xo3A9Ctf/Pw==\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"AAAAAAAAAADwF/x/exe4P3l6A2Uc/Mc/Dg4Ug/3a0T8ZqahIWo/XPwDeRCsuDt0/USsYPH4l4T8LrN1A75zjPxQgEVXP5+U/28UN7ugA6D+o9Jebd+PpPzvKCN0yi+s/jBXc3Ff07D/X/4L8sRvuP+AeEB2i/u4/XOQvlCSb7z/+Q+S/1e/vP4YQnS71++8/A9mAVGe/7z/4pATKtTrvPwBVRBMOb+4/7hfi8j5e7T9awIFOtArsPwhRNa5xd+o/6mtbYwuo6D/NO39mnqDmP70Btf7GZeQ/6QCwR5b84T9Qqb9cDdXeP8rpfPzeatk/UekvN+/G0z9xH9IjHuzLP9pboV3rCsA/WFj3LRIVoD93k+AbChOwv4BTqGcLBsS/jgcc+hHVz7/XllfQ4a3Vv5yBJcn3P9u/46IeORFK4L9dWnUEI8/iv+6yQIB3KeW/FLjSA7ZT57/ykR0q80jpv4QuZP+7BOu/bCw9HSCD7L/lWu+dusDtv3M10dK5uu6//wklrOVu779ck+PDpNvvvwAAAAAAAPC/XJPjw6Tb77//CSWs5W7vv3I10dK5uu6/41rvnbrA7b9tLD0dIIPsv4UuZP+7BOu/75EdKvNI6b8buNIDtlPnv/CyQIB3KeW/YFp1BCPP4r/qoh45EUrgv6KBJcn3P9u/3ZZX0OGt1b+LBxz6EdXPv31TqGcLBsS/cZPgGwoTsL+jWPctEhWgP91boV3rCsA/cx/SIx7syz9a6S8378bTP7XpfPzeatk/Sqm/XA3V3j/pALBHlvzhP7cBtf7GZeQ/yzt/Zp6g5j/qa1tjC6joPwdRNa5xd+o/WcCBTrQK7D/uF+LyPl7tP/9URBMOb+4/+KQEyrU67z8D2YBUZ7/vP4YQnS71++8//kPkv9Xv7z9d5C+UJJvvP+AeEB2i/u4/2f+C/LEb7j+QFdzcV/TsPzvKCN0yi+s/qvSXm3fj6T/hxQ3u6ADoPxEgEVXP5+U/DKzdQO+c4z9IKxg8fiXhP/jdRCsuDt0/GamoSFqP1z8XDhSD/drRP596A2Uc/Mc/4xf8f3sXuD8AAAAAAHm6PK8X/H97F7i/hXoDZRz8x78KDhSD/drRvwypqEhaj9e/Cd5EKy4O3b9QKxg8fiXhvwes3UDvnOO/GCARVc/n5b/cxQ3u6ADov6b0l5t34+m/QMoI3TKL67+NFdzcV/Tsv9z/gvyxG+6/4x4QHaL+7r9c5C+UJJvvv/1D5L/V7++/hhCdLvX7778E2YBUZ7/vv/ukBMq1Ou+/AVVEEw5v7r/xF+LyPl7tv2DAgU60Cuy/ClE1rnF36r/ua1tjC6jov9U7f2aeoOa/vAG1/sZl5L/vALBHlvzhv0ipv1wN1d6/wel8/N5q2b9Y6S8378bTv08f0iMe7Mu/11uhXesKwL+NWPctEhWgv7yT4BsKE7A/g1OoZwsGxD+RBxz6EdXPP++WV9DhrdU/pYElyfc/2z/koh45EUrgP2dadQQjz+I/5bJAgHcp5T8MuNIDtlPnP/CRHSrzSOk/gi5k/7sE6z9nLD0dIIPsP+Ra7526wO0/cDXR0rm67j/9CSWs5W7vP1yT48Ok2+8/AAAAAAAA8D9dk+PDpNvvP/4JJazlbu8/czXR0rm67j/oWu+dusDtP2ssPR0gg+w/hy5k/7sE6z/2kR0q80jpPxO40gO2U+c/7bJAgHcp5T9iWnUEI8/iP9+iHjkRSuA/moElyfc/2z/FllfQ4a3VP3kHHPoR1c8/a1OoZwsGxD8Mk+AbChOwP+5X9y0SFaC/sFuhXesKwL8oH9IjHuzLvybpLzfvxtO/r+l8/N5q2b9Sqb9cDdXev9oAsEeW/OG/tQG1/sZl5L/OO39mnqDmv95rW2MLqOi/BVE1rnF36r9bwIFOtArsv+YX4vI+Xu2//lREEw5v7r/5pATKtTrvvwHZgFRnv++/hRCdLvX777/+Q+S/1e/vv17kL5Qkm++/4R4QHaL+7r/U/4L8sRvuv4MV3NxX9Oy/PcoI3TKL67+i9Jebd+Ppv87FDe7oAOi/EyARVc/n5b8brN1A75zjv1krGDx+JeG//t1EKy4O3b89qahIWo/Xvx0OFIP92tG/bXoDZRz8x799GPx/exe4vw==\",\"dtype\":\"float64\",\"shape\":[200]}}},\"id\":\"b38a22ca-6d92-4c69-b29e-f51763d4dca7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"y\",\"x\"],\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[400]},\"y\":{\"__ndarray__\":\"o611jjRZ6j/oG7cWasPUP0LzV1ZFTOs/3i6bnfZ31D93NLXbPi3aPxOK1tx7mO0/OzKd+JEd4j+Wl6iOKU74P7bI5TntV/c/wLyIae/w+D+O3f3HzS/2P5iUPNcBFPE/5ZPG2CV0/T+OKKqELtHzP9ofVikVWO8/A4pYdfbg8j+K/V2NCs/7P0RGLygodvs/ysThEfHg8D+G+6pX1OL3PwbTjes+IvA/3PKnxTUa9z/O/M5NtY39P3e7U6IXH/A/WAjLfYtI9j/O/G4Rzjv2P/g8NNHH1+Q/gpW8g+a26D9JgFQYr1z0P4CpUS0z79s/jOHD3yDJ4T/mjFf2jqrWP40dLooFVd8/eKjilPov4D/BuWMRVO29P8DcIA7JTKQ/SBnGXylRpj+YMNGgqQ2pP04CpwJwBdG/uBl+nyP1zD+abBiQMsLZPwZ0soZsFtA/ovg3ld3X1L/AN5Ehdk2fv54nr9nsgt6/4rk9TJdw2b8rZADm48Lsv6ubz//SuOW/gEMAeMkmir+tNkDw0tDov6CMY4vXYKi/pB7Wy6Kj17+SiHy7XOrXv6D+VKCVkdC/QBytfoNVkz+XGVSg4tHnv4CU9OlrS6O/pdfKUizL5L8ArFwCX+BFP0yR7WloGMW/wLyyMZMTob8UPL39JTnTPz41S28xTN0/18MYShTt1D8i2er6l/LhPwKcdGFis7a/j744Fv5Tvz/q8qpOPe7pP2aRODj/P/A/0JMYFyWe7z+YA1i02ODxP3wp8vdjSO8/IYVTOTDn8T86tp780ujyP6Q5NU6qG/c/9CuboqHX8T+e+XqFo7b3P/rmy46gP/Y/pJOVqayA+T+4ffR74kz3P5qXBcLmePg/0iPkBzrb8j86uqpBaX32P80agwNbRfY//BCqcWsh/D9sa3zc9O/3P5eudud5UO8/dhnQnaCD/D/yzz8ir+X7P5s560+JvfQ/Uar+tOm4/D/mXhrKh5b5P0Tp3msk2O8/+UY1KQy99z9gjTd/x+P0P5iPdRqqEPA/Px3VQxwo2z9KwdpcPSnxP2D7SA2nHt8/ieV1eonG6D8dVXmZJjvuP3bqAgaJnt8/Lq91K6jM4T/olRGKwGzCP0SU8CYIisk/8PPvJqRO4T8kMVsAPkTIvxAcBPpfH7y/WVSRfiMB4r8+v9EEzePWv75wtMMVWeG/YCO5vRgxwr9ryVvL217pv+Bgoggiwbq/Y8eOriwu7r8wig1N2UW0v5anHBHl19u/B/joZGt46L/Af6wCVnmev/54vFXLptq/QMjK0VM4gD/BGeloPu3ovyidQNQwXbY/n2OGPtgo4r8A648g8imAP1JrGRbqxtS/Hty7WXok3b/sEnyLozPbv2h+s3gstr6/Q9v1RPwt2D+Q8YWmAm/Gv3arBt+aBr+/8CvIqRxf6z91VOXwapvgPysPM4x3ffA/hHd1jHuf5D8TgcEJWLbiPwwJrRc8XuI/buWELkds8T+rex2vgrjiP0NapEZxIPU/czhv5/Ca6D8s1UyEP8X4P/AuzrUF7Pc/wAxGGLL69T90bbkx0HDxP+5x+vR8svs/BiQllTui/T9YzhpMvZP2P58gxgvbjP0/MI3C5m4M9D9WhTofQR35P44FV9div/A/qVAY0ded/j8rsvWxJGf7P+yf5pZro/k/woRRqMjd/D9+hAd1Qz3xPx/Dl6FikvQ/JuHoIkQj+D9LsoUpiGvxP2ooLKjfsOM/8u6SI7Ee7D8nUg3CAXrWP1EjPgTp0eY/aljx4gQG3D9OfBNuPhbjP6GVsm1PSbo/PuR4Ny4r5z8YcAduDczUP3C3jU5+jLw/KJmUUG2r4T8aV2HntzTbPwDgj9sLrZ0/WtHX8Gd12L98zHkIF1PCvybGg8BrM9S/TPFwmDizx79QyJUEkfK4P1YStrYliem/ZMgBTnIe4r+TWJJY/Irrv36/XShEu9m/GuqGmSOx6b+CYV74C8Tvv3/6vx+k+eq/MsvnHRbF6b9yl0sceAXnv8TJ/3Odq8i/En3xL5Ta6r8IN5HVBW/hv6B/9Kp8nMw/jAo9OT9Xzz/061OaB+/Av1JRP9nv09s/yO05uaoe1j8QZhxaHEedv1P8bhcL6dC/6A5jQJ6Ikb/dU7H+Spe0vx3dRgGsl7u/fkn9gJLj1r/nH7nu78zSvwzG12Uhpea/cerww8EO9L+u/2cyehr4v5wuk00Of/G/ZME4PLfS+b/CVWyDeJT7vx5Zz7D0K/G/aBcgitE77L9KHFwu5N75vxs0Xe71mPK/SDkcDhcc8r8e50+EUh7yvz0TtcPPDfC/eJvZYWMj878iaWlKllD5v7B4u503dfG/zHBD7NRf9b+7DocXrJnwv+Acy17dmf2/3DInmwqB979UejpzMJvzvz4CcIU7VvS/vRr+BNqQ7L9aQB53SnPyv3AqOKi0N/a/bMGIJiaL9b8UoAEBf1jnv6DH7MgVXOi/FpJJ5qMw77/I9tTNMC/FvxWvNs73It6/+hMk7eX/v79TfsAcgJ3Lv2Pbod7B4dQ/AKutTSvXm7+oOiKUhcbZP3CB+q6tObY/yHFBFWXOx7+gp9cRmwrGP+8aLGpfF+A/sGPVjsqQvb/4Y7QypP3GP+hFzV+vzMI/AMrkuAHifD/fCJypBV/tPx44pJKO+do/oOV6MiLn5z/olevATXbCP0p3FMBQtuE/mBbB2uOHsT+sR6dH7XHAP+d9B9efJOY/CId4nCco1D8IMPZE1861PwDSoQeYGLe/Vy0SGf634T/g/ncRcorCvzqUP4Y/t9s/3iSRT1pizr8Ub1TFLX26P1bqm2V4Xra/hJtCses41b9o+W2RLPbsv4c/pDYNnuK/7mxMLEmy8b9ydBBsdyrUv+jZHBtdVty/set7j+7A8r97OanNR/7qv2j4oclaX+a/aRWM0FA56r8A4fjg427xv8SLnEdfyPi/Oh/yjgVj8b8yysVbh3D9vxCLbb6f5/C/kurnun6P/r+8hpX0ApH4vwUndvyBRf+/gpQofL+/878YGp173Pn4v7kLX//GVv6/Y3aRixfP77/O2fjbn2/8v9gwLvfpRPC/1KVRxQ9F+b9HvL257DbxvwxW2az1R/K/1+uQK3vO6b9Gaj1B+drxv1eKGfjsOey//WgaKWku978dzmRS3PHtv4RzmKUtdua/cGz3XbbK7b8newBjI9XlvxdVeZkmO+6/kd92mqrA4r8CAxahKoq8v3x0oTZ9d+C/8zR8TZj20z+4CTJNMJm4v8AQ+xhK8s2/tGteoXOA0L+8rYZ89O7XP1CQycDtWbm/OK01y5Crxr+AQnY0pjbbP+hZxKmL6rA/MGYu6xWBuT8pj6lSyqzuP8Ljzd6+rN4/DJjRcVJzzj9y6zNWNG3jP5M9rCX8g+I/SwJBhPe+6D+U9fpEndjXP9potttxRdg/rGVhJz1QxD80qKV9RN/QP3BJDrz7LK4/Wj+QD/Mj0z9ovwF8Gq/FvxCq1p2Wh62/4IOdV0zlw78e/9TtE3bHv6w7AGOE9d+/FoQvBRao4b/edKDBiHrov9YH7Aib6+e/uPL8Jgm9z7/5WJaeZbLMv3Ru/HuQ7vC/ZPyx+jUS8L8gjmVACPP0v+/xjbhaGPW/esTnaoZG8r/GAANzaobyv7ADsw9yVve/OUxwAbrG7b/hiRSgYGr6v6IfE80umvC/VA/qqxAO/r/K9btqVJb6v9rnRX1OdPm/swvuELzy+b+b46RD+Tz/vwZ4w0s7c/O/eAk1GZg6/7+eZ+lSUN7zv59R3lWRvu6/9L0tSvom9r+cZPjIAGTzvxNNl1G9y/i/7LmEnr4d8r/wT+2hEi/5v4R1e6ivP/m/GmYOrbXo8791ANLHP73iv+CpZGq8Pue/XGUKk5tP4b8Yb2yJpI/Wv1hwkiS0Cc+/23pHnrBa3L9mgxlZNJTOvypK6rU8BrU/WHzAduXcrz8UKqjLiubWP4Su0qehyNO/oNhGF4yE1j+CxjUsxvPjP6C/D0QVNJk/jByDLP/7wj8iK8MXtLDkP0jH0/QPMLi/SpTotCQQ2T/1A21PnpnsP8alZsmFX90/cyg+hey87T8IKbcZNBfSP9IZGcosg9A/srSuPVx06T/mHcoQL6XuP5Ouse8GleQ/QJaf+n7zn79Fa5gLYu7kP9S40JxOnc0/sNxeb88Arr8YikpN3gG3vyyuKzfpxNK/ZySTf2ot4D9ggjUytkmRv7sdnLV18dQ/fNoZ0Qh8zj8MbKxHbpzev+Afcq1Yb8G/o611jjRZ6r8=\",\"dtype\":\"float64\",\"shape\":[400]}}},\"id\":\"27a081f8-60fe-4f78-b3af-0e37721915db\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"19fc6af0-a593-4a0a-8002-6043820f1627\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"28a79e72-9119-4171-b616-4795f3eec47c\",\"type\":\"Line\"},\"hover_glyph\":null,\"js_property_callbacks\":{\"change:visible\":[{\"id\":\"91282e16-9b93-4929-a1de-8aafb13ad103\",\"type\":\"CustomJS\"}]},\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"653f018e-951f-4254-b905-1843f533e356\",\"type\":\"Line\"},\"selection_glyph\":null},\"id\":\"25915b4d-79a9-4148-ad2f-248c630ad119\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"c299f5ff-75f9-43ce-81e4-c272c55740a8\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"0d452c81-8722-49b4-b95f-5d95c5e7e49b\",\"type\":\"Patch\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"f14c2371-ee74-40fe-9145-27990a5bced5\",\"type\":\"PanTool\"},{\"id\":\"c1d87b19-1657-4736-b978-429c5bb8d902\",\"type\":\"WheelZoomTool\"},{\"id\":\"b1046d3b-70f4-48fb-a756-dc6228ece4dc\",\"type\":\"BoxZoomTool\"},{\"id\":\"a65951be-8e52-47ca-b8c1-a95a7b73ab72\",\"type\":\"SaveTool\"},{\"id\":\"c02c32f3-ca7c-4cf8-a17d-639dcecf1641\",\"type\":\"ResetTool\"},{\"id\":\"9e634bd7-c66d-4688-b163-3e9dc143d611\",\"type\":\"HelpTool\"}]},\"id\":\"1d1408f0-1b09-4d93-b928-100c5063b100\",\"type\":\"Toolbar\"},{\"attributes\":{\"formatter\":{\"id\":\"65beb0bd-0595-4318-b173-bb3ce9d43bef\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"623cf638-5bd0-42d5-9793-2868ce39404b\",\"type\":\"BasicTicker\"}},\"id\":\"df8cb835-7ede-4b05-b117-dee475d2c699\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"b037d02e-6c7f-463b-bee4-97d6460fb218\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0952fc60-a053-4f0c-9fb7-bdbd033eb2a1\",\"type\":\"BasicTicker\"}},\"id\":\"6cad279f-f705-4e89-99e7-c4a6d5bec6ff\",\"type\":\"LinearAxis\"},{\"attributes\":{\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"0952fc60-a053-4f0c-9fb7-bdbd033eb2a1\",\"type\":\"BasicTicker\"}},\"id\":\"903760ca-2fa7-471a-a267-5413ad815bb1\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":{\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"f14c2371-ee74-40fe-9145-27990a5bced5\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":{\"value\":0.6},\"line_color\":{\"value\":\"blue\"},\"line_width\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"c899a161-1713-4a0f-8976-3ccd543fa7c1\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":{\"value\":0.6},\"line_color\":{\"value\":\"red\"},\"line_width\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"28a79e72-9119-4171-b616-4795f3eec47c\",\"type\":\"Line\"},{\"attributes\":{\"children\":[{\"id\":\"8d682cba-02c4-46e2-9695-25a75cdbc51c\",\"type\":\"WidgetBox\"}]},\"id\":\"6895d5ea-96a0-4ae4-801d-86e4eeb202bd\",\"type\":\"Row\"},{\"attributes\":{\"below\":[{\"id\":\"6cad279f-f705-4e89-99e7-c4a6d5bec6ff\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"df8cb835-7ede-4b05-b117-dee475d2c699\",\"type\":\"LinearAxis\"}],\"plot_height\":400,\"renderers\":[{\"id\":\"6cad279f-f705-4e89-99e7-c4a6d5bec6ff\",\"type\":\"LinearAxis\"},{\"id\":\"903760ca-2fa7-471a-a267-5413ad815bb1\",\"type\":\"Grid\"},{\"id\":\"df8cb835-7ede-4b05-b117-dee475d2c699\",\"type\":\"LinearAxis\"},{\"id\":\"9a0f626f-4add-4919-a067-f900443ec849\",\"type\":\"Grid\"},{\"id\":\"0d2e01d4-8ecd-40ca-acaf-98e8d21efa4d\",\"type\":\"BoxAnnotation\"},{\"id\":\"0f76ddc8-0c3f-4740-a5b1-9053f29cc765\",\"type\":\"Legend\"},{\"id\":\"1481b463-4cf4-447e-9dcf-379a03a7cc02\",\"type\":\"GlyphRenderer\"},{\"id\":\"25915b4d-79a9-4148-ad2f-248c630ad119\",\"type\":\"GlyphRenderer\"},{\"id\":\"e74d2bdb-2742-45f5-808a-335ed2c9bb46\",\"type\":\"GlyphRenderer\"},{\"id\":\"32c6bc87-8f9e-4968-8da7-c0e3afb53f31\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"ccde8d75-0572-4bf8-9c32-c662e8129a98\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"f7b6d090-2055-490e-8a54-3e3b87358145\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"1d1408f0-1b09-4d93-b928-100c5063b100\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"c299f5ff-75f9-43ce-81e4-c272c55740a8\",\"type\":\"DataRange1d\"},\"y_range\":{\"id\":\"ca3e41b4-7832-41a7-8ac2-61a14f44af7e\",\"type\":\"DataRange1d\"}},\"id\":\"04cdb877-fbb8-4ba2-9e47-9ff71411e2ac\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"children\":[{\"id\":\"226e3d0b-1774-456c-90e6-2ec7025ffa58\",\"type\":\"CheckboxButtonGroup\"}]},\"id\":\"8d682cba-02c4-46e2-9695-25a75cdbc51c\",\"type\":\"WidgetBox\"}],\"root_ids\":[\"addb2cd6-f8f4-4b1d-88a8-6a6bc1af98dc\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.5\"}};\n",
" var render_items = [{\"docid\":\"01f607f9-b4b3-47a4-9eb0-b567557b97d3\",\"elementid\":\"1fe0b9eb-1db2-4199-8796-5e7127afdd6e\",\"modelid\":\"addb2cd6-f8f4-4b1d-88a8-6a6bc1af98dc\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"1fe0b9eb-1db2-4199-8796-5e7127afdd6e\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"t = np.arange(0.0, 2.0, 0.01)\n",
"s = np.sin(3*np.pi*t)\n",
"c = np.cos(3*np.pi*t)\n",
"r = [random.random() for i in t]\n",
"\n",
"t2 = np.append(t, t[::-1])\n",
"sr_high = s + r\n",
"sr_low = s - r\n",
"sr2 = np.append(sr_high, sr_low[::-1])\n",
"cr_high = c + r\n",
"cr_low = c - r\n",
"cr2 = np.append(cr_high, cr_low[::-1])\n",
"\n",
"plot = figure(plot_width=600, plot_height=400)\n",
"ls = plot.line(t, s, line_width=3, line_alpha=0.6, line_color='blue', legend='Sinus')\n",
"lc = plot.line(t, c, line_width=3, line_alpha=0.6, line_color='red', legend='Cosinus')\n",
"\n",
"ps = plot.patch(t2, sr2, line_width=1, fill_alpha=0.2, line_alpha=0, fill_color='blue')\n",
"pc = plot.patch(t2, cr2, line_width=1, fill_alpha=0.2, line_alpha=0, fill_color='red')\n",
"\n",
"plot.legend.location = 'top_left'\n",
"plot.legend.click_policy = 'hide'\n",
"\n",
"ps.visible = pc.visible = False\n",
"\n",
"checkbox = CheckboxButtonGroup(labels=[\"Noise\"])\n",
"\n",
"js_callback = CustomJS(args=dict(ls=ls,ps=ps,lc=lc,pc=pc,checkbox=checkbox), code=\"\"\"\n",
"if (checkbox.active[0] == 0) {\n",
" pc.visible = lc.visible;\n",
" ps.visible = ls.visible;\n",
"} else {\n",
" pc.visible = false;\n",
" ps.visible = false;\n",
"}\n",
"\"\"\")\n",
"\n",
"ls.js_on_change('visible',js_callback)\n",
"lc.js_on_change('visible',js_callback)\n",
"checkbox.callback = js_callback\n",
"\n",
"l = layout([[checkbox],[plot]])\n",
"\n",
"show(l)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment